mirror of
https://github.com/JezuzLizard/BO2-Reimagined.git
synced 2025-06-07 21:59:49 -05:00
Unpad inside of parens
This commit is contained in:
parent
c87c2da9a0
commit
d9b261f49e
File diff suppressed because it is too large
Load Diff
@ -5,34 +5,34 @@
|
|||||||
init()
|
init()
|
||||||
{
|
{
|
||||||
level.enemy_location_override_func = ::enemy_location_override;
|
level.enemy_location_override_func = ::enemy_location_override;
|
||||||
flag_wait( "initial_blackscreen_passed" );
|
flag_wait("initial_blackscreen_passed");
|
||||||
maps\mp\zombies\_zm_game_module::turn_power_on_and_open_doors();
|
maps\mp\zombies\_zm_game_module::turn_power_on_and_open_doors();
|
||||||
flag_wait( "start_zombie_round_logic" );
|
flag_wait("start_zombie_round_logic");
|
||||||
wait 1;
|
wait 1;
|
||||||
level notify( "revive_on" );
|
level notify("revive_on");
|
||||||
wait_network_frame();
|
wait_network_frame();
|
||||||
level notify( "doubletap_on" );
|
level notify("doubletap_on");
|
||||||
wait_network_frame();
|
wait_network_frame();
|
||||||
level notify( "marathon_on" );
|
level notify("marathon_on");
|
||||||
wait_network_frame();
|
wait_network_frame();
|
||||||
level notify( "juggernog_on" );
|
level notify("juggernog_on");
|
||||||
wait_network_frame();
|
wait_network_frame();
|
||||||
level notify( "sleight_on" );
|
level notify("sleight_on");
|
||||||
wait_network_frame();
|
wait_network_frame();
|
||||||
level notify( "tombstone_on" );
|
level notify("tombstone_on");
|
||||||
wait_network_frame();
|
wait_network_frame();
|
||||||
level notify( "additionalprimaryweapon_on" );
|
level notify("additionalprimaryweapon_on");
|
||||||
wait_network_frame();
|
wait_network_frame();
|
||||||
level notify( "Pack_A_Punch_on" );
|
level notify("Pack_A_Punch_on");
|
||||||
}
|
}
|
||||||
|
|
||||||
enemy_location_override( zombie, enemy )
|
enemy_location_override(zombie, enemy)
|
||||||
{
|
{
|
||||||
location = enemy.origin;
|
location = enemy.origin;
|
||||||
|
|
||||||
if ( is_true( self.reroute ) )
|
if (is_true(self.reroute))
|
||||||
{
|
{
|
||||||
if ( isDefined( self.reroute_origin ) )
|
if (isDefined(self.reroute_origin))
|
||||||
{
|
{
|
||||||
location = self.reroute_origin;
|
location = self.reroute_origin;
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
struct_init()
|
struct_init()
|
||||||
{
|
{
|
||||||
og_perk_structs = [];
|
og_perk_structs = [];
|
||||||
structs = getstructarray( "zm_perk_machine", "targetname" );
|
structs = getstructarray("zm_perk_machine", "targetname");
|
||||||
|
|
||||||
level.struct_class_names[ "targetname" ][ "zm_perk_machine" ] = [];
|
level.struct_class_names[ "targetname" ][ "zm_perk_machine" ] = [];
|
||||||
|
|
||||||
@ -27,7 +27,7 @@ struct_init()
|
|||||||
{
|
{
|
||||||
if (struct.script_noteworthy == "specialty_longersprint" || struct.script_noteworthy == "specialty_weapupgrade")
|
if (struct.script_noteworthy == "specialty_longersprint" || struct.script_noteworthy == "specialty_weapupgrade")
|
||||||
{
|
{
|
||||||
scripts\zm\replaced\utility::register_perk_struct( struct.script_noteworthy, struct.model, struct.origin, struct.angles );
|
scripts\zm\replaced\utility::register_perk_struct(struct.script_noteworthy, struct.model, struct.origin, struct.angles);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (isdefined(struct.script_string) && isSubStr(struct.script_string, "maze"))
|
else if (isdefined(struct.script_string) && isSubStr(struct.script_string, "maze"))
|
||||||
@ -76,10 +76,10 @@ struct_init()
|
|||||||
struct.origin += anglesToRight(struct.angles) * -12;
|
struct.origin += anglesToRight(struct.angles) * -12;
|
||||||
}
|
}
|
||||||
|
|
||||||
scripts\zm\replaced\utility::register_perk_struct( struct.script_noteworthy, struct.model, struct.origin, struct.angles );
|
scripts\zm\replaced\utility::register_perk_struct(struct.script_noteworthy, struct.model, struct.origin, struct.angles);
|
||||||
}
|
}
|
||||||
|
|
||||||
scripts\zm\replaced\utility::register_perk_struct( "specialty_additionalprimaryweapon", "zombie_vending_three_gun", (3414, 853, 52), (0, 90, 0) );
|
scripts\zm\replaced\utility::register_perk_struct("specialty_additionalprimaryweapon", "zombie_vending_three_gun", (3414, 853, 52), (0, 90, 0));
|
||||||
|
|
||||||
initial_spawns = [];
|
initial_spawns = [];
|
||||||
player_respawn_points = [];
|
player_respawn_points = [];
|
||||||
@ -111,7 +111,7 @@ struct_init()
|
|||||||
}
|
}
|
||||||
else if (player_respawn_point.script_noteworthy == "zone_maze_staircase")
|
else if (player_respawn_point.script_noteworthy == "zone_maze_staircase")
|
||||||
{
|
{
|
||||||
spawn_array = getstructarray( player_respawn_point.target, "targetname" );
|
spawn_array = getstructarray(player_respawn_point.target, "targetname");
|
||||||
|
|
||||||
foreach (spawn in spawn_array)
|
foreach (spawn in spawn_array)
|
||||||
{
|
{
|
||||||
@ -155,21 +155,21 @@ struct_init()
|
|||||||
|
|
||||||
precache()
|
precache()
|
||||||
{
|
{
|
||||||
precachemodel( "zm_collision_buried_street_grief" );
|
precachemodel("zm_collision_buried_street_grief");
|
||||||
precachemodel( "p6_zm_bu_buildable_bench_tarp" );
|
precachemodel("p6_zm_bu_buildable_bench_tarp");
|
||||||
level.chalk_buildable_pieces_hide = 1;
|
level.chalk_buildable_pieces_hide = 1;
|
||||||
griefbuildables = array( "chalk", "turbine", "springpad_zm", "subwoofer_zm" );
|
griefbuildables = array("chalk", "turbine", "springpad_zm", "subwoofer_zm");
|
||||||
maps\mp\zm_buried_buildables::include_buildables( griefbuildables );
|
maps\mp\zm_buried_buildables::include_buildables(griefbuildables);
|
||||||
maps\mp\zm_buried_buildables::init_buildables( griefbuildables );
|
maps\mp\zm_buried_buildables::init_buildables(griefbuildables);
|
||||||
maps\mp\zombies\_zm_equip_turbine::init();
|
maps\mp\zombies\_zm_equip_turbine::init();
|
||||||
maps\mp\zombies\_zm_equip_turbine::init_animtree();
|
maps\mp\zombies\_zm_equip_turbine::init_animtree();
|
||||||
maps\mp\zombies\_zm_equip_springpad::init( &"ZM_BURIED_EQ_SP_PHS", &"ZM_BURIED_EQ_SP_HTS" );
|
maps\mp\zombies\_zm_equip_springpad::init(&"ZM_BURIED_EQ_SP_PHS", &"ZM_BURIED_EQ_SP_HTS");
|
||||||
maps\mp\zombies\_zm_equip_subwoofer::init( &"ZM_BURIED_EQ_SW_PHS", &"ZM_BURIED_EQ_SW_HTS" );
|
maps\mp\zombies\_zm_equip_subwoofer::init(&"ZM_BURIED_EQ_SW_PHS", &"ZM_BURIED_EQ_SW_HTS");
|
||||||
maps\mp\zm_buried_fountain::init_fountain();
|
maps\mp\zm_buried_fountain::init_fountain();
|
||||||
|
|
||||||
setdvar( "disableLookAtEntityLogic", 1 );
|
setdvar("disableLookAtEntityLogic", 1);
|
||||||
|
|
||||||
start_chest_zbarrier = getEnt( "start_chest_zbarrier", "script_noteworthy" );
|
start_chest_zbarrier = getEnt("start_chest_zbarrier", "script_noteworthy");
|
||||||
start_chest_zbarrier.origin = (4127.04, 1271.74, 17);
|
start_chest_zbarrier.origin = (4127.04, 1271.74, 17);
|
||||||
start_chest_zbarrier.angles = (0, 270, 0);
|
start_chest_zbarrier.angles = (0, 270, 0);
|
||||||
start_chest = spawnStruct();
|
start_chest = spawnStruct();
|
||||||
@ -177,20 +177,20 @@ precache()
|
|||||||
start_chest.angles = start_chest_zbarrier.angles;
|
start_chest.angles = start_chest_zbarrier.angles;
|
||||||
start_chest.script_noteworthy = "start_chest";
|
start_chest.script_noteworthy = "start_chest";
|
||||||
start_chest.zombie_cost = 950;
|
start_chest.zombie_cost = 950;
|
||||||
collision = spawn( "script_model", start_chest_zbarrier.origin, 1 );
|
collision = spawn("script_model", start_chest_zbarrier.origin, 1);
|
||||||
collision.angles = start_chest_zbarrier.angles;
|
collision.angles = start_chest_zbarrier.angles;
|
||||||
collision setmodel( "collision_clip_32x32x128" );
|
collision setmodel("collision_clip_32x32x128");
|
||||||
collision disconnectpaths();
|
collision disconnectpaths();
|
||||||
collision = spawn( "script_model", start_chest_zbarrier.origin - ( 0, 32, 0 ), 1 );
|
collision = spawn("script_model", start_chest_zbarrier.origin - (0, 32, 0), 1);
|
||||||
collision.angles = start_chest_zbarrier.angles;
|
collision.angles = start_chest_zbarrier.angles;
|
||||||
collision setmodel( "collision_clip_32x32x128" );
|
collision setmodel("collision_clip_32x32x128");
|
||||||
collision disconnectpaths();
|
collision disconnectpaths();
|
||||||
collision = spawn( "script_model", start_chest_zbarrier.origin + ( 0, 32, 0 ), 1 );
|
collision = spawn("script_model", start_chest_zbarrier.origin + (0, 32, 0), 1);
|
||||||
collision.angles = start_chest_zbarrier.angles;
|
collision.angles = start_chest_zbarrier.angles;
|
||||||
collision setmodel( "collision_clip_32x32x128" );
|
collision setmodel("collision_clip_32x32x128");
|
||||||
collision disconnectpaths();
|
collision disconnectpaths();
|
||||||
|
|
||||||
start_chest2_zbarrier = getEnt( "tunnels_chest1_zbarrier", "script_noteworthy" );
|
start_chest2_zbarrier = getEnt("tunnels_chest1_zbarrier", "script_noteworthy");
|
||||||
start_chest2_zbarrier.origin = (5605.74, 276.96, 17);
|
start_chest2_zbarrier.origin = (5605.74, 276.96, 17);
|
||||||
start_chest2_zbarrier.angles = (0, 180, 0);
|
start_chest2_zbarrier.angles = (0, 180, 0);
|
||||||
start_chest2 = spawnStruct();
|
start_chest2 = spawnStruct();
|
||||||
@ -198,17 +198,17 @@ precache()
|
|||||||
start_chest2.angles = start_chest2_zbarrier.angles;
|
start_chest2.angles = start_chest2_zbarrier.angles;
|
||||||
start_chest2.script_noteworthy = "tunnels_chest1";
|
start_chest2.script_noteworthy = "tunnels_chest1";
|
||||||
start_chest2.zombie_cost = 950;
|
start_chest2.zombie_cost = 950;
|
||||||
collision = spawn( "script_model", start_chest2_zbarrier.origin, 1 );
|
collision = spawn("script_model", start_chest2_zbarrier.origin, 1);
|
||||||
collision.angles = start_chest2_zbarrier.angles;
|
collision.angles = start_chest2_zbarrier.angles;
|
||||||
collision setmodel( "collision_clip_32x32x128" );
|
collision setmodel("collision_clip_32x32x128");
|
||||||
collision disconnectpaths();
|
collision disconnectpaths();
|
||||||
collision = spawn( "script_model", start_chest2_zbarrier.origin - ( 32, 0, 0 ), 1 );
|
collision = spawn("script_model", start_chest2_zbarrier.origin - (32, 0, 0), 1);
|
||||||
collision.angles = start_chest2_zbarrier.angles;
|
collision.angles = start_chest2_zbarrier.angles;
|
||||||
collision setmodel( "collision_clip_32x32x128" );
|
collision setmodel("collision_clip_32x32x128");
|
||||||
collision disconnectpaths();
|
collision disconnectpaths();
|
||||||
collision = spawn( "script_model", start_chest2_zbarrier.origin + ( 32, 0, 0 ), 1 );
|
collision = spawn("script_model", start_chest2_zbarrier.origin + (32, 0, 0), 1);
|
||||||
collision.angles = start_chest2_zbarrier.angles;
|
collision.angles = start_chest2_zbarrier.angles;
|
||||||
collision setmodel( "collision_clip_32x32x128" );
|
collision setmodel("collision_clip_32x32x128");
|
||||||
collision disconnectpaths();
|
collision disconnectpaths();
|
||||||
|
|
||||||
level.chests = [];
|
level.chests = [];
|
||||||
@ -221,14 +221,14 @@ main()
|
|||||||
level.buildables_built["pap"] = 1;
|
level.buildables_built["pap"] = 1;
|
||||||
level.equipment_team_pick_up = 1;
|
level.equipment_team_pick_up = 1;
|
||||||
level thread maps\mp\zombies\_zm_buildables::think_buildables();
|
level thread maps\mp\zombies\_zm_buildables::think_buildables();
|
||||||
maps\mp\gametypes_zm\_zm_gametype::setup_standard_objects( "street" );
|
maps\mp\gametypes_zm\_zm_gametype::setup_standard_objects("street");
|
||||||
maps\mp\zombies\_zm_magicbox::treasure_chest_init( random( array( "start_chest", "tunnels_chest1" ) ) );
|
maps\mp\zombies\_zm_magicbox::treasure_chest_init(random(array("start_chest", "tunnels_chest1")));
|
||||||
deleteslothbarricades();
|
deleteslothbarricades();
|
||||||
powerswitchstate( 1 );
|
powerswitchstate(1);
|
||||||
|
|
||||||
flag_set("mansion_door1");
|
flag_set("mansion_door1");
|
||||||
level.zones["zone_mansion"].is_enabled = 0;
|
level.zones["zone_mansion"].is_enabled = 0;
|
||||||
maps\mp\zombies\_zm::spawn_kill_brush( (4919, 575, -511), 128, 300 );
|
maps\mp\zombies\_zm::spawn_kill_brush((4919, 575, -511), 128, 300);
|
||||||
init_wallbuys();
|
init_wallbuys();
|
||||||
init_barriers();
|
init_barriers();
|
||||||
disable_mansion();
|
disable_mansion();
|
||||||
@ -238,7 +238,7 @@ main()
|
|||||||
init_wallbuys()
|
init_wallbuys()
|
||||||
{
|
{
|
||||||
og_weapon_structs = [];
|
og_weapon_structs = [];
|
||||||
structs = getstructarray( "weapon_upgrade", "targetname" );
|
structs = getstructarray("weapon_upgrade", "targetname");
|
||||||
|
|
||||||
foreach (struct in structs)
|
foreach (struct in structs)
|
||||||
{
|
{
|
||||||
@ -257,46 +257,46 @@ init_wallbuys()
|
|||||||
|
|
||||||
og_weapon_structs = array_randomize(og_weapon_structs);
|
og_weapon_structs = array_randomize(og_weapon_structs);
|
||||||
|
|
||||||
scripts\zm\replaced\utility::wallbuy( "m14_zm", "m14", "weapon_upgrade", og_weapon_structs[0].origin, og_weapon_structs[0].angles );
|
scripts\zm\replaced\utility::wallbuy("m14_zm", "m14", "weapon_upgrade", og_weapon_structs[0].origin, og_weapon_structs[0].angles);
|
||||||
scripts\zm\replaced\utility::wallbuy( "rottweil72_zm", "olympia", "weapon_upgrade", og_weapon_structs[1].origin, og_weapon_structs[1].angles );
|
scripts\zm\replaced\utility::wallbuy("rottweil72_zm", "olympia", "weapon_upgrade", og_weapon_structs[1].origin, og_weapon_structs[1].angles);
|
||||||
scripts\zm\replaced\utility::wallbuy( "beretta93r_zm", "beretta93r", "weapon_upgrade", og_weapon_structs[2].origin, og_weapon_structs[2].angles );
|
scripts\zm\replaced\utility::wallbuy("beretta93r_zm", "beretta93r", "weapon_upgrade", og_weapon_structs[2].origin, og_weapon_structs[2].angles);
|
||||||
scripts\zm\replaced\utility::wallbuy( "pdw57_zm", "pdw57", "weapon_upgrade", og_weapon_structs[3].origin, og_weapon_structs[3].angles );
|
scripts\zm\replaced\utility::wallbuy("pdw57_zm", "pdw57", "weapon_upgrade", og_weapon_structs[3].origin, og_weapon_structs[3].angles);
|
||||||
scripts\zm\replaced\utility::wallbuy( "an94_zm", "an94", "weapon_upgrade", og_weapon_structs[4].origin, og_weapon_structs[4].angles );
|
scripts\zm\replaced\utility::wallbuy("an94_zm", "an94", "weapon_upgrade", og_weapon_structs[4].origin, og_weapon_structs[4].angles);
|
||||||
scripts\zm\replaced\utility::wallbuy( "lsat_zm", "lsat", "weapon_upgrade", og_weapon_structs[5].origin, og_weapon_structs[5].angles );
|
scripts\zm\replaced\utility::wallbuy("lsat_zm", "lsat", "weapon_upgrade", og_weapon_structs[5].origin, og_weapon_structs[5].angles);
|
||||||
}
|
}
|
||||||
|
|
||||||
init_barriers()
|
init_barriers()
|
||||||
{
|
{
|
||||||
scripts\zm\replaced\utility::barrier( "collision_geo_64x64x128_standard", (3398, 898, 116), (0, 0, 0) );
|
scripts\zm\replaced\utility::barrier("collision_geo_64x64x128_standard", (3398, 898, 116), (0, 0, 0));
|
||||||
scripts\zm\replaced\utility::barrier( "collision_geo_64x64x128_standard", (3398, 898, 244), (0, 0, 0) );
|
scripts\zm\replaced\utility::barrier("collision_geo_64x64x128_standard", (3398, 898, 244), (0, 0, 0));
|
||||||
scripts\zm\replaced\utility::barrier( "collision_geo_64x64x128_standard", (3398, 898, 372), (0, 0, 0) );
|
scripts\zm\replaced\utility::barrier("collision_geo_64x64x128_standard", (3398, 898, 372), (0, 0, 0));
|
||||||
|
|
||||||
structs = getstructarray( "zm_perk_machine", "targetname" );
|
structs = getstructarray("zm_perk_machine", "targetname");
|
||||||
|
|
||||||
foreach (struct in structs)
|
foreach (struct in structs)
|
||||||
{
|
{
|
||||||
scripts\zm\replaced\utility::barrier( "collision_geo_64x64x128_standard", struct.origin + (anglesToRight(struct.angles) * -9) + (0, 0, 320), struct.angles );
|
scripts\zm\replaced\utility::barrier("collision_geo_64x64x128_standard", struct.origin + (anglesToRight(struct.angles) * -9) + (0, 0, 320), struct.angles);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
disable_mansion()
|
disable_mansion()
|
||||||
{
|
{
|
||||||
// left
|
// left
|
||||||
model = spawn( "script_model", (3368.72, 561.516, 234.577));
|
model = spawn("script_model", (3368.72, 561.516, 234.577));
|
||||||
model.angles = (179, 90, 38);
|
model.angles = (179, 90, 38);
|
||||||
model setmodel("p6_zm_bu_conservatory_tree_roots_a_close");
|
model setmodel("p6_zm_bu_conservatory_tree_roots_a_close");
|
||||||
model = spawn( "script_model", (3396.1, 556.795, 246.125));
|
model = spawn("script_model", (3396.1, 556.795, 246.125));
|
||||||
model.angles = (0, 90, 0);
|
model.angles = (0, 90, 0);
|
||||||
model setmodel("collision_clip_wall_128x128x10");
|
model setmodel("collision_clip_wall_128x128x10");
|
||||||
|
|
||||||
// right
|
// right
|
||||||
model = spawn( "script_model", (3447.32, 1058.31, 30.6045));
|
model = spawn("script_model", (3447.32, 1058.31, 30.6045));
|
||||||
model.angles = (0, 270, 240);
|
model.angles = (0, 270, 240);
|
||||||
model setmodel("p6_zm_bu_conservatory_tree_roots_a");
|
model setmodel("p6_zm_bu_conservatory_tree_roots_a");
|
||||||
model = spawn( "script_model", (3417.32, 1058.31, 200.605));
|
model = spawn("script_model", (3417.32, 1058.31, 200.605));
|
||||||
model.angles = (-170, 270, 220);
|
model.angles = (-170, 270, 220);
|
||||||
model setmodel("p6_zm_bu_conservatory_tree_roots_a");
|
model setmodel("p6_zm_bu_conservatory_tree_roots_a");
|
||||||
model = spawn( "script_model", (3332.03, 1123.32, 51.4592));
|
model = spawn("script_model", (3332.03, 1123.32, 51.4592));
|
||||||
model.angles = (-15, 0, 0);
|
model.angles = (-15, 0, 0);
|
||||||
model setmodel("collision_clip_256x256x256");
|
model setmodel("collision_clip_256x256x256");
|
||||||
}
|
}
|
@ -9,8 +9,8 @@ struct_init()
|
|||||||
{
|
{
|
||||||
level.struct_class_names[ "targetname" ][ "zm_perk_machine" ] = [];
|
level.struct_class_names[ "targetname" ][ "zm_perk_machine" ] = [];
|
||||||
|
|
||||||
scripts\zm\replaced\utility::register_perk_struct( "specialty_armorvest", "zombie_vending_jugg", ( 473.92, 6638.99, 208 ), ( 0, 102, 0 ) );
|
scripts\zm\replaced\utility::register_perk_struct("specialty_armorvest", "zombie_vending_jugg", (473.92, 6638.99, 208), (0, 102, 0));
|
||||||
scripts\zm\replaced\utility::register_perk_struct( "specialty_weapupgrade", "p6_zm_al_vending_pap_on", ( -1769, 5395, -72 ), ( 0, 100, 0 ) );
|
scripts\zm\replaced\utility::register_perk_struct("specialty_weapupgrade", "p6_zm_al_vending_pap_on", (-1769, 5395, -72), (0, 100, 0));
|
||||||
|
|
||||||
level.struct_class_names[ "script_noteworthy" ][ "initial_spawn" ] = [];
|
level.struct_class_names[ "script_noteworthy" ][ "initial_spawn" ] = [];
|
||||||
|
|
||||||
@ -35,12 +35,12 @@ struct_init()
|
|||||||
origin = respawn.origin + (anglesToRight(respawn.angles) * 32);
|
origin = respawn.origin + (anglesToRight(respawn.angles) * 32);
|
||||||
angles = respawn.angles;
|
angles = respawn.angles;
|
||||||
|
|
||||||
scripts\zm\replaced\utility::register_map_spawn( origin, angles, player_respawn_point.script_noteworthy, script_int );
|
scripts\zm\replaced\utility::register_map_spawn(origin, angles, player_respawn_point.script_noteworthy, script_int);
|
||||||
|
|
||||||
origin = respawn.origin + (anglesToRight(respawn.angles) * -32);
|
origin = respawn.origin + (anglesToRight(respawn.angles) * -32);
|
||||||
angles = respawn.angles;
|
angles = respawn.angles;
|
||||||
|
|
||||||
scripts\zm\replaced\utility::register_map_spawn( origin, angles, player_respawn_point.script_noteworthy, script_int );
|
scripts\zm\replaced\utility::register_map_spawn(origin, angles, player_respawn_point.script_noteworthy, script_int);
|
||||||
|
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
@ -83,9 +83,9 @@ struct_init()
|
|||||||
|
|
||||||
precache()
|
precache()
|
||||||
{
|
{
|
||||||
setdvar( "disableLookAtEntityLogic", 1 );
|
setdvar("disableLookAtEntityLogic", 1);
|
||||||
level.chests = [];
|
level.chests = [];
|
||||||
level.chests[0] = getstruct( "dock_chest", "script_noteworthy" );
|
level.chests[0] = getstruct("dock_chest", "script_noteworthy");
|
||||||
}
|
}
|
||||||
|
|
||||||
main()
|
main()
|
||||||
@ -99,16 +99,16 @@ main()
|
|||||||
disable_gondola_call_triggers();
|
disable_gondola_call_triggers();
|
||||||
disable_craftable_triggers();
|
disable_craftable_triggers();
|
||||||
disable_afterlife_props();
|
disable_afterlife_props();
|
||||||
create_key_door_unitrigger( 4, 98, 112, 108 );
|
create_key_door_unitrigger(4, 98, 112, 108);
|
||||||
level thread open_inner_gate();
|
level thread open_inner_gate();
|
||||||
level thread turn_afterlife_interacts_on();
|
level thread turn_afterlife_interacts_on();
|
||||||
maps\mp\gametypes_zm\_zm_gametype::setup_standard_objects( "cellblock" );
|
maps\mp\gametypes_zm\_zm_gametype::setup_standard_objects("cellblock");
|
||||||
maps\mp\zombies\_zm_magicbox::treasure_chest_init( "dock_chest" );
|
maps\mp\zombies\_zm_magicbox::treasure_chest_init("dock_chest");
|
||||||
precacheshader( "zm_al_wth_zombie" );
|
precacheshader("zm_al_wth_zombie");
|
||||||
array_thread( level.zombie_spawners, ::add_spawn_function, maps\mp\zm_alcatraz_grief_cellblock::remove_zombie_hats_for_grief );
|
array_thread(level.zombie_spawners, ::add_spawn_function, maps\mp\zm_alcatraz_grief_cellblock::remove_zombie_hats_for_grief);
|
||||||
maps\mp\zombies\_zm_ai_brutus::precache();
|
maps\mp\zombies\_zm_ai_brutus::precache();
|
||||||
maps\mp\zombies\_zm_ai_brutus::init();
|
maps\mp\zombies\_zm_ai_brutus::init();
|
||||||
level._effect["butterflies"] = loadfx( "maps/zombie_alcatraz/fx_alcatraz_skull_elec" );
|
level._effect["butterflies"] = loadfx("maps/zombie_alcatraz/fx_alcatraz_skull_elec");
|
||||||
scripts\zm\locs\loc_common::init();
|
scripts\zm\locs\loc_common::init();
|
||||||
level thread maps\mp\zm_alcatraz_traps::init_tower_trap_trigs();
|
level thread maps\mp\zm_alcatraz_traps::init_tower_trap_trigs();
|
||||||
}
|
}
|
||||||
@ -128,58 +128,58 @@ set_box_weapons()
|
|||||||
|
|
||||||
init_wallbuys()
|
init_wallbuys()
|
||||||
{
|
{
|
||||||
scripts\zm\replaced\utility::wallbuy( "m14_zm", "m14", "weapon_upgrade", ( 305, 6376, 319 ), ( 0, -80, 0 ) );
|
scripts\zm\replaced\utility::wallbuy("m14_zm", "m14", "weapon_upgrade", (305, 6376, 319), (0, -80, 0));
|
||||||
scripts\zm\replaced\utility::wallbuy( "rottweil72_zm", "olympia", "weapon_upgrade", ( -709, 5721, -19.875 ), ( 0, -80, 30 ) );
|
scripts\zm\replaced\utility::wallbuy("rottweil72_zm", "olympia", "weapon_upgrade", (-709, 5721, -19.875), (0, -80, 30));
|
||||||
scripts\zm\replaced\utility::wallbuy( "uzi_zm", "uzi", "weapon_upgrade", ( -219, 7156, 122 ), ( 0, 190, 0 ) );
|
scripts\zm\replaced\utility::wallbuy("uzi_zm", "uzi", "weapon_upgrade", (-219, 7156, 122), (0, 190, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
init_barriers()
|
init_barriers()
|
||||||
{
|
{
|
||||||
// left
|
// left
|
||||||
model = spawn( "script_model", (-90.4585, 7669.56, 114.511));
|
model = spawn("script_model", (-90.4585, 7669.56, 114.511));
|
||||||
model.angles = (90, -10, 55);
|
model.angles = (90, -10, 55);
|
||||||
model setmodel("p6_zm_al_horrific_bed_mattress_3");
|
model setmodel("p6_zm_al_horrific_bed_mattress_3");
|
||||||
model = spawn( "script_model", (-111.549, 7667.96, 97.125));
|
model = spawn("script_model", (-111.549, 7667.96, 97.125));
|
||||||
model.angles = (0, 0, 90);
|
model.angles = (0, 0, 90);
|
||||||
model setmodel("zm_al_kitchen_table_01");
|
model setmodel("zm_al_kitchen_table_01");
|
||||||
model = spawn( "script_model", (-113.959, 7638.7, 75.0369));
|
model = spawn("script_model", (-113.959, 7638.7, 75.0369));
|
||||||
model.angles = (6, 0, -6);
|
model.angles = (6, 0, -6);
|
||||||
model setmodel("afr_corrugated_metal4x8_holes");
|
model setmodel("afr_corrugated_metal4x8_holes");
|
||||||
model = spawn( "script_model", (-106.911, 7636.47, 64.125));
|
model = spawn("script_model", (-106.911, 7636.47, 64.125));
|
||||||
model.angles = (0, 0, 0);
|
model.angles = (0, 0, 0);
|
||||||
model setmodel("collision_clip_wall_128x128x10");
|
model setmodel("collision_clip_wall_128x128x10");
|
||||||
|
|
||||||
// right
|
// right
|
||||||
model = spawn( "script_model", (48.6213, 7639.88, 74.125));
|
model = spawn("script_model", (48.6213, 7639.88, 74.125));
|
||||||
model.angles = (22, -44, 0);
|
model.angles = (22, -44, 0);
|
||||||
model setmodel("p6_zm_al_infirmary_case");
|
model setmodel("p6_zm_al_infirmary_case");
|
||||||
model = spawn( "script_model", (44.9895, 7601.56, 81.125));
|
model = spawn("script_model", (44.9895, 7601.56, 81.125));
|
||||||
model.angles = (-5, -41, -8);
|
model.angles = (-5, -41, -8);
|
||||||
model setmodel("afr_corrugated_metal4x8_holes");
|
model setmodel("afr_corrugated_metal4x8_holes");
|
||||||
model = spawn( "script_model", (98.769, 7602.89, 64.125));
|
model = spawn("script_model", (98.769, 7602.89, 64.125));
|
||||||
model.angles = (0, -142, 0);
|
model.angles = (0, -142, 0);
|
||||||
model setmodel("p6_zm_al_desk_small");
|
model setmodel("p6_zm_al_desk_small");
|
||||||
model = spawn( "script_model", (43.2479, 7606.2, 66.125));
|
model = spawn("script_model", (43.2479, 7606.2, 66.125));
|
||||||
model.angles = (0, -45, 0);
|
model.angles = (0, -45, 0);
|
||||||
model setmodel("collision_clip_wall_128x128x10");
|
model setmodel("collision_clip_wall_128x128x10");
|
||||||
}
|
}
|
||||||
|
|
||||||
generatebuildabletarps()
|
generatebuildabletarps()
|
||||||
{
|
{
|
||||||
model = spawn( "script_model", (432.836, 6238.03, 55.997));
|
model = spawn("script_model", (432.836, 6238.03, 55.997));
|
||||||
model.angles = (0, 100, 0);
|
model.angles = (0, 100, 0);
|
||||||
model setmodel("p6_zm_buildable_bench_tarp");
|
model setmodel("p6_zm_buildable_bench_tarp");
|
||||||
}
|
}
|
||||||
|
|
||||||
disable_zombie_spawn_locations()
|
disable_zombie_spawn_locations()
|
||||||
{
|
{
|
||||||
for ( z = 0; z < level.zone_keys.size; z++ )
|
for (z = 0; z < level.zone_keys.size; z++)
|
||||||
{
|
{
|
||||||
zone = level.zones[ level.zone_keys[ z ] ];
|
zone = level.zones[ level.zone_keys[ z ] ];
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
|
|
||||||
while ( i < zone.spawn_locations.size )
|
while (i < zone.spawn_locations.size)
|
||||||
{
|
{
|
||||||
if (zone.spawn_locations[i].origin == (615.8, 7875.9, 95))
|
if (zone.spawn_locations[i].origin == (615.8, 7875.9, 95))
|
||||||
{
|
{
|
||||||
@ -197,9 +197,9 @@ disable_zombie_spawn_locations()
|
|||||||
|
|
||||||
disable_gondola_call_triggers()
|
disable_gondola_call_triggers()
|
||||||
{
|
{
|
||||||
t_call_triggers = getentarray( "gondola_call_trigger", "targetname" );
|
t_call_triggers = getentarray("gondola_call_trigger", "targetname");
|
||||||
|
|
||||||
foreach ( trigger in t_call_triggers )
|
foreach (trigger in t_call_triggers)
|
||||||
{
|
{
|
||||||
trigger delete();
|
trigger delete();
|
||||||
}
|
}
|
||||||
@ -207,9 +207,9 @@ disable_gondola_call_triggers()
|
|||||||
|
|
||||||
disable_craftable_triggers()
|
disable_craftable_triggers()
|
||||||
{
|
{
|
||||||
t_crafting_table = getentarray( "open_craftable_trigger", "targetname" );
|
t_crafting_table = getentarray("open_craftable_trigger", "targetname");
|
||||||
|
|
||||||
foreach ( trigger in t_crafting_table )
|
foreach (trigger in t_crafting_table)
|
||||||
{
|
{
|
||||||
trigger delete();
|
trigger delete();
|
||||||
}
|
}
|
||||||
@ -217,9 +217,9 @@ disable_craftable_triggers()
|
|||||||
|
|
||||||
disable_afterlife_props()
|
disable_afterlife_props()
|
||||||
{
|
{
|
||||||
a_afterlife_props = getentarray( "afterlife_show", "targetname" );
|
a_afterlife_props = getentarray("afterlife_show", "targetname");
|
||||||
|
|
||||||
foreach ( m_prop in a_afterlife_props )
|
foreach (m_prop in a_afterlife_props)
|
||||||
{
|
{
|
||||||
m_prop delete();
|
m_prop delete();
|
||||||
}
|
}
|
||||||
@ -227,18 +227,18 @@ disable_afterlife_props()
|
|||||||
|
|
||||||
turn_afterlife_interacts_on()
|
turn_afterlife_interacts_on()
|
||||||
{
|
{
|
||||||
a_afterlife_interact = getentarray( "afterlife_interact", "targetname" );
|
a_afterlife_interact = getentarray("afterlife_interact", "targetname");
|
||||||
|
|
||||||
foreach ( model in a_afterlife_interact )
|
foreach (model in a_afterlife_interact)
|
||||||
{
|
{
|
||||||
if ( model.script_string == "juggernog_on" )
|
if (model.script_string == "juggernog_on")
|
||||||
{
|
{
|
||||||
model turn_afterlife_interact_on();
|
model turn_afterlife_interact_on();
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_docks_shockbox = getent( "docks_panel", "targetname" );
|
m_docks_shockbox = getent("docks_panel", "targetname");
|
||||||
m_docks_shockbox turn_afterlife_interact_on();
|
m_docks_shockbox turn_afterlife_interact_on();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -246,23 +246,23 @@ turn_afterlife_interacts_on()
|
|||||||
|
|
||||||
turn_afterlife_interact_on()
|
turn_afterlife_interact_on()
|
||||||
{
|
{
|
||||||
if ( !isDefined( level.shockbox_anim ) )
|
if (!isDefined(level.shockbox_anim))
|
||||||
{
|
{
|
||||||
level.shockbox_anim[ "on" ] = %fxanim_zom_al_shock_box_on_anim;
|
level.shockbox_anim[ "on" ] = %fxanim_zom_al_shock_box_on_anim;
|
||||||
level.shockbox_anim[ "off" ] = %fxanim_zom_al_shock_box_off_anim;
|
level.shockbox_anim[ "off" ] = %fxanim_zom_al_shock_box_off_anim;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( issubstr( self.model, "p6_zm_al_shock_box" ) )
|
if (issubstr(self.model, "p6_zm_al_shock_box"))
|
||||||
{
|
{
|
||||||
self useanimtree( -1 );
|
self useanimtree(-1);
|
||||||
self setmodel( "p6_zm_al_shock_box_on" );
|
self setmodel("p6_zm_al_shock_box_on");
|
||||||
self setanim( level.shockbox_anim[ "on" ] );
|
self setanim(level.shockbox_anim[ "on" ]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
create_key_door_unitrigger( piece_num, width, height, length )
|
create_key_door_unitrigger(piece_num, width, height, length)
|
||||||
{
|
{
|
||||||
t_key_door = getstruct( "key_door_" + piece_num + "_trigger", "targetname" );
|
t_key_door = getstruct("key_door_" + piece_num + "_trigger", "targetname");
|
||||||
t_key_door.unitrigger_stub = spawnstruct();
|
t_key_door.unitrigger_stub = spawnstruct();
|
||||||
t_key_door.unitrigger_stub.origin = t_key_door.origin;
|
t_key_door.unitrigger_stub.origin = t_key_door.origin;
|
||||||
t_key_door.unitrigger_stub.angles = t_key_door.angles;
|
t_key_door.unitrigger_stub.angles = t_key_door.angles;
|
||||||
@ -276,95 +276,95 @@ create_key_door_unitrigger( piece_num, width, height, length )
|
|||||||
t_key_door.unitrigger_stub.require_look_at = 0;
|
t_key_door.unitrigger_stub.require_look_at = 0;
|
||||||
t_key_door.unitrigger_stub.prompt_and_visibility_func = ::key_door_trigger_visibility;
|
t_key_door.unitrigger_stub.prompt_and_visibility_func = ::key_door_trigger_visibility;
|
||||||
t_key_door.unitrigger_stub.cost = 2000;
|
t_key_door.unitrigger_stub.cost = 2000;
|
||||||
maps\mp\zombies\_zm_unitrigger::register_static_unitrigger( t_key_door.unitrigger_stub, ::master_key_door_trigger_thread );
|
maps\mp\zombies\_zm_unitrigger::register_static_unitrigger(t_key_door.unitrigger_stub, ::master_key_door_trigger_thread);
|
||||||
}
|
}
|
||||||
|
|
||||||
key_door_trigger_visibility( player )
|
key_door_trigger_visibility(player)
|
||||||
{
|
{
|
||||||
b_is_invis = player.afterlife || isdefined( self.stub.master_key_door_opened ) && self.stub.master_key_door_opened || self.stub.n_door_index == 2 && !flag( "generator_challenge_completed" );
|
b_is_invis = player.afterlife || isdefined(self.stub.master_key_door_opened) && self.stub.master_key_door_opened || self.stub.n_door_index == 2 && !flag("generator_challenge_completed");
|
||||||
self setinvisibletoplayer( player, b_is_invis );
|
self setinvisibletoplayer(player, b_is_invis);
|
||||||
|
|
||||||
self sethintstring( &"ZOMBIE_BUTTON_BUY_OPEN_DOOR_2000" );
|
self sethintstring(&"ZOMBIE_BUTTON_BUY_OPEN_DOOR_2000");
|
||||||
|
|
||||||
return !b_is_invis;
|
return !b_is_invis;
|
||||||
}
|
}
|
||||||
|
|
||||||
master_key_door_trigger_thread()
|
master_key_door_trigger_thread()
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
self endon( "kill_trigger" );
|
self endon("kill_trigger");
|
||||||
n_door_index = self.stub.n_door_index;
|
n_door_index = self.stub.n_door_index;
|
||||||
b_door_open = 0;
|
b_door_open = 0;
|
||||||
|
|
||||||
while ( !b_door_open )
|
while (!b_door_open)
|
||||||
{
|
{
|
||||||
self waittill( "trigger", e_triggerer );
|
self waittill("trigger", e_triggerer);
|
||||||
|
|
||||||
if ( is_player_valid(e_triggerer) )
|
if (is_player_valid(e_triggerer))
|
||||||
{
|
{
|
||||||
if ( e_triggerer.score >= self.stub.cost )
|
if (e_triggerer.score >= self.stub.cost)
|
||||||
{
|
{
|
||||||
e_triggerer maps\mp\zombies\_zm_score::minus_to_player_score( self.stub.cost );
|
e_triggerer maps\mp\zombies\_zm_score::minus_to_player_score(self.stub.cost);
|
||||||
e_triggerer play_sound_on_ent( "purchase" );
|
e_triggerer play_sound_on_ent("purchase");
|
||||||
|
|
||||||
self.stub.master_key_door_opened = 1;
|
self.stub.master_key_door_opened = 1;
|
||||||
self.stub maps\mp\zombies\_zm_unitrigger::run_visibility_function_for_all_triggers();
|
self.stub maps\mp\zombies\_zm_unitrigger::run_visibility_function_for_all_triggers();
|
||||||
level thread open_custom_door_master_key( n_door_index, e_triggerer );
|
level thread open_custom_door_master_key(n_door_index, e_triggerer);
|
||||||
self playsound( "evt_quest_door_open" );
|
self playsound("evt_quest_door_open");
|
||||||
b_door_open = 1;
|
b_door_open = 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
play_sound_at_pos( "no_purchase", self.stub.origin );
|
play_sound_at_pos("no_purchase", self.stub.origin);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
level thread maps\mp\zombies\_zm_unitrigger::unregister_unitrigger( self.stub );
|
level thread maps\mp\zombies\_zm_unitrigger::unregister_unitrigger(self.stub);
|
||||||
}
|
}
|
||||||
|
|
||||||
open_custom_door_master_key( n_door_index, e_triggerer )
|
open_custom_door_master_key(n_door_index, e_triggerer)
|
||||||
{
|
{
|
||||||
m_lock = getent( "masterkey_lock_" + n_door_index, "targetname" );
|
m_lock = getent("masterkey_lock_" + n_door_index, "targetname");
|
||||||
m_lock playsound( "zmb_quest_key_unlock" );
|
m_lock playsound("zmb_quest_key_unlock");
|
||||||
playfxontag( level._effect["fx_alcatraz_unlock_door"], m_lock, "tag_origin" );
|
playfxontag(level._effect["fx_alcatraz_unlock_door"], m_lock, "tag_origin");
|
||||||
wait 0.5;
|
wait 0.5;
|
||||||
m_lock delete();
|
m_lock delete();
|
||||||
|
|
||||||
m_gate_01 = getent( "cable_puzzle_gate_01", "targetname" );
|
m_gate_01 = getent("cable_puzzle_gate_01", "targetname");
|
||||||
m_gate_01 moveto( m_gate_01.origin + ( -16, 80, 0 ), 0.5 );
|
m_gate_01 moveto(m_gate_01.origin + (-16, 80, 0), 0.5);
|
||||||
m_gate_01 connectpaths();
|
m_gate_01 connectpaths();
|
||||||
gate_1_monsterclip = getent( "docks_gate_1_monsterclip", "targetname" );
|
gate_1_monsterclip = getent("docks_gate_1_monsterclip", "targetname");
|
||||||
gate_1_monsterclip.origin += vectorscale( ( 0, 0, 1 ), 256.0 );
|
gate_1_monsterclip.origin += vectorscale((0, 0, 1), 256.0);
|
||||||
gate_1_monsterclip disconnectpaths();
|
gate_1_monsterclip disconnectpaths();
|
||||||
gate_1_monsterclip.origin -= vectorscale( ( 0, 0, 1 ), 256.0 );
|
gate_1_monsterclip.origin -= vectorscale((0, 0, 1), 256.0);
|
||||||
|
|
||||||
if ( isdefined( e_triggerer ) )
|
if (isdefined(e_triggerer))
|
||||||
e_triggerer door_rumble_on_open();
|
e_triggerer door_rumble_on_open();
|
||||||
|
|
||||||
m_gate_01 playsound( "zmb_chainlink_open" );
|
m_gate_01 playsound("zmb_chainlink_open");
|
||||||
flag_set( "docks_inner_gate_unlocked" );
|
flag_set("docks_inner_gate_unlocked");
|
||||||
flag_set( "docks_inner_gate_open" );
|
flag_set("docks_inner_gate_open");
|
||||||
}
|
}
|
||||||
|
|
||||||
door_rumble_on_open()
|
door_rumble_on_open()
|
||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
level endon( "end_game" );
|
level endon("end_game");
|
||||||
self setclientfieldtoplayer( "rumble_door_open", 1 );
|
self setclientfieldtoplayer("rumble_door_open", 1);
|
||||||
wait_network_frame();
|
wait_network_frame();
|
||||||
self setclientfieldtoplayer( "rumble_door_open", 0 );
|
self setclientfieldtoplayer("rumble_door_open", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
open_inner_gate()
|
open_inner_gate()
|
||||||
{
|
{
|
||||||
m_gate_02 = getent( "cable_puzzle_gate_02", "targetname" );
|
m_gate_02 = getent("cable_puzzle_gate_02", "targetname");
|
||||||
|
|
||||||
m_gate_02 moveto( m_gate_02.origin + ( -16, 80, 0 ), 0.5 );
|
m_gate_02 moveto(m_gate_02.origin + (-16, 80, 0), 0.5);
|
||||||
wait( 0.75 );
|
wait(0.75);
|
||||||
m_gate_02 connectpaths();
|
m_gate_02 connectpaths();
|
||||||
gate_2_monsterclip = getent( "docks_gate_2_monsterclip", "targetname" );
|
gate_2_monsterclip = getent("docks_gate_2_monsterclip", "targetname");
|
||||||
gate_2_monsterclip.origin += vectorscale( ( 0, 0, 1 ), 256.0 );
|
gate_2_monsterclip.origin += vectorscale((0, 0, 1), 256.0);
|
||||||
gate_2_monsterclip disconnectpaths();
|
gate_2_monsterclip disconnectpaths();
|
||||||
gate_2_monsterclip.origin -= vectorscale( ( 0, 0, 1 ), 256.0 );
|
gate_2_monsterclip.origin -= vectorscale((0, 0, 1), 256.0);
|
||||||
}
|
}
|
@ -10,8 +10,8 @@
|
|||||||
|
|
||||||
struct_init()
|
struct_init()
|
||||||
{
|
{
|
||||||
scripts\zm\replaced\utility::register_perk_struct( "", "", ( 0, 0, 0 ), ( 0, 0, 0 ) ); // need this for pap to work
|
scripts\zm\replaced\utility::register_perk_struct("", "", (0, 0, 0), (0, 0, 0)); // need this for pap to work
|
||||||
scripts\zm\replaced\utility::register_perk_struct( "specialty_weapupgrade", "p6_anim_zm_buildable_pap_on", ( 10460, -564, -220 ), ( 0, -35, 0 ) );
|
scripts\zm\replaced\utility::register_perk_struct("specialty_weapupgrade", "p6_anim_zm_buildable_pap_on", (10460, -564, -220), (0, -35, 0));
|
||||||
|
|
||||||
zone_respawnpoints = [];
|
zone_respawnpoints = [];
|
||||||
respawnpoints = maps\mp\gametypes_zm\_zm_gametype::get_player_spawns_for_gametype();
|
respawnpoints = maps\mp\gametypes_zm\_zm_gametype::get_player_spawns_for_gametype();
|
||||||
@ -35,32 +35,32 @@ struct_init()
|
|||||||
level.struct_class_names["script_noteworthy"]["initial_spawn"] = [];
|
level.struct_class_names["script_noteworthy"]["initial_spawn"] = [];
|
||||||
|
|
||||||
zone = "zone_cornfield_prototype";
|
zone = "zone_cornfield_prototype";
|
||||||
scripts\zm\replaced\utility::register_map_spawn_group( zone_respawnpoints[zone].origin, zone, zone_respawnpoints[zone].script_int );
|
scripts\zm\replaced\utility::register_map_spawn_group(zone_respawnpoints[zone].origin, zone, zone_respawnpoints[zone].script_int);
|
||||||
|
|
||||||
respawn_array = getstructarray(zone_respawnpoints[zone].target, "targetname");
|
respawn_array = getstructarray(zone_respawnpoints[zone].target, "targetname");
|
||||||
|
|
||||||
foreach (respawn in respawn_array)
|
foreach (respawn in respawn_array)
|
||||||
{
|
{
|
||||||
scripts\zm\replaced\utility::register_map_spawn( respawn.origin + (100, 0, 0), respawn.angles, zone, respawn.script_int );
|
scripts\zm\replaced\utility::register_map_spawn(respawn.origin + (100, 0, 0), respawn.angles, zone, respawn.script_int);
|
||||||
}
|
}
|
||||||
|
|
||||||
zone = "zone_amb_cornfield";
|
zone = "zone_amb_cornfield";
|
||||||
scripts\zm\replaced\utility::register_map_spawn_group( zone_respawnpoints[zone].origin, zone, zone_respawnpoints[zone].script_int );
|
scripts\zm\replaced\utility::register_map_spawn_group(zone_respawnpoints[zone].origin, zone, zone_respawnpoints[zone].script_int);
|
||||||
|
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (11986, -1858, -132), (0, 80, 0), zone );
|
scripts\zm\replaced\utility::register_map_spawn((11986, -1858, -132), (0, 80, 0), zone);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (12158, -61, -141), (0, -85, 0), zone );
|
scripts\zm\replaced\utility::register_map_spawn((12158, -61, -141), (0, -85, 0), zone);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (11366, 20, -193), (0, -5, 0), zone );
|
scripts\zm\replaced\utility::register_map_spawn((11366, 20, -193), (0, -5, 0), zone);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (11199, -1768, -156), (0, -5, 0), zone );
|
scripts\zm\replaced\utility::register_map_spawn((11199, -1768, -156), (0, -5, 0), zone);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (10448, 90, -189), (0, -5, 0), zone );
|
scripts\zm\replaced\utility::register_map_spawn((10448, 90, -189), (0, -5, 0), zone);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (10255, -1698, -186), (0, -5, 0), zone );
|
scripts\zm\replaced\utility::register_map_spawn((10255, -1698, -186), (0, -5, 0), zone);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (10046, -591, -192), (0, 0, 0), zone );
|
scripts\zm\replaced\utility::register_map_spawn((10046, -591, -192), (0, 0, 0), zone);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (10036, -967, -186), (0, 0, 0), zone );
|
scripts\zm\replaced\utility::register_map_spawn((10036, -967, -186), (0, 0, 0), zone);
|
||||||
|
|
||||||
structs = getstructarray( "game_mode_object", "targetname" );
|
structs = getstructarray("game_mode_object", "targetname");
|
||||||
|
|
||||||
foreach ( struct in structs )
|
foreach (struct in structs)
|
||||||
{
|
{
|
||||||
if ( isDefined( struct.script_noteworthy ) && struct.script_noteworthy == "cornfield" )
|
if (isDefined(struct.script_noteworthy) && struct.script_noteworthy == "cornfield")
|
||||||
{
|
{
|
||||||
struct.script_string = "zstandard zgrief";
|
struct.script_string = "zstandard zgrief";
|
||||||
}
|
}
|
||||||
@ -84,25 +84,25 @@ struct_init()
|
|||||||
|
|
||||||
precache()
|
precache()
|
||||||
{
|
{
|
||||||
start_chest_zbarrier = getEnt( "start_chest_zbarrier", "script_noteworthy" );
|
start_chest_zbarrier = getEnt("start_chest_zbarrier", "script_noteworthy");
|
||||||
start_chest_zbarrier.origin = ( 13487, 33, -182 );
|
start_chest_zbarrier.origin = (13487, 33, -182);
|
||||||
start_chest_zbarrier.angles = ( 0, 90, 0 );
|
start_chest_zbarrier.angles = (0, 90, 0);
|
||||||
start_chest = spawnStruct();
|
start_chest = spawnStruct();
|
||||||
start_chest.origin = start_chest_zbarrier.origin;
|
start_chest.origin = start_chest_zbarrier.origin;
|
||||||
start_chest.angles = start_chest_zbarrier.angles;
|
start_chest.angles = start_chest_zbarrier.angles;
|
||||||
start_chest.script_noteworthy = "start_chest";
|
start_chest.script_noteworthy = "start_chest";
|
||||||
start_chest.zombie_cost = 950;
|
start_chest.zombie_cost = 950;
|
||||||
collision = spawn( "script_model", start_chest_zbarrier.origin + ( 0, 0, 64 ), 1 );
|
collision = spawn("script_model", start_chest_zbarrier.origin + (0, 0, 64), 1);
|
||||||
collision.angles = start_chest_zbarrier.angles;
|
collision.angles = start_chest_zbarrier.angles;
|
||||||
collision setmodel( "collision_clip_32x32x128" );
|
collision setmodel("collision_clip_32x32x128");
|
||||||
collision disconnectpaths();
|
collision disconnectpaths();
|
||||||
collision = spawn( "script_model", start_chest_zbarrier.origin + ( 0, -32, 64 ), 1 );
|
collision = spawn("script_model", start_chest_zbarrier.origin + (0, -32, 64), 1);
|
||||||
collision.angles = start_chest_zbarrier.angles;
|
collision.angles = start_chest_zbarrier.angles;
|
||||||
collision setmodel( "collision_clip_32x32x128" );
|
collision setmodel("collision_clip_32x32x128");
|
||||||
collision disconnectpaths();
|
collision disconnectpaths();
|
||||||
collision = spawn( "script_model", start_chest_zbarrier.origin + ( 0, 32, 64 ), 1 );
|
collision = spawn("script_model", start_chest_zbarrier.origin + (0, 32, 64), 1);
|
||||||
collision.angles = start_chest_zbarrier.angles;
|
collision.angles = start_chest_zbarrier.angles;
|
||||||
collision setmodel( "collision_clip_32x32x128" );
|
collision setmodel("collision_clip_32x32x128");
|
||||||
collision disconnectpaths();
|
collision disconnectpaths();
|
||||||
|
|
||||||
level.chests = [];
|
level.chests = [];
|
||||||
@ -115,91 +115,91 @@ main()
|
|||||||
init_barriers();
|
init_barriers();
|
||||||
disable_zombie_spawn_locations();
|
disable_zombie_spawn_locations();
|
||||||
setup_standard_objects("cornfield");
|
setup_standard_objects("cornfield");
|
||||||
maps\mp\zombies\_zm_magicbox::treasure_chest_init( random( array( "start_chest" ) ) );
|
maps\mp\zombies\_zm_magicbox::treasure_chest_init(random(array("start_chest")));
|
||||||
scripts\zm\locs\loc_common::init();
|
scripts\zm\locs\loc_common::init();
|
||||||
}
|
}
|
||||||
|
|
||||||
init_wallbuys()
|
init_wallbuys()
|
||||||
{
|
{
|
||||||
scripts\zm\replaced\utility::wallbuy( "m14_zm", "m14", "weapon_upgrade", ( 13662, -1166, -134 ), ( 0, -90, 0 ) );
|
scripts\zm\replaced\utility::wallbuy("m14_zm", "m14", "weapon_upgrade", (13662, -1166, -134), (0, -90, 0));
|
||||||
scripts\zm\replaced\utility::wallbuy( "rottweil72_zm", "olympia", "weapon_upgrade", ( 13553, -539, -133 ), ( 0, -90, 0 ) );
|
scripts\zm\replaced\utility::wallbuy("rottweil72_zm", "olympia", "weapon_upgrade", (13553, -539, -133), (0, -90, 0));
|
||||||
scripts\zm\replaced\utility::wallbuy( "beretta93r_zm", "beretta93r", "weapon_upgrade", ( 13793, -1646, -105 ), ( 0, 0, 0 ) );
|
scripts\zm\replaced\utility::wallbuy("beretta93r_zm", "beretta93r", "weapon_upgrade", (13793, -1646, -105), (0, 0, 0));
|
||||||
scripts\zm\replaced\utility::wallbuy( "mp5k_zm", "mp5", "weapon_upgrade", ( 13553, -769, -133 ), ( 0, -90, 0 ) );
|
scripts\zm\replaced\utility::wallbuy("mp5k_zm", "mp5", "weapon_upgrade", (13553, -769, -133), (0, -90, 0));
|
||||||
scripts\zm\replaced\utility::wallbuy( "ak74u_zm", "ak74u", "weapon_upgrade", ( 13979, -1550, -134 ), ( 0, 90, 0 ) );
|
scripts\zm\replaced\utility::wallbuy("ak74u_zm", "ak74u", "weapon_upgrade", (13979, -1550, -134), (0, 90, 0));
|
||||||
scripts\zm\replaced\utility::wallbuy( "m16_zm", "m16", "weapon_upgrade", ( 14093, -351, -133 ), ( 0, 90, 0 ) );
|
scripts\zm\replaced\utility::wallbuy("m16_zm", "m16", "weapon_upgrade", (14093, -351, -133), (0, 90, 0));
|
||||||
scripts\zm\replaced\utility::wallbuy( "870mcs_zm", "870mcs", "weapon_upgrade", ( 13552, -1387, -134 ), ( 0, -90, 0 ) );
|
scripts\zm\replaced\utility::wallbuy("870mcs_zm", "870mcs", "weapon_upgrade", (13552, -1387, -134), (0, -90, 0));
|
||||||
scripts\zm\replaced\utility::wallbuy( "sticky_grenade_zm", "sticky_grenade", "weapon_upgrade", ( 13603, -1082, -134 ), ( 0, 0, 0 ) );
|
scripts\zm\replaced\utility::wallbuy("sticky_grenade_zm", "sticky_grenade", "weapon_upgrade", (13603, -1082, -134), (0, 0, 0));
|
||||||
scripts\zm\replaced\utility::wallbuy( "claymore_zm", "claymore", "claymore_purchase", ( 13603, -1281, -134 ), ( 0, -180, 0 ) );
|
scripts\zm\replaced\utility::wallbuy("claymore_zm", "claymore", "claymore_purchase", (13603, -1281, -134), (0, -180, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
init_barriers()
|
init_barriers()
|
||||||
{
|
{
|
||||||
model = spawn( "script_model", (10176.5, -14.8391, -221.988), 1);
|
model = spawn("script_model", (10176.5, -14.8391, -221.988), 1);
|
||||||
model.angles = (0, 35, 0);
|
model.angles = (0, 35, 0);
|
||||||
model setmodel("collision_clip_wall_256x256x10");
|
model setmodel("collision_clip_wall_256x256x10");
|
||||||
model disconnectpaths();
|
model disconnectpaths();
|
||||||
|
|
||||||
model = spawn( "script_model", (10002.6, -95.4607, -212.275), 1);
|
model = spawn("script_model", (10002.6, -95.4607, -212.275), 1);
|
||||||
model.angles = (0, 0, 0);
|
model.angles = (0, 0, 0);
|
||||||
model setmodel("collision_clip_wall_128x128x10");
|
model setmodel("collision_clip_wall_128x128x10");
|
||||||
model disconnectpaths();
|
model disconnectpaths();
|
||||||
|
|
||||||
model = spawn( "script_model", (10173.4, -1761.36, -217.812), 1);
|
model = spawn("script_model", (10173.4, -1761.36, -217.812), 1);
|
||||||
model.angles = (0, -60, 0);
|
model.angles = (0, -60, 0);
|
||||||
model setmodel("collision_clip_wall_128x128x10");
|
model setmodel("collision_clip_wall_128x128x10");
|
||||||
model disconnectpaths();
|
model disconnectpaths();
|
||||||
|
|
||||||
model = spawn( "script_model", (10147.5, -1657.67, -217.208), 1);
|
model = spawn("script_model", (10147.5, -1657.67, -217.208), 1);
|
||||||
model.angles = (0, 88, 0);
|
model.angles = (0, 88, 0);
|
||||||
model setmodel("collision_clip_wall_256x256x10");
|
model setmodel("collision_clip_wall_256x256x10");
|
||||||
model disconnectpaths();
|
model disconnectpaths();
|
||||||
|
|
||||||
model = spawn( "script_model", (10082.7, -1528.05, -217.288), 1);
|
model = spawn("script_model", (10082.7, -1528.05, -217.288), 1);
|
||||||
model.angles = (0, -180, 0);
|
model.angles = (0, -180, 0);
|
||||||
model setmodel("collision_clip_wall_128x128x10");
|
model setmodel("collision_clip_wall_128x128x10");
|
||||||
model disconnectpaths();
|
model disconnectpaths();
|
||||||
|
|
||||||
model = spawn( "script_model", (10159.6, -1104.45, -214.861), 1);
|
model = spawn("script_model", (10159.6, -1104.45, -214.861), 1);
|
||||||
model.angles = (0, -30, 0);
|
model.angles = (0, -30, 0);
|
||||||
model setmodel("collision_clip_64x64x256");
|
model setmodel("collision_clip_64x64x256");
|
||||||
model disconnectpaths();
|
model disconnectpaths();
|
||||||
|
|
||||||
model = spawn( "script_model", (10157.4, -1222.83, -217.875), 1);
|
model = spawn("script_model", (10157.4, -1222.83, -217.875), 1);
|
||||||
model.angles = (0, 10, 0);
|
model.angles = (0, 10, 0);
|
||||||
model setmodel("collision_clip_64x64x256");
|
model setmodel("collision_clip_64x64x256");
|
||||||
model disconnectpaths();
|
model disconnectpaths();
|
||||||
|
|
||||||
model = spawn( "script_model", (10216.6, -1134.53, -217.261), 1);
|
model = spawn("script_model", (10216.6, -1134.53, -217.261), 1);
|
||||||
model.angles = (0, -30, 0);
|
model.angles = (0, -30, 0);
|
||||||
model setmodel("collision_clip_64x64x256");
|
model setmodel("collision_clip_64x64x256");
|
||||||
model disconnectpaths();
|
model disconnectpaths();
|
||||||
|
|
||||||
model = spawn( "script_model", (10147.4, -1152.83, -217.875), 1);
|
model = spawn("script_model", (10147.4, -1152.83, -217.875), 1);
|
||||||
model.angles = (0, 10, 0);
|
model.angles = (0, 10, 0);
|
||||||
model setmodel("collision_clip_64x64x256");
|
model setmodel("collision_clip_64x64x256");
|
||||||
model disconnectpaths();
|
model disconnectpaths();
|
||||||
|
|
||||||
model = spawn( "script_model", (10099.6, -1064.45, -214.861), 1);
|
model = spawn("script_model", (10099.6, -1064.45, -214.861), 1);
|
||||||
model.angles = (0, -30, 0);
|
model.angles = (0, -30, 0);
|
||||||
model setmodel("collision_clip_64x64x256");
|
model setmodel("collision_clip_64x64x256");
|
||||||
model disconnectpaths();
|
model disconnectpaths();
|
||||||
|
|
||||||
model = spawn( "script_model", (10016.8, -1490.24, -217.875), 1);
|
model = spawn("script_model", (10016.8, -1490.24, -217.875), 1);
|
||||||
model.angles = (0, -30, 0);
|
model.angles = (0, -30, 0);
|
||||||
model setmodel("collision_clip_128x128x128");
|
model setmodel("collision_clip_128x128x128");
|
||||||
model disconnectpaths();
|
model disconnectpaths();
|
||||||
|
|
||||||
model = spawn( "script_model", (10443.9, -353.378, -217.748), 1);
|
model = spawn("script_model", (10443.9, -353.378, -217.748), 1);
|
||||||
model.angles = (0, -35, 0);
|
model.angles = (0, -35, 0);
|
||||||
model setmodel("collision_clip_128x128x128");
|
model setmodel("collision_clip_128x128x128");
|
||||||
model disconnectpaths();
|
model disconnectpaths();
|
||||||
|
|
||||||
model = spawn( "script_model", (10393.5, -421.323, -220.142), 1);
|
model = spawn("script_model", (10393.5, -421.323, -220.142), 1);
|
||||||
model.angles = (0, -25, 0);
|
model.angles = (0, -25, 0);
|
||||||
model setmodel("collision_clip_128x128x128");
|
model setmodel("collision_clip_128x128x128");
|
||||||
model disconnectpaths();
|
model disconnectpaths();
|
||||||
|
|
||||||
model = spawn( "script_model", (10334.9, -544.594, -217.922), 1);
|
model = spawn("script_model", (10334.9, -544.594, -217.922), 1);
|
||||||
model.angles = (0, -25, 0);
|
model.angles = (0, -25, 0);
|
||||||
model setmodel("collision_clip_128x128x128");
|
model setmodel("collision_clip_128x128x128");
|
||||||
model disconnectpaths();
|
model disconnectpaths();
|
||||||
@ -207,12 +207,12 @@ init_barriers()
|
|||||||
origin = (9720, -1090, -212);
|
origin = (9720, -1090, -212);
|
||||||
angles = (0, 90, 0);
|
angles = (0, 90, 0);
|
||||||
|
|
||||||
model = spawn( "script_model", origin, 1);
|
model = spawn("script_model", origin, 1);
|
||||||
model.angles = angles;
|
model.angles = angles;
|
||||||
model setmodel("veh_t6_civ_smallwagon_dead");
|
model setmodel("veh_t6_civ_smallwagon_dead");
|
||||||
model disconnectpaths();
|
model disconnectpaths();
|
||||||
|
|
||||||
model = spawn( "script_model", origin + (anglesToRight(angles) * 24) + (anglesToUp(angles) * 128), 1);
|
model = spawn("script_model", origin + (anglesToRight(angles) * 24) + (anglesToUp(angles) * 128), 1);
|
||||||
model.angles = angles;
|
model.angles = angles;
|
||||||
model setmodel("collision_clip_wall_256x256x10");
|
model setmodel("collision_clip_wall_256x256x10");
|
||||||
model disconnectpaths();
|
model disconnectpaths();
|
||||||
@ -220,12 +220,12 @@ init_barriers()
|
|||||||
origin = (9900, -232, -217);
|
origin = (9900, -232, -217);
|
||||||
angles = (0, -90, 0);
|
angles = (0, -90, 0);
|
||||||
|
|
||||||
model = spawn( "script_model", origin, 1);
|
model = spawn("script_model", origin, 1);
|
||||||
model.angles = angles;
|
model.angles = angles;
|
||||||
model setmodel("veh_t6_civ_microbus_dead");
|
model setmodel("veh_t6_civ_microbus_dead");
|
||||||
model disconnectpaths();
|
model disconnectpaths();
|
||||||
|
|
||||||
model = spawn( "script_model", origin + (anglesToRight(angles) * -48) + (anglesToUp(angles) * 128), 1);
|
model = spawn("script_model", origin + (anglesToRight(angles) * -48) + (anglesToUp(angles) * 128), 1);
|
||||||
model.angles = angles;
|
model.angles = angles;
|
||||||
model setmodel("collision_clip_wall_256x256x10");
|
model setmodel("collision_clip_wall_256x256x10");
|
||||||
model disconnectpaths();
|
model disconnectpaths();
|
||||||
@ -233,9 +233,9 @@ init_barriers()
|
|||||||
|
|
||||||
disable_zombie_spawn_locations()
|
disable_zombie_spawn_locations()
|
||||||
{
|
{
|
||||||
for ( z = 0; z < level.zone_keys.size; z++ )
|
for (z = 0; z < level.zone_keys.size; z++)
|
||||||
{
|
{
|
||||||
if ( level.zone_keys[ z ] != "zone_amb_cornfield" )
|
if (level.zone_keys[ z ] != "zone_amb_cornfield")
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -244,7 +244,7 @@ disable_zombie_spawn_locations()
|
|||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
|
|
||||||
while ( i < zone.spawn_locations.size )
|
while (i < zone.spawn_locations.size)
|
||||||
{
|
{
|
||||||
if (zone.spawn_locations[i].origin[0] <= 9700)
|
if (zone.spawn_locations[i].origin[0] <= 9700)
|
||||||
{
|
{
|
||||||
|
@ -9,10 +9,10 @@
|
|||||||
|
|
||||||
struct_init()
|
struct_init()
|
||||||
{
|
{
|
||||||
scripts\zm\replaced\utility::register_perk_struct( "specialty_armorvest", "zombie_vending_jugg", ( -3563, -7196, -59 ), ( 0, 0, 0 ) );
|
scripts\zm\replaced\utility::register_perk_struct("specialty_armorvest", "zombie_vending_jugg", (-3563, -7196, -59), (0, 0, 0));
|
||||||
scripts\zm\replaced\utility::register_perk_struct( "specialty_quickrevive", "zombie_vending_quickrevive", ( -6207, -6541, -46 ), ( 0, 60, 0 ) );
|
scripts\zm\replaced\utility::register_perk_struct("specialty_quickrevive", "zombie_vending_quickrevive", (-6207, -6541, -46), (0, 60, 0));
|
||||||
scripts\zm\replaced\utility::register_perk_struct( "specialty_fastreload", "zombie_vending_sleight", ( -5470, -7859.5, 0 ), ( 0, 270, 0 ) );
|
scripts\zm\replaced\utility::register_perk_struct("specialty_fastreload", "zombie_vending_sleight", (-5470, -7859.5, 0), (0, 270, 0));
|
||||||
scripts\zm\replaced\utility::register_perk_struct( "specialty_rof", "zombie_vending_doubletap2", ( -4170, -7592, -63 ), ( 0, 270, 0 ) );
|
scripts\zm\replaced\utility::register_perk_struct("specialty_rof", "zombie_vending_doubletap2", (-4170, -7592, -63), (0, 270, 0));
|
||||||
|
|
||||||
ind = 0;
|
ind = 0;
|
||||||
respawnpoints = maps\mp\gametypes_zm\_zm_gametype::get_player_spawns_for_gametype();
|
respawnpoints = maps\mp\gametypes_zm\_zm_gametype::get_player_spawns_for_gametype();
|
||||||
@ -27,7 +27,7 @@ struct_init()
|
|||||||
}
|
}
|
||||||
|
|
||||||
zone = "zone_gas";
|
zone = "zone_gas";
|
||||||
scripts\zm\replaced\utility::register_map_spawn_group( respawnpoints[ind].origin, zone, respawnpoints[ind].script_int );
|
scripts\zm\replaced\utility::register_map_spawn_group(respawnpoints[ind].origin, zone, respawnpoints[ind].script_int);
|
||||||
|
|
||||||
respawn_array = getstructarray(respawnpoints[ind].target, "targetname");
|
respawn_array = getstructarray(respawnpoints[ind].target, "targetname");
|
||||||
|
|
||||||
@ -38,40 +38,40 @@ struct_init()
|
|||||||
respawn.angles += (0, 180, 0);
|
respawn.angles += (0, 180, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
scripts\zm\replaced\utility::register_map_spawn( respawn.origin, respawn.angles, zone, respawn.script_int );
|
scripts\zm\replaced\utility::register_map_spawn(respawn.origin, respawn.angles, zone, respawn.script_int);
|
||||||
}
|
}
|
||||||
|
|
||||||
zone = "zone_roadside_east";
|
zone = "zone_roadside_east";
|
||||||
scripts\zm\replaced\utility::register_map_spawn_group( (-4173, -7095, -35), zone, 6000 );
|
scripts\zm\replaced\utility::register_map_spawn_group((-4173, -7095, -35), zone, 6000);
|
||||||
|
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (-4031, -6830, -18), (0, 180, 0), zone );
|
scripts\zm\replaced\utility::register_map_spawn((-4031, -6830, -18), (0, 180, 0), zone);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (-4106, -6830, -18), (0, 180, 0), zone );
|
scripts\zm\replaced\utility::register_map_spawn((-4106, -6830, -18), (0, 180, 0), zone);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (-4181, -6830, -18), (0, 180, 0), zone );
|
scripts\zm\replaced\utility::register_map_spawn((-4181, -6830, -18), (0, 180, 0), zone);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (-4256, -6830, -18), (0, 180, 0), zone );
|
scripts\zm\replaced\utility::register_map_spawn((-4256, -6830, -18), (0, 180, 0), zone);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (-4031, -7326, -35), (0, 180, 0), zone );
|
scripts\zm\replaced\utility::register_map_spawn((-4031, -7326, -35), (0, 180, 0), zone);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (-4106, -7326, -35), (0, 180, 0), zone );
|
scripts\zm\replaced\utility::register_map_spawn((-4106, -7326, -35), (0, 180, 0), zone);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (-4181, -7326, -35), (0, 180, 0), zone );
|
scripts\zm\replaced\utility::register_map_spawn((-4181, -7326, -35), (0, 180, 0), zone);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (-4256, -7326, -35), (0, 180, 0), zone );
|
scripts\zm\replaced\utility::register_map_spawn((-4256, -7326, -35), (0, 180, 0), zone);
|
||||||
|
|
||||||
zone = "zone_roadside_west";
|
zone = "zone_roadside_west";
|
||||||
scripts\zm\replaced\utility::register_map_spawn_group( (-5799, -6839, -30), zone, 6000 );
|
scripts\zm\replaced\utility::register_map_spawn_group((-5799, -6839, -30), zone, 6000);
|
||||||
|
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (-6120, -6684, -30), (0, 0, 0), zone );
|
scripts\zm\replaced\utility::register_map_spawn((-6120, -6684, -30), (0, 0, 0), zone);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (-6045, -6684, -30), (0, 0, 0), zone );
|
scripts\zm\replaced\utility::register_map_spawn((-6045, -6684, -30), (0, 0, 0), zone);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (-5970, -6684, -30), (0, 0, 0), zone );
|
scripts\zm\replaced\utility::register_map_spawn((-5970, -6684, -30), (0, 0, 0), zone);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (-5895, -6684, -30), (0, 0, 0), zone );
|
scripts\zm\replaced\utility::register_map_spawn((-5895, -6684, -30), (0, 0, 0), zone);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (-6120, -6984, -30), (0, 0, 0), zone );
|
scripts\zm\replaced\utility::register_map_spawn((-6120, -6984, -30), (0, 0, 0), zone);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (-6045, -6984, -30), (0, 0, 0), zone );
|
scripts\zm\replaced\utility::register_map_spawn((-6045, -6984, -30), (0, 0, 0), zone);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (-5970, -6984, -30), (0, 0, 0), zone );
|
scripts\zm\replaced\utility::register_map_spawn((-5970, -6984, -30), (0, 0, 0), zone);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (-5895, -6984, -30), (0, 0, 0), zone );
|
scripts\zm\replaced\utility::register_map_spawn((-5895, -6984, -30), (0, 0, 0), zone);
|
||||||
|
|
||||||
gameObjects = getEntArray( "script_model", "classname" );
|
gameObjects = getEntArray("script_model", "classname");
|
||||||
|
|
||||||
foreach ( object in gameObjects )
|
foreach (object in gameObjects)
|
||||||
{
|
{
|
||||||
if ( isDefined( object.script_noteworthy ) && object.script_noteworthy == getDvar( "ui_zm_mapstartlocation" ) )
|
if (isDefined(object.script_noteworthy) && object.script_noteworthy == getDvar("ui_zm_mapstartlocation"))
|
||||||
{
|
{
|
||||||
if ( isDefined( object.script_gameobjectname ) && object.script_gameobjectname == "zcleansed zturned" )
|
if (isDefined(object.script_gameobjectname) && object.script_gameobjectname == "zcleansed zturned")
|
||||||
{
|
{
|
||||||
object.script_gameobjectname = "zstandard zgrief zcleansed zturned";
|
object.script_gameobjectname = "zstandard zgrief zcleansed zturned";
|
||||||
|
|
||||||
@ -150,71 +150,71 @@ main()
|
|||||||
|
|
||||||
treasure_chest_init()
|
treasure_chest_init()
|
||||||
{
|
{
|
||||||
chests = getstructarray( "treasure_chest_use", "targetname" );
|
chests = getstructarray("treasure_chest_use", "targetname");
|
||||||
level.chests = [];
|
level.chests = [];
|
||||||
level.chests[0] = chests[3];
|
level.chests[0] = chests[3];
|
||||||
maps\mp\zombies\_zm_magicbox::treasure_chest_init( "start_chest" );
|
maps\mp\zombies\_zm_magicbox::treasure_chest_init("start_chest");
|
||||||
}
|
}
|
||||||
|
|
||||||
init_wallbuys()
|
init_wallbuys()
|
||||||
{
|
{
|
||||||
scripts\zm\replaced\utility::wallbuy( "m14_zm", "m14", "weapon_upgrade", ( -5085, -7807, -5 ), ( 0, 0, 0 ) );
|
scripts\zm\replaced\utility::wallbuy("m14_zm", "m14", "weapon_upgrade", (-5085, -7807, -5), (0, 0, 0));
|
||||||
scripts\zm\replaced\utility::wallbuy( "rottweil72_zm", "olympia", "weapon_upgrade", ( -4576, -7748, 18 ), ( 0, 90, 0 ) );
|
scripts\zm\replaced\utility::wallbuy("rottweil72_zm", "olympia", "weapon_upgrade", (-4576, -7748, 18), (0, 90, 0));
|
||||||
scripts\zm\replaced\utility::wallbuy( "mp5k_zm", "mp5", "weapon_upgrade", ( -5489, -7982.7, 62 ), ( 0, 1, 0 ) );
|
scripts\zm\replaced\utility::wallbuy("mp5k_zm", "mp5", "weapon_upgrade", (-5489, -7982.7, 62), (0, 1, 0));
|
||||||
scripts\zm\replaced\utility::wallbuy( "tazer_knuckles_zm", "tazer_knuckles", "tazer_upgrade", ( -6265, -7941, 100 ), ( 0, 90, 0 ) );
|
scripts\zm\replaced\utility::wallbuy("tazer_knuckles_zm", "tazer_knuckles", "tazer_upgrade", (-6265, -7941, 100), (0, 90, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
init_barriers()
|
init_barriers()
|
||||||
{
|
{
|
||||||
collision = spawn( "script_model", ( -5000, -6700, 0 ), 1 );
|
collision = spawn("script_model", (-5000, -6700, 0), 1);
|
||||||
collision setmodel( "zm_collision_transit_diner_survival" );
|
collision setmodel("zm_collision_transit_diner_survival");
|
||||||
collision disconnectpaths();
|
collision disconnectpaths();
|
||||||
|
|
||||||
origin = ( -6350, -7046, -60 );
|
origin = (-6350, -7046, -60);
|
||||||
angles = ( 0, 165, 0 );
|
angles = (0, 165, 0);
|
||||||
scripts\zm\replaced\utility::barrier( "collision_player_wall_64x64x10", origin + (anglesToUp(angles) * 32), angles );
|
scripts\zm\replaced\utility::barrier("collision_player_wall_64x64x10", origin + (anglesToUp(angles) * 32), angles);
|
||||||
scripts\zm\replaced\utility::barrier( "collision_player_wall_64x64x10", origin + (anglesToUp(angles) * 96), angles );
|
scripts\zm\replaced\utility::barrier("collision_player_wall_64x64x10", origin + (anglesToUp(angles) * 96), angles);
|
||||||
scripts\zm\replaced\utility::barrier( "afr_barrel_biohazard_white_rust", origin + (anglesToForward(angles) * -24) + (anglesToRight(angles) * -16) + (anglesToUp(angles) * 14), angles + (0, 90, 90) );
|
scripts\zm\replaced\utility::barrier("afr_barrel_biohazard_white_rust", origin + (anglesToForward(angles) * -24) + (anglesToRight(angles) * -16) + (anglesToUp(angles) * 14), angles + (0, 90, 90));
|
||||||
}
|
}
|
||||||
|
|
||||||
generatebuildabletarps()
|
generatebuildabletarps()
|
||||||
{
|
{
|
||||||
tarp = spawn( "script_model", ( -4688, -7974, -64 ) );
|
tarp = spawn("script_model", (-4688, -7974, -64));
|
||||||
tarp.angles = ( 0, 0, 0 );
|
tarp.angles = (0, 0, 0);
|
||||||
tarp setModel( "p6_zm_buildable_bench_tarp" );
|
tarp setModel("p6_zm_buildable_bench_tarp");
|
||||||
}
|
}
|
||||||
|
|
||||||
disable_zombie_spawn_locations()
|
disable_zombie_spawn_locations()
|
||||||
{
|
{
|
||||||
for ( z = 0; z < level.zone_keys.size; z++ )
|
for (z = 0; z < level.zone_keys.size; z++)
|
||||||
{
|
{
|
||||||
zone = level.zones[ level.zone_keys[ z ] ];
|
zone = level.zones[ level.zone_keys[ z ] ];
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
|
|
||||||
while ( i < zone.spawn_locations.size )
|
while (i < zone.spawn_locations.size)
|
||||||
{
|
{
|
||||||
if ( zone.spawn_locations[ i ].targetname == "zone_trans_diner_spawners")
|
if (zone.spawn_locations[ i ].targetname == "zone_trans_diner_spawners")
|
||||||
{
|
{
|
||||||
zone.spawn_locations[ i ].is_enabled = false;
|
zone.spawn_locations[ i ].is_enabled = false;
|
||||||
}
|
}
|
||||||
else if ( zone.spawn_locations[ i ].targetname == "zone_trans_diner2_spawners")
|
else if (zone.spawn_locations[ i ].targetname == "zone_trans_diner2_spawners")
|
||||||
{
|
{
|
||||||
zone.spawn_locations[ i ].is_enabled = false;
|
zone.spawn_locations[ i ].is_enabled = false;
|
||||||
}
|
}
|
||||||
else if ( zone.spawn_locations[ i ].origin == ( -3825, -6576, -52.7 ) )
|
else if (zone.spawn_locations[ i ].origin == (-3825, -6576, -52.7))
|
||||||
{
|
{
|
||||||
zone.spawn_locations[ i ].is_enabled = false;
|
zone.spawn_locations[ i ].is_enabled = false;
|
||||||
}
|
}
|
||||||
else if ( zone.spawn_locations[ i ].origin == ( -5130, -6512, -35.4 ) )
|
else if (zone.spawn_locations[ i ].origin == (-5130, -6512, -35.4))
|
||||||
{
|
{
|
||||||
zone.spawn_locations[ i ].is_enabled = false;
|
zone.spawn_locations[ i ].is_enabled = false;
|
||||||
}
|
}
|
||||||
else if ( zone.spawn_locations[ i ].origin == ( -6462, -7159, -64 ) )
|
else if (zone.spawn_locations[ i ].origin == (-6462, -7159, -64))
|
||||||
{
|
{
|
||||||
zone.spawn_locations[ i ].is_enabled = false;
|
zone.spawn_locations[ i ].is_enabled = false;
|
||||||
}
|
}
|
||||||
else if ( zone.spawn_locations[ i ].origin == ( -6531, -6613, -54.4 ) )
|
else if (zone.spawn_locations[ i ].origin == (-6531, -6613, -54.4))
|
||||||
{
|
{
|
||||||
zone.spawn_locations[ i ].is_enabled = false;
|
zone.spawn_locations[ i ].is_enabled = false;
|
||||||
}
|
}
|
||||||
|
@ -10,12 +10,12 @@
|
|||||||
|
|
||||||
struct_init()
|
struct_init()
|
||||||
{
|
{
|
||||||
scripts\zm\replaced\utility::register_perk_struct( "specialty_armorvest", "zombie_vending_jugg", ( 10952, 8055, -565 ), ( 0, 270, 0 ) );
|
scripts\zm\replaced\utility::register_perk_struct("specialty_armorvest", "zombie_vending_jugg", (10952, 8055, -565), (0, 270, 0));
|
||||||
scripts\zm\replaced\utility::register_perk_struct( "specialty_quickrevive", "zombie_vending_quickrevive", ( 11855, 7308, -758 ), ( 0, 220, 0 ) );
|
scripts\zm\replaced\utility::register_perk_struct("specialty_quickrevive", "zombie_vending_quickrevive", (11855, 7308, -758), (0, 220, 0));
|
||||||
scripts\zm\replaced\utility::register_perk_struct( "specialty_fastreload", "zombie_vending_sleight", ( 11571, 7723, -757 ), ( 0, 0, 0 ) );
|
scripts\zm\replaced\utility::register_perk_struct("specialty_fastreload", "zombie_vending_sleight", (11571, 7723, -757), (0, 0, 0));
|
||||||
scripts\zm\replaced\utility::register_perk_struct( "specialty_rof", "zombie_vending_doubletap2", ( 11414, 8930, -352 ), ( 0, 0, 0 ) );
|
scripts\zm\replaced\utility::register_perk_struct("specialty_rof", "zombie_vending_doubletap2", (11414, 8930, -352), (0, 0, 0));
|
||||||
scripts\zm\replaced\utility::register_perk_struct( "specialty_scavenger", "zombie_vending_tombstone", ( 10946, 8308.77, -408 ), ( 0, 270, 0 ) );
|
scripts\zm\replaced\utility::register_perk_struct("specialty_scavenger", "zombie_vending_tombstone", (10946, 8308.77, -408), (0, 270, 0));
|
||||||
scripts\zm\replaced\utility::register_perk_struct( "specialty_weapupgrade", "p6_anim_zm_buildable_pap_on", ( 12333, 8158, -752 ), ( 0, 180, 0 ) );
|
scripts\zm\replaced\utility::register_perk_struct("specialty_weapupgrade", "p6_anim_zm_buildable_pap_on", (12333, 8158, -752), (0, 180, 0));
|
||||||
|
|
||||||
ind = 0;
|
ind = 0;
|
||||||
respawnpoints = maps\mp\gametypes_zm\_zm_gametype::get_player_spawns_for_gametype();
|
respawnpoints = maps\mp\gametypes_zm\_zm_gametype::get_player_spawns_for_gametype();
|
||||||
@ -30,19 +30,19 @@ struct_init()
|
|||||||
}
|
}
|
||||||
|
|
||||||
zone = "zone_pow";
|
zone = "zone_pow";
|
||||||
scripts\zm\replaced\utility::register_map_spawn_group( (10160, 7820, -541), zone, 6000 );
|
scripts\zm\replaced\utility::register_map_spawn_group((10160, 7820, -541), zone, 6000);
|
||||||
|
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (10160, 8060, -541), (0, 0, 0), zone, 1 );
|
scripts\zm\replaced\utility::register_map_spawn((10160, 8060, -541), (0, 0, 0), zone, 1);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (10160, 7996, -541), (0, 0, 0), zone, 1 );
|
scripts\zm\replaced\utility::register_map_spawn((10160, 7996, -541), (0, 0, 0), zone, 1);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (10160, 7932, -541), (0, 0, 0), zone, 1 );
|
scripts\zm\replaced\utility::register_map_spawn((10160, 7932, -541), (0, 0, 0), zone, 1);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (10160, 7868, -541), (0, 0, 0), zone, 1 );
|
scripts\zm\replaced\utility::register_map_spawn((10160, 7868, -541), (0, 0, 0), zone, 1);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (10160, 7772, -541), (0, 0, 0), zone, 2 );
|
scripts\zm\replaced\utility::register_map_spawn((10160, 7772, -541), (0, 0, 0), zone, 2);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (10160, 7708, -541), (0, 0, 0), zone, 2 );
|
scripts\zm\replaced\utility::register_map_spawn((10160, 7708, -541), (0, 0, 0), zone, 2);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (10160, 7644, -541), (0, 0, 0), zone, 2 );
|
scripts\zm\replaced\utility::register_map_spawn((10160, 7644, -541), (0, 0, 0), zone, 2);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (10160, 7580, -541), (0, 0, 0), zone, 2 );
|
scripts\zm\replaced\utility::register_map_spawn((10160, 7580, -541), (0, 0, 0), zone, 2);
|
||||||
|
|
||||||
zone = "zone_prr";
|
zone = "zone_prr";
|
||||||
scripts\zm\replaced\utility::register_map_spawn_group( respawnpoints[ind].origin, zone, respawnpoints[ind].script_int );
|
scripts\zm\replaced\utility::register_map_spawn_group(respawnpoints[ind].origin, zone, respawnpoints[ind].script_int);
|
||||||
|
|
||||||
respawn_array = getstructarray(respawnpoints[ind].target, "targetname");
|
respawn_array = getstructarray(respawnpoints[ind].target, "targetname");
|
||||||
|
|
||||||
@ -59,20 +59,20 @@ struct_init()
|
|||||||
angles += (0, -90, 0);
|
angles += (0, -90, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
scripts\zm\replaced\utility::register_map_spawn( respawn.origin, angles, zone );
|
scripts\zm\replaced\utility::register_map_spawn(respawn.origin, angles, zone);
|
||||||
}
|
}
|
||||||
|
|
||||||
zone = "zone_pow_warehouse";
|
zone = "zone_pow_warehouse";
|
||||||
scripts\zm\replaced\utility::register_map_spawn_group( (11033, 8587, -387), zone, 6000 );
|
scripts\zm\replaced\utility::register_map_spawn_group((11033, 8587, -387), zone, 6000);
|
||||||
|
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (11341, 8300, -459), (0, 90, 0), zone );
|
scripts\zm\replaced\utility::register_map_spawn((11341, 8300, -459), (0, 90, 0), zone);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (11341, 8587, -387), (0, 90, 0), zone );
|
scripts\zm\replaced\utility::register_map_spawn((11341, 8587, -387), (0, 90, 0), zone);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (11341, 8846, -322), (0, 180, 0), zone );
|
scripts\zm\replaced\utility::register_map_spawn((11341, 8846, -322), (0, 180, 0), zone);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (10630, 8846, -323), (0, -90, 0), zone );
|
scripts\zm\replaced\utility::register_map_spawn((10630, 8846, -323), (0, -90, 0), zone);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (10630, 8451, -379), (0, 0, 0), zone );
|
scripts\zm\replaced\utility::register_map_spawn((10630, 8451, -379), (0, 0, 0), zone);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (10884, 8192, -379), (0, 180, 0), zone );
|
scripts\zm\replaced\utility::register_map_spawn((10884, 8192, -379), (0, 180, 0), zone);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (11359, 8774, -548), (0, -90, 0), zone );
|
scripts\zm\replaced\utility::register_map_spawn((11359, 8774, -548), (0, -90, 0), zone);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (11719, 8608, -547), (0, -90, 0), zone );
|
scripts\zm\replaced\utility::register_map_spawn((11719, 8608, -547), (0, -90, 0), zone);
|
||||||
}
|
}
|
||||||
|
|
||||||
precache()
|
precache()
|
||||||
@ -95,68 +95,68 @@ main()
|
|||||||
|
|
||||||
treasure_chest_init()
|
treasure_chest_init()
|
||||||
{
|
{
|
||||||
chests = getstructarray( "treasure_chest_use", "targetname" );
|
chests = getstructarray("treasure_chest_use", "targetname");
|
||||||
level.chests = [];
|
level.chests = [];
|
||||||
level.chests[0] = chests[2];
|
level.chests[0] = chests[2];
|
||||||
maps\mp\zombies\_zm_magicbox::treasure_chest_init( "pow_chest" );
|
maps\mp\zombies\_zm_magicbox::treasure_chest_init("pow_chest");
|
||||||
}
|
}
|
||||||
|
|
||||||
init_wallbuys()
|
init_wallbuys()
|
||||||
{
|
{
|
||||||
scripts\zm\replaced\utility::wallbuy( "m14_zm", "m14", "weapon_upgrade", ( 10559, 8220, -495 ), ( 0, 90, 0) );
|
scripts\zm\replaced\utility::wallbuy("m14_zm", "m14", "weapon_upgrade", (10559, 8220, -495), (0, 90, 0));
|
||||||
scripts\zm\replaced\utility::wallbuy( "rottweil72_zm", "olympia", "weapon_upgrade", ( 10678, 8135, -476 ), ( 0, 180, 0 ) );
|
scripts\zm\replaced\utility::wallbuy("rottweil72_zm", "olympia", "weapon_upgrade", (10678, 8135, -476), (0, 180, 0));
|
||||||
scripts\zm\replaced\utility::wallbuy( "870mcs_zm", "870mcs", "weapon_upgrade", ( 11778, 7664, -697 ), ( 0, 170, 0 ) );
|
scripts\zm\replaced\utility::wallbuy("870mcs_zm", "870mcs", "weapon_upgrade", (11778, 7664, -697), (0, 170, 0));
|
||||||
scripts\zm\replaced\utility::wallbuy( "mp5k_zm", "mp5", "weapon_upgrade", ( 11452, 8692, -521 ), ( 0, 90, 0 ) );
|
scripts\zm\replaced\utility::wallbuy("mp5k_zm", "mp5", "weapon_upgrade", (11452, 8692, -521), (0, 90, 0));
|
||||||
scripts\zm\replaced\utility::wallbuy( "bowie_knife_zm", "bowie_knife", "bowie_upgrade", ( 10835, 8145, -353 ), ( 0, 0, 0 ) );
|
scripts\zm\replaced\utility::wallbuy("bowie_knife_zm", "bowie_knife", "bowie_upgrade", (10835, 8145, -353), (0, 0, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
init_barriers()
|
init_barriers()
|
||||||
{
|
{
|
||||||
// fog before power station
|
// fog before power station
|
||||||
origin = ( 10215, 7265, -570 );
|
origin = (10215, 7265, -570);
|
||||||
angles = ( 0, 0, 0 );
|
angles = (0, 0, 0);
|
||||||
scripts\zm\replaced\utility::barrier( "collision_player_wall_512x512x10", origin + (anglesToUp(angles) * 256), angles );
|
scripts\zm\replaced\utility::barrier("collision_player_wall_512x512x10", origin + (anglesToUp(angles) * 256), angles);
|
||||||
scripts\zm\replaced\utility::barrier( "veh_t6_civ_microbus_dead", origin + (anglesToForward(angles) * 96) + (anglesToRight(angles) * 48), angles );
|
scripts\zm\replaced\utility::barrier("veh_t6_civ_microbus_dead", origin + (anglesToForward(angles) * 96) + (anglesToRight(angles) * 48), angles);
|
||||||
scripts\zm\replaced\utility::barrier( "veh_t6_civ_60s_coupe_dead", origin + (anglesToForward(angles) * -112) + (anglesToRight(angles) * 80), angles + (0, 30, 0) );
|
scripts\zm\replaced\utility::barrier("veh_t6_civ_60s_coupe_dead", origin + (anglesToForward(angles) * -112) + (anglesToRight(angles) * 80), angles + (0, 30, 0));
|
||||||
|
|
||||||
// fog after power station
|
// fog after power station
|
||||||
origin = ( 10215, 8670, -579 );
|
origin = (10215, 8670, -579);
|
||||||
angles = ( 0, 7.5, 0 );
|
angles = (0, 7.5, 0);
|
||||||
scripts\zm\replaced\utility::barrier( "collision_player_wall_512x512x10", origin + (anglesToForward(angles) * -128) + (anglesToUp(angles) * 256), angles );
|
scripts\zm\replaced\utility::barrier("collision_player_wall_512x512x10", origin + (anglesToForward(angles) * -128) + (anglesToUp(angles) * 256), angles);
|
||||||
scripts\zm\replaced\utility::barrier( "collision_player_wall_512x512x10", origin + (anglesToForward(angles) * 64) + (anglesToUp(angles) * 256), angles );
|
scripts\zm\replaced\utility::barrier("collision_player_wall_512x512x10", origin + (anglesToForward(angles) * 64) + (anglesToUp(angles) * 256), angles);
|
||||||
scripts\zm\replaced\utility::barrier( "p6_zm_rocks_large_cluster_01", origin + (anglesToForward(angles) * -176) + (anglesToRight(angles) * -368) + (anglesToUp(angles) * 256), angles + (0, -15, 0) );
|
scripts\zm\replaced\utility::barrier("p6_zm_rocks_large_cluster_01", origin + (anglesToForward(angles) * -176) + (anglesToRight(angles) * -368) + (anglesToUp(angles) * 256), angles + (0, -15, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
show_powerswitch()
|
show_powerswitch()
|
||||||
{
|
{
|
||||||
body = spawn( "script_model", ( 12237.4, 8512, -749.9 ) );
|
body = spawn("script_model", (12237.4, 8512, -749.9));
|
||||||
body.angles = ( 0, 0, 0 );
|
body.angles = (0, 0, 0);
|
||||||
body setModel( "p6_zm_buildable_pswitch_body" );
|
body setModel("p6_zm_buildable_pswitch_body");
|
||||||
|
|
||||||
lever = spawn( "script_model", ( 12237.4, 8503, -703.65 ) );
|
lever = spawn("script_model", (12237.4, 8503, -703.65));
|
||||||
lever.angles = ( 0, 0, 0 );
|
lever.angles = (0, 0, 0);
|
||||||
lever setModel( "p6_zm_buildable_pswitch_lever" );
|
lever setModel("p6_zm_buildable_pswitch_lever");
|
||||||
|
|
||||||
hand = spawn( "script_model", ( 12237.7, 8503.1, -684.55 ) );
|
hand = spawn("script_model", (12237.7, 8503.1, -684.55));
|
||||||
hand.angles = ( 0, 270, 0 );
|
hand.angles = (0, 270, 0);
|
||||||
hand setModel( "p6_zm_buildable_pswitch_hand" );
|
hand setModel("p6_zm_buildable_pswitch_hand");
|
||||||
}
|
}
|
||||||
|
|
||||||
activate_core()
|
activate_core()
|
||||||
{
|
{
|
||||||
reactor_core_mover = getent( "core_mover", "targetname" );
|
reactor_core_mover = getent("core_mover", "targetname");
|
||||||
|
|
||||||
maps\mp\zm_transit_power::linkentitiestocoremover( reactor_core_mover );
|
maps\mp\zm_transit_power::linkentitiestocoremover(reactor_core_mover);
|
||||||
|
|
||||||
reactor_core_mover thread maps\mp\zm_transit_power::coremove( 0.05 );
|
reactor_core_mover thread maps\mp\zm_transit_power::coremove(0.05);
|
||||||
}
|
}
|
||||||
|
|
||||||
generatebuildabletarps()
|
generatebuildabletarps()
|
||||||
{
|
{
|
||||||
// trap
|
// trap
|
||||||
tarp = spawn( "script_model", ( 11325, 8170, -488 ) );
|
tarp = spawn("script_model", (11325, 8170, -488));
|
||||||
tarp.angles = ( 0, 0, 0 );
|
tarp.angles = (0, 0, 0);
|
||||||
tarp setModel( "p6_zm_buildable_bench_tarp" );
|
tarp setModel("p6_zm_buildable_bench_tarp");
|
||||||
}
|
}
|
||||||
|
|
||||||
disable_zombie_spawn_locations()
|
disable_zombie_spawn_locations()
|
||||||
|
@ -10,48 +10,48 @@
|
|||||||
|
|
||||||
struct_init()
|
struct_init()
|
||||||
{
|
{
|
||||||
scripts\zm\replaced\utility::register_perk_struct( "specialty_armorvest", "zombie_vending_jugg", ( -11541, -2630, 194 ), ( 0, -180, 0 ) );
|
scripts\zm\replaced\utility::register_perk_struct("specialty_armorvest", "zombie_vending_jugg", (-11541, -2630, 194), (0, -180, 0));
|
||||||
scripts\zm\replaced\utility::register_perk_struct( "specialty_quickrevive", "zombie_vending_quickrevive", ( -10780, -2565, 224 ), ( 0, 274, 0 ) );
|
scripts\zm\replaced\utility::register_perk_struct("specialty_quickrevive", "zombie_vending_quickrevive", (-10780, -2565, 224), (0, 274, 0));
|
||||||
scripts\zm\replaced\utility::register_perk_struct( "specialty_fastreload", "zombie_vending_sleight", ( -11373, -1674, 192 ), ( 0, -89, 0 ) );
|
scripts\zm\replaced\utility::register_perk_struct("specialty_fastreload", "zombie_vending_sleight", (-11373, -1674, 192), (0, -89, 0));
|
||||||
scripts\zm\replaced\utility::register_perk_struct( "specialty_rof", "zombie_vending_doubletap2", ( -11170, -590, 196 ), ( 0, -10, 0 ) );
|
scripts\zm\replaced\utility::register_perk_struct("specialty_rof", "zombie_vending_doubletap2", (-11170, -590, 196), (0, -10, 0));
|
||||||
scripts\zm\replaced\utility::register_perk_struct( "specialty_longersprint", "zombie_vending_marathon", ( -11681, -734, 228 ), ( 0, -19, 0 ) );
|
scripts\zm\replaced\utility::register_perk_struct("specialty_longersprint", "zombie_vending_marathon", (-11681, -734, 228), (0, -19, 0));
|
||||||
scripts\zm\replaced\utility::register_perk_struct( "specialty_weapupgrade", "p6_anim_zm_buildable_pap_on", ( -11301, -2096, 184 ), ( 0, 115, 0 ) );
|
scripts\zm\replaced\utility::register_perk_struct("specialty_weapupgrade", "p6_anim_zm_buildable_pap_on", (-11301, -2096, 184), (0, 115, 0));
|
||||||
|
|
||||||
zone = "zone_amb_tunnel";
|
zone = "zone_amb_tunnel";
|
||||||
scripts\zm\replaced\utility::register_map_spawn_group( (-11246, -1695, 220), zone, 1000 );
|
scripts\zm\replaced\utility::register_map_spawn_group((-11246, -1695, 220), zone, 1000);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (-11406, -667, 220), (0, -6, 0), zone, 1 );
|
scripts\zm\replaced\utility::register_map_spawn((-11406, -667, 220), (0, -6, 0), zone, 1);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (-11568, -1179, 220), (0, 0, 0), zone, 1 );
|
scripts\zm\replaced\utility::register_map_spawn((-11568, -1179, 220), (0, 0, 0), zone, 1);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (-11473, -1924, 220), (0, -15, 0), zone, 1 );
|
scripts\zm\replaced\utility::register_map_spawn((-11473, -1924, 220), (0, -15, 0), zone, 1);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (-11457, -2400, 220), (0, 2, 0), zone, 1 );
|
scripts\zm\replaced\utility::register_map_spawn((-11457, -2400, 220), (0, 2, 0), zone, 1);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (-10971, -770, 220), (0, 164, 0), zone, 2 );
|
scripts\zm\replaced\utility::register_map_spawn((-10971, -770, 220), (0, 164, 0), zone, 2);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (-11009, -1126, 220), (0, 179, 0), zone, 2 );
|
scripts\zm\replaced\utility::register_map_spawn((-11009, -1126, 220), (0, 179, 0), zone, 2);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (-11028, -1996, 220), (0, -176, 0), zone, 2 );
|
scripts\zm\replaced\utility::register_map_spawn((-11028, -1996, 220), (0, -176, 0), zone, 2);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (-11017, -2384, 220), (0, -176, 0), zone, 2 );
|
scripts\zm\replaced\utility::register_map_spawn((-11017, -2384, 220), (0, -176, 0), zone, 2);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (-10916, -408, 220), (0, -100, 0), zone );
|
scripts\zm\replaced\utility::register_map_spawn((-10916, -408, 220), (0, -100, 0), zone);
|
||||||
scripts\zm\replaced\utility::register_map_spawn( (-10965, -2987, 220), (0, 95, 0), zone );
|
scripts\zm\replaced\utility::register_map_spawn((-10965, -2987, 220), (0, 95, 0), zone);
|
||||||
}
|
}
|
||||||
|
|
||||||
precache()
|
precache()
|
||||||
{
|
{
|
||||||
start_chest_zbarrier = getEnt( "start_chest_zbarrier", "script_noteworthy" );
|
start_chest_zbarrier = getEnt("start_chest_zbarrier", "script_noteworthy");
|
||||||
start_chest_zbarrier.origin = ( -10803, -1897, 196 );
|
start_chest_zbarrier.origin = (-10803, -1897, 196);
|
||||||
start_chest_zbarrier.angles = ( 0, 89, 0 );
|
start_chest_zbarrier.angles = (0, 89, 0);
|
||||||
start_chest = spawnStruct();
|
start_chest = spawnStruct();
|
||||||
start_chest.origin = start_chest_zbarrier.origin;
|
start_chest.origin = start_chest_zbarrier.origin;
|
||||||
start_chest.angles = start_chest_zbarrier.angles;
|
start_chest.angles = start_chest_zbarrier.angles;
|
||||||
start_chest.script_noteworthy = "start_chest";
|
start_chest.script_noteworthy = "start_chest";
|
||||||
start_chest.zombie_cost = 950;
|
start_chest.zombie_cost = 950;
|
||||||
collision = spawn( "script_model", start_chest_zbarrier.origin + ( 0, 0, 64 ), 1 );
|
collision = spawn("script_model", start_chest_zbarrier.origin + (0, 0, 64), 1);
|
||||||
collision.angles = start_chest_zbarrier.angles;
|
collision.angles = start_chest_zbarrier.angles;
|
||||||
collision setmodel( "collision_clip_32x32x128" );
|
collision setmodel("collision_clip_32x32x128");
|
||||||
collision disconnectpaths();
|
collision disconnectpaths();
|
||||||
collision = spawn( "script_model", start_chest_zbarrier.origin + ( 0, -32, 64 ), 1 );
|
collision = spawn("script_model", start_chest_zbarrier.origin + (0, -32, 64), 1);
|
||||||
collision.angles = start_chest_zbarrier.angles;
|
collision.angles = start_chest_zbarrier.angles;
|
||||||
collision setmodel( "collision_clip_32x32x128" );
|
collision setmodel("collision_clip_32x32x128");
|
||||||
collision disconnectpaths();
|
collision disconnectpaths();
|
||||||
collision = spawn( "script_model", start_chest_zbarrier.origin + ( 0, 32, 64 ), 1 );
|
collision = spawn("script_model", start_chest_zbarrier.origin + (0, 32, 64), 1);
|
||||||
collision.angles = start_chest_zbarrier.angles;
|
collision.angles = start_chest_zbarrier.angles;
|
||||||
collision setmodel( "collision_clip_32x32x128" );
|
collision setmodel("collision_clip_32x32x128");
|
||||||
collision disconnectpaths();
|
collision disconnectpaths();
|
||||||
|
|
||||||
level.chests = [];
|
level.chests = [];
|
||||||
@ -63,69 +63,69 @@ main()
|
|||||||
init_wallbuys();
|
init_wallbuys();
|
||||||
init_barriers();
|
init_barriers();
|
||||||
disable_zombie_spawn_locations();
|
disable_zombie_spawn_locations();
|
||||||
maps\mp\zombies\_zm_magicbox::treasure_chest_init( random( array( "start_chest" ) ) );
|
maps\mp\zombies\_zm_magicbox::treasure_chest_init(random(array("start_chest")));
|
||||||
scripts\zm\locs\loc_common::init();
|
scripts\zm\locs\loc_common::init();
|
||||||
}
|
}
|
||||||
|
|
||||||
init_wallbuys()
|
init_wallbuys()
|
||||||
{
|
{
|
||||||
scripts\zm\replaced\utility::wallbuy( "m14_zm", "m14", "weapon_upgrade", ( -11166, -2844, 247 ), ( 0, -86, 0 ) );
|
scripts\zm\replaced\utility::wallbuy("m14_zm", "m14", "weapon_upgrade", (-11166, -2844, 247), (0, -86, 0));
|
||||||
scripts\zm\replaced\utility::wallbuy( "rottweil72_zm", "olympia", "weapon_upgrade", ( -10735, -2960, 247 ), ( 0, 97, 0 ) );
|
scripts\zm\replaced\utility::wallbuy("rottweil72_zm", "olympia", "weapon_upgrade", (-10735, -2960, 247), (0, 97, 0));
|
||||||
scripts\zm\replaced\utility::wallbuy( "ak74u_zm", "ak74u", "weapon_upgrade", ( -10656, -752, 247 ), ( 0, 83, 0 ) );
|
scripts\zm\replaced\utility::wallbuy("ak74u_zm", "ak74u", "weapon_upgrade", (-10656, -752, 247), (0, 83, 0));
|
||||||
scripts\zm\replaced\utility::wallbuy( "m16_zm", "m16", "weapon_upgrade", ( -11839, -1695.1, 287 ), ( 0, 270, 0 ) );
|
scripts\zm\replaced\utility::wallbuy("m16_zm", "m16", "weapon_upgrade", (-11839, -1695.1, 287), (0, 270, 0));
|
||||||
scripts\zm\replaced\utility::wallbuy( "sticky_grenade_zm", "sticky_grenade", "weapon_upgrade", ( -11839, -2406, 283 ), ( 0, -93, 0 ) );
|
scripts\zm\replaced\utility::wallbuy("sticky_grenade_zm", "sticky_grenade", "weapon_upgrade", (-11839, -2406, 283), (0, -93, 0));
|
||||||
scripts\zm\replaced\utility::wallbuy( "bowie_knife_zm", "bowie_knife", "bowie_upgrade", ( -10787, -1430, 247 ), ( 0, 88, 0 ) );
|
scripts\zm\replaced\utility::wallbuy("bowie_knife_zm", "bowie_knife", "bowie_upgrade", (-10787, -1430, 247), (0, 88, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
init_barriers()
|
init_barriers()
|
||||||
{
|
{
|
||||||
origin = ( -11270, -500, 255 );
|
origin = (-11270, -500, 255);
|
||||||
angles = ( 0, 195, 0 );
|
angles = (0, 195, 0);
|
||||||
scripts\zm\replaced\utility::barrier( "collision_player_wall_512x512x10", origin + (anglesToRight(angles) * -25) + (anglesToForward(angles) * 150), angles );
|
scripts\zm\replaced\utility::barrier("collision_player_wall_512x512x10", origin + (anglesToRight(angles) * -25) + (anglesToForward(angles) * 150), angles);
|
||||||
scripts\zm\replaced\utility::barrier( "veh_t6_civ_60s_coupe_dead", origin + (anglesToUp(angles) * -63) + (anglesToForward(angles) * 125) + (anglesToRight(angles) * 25), angles );
|
scripts\zm\replaced\utility::barrier("veh_t6_civ_60s_coupe_dead", origin + (anglesToUp(angles) * -63) + (anglesToForward(angles) * 125) + (anglesToRight(angles) * 25), angles);
|
||||||
scripts\zm\replaced\utility::barrier( "veh_t6_civ_smallwagon_dead", origin + (anglesToUp(angles) * -63) + (anglesToForward(angles) * -30) + (anglesToRight(angles) * 50), angles + (0, -90, 0) );
|
scripts\zm\replaced\utility::barrier("veh_t6_civ_smallwagon_dead", origin + (anglesToUp(angles) * -63) + (anglesToForward(angles) * -30) + (anglesToRight(angles) * 50), angles + (0, -90, 0));
|
||||||
|
|
||||||
origin = ( -10750, -3275, 255 );
|
origin = (-10750, -3275, 255);
|
||||||
angles = ( 0, 195, 0 );
|
angles = (0, 195, 0);
|
||||||
scripts\zm\replaced\utility::barrier( "collision_player_wall_512x512x10", origin + (anglesToRight(angles) * 55), angles );
|
scripts\zm\replaced\utility::barrier("collision_player_wall_512x512x10", origin + (anglesToRight(angles) * 55), angles);
|
||||||
scripts\zm\replaced\utility::barrier( "veh_t6_civ_movingtrk_cab_dead", origin, angles );
|
scripts\zm\replaced\utility::barrier("veh_t6_civ_movingtrk_cab_dead", origin, angles);
|
||||||
}
|
}
|
||||||
|
|
||||||
disable_zombie_spawn_locations()
|
disable_zombie_spawn_locations()
|
||||||
{
|
{
|
||||||
for ( z = 0; z < level.zone_keys.size; z++ )
|
for (z = 0; z < level.zone_keys.size; z++)
|
||||||
{
|
{
|
||||||
zone = level.zones[ level.zone_keys[ z ] ];
|
zone = level.zones[ level.zone_keys[ z ] ];
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
|
|
||||||
while ( i < zone.spawn_locations.size )
|
while (i < zone.spawn_locations.size)
|
||||||
{
|
{
|
||||||
if ( zone.spawn_locations[ i ].origin == ( -11447, -3424, 254.2 ) )
|
if (zone.spawn_locations[ i ].origin == (-11447, -3424, 254.2))
|
||||||
{
|
{
|
||||||
zone.spawn_locations[ i ].is_enabled = false;
|
zone.spawn_locations[ i ].is_enabled = false;
|
||||||
}
|
}
|
||||||
else if ( zone.spawn_locations[ i ].origin == ( -11093, 393, 192 ) )
|
else if (zone.spawn_locations[ i ].origin == (-11093, 393, 192))
|
||||||
{
|
{
|
||||||
zone.spawn_locations[ i ].is_enabled = false;
|
zone.spawn_locations[ i ].is_enabled = false;
|
||||||
}
|
}
|
||||||
else if ( zone.spawn_locations[ i ].origin == ( -10944, -3846, 221.14 ) )
|
else if (zone.spawn_locations[ i ].origin == (-10944, -3846, 221.14))
|
||||||
{
|
{
|
||||||
zone.spawn_locations[ i ].is_enabled = false;
|
zone.spawn_locations[ i ].is_enabled = false;
|
||||||
}
|
}
|
||||||
else if ( zone.spawn_locations[ i ].origin == ( -10836, 1195, 209.7 ) )
|
else if (zone.spawn_locations[ i ].origin == (-10836, 1195, 209.7))
|
||||||
{
|
{
|
||||||
zone.spawn_locations[ i ].is_enabled = false;
|
zone.spawn_locations[ i ].is_enabled = false;
|
||||||
}
|
}
|
||||||
else if ( zone.spawn_locations[ i ].origin == ( -11251, -4397, 200.02 ) )
|
else if (zone.spawn_locations[ i ].origin == (-11251, -4397, 200.02))
|
||||||
{
|
{
|
||||||
zone.spawn_locations[ i ].is_enabled = false;
|
zone.spawn_locations[ i ].is_enabled = false;
|
||||||
}
|
}
|
||||||
else if ( zone.spawn_locations[ i ].origin == ( -11334, -5280, 212.7 ) )
|
else if (zone.spawn_locations[ i ].origin == (-11334, -5280, 212.7))
|
||||||
{
|
{
|
||||||
zone.spawn_locations[ i ].is_enabled = false;
|
zone.spawn_locations[ i ].is_enabled = false;
|
||||||
}
|
}
|
||||||
else if ( zone.spawn_locations[ i ].origin == ( -11347, -3134, 283.9 ) )
|
else if (zone.spawn_locations[ i ].origin == (-11347, -3134, 283.9))
|
||||||
{
|
{
|
||||||
zone.spawn_locations[ i ].is_enabled = false;
|
zone.spawn_locations[ i ].is_enabled = false;
|
||||||
}
|
}
|
||||||
|
@ -5,9 +5,9 @@
|
|||||||
#include maps\mp\gametypes_zm\_spectating;
|
#include maps\mp\gametypes_zm\_spectating;
|
||||||
#include maps\mp\gametypes_zm\_globallogic_player;
|
#include maps\mp\gametypes_zm\_globallogic_player;
|
||||||
|
|
||||||
menuautoassign( comingfrommenu )
|
menuautoassign(comingfrommenu)
|
||||||
{
|
{
|
||||||
teamkeys = getarraykeys( level.teams );
|
teamkeys = getarraykeys(level.teams);
|
||||||
assignment = self get_assigned_team();
|
assignment = self get_assigned_team();
|
||||||
self closemenus();
|
self closemenus();
|
||||||
|
|
||||||
@ -19,7 +19,7 @@ menuautoassign( comingfrommenu )
|
|||||||
self.pers["savedmodel"] = undefined;
|
self.pers["savedmodel"] = undefined;
|
||||||
self updateobjectivetext();
|
self updateobjectivetext();
|
||||||
|
|
||||||
if ( level.teambased )
|
if (level.teambased)
|
||||||
self.sessionteam = assignment;
|
self.sessionteam = assignment;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -27,11 +27,11 @@ menuautoassign( comingfrommenu )
|
|||||||
self.ffateam = assignment;
|
self.ffateam = assignment;
|
||||||
}
|
}
|
||||||
|
|
||||||
self notify( "joined_team" );
|
self notify("joined_team");
|
||||||
level notify( "joined_team" );
|
level notify("joined_team");
|
||||||
self notify( "end_respawn" );
|
self notify("end_respawn");
|
||||||
self beginclasschoice();
|
self beginclasschoice();
|
||||||
self setclientscriptmainmenu( game["menu_class"] );
|
self setclientscriptmainmenu(game["menu_class"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
get_assigned_team()
|
get_assigned_team()
|
||||||
@ -42,14 +42,14 @@ get_assigned_team()
|
|||||||
|
|
||||||
players = get_players();
|
players = get_players();
|
||||||
|
|
||||||
foreach ( player in players )
|
foreach (player in players)
|
||||||
{
|
{
|
||||||
if ( !isDefined(player.team) || (player.team != "axis" && player.team != "allies") )
|
if (!isDefined(player.team) || (player.team != "axis" && player.team != "allies"))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( player == self )
|
if (player == self)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -57,13 +57,13 @@ get_assigned_team()
|
|||||||
teamplayers[player.team]++;
|
teamplayers[player.team]++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( teamplayers["axis"] <= teamplayers["allies"] )
|
if (teamplayers["axis"] <= teamplayers["allies"])
|
||||||
{
|
{
|
||||||
guids = strTok(getDvar("team_axis"), " ");
|
guids = strTok(getDvar("team_axis"), " ");
|
||||||
|
|
||||||
foreach ( guid in guids )
|
foreach (guid in guids)
|
||||||
{
|
{
|
||||||
if ( self getguid() == int(guid) )
|
if (self getguid() == int(guid))
|
||||||
{
|
{
|
||||||
arrayRemoveValue(guids, guid);
|
arrayRemoveValue(guids, guid);
|
||||||
|
|
||||||
@ -81,13 +81,13 @@ get_assigned_team()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( teamplayers["allies"] <= teamplayers["axis"] )
|
if (teamplayers["allies"] <= teamplayers["axis"])
|
||||||
{
|
{
|
||||||
guids = strTok(getDvar("team_allies"), " ");
|
guids = strTok(getDvar("team_allies"), " ");
|
||||||
|
|
||||||
foreach ( guid in guids )
|
foreach (guid in guids)
|
||||||
{
|
{
|
||||||
if ( self getguid() == int(guid) )
|
if (self getguid() == int(guid))
|
||||||
{
|
{
|
||||||
arrayRemoveValue(guids, guid);
|
arrayRemoveValue(guids, guid);
|
||||||
|
|
||||||
@ -105,9 +105,9 @@ get_assigned_team()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( teamplayers["allies"] == teamplayers["axis"] )
|
if (teamplayers["allies"] == teamplayers["axis"])
|
||||||
{
|
{
|
||||||
if ( randomint( 100 ) >= 50 )
|
if (randomint(100) >= 50)
|
||||||
{
|
{
|
||||||
return "axis";
|
return "axis";
|
||||||
}
|
}
|
||||||
@ -118,7 +118,7 @@ get_assigned_team()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( teamplayers["allies"] > teamplayers["axis"] )
|
if (teamplayers["allies"] > teamplayers["axis"])
|
||||||
{
|
{
|
||||||
return "axis";
|
return "axis";
|
||||||
}
|
}
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -25,40 +25,40 @@
|
|||||||
init()
|
init()
|
||||||
{
|
{
|
||||||
level.zombiemode_using_afterlife = 1;
|
level.zombiemode_using_afterlife = 1;
|
||||||
flag_init( "afterlife_start_over" );
|
flag_init("afterlife_start_over");
|
||||||
level.afterlife_revive_tool = "syrette_afterlife_zm";
|
level.afterlife_revive_tool = "syrette_afterlife_zm";
|
||||||
precacheitem( level.afterlife_revive_tool );
|
precacheitem(level.afterlife_revive_tool);
|
||||||
precachemodel( "drone_collision" );
|
precachemodel("drone_collision");
|
||||||
maps\mp\_visionset_mgr::vsmgr_register_info( "visionset", "zm_afterlife", 9000, 120, 1, 1 );
|
maps\mp\_visionset_mgr::vsmgr_register_info("visionset", "zm_afterlife", 9000, 120, 1, 1);
|
||||||
maps\mp\_visionset_mgr::vsmgr_register_info( "overlay", "zm_afterlife_filter", 9000, 120, 1, 1 );
|
maps\mp\_visionset_mgr::vsmgr_register_info("overlay", "zm_afterlife_filter", 9000, 120, 1, 1);
|
||||||
|
|
||||||
if ( isdefined( level.afterlife_player_damage_override ) )
|
if (isdefined(level.afterlife_player_damage_override))
|
||||||
maps\mp\zombies\_zm::register_player_damage_callback( level.afterlife_player_damage_override );
|
maps\mp\zombies\_zm::register_player_damage_callback(level.afterlife_player_damage_override);
|
||||||
else
|
else
|
||||||
maps\mp\zombies\_zm::register_player_damage_callback( ::afterlife_player_damage_callback );
|
maps\mp\zombies\_zm::register_player_damage_callback(::afterlife_player_damage_callback);
|
||||||
|
|
||||||
registerclientfield( "toplayer", "player_lives", 9000, 2, "int" );
|
registerclientfield("toplayer", "player_lives", 9000, 2, "int");
|
||||||
registerclientfield( "toplayer", "player_in_afterlife", 9000, 1, "int" );
|
registerclientfield("toplayer", "player_in_afterlife", 9000, 1, "int");
|
||||||
registerclientfield( "toplayer", "player_afterlife_mana", 9000, 5, "float" );
|
registerclientfield("toplayer", "player_afterlife_mana", 9000, 5, "float");
|
||||||
registerclientfield( "allplayers", "player_afterlife_fx", 9000, 1, "int" );
|
registerclientfield("allplayers", "player_afterlife_fx", 9000, 1, "int");
|
||||||
registerclientfield( "toplayer", "clientfield_afterlife_audio", 9000, 1, "int" );
|
registerclientfield("toplayer", "clientfield_afterlife_audio", 9000, 1, "int");
|
||||||
registerclientfield( "toplayer", "player_afterlife_refill", 9000, 1, "int" );
|
registerclientfield("toplayer", "player_afterlife_refill", 9000, 1, "int");
|
||||||
registerclientfield( "scriptmover", "player_corpse_id", 9000, 3, "int" );
|
registerclientfield("scriptmover", "player_corpse_id", 9000, 3, "int");
|
||||||
afterlife_load_fx();
|
afterlife_load_fx();
|
||||||
level thread afterlife_hostmigration();
|
level thread afterlife_hostmigration();
|
||||||
precachemodel( "c_zom_ghost_viewhands" );
|
precachemodel("c_zom_ghost_viewhands");
|
||||||
precachemodel( "c_zom_hero_ghost_fb" );
|
precachemodel("c_zom_hero_ghost_fb");
|
||||||
precacheitem( "lightning_hands_zm" );
|
precacheitem("lightning_hands_zm");
|
||||||
precachemodel( "p6_zm_al_shock_box_on" );
|
precachemodel("p6_zm_al_shock_box_on");
|
||||||
precacheshader( "waypoint_revive_afterlife" );
|
precacheshader("waypoint_revive_afterlife");
|
||||||
a_afterlife_interact = getentarray( "afterlife_interact", "targetname" );
|
a_afterlife_interact = getentarray("afterlife_interact", "targetname");
|
||||||
array_thread( a_afterlife_interact, ::afterlife_interact_object_think );
|
array_thread(a_afterlife_interact, ::afterlife_interact_object_think);
|
||||||
level.zombie_spawners = getentarray( "zombie_spawner", "script_noteworthy" );
|
level.zombie_spawners = getentarray("zombie_spawner", "script_noteworthy");
|
||||||
array_thread( level.zombie_spawners, ::add_spawn_function, ::afterlife_zombie_damage );
|
array_thread(level.zombie_spawners, ::add_spawn_function, ::afterlife_zombie_damage);
|
||||||
a_afterlife_triggers = getstructarray( "afterlife_trigger", "targetname" );
|
a_afterlife_triggers = getstructarray("afterlife_trigger", "targetname");
|
||||||
|
|
||||||
foreach ( struct in a_afterlife_triggers )
|
foreach (struct in a_afterlife_triggers)
|
||||||
afterlife_trigger_create( struct );
|
afterlife_trigger_create(struct);
|
||||||
|
|
||||||
level.afterlife_interact_dist = 256;
|
level.afterlife_interact_dist = 256;
|
||||||
level.is_player_valid_override = ::is_player_valid_afterlife;
|
level.is_player_valid_override = ::is_player_valid_afterlife;
|
||||||
@ -75,9 +75,9 @@ init()
|
|||||||
|
|
||||||
init_player()
|
init_player()
|
||||||
{
|
{
|
||||||
flag_wait( "initial_players_connected" );
|
flag_wait("initial_players_connected");
|
||||||
self.lives = 1;
|
self.lives = 1;
|
||||||
self setclientfieldtoplayer( "player_lives", self.lives );
|
self setclientfieldtoplayer("player_lives", self.lives);
|
||||||
self.afterlife = 0;
|
self.afterlife = 0;
|
||||||
self.afterliferound = level.round_number;
|
self.afterliferound = level.round_number;
|
||||||
self.afterlifedeaths = 0;
|
self.afterlifedeaths = 0;
|
||||||
@ -87,30 +87,30 @@ init_player()
|
|||||||
|
|
||||||
afterlife_add()
|
afterlife_add()
|
||||||
{
|
{
|
||||||
if ( self.lives < 1 )
|
if (self.lives < 1)
|
||||||
{
|
{
|
||||||
self.lives++;
|
self.lives++;
|
||||||
self thread afterlife_add_fx();
|
self thread afterlife_add_fx();
|
||||||
}
|
}
|
||||||
|
|
||||||
self playsoundtoplayer( "zmb_afterlife_add", self );
|
self playsoundtoplayer("zmb_afterlife_add", self);
|
||||||
self setclientfieldtoplayer( "player_lives", self.lives );
|
self setclientfieldtoplayer("player_lives", self.lives);
|
||||||
}
|
}
|
||||||
|
|
||||||
afterlife_start_zombie_logic()
|
afterlife_start_zombie_logic()
|
||||||
{
|
{
|
||||||
flag_wait( "start_zombie_round_logic" );
|
flag_wait("start_zombie_round_logic");
|
||||||
wait 0.5;
|
wait 0.5;
|
||||||
everyone_alive = 0;
|
everyone_alive = 0;
|
||||||
|
|
||||||
while ( isDefined( everyone_alive ) && !everyone_alive )
|
while (isDefined(everyone_alive) && !everyone_alive)
|
||||||
{
|
{
|
||||||
everyone_alive = 1;
|
everyone_alive = 1;
|
||||||
players = getplayers();
|
players = getplayers();
|
||||||
|
|
||||||
foreach (player in players)
|
foreach (player in players)
|
||||||
{
|
{
|
||||||
if ( isDefined( player.afterlife ) && player.afterlife )
|
if (isDefined(player.afterlife) && player.afterlife)
|
||||||
{
|
{
|
||||||
everyone_alive = 0;
|
everyone_alive = 0;
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
@ -121,25 +121,25 @@ afterlife_start_zombie_logic()
|
|||||||
|
|
||||||
wait 0.5;
|
wait 0.5;
|
||||||
|
|
||||||
while ( level.intermission )
|
while (level.intermission)
|
||||||
{
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
}
|
}
|
||||||
|
|
||||||
flag_set( "afterlife_start_over" );
|
flag_set("afterlife_start_over");
|
||||||
wait 2;
|
wait 2;
|
||||||
array_func( getplayers(), ::afterlife_add );
|
array_func(getplayers(), ::afterlife_add);
|
||||||
}
|
}
|
||||||
|
|
||||||
afterlife_laststand( b_electric_chair = 0 )
|
afterlife_laststand(b_electric_chair = 0)
|
||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
self endon( "afterlife_bleedout" );
|
self endon("afterlife_bleedout");
|
||||||
level endon( "end_game" );
|
level endon("end_game");
|
||||||
|
|
||||||
if ( isdefined( level.afterlife_laststand_override ) )
|
if (isdefined(level.afterlife_laststand_override))
|
||||||
{
|
{
|
||||||
self thread [[ level.afterlife_laststand_override ]]( b_electric_chair );
|
self thread [[ level.afterlife_laststand_override ]](b_electric_chair);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -147,27 +147,27 @@ afterlife_laststand( b_electric_chair = 0 )
|
|||||||
self.health = 1000;
|
self.health = 1000;
|
||||||
b_has_electric_cherry = 0;
|
b_has_electric_cherry = 0;
|
||||||
|
|
||||||
if ( self hasperk( "specialty_grenadepulldeath" ) )
|
if (self hasperk("specialty_grenadepulldeath"))
|
||||||
b_has_electric_cherry = 1;
|
b_has_electric_cherry = 1;
|
||||||
|
|
||||||
self [[ level.afterlife_save_loadout ]]();
|
self [[ level.afterlife_save_loadout ]]();
|
||||||
self afterlife_fake_death();
|
self afterlife_fake_death();
|
||||||
|
|
||||||
if ( isdefined( b_electric_chair ) && !b_electric_chair )
|
if (isdefined(b_electric_chair) && !b_electric_chair)
|
||||||
wait 1;
|
wait 1;
|
||||||
|
|
||||||
if ( isdefined( b_has_electric_cherry ) && b_has_electric_cherry && ( isdefined( b_electric_chair ) && !b_electric_chair ) )
|
if (isdefined(b_has_electric_cherry) && b_has_electric_cherry && (isdefined(b_electric_chair) && !b_electric_chair))
|
||||||
{
|
{
|
||||||
self scripts\zm\replaced\_zm_perk_electric_cherry::electric_cherry_laststand();
|
self scripts\zm\replaced\_zm_perk_electric_cherry::electric_cherry_laststand();
|
||||||
}
|
}
|
||||||
|
|
||||||
self setclientfieldtoplayer( "clientfield_afterlife_audio", 1 );
|
self setclientfieldtoplayer("clientfield_afterlife_audio", 1);
|
||||||
|
|
||||||
if ( flag( "afterlife_start_over" ) )
|
if (flag("afterlife_start_over"))
|
||||||
{
|
{
|
||||||
self clientnotify( "al_t" );
|
self clientnotify("al_t");
|
||||||
wait 1;
|
wait 1;
|
||||||
self thread fadetoblackforxsec( 0, 1, 0.5, 0.5, "white" );
|
self thread fadetoblackforxsec(0, 1, 0.5, 0.5, "white");
|
||||||
wait 0.5;
|
wait 0.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -176,56 +176,56 @@ afterlife_laststand( b_electric_chair = 0 )
|
|||||||
self.e_afterlife_corpse = corpse;
|
self.e_afterlife_corpse = corpse;
|
||||||
corpse.e_afterlife_player = self;
|
corpse.e_afterlife_player = self;
|
||||||
self thread afterlife_clean_up_on_disconnect();
|
self thread afterlife_clean_up_on_disconnect();
|
||||||
self notify( "player_fake_corpse_created" );
|
self notify("player_fake_corpse_created");
|
||||||
self afterlife_fake_revive();
|
self afterlife_fake_revive();
|
||||||
self afterlife_enter();
|
self afterlife_enter();
|
||||||
self.e_afterlife_corpse setclientfield( "player_corpse_id", self getentitynumber() + 1 );
|
self.e_afterlife_corpse setclientfield("player_corpse_id", self getentitynumber() + 1);
|
||||||
wait 0.5;
|
wait 0.5;
|
||||||
self show();
|
self show();
|
||||||
|
|
||||||
if ( !( isdefined( self.hostmigrationcontrolsfrozen ) && self.hostmigrationcontrolsfrozen ) )
|
if (!(isdefined(self.hostmigrationcontrolsfrozen) && self.hostmigrationcontrolsfrozen))
|
||||||
self freezecontrols( 0 );
|
self freezecontrols(0);
|
||||||
|
|
||||||
self disableinvulnerability();
|
self disableinvulnerability();
|
||||||
|
|
||||||
self.e_afterlife_corpse waittill( "player_revived", e_reviver );
|
self.e_afterlife_corpse waittill("player_revived", e_reviver);
|
||||||
|
|
||||||
self notify( "player_revived" );
|
self notify("player_revived");
|
||||||
self enableinvulnerability();
|
self enableinvulnerability();
|
||||||
self.afterlife_revived = 1;
|
self.afterlife_revived = 1;
|
||||||
playsoundatposition( "zmb_afterlife_spawn_leave", self.e_afterlife_corpse.origin );
|
playsoundatposition("zmb_afterlife_spawn_leave", self.e_afterlife_corpse.origin);
|
||||||
self afterlife_leave();
|
self afterlife_leave();
|
||||||
self seteverhadweaponall( 1 );
|
self seteverhadweaponall(1);
|
||||||
self thread afterlife_revive_invincible();
|
self thread afterlife_revive_invincible();
|
||||||
self playsound( "zmb_afterlife_revived_gasp" );
|
self playsound("zmb_afterlife_revived_gasp");
|
||||||
}
|
}
|
||||||
|
|
||||||
afterlife_spawn_corpse()
|
afterlife_spawn_corpse()
|
||||||
{
|
{
|
||||||
if ( isdefined( self.is_on_gondola ) && self.is_on_gondola && level.e_gondola.destination == "roof" )
|
if (isdefined(self.is_on_gondola) && self.is_on_gondola && level.e_gondola.destination == "roof")
|
||||||
corpse = maps\mp\zombies\_zm_clone::spawn_player_clone( self, self.origin, undefined );
|
corpse = maps\mp\zombies\_zm_clone::spawn_player_clone(self, self.origin, undefined);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
trace_start = self.origin;
|
trace_start = self.origin;
|
||||||
trace_end = self.origin + vectorscale( ( 0, 0, -1 ), 500.0 );
|
trace_end = self.origin + vectorscale((0, 0, -1), 500.0);
|
||||||
corpse_trace = playerphysicstrace( trace_start, trace_end );
|
corpse_trace = playerphysicstrace(trace_start, trace_end);
|
||||||
corpse = spawn_player_clone( self, corpse_trace, undefined );
|
corpse = spawn_player_clone(self, corpse_trace, undefined);
|
||||||
}
|
}
|
||||||
|
|
||||||
corpse.angles = self.angles;
|
corpse.angles = self.angles;
|
||||||
corpse.ignoreme = 1;
|
corpse.ignoreme = 1;
|
||||||
corpse maps\mp\zombies\_zm_clone::clone_give_weapon( "m1911_zm" );
|
corpse maps\mp\zombies\_zm_clone::clone_give_weapon("m1911_zm");
|
||||||
corpse maps\mp\zombies\_zm_clone::clone_animate( "afterlife" );
|
corpse maps\mp\zombies\_zm_clone::clone_animate("afterlife");
|
||||||
corpse thread afterlife_revive_trigger_spawn();
|
corpse thread afterlife_revive_trigger_spawn();
|
||||||
|
|
||||||
collision = spawn( "script_model", corpse.origin + ( 0, 0, 16 ) );
|
collision = spawn("script_model", corpse.origin + (0, 0, 16));
|
||||||
collision.angles = corpse.angles;
|
collision.angles = corpse.angles;
|
||||||
collision setmodel( "collision_clip_32x32x32" );
|
collision setmodel("collision_clip_32x32x32");
|
||||||
collision linkto( corpse );
|
collision linkto(corpse);
|
||||||
collision ghost();
|
collision ghost();
|
||||||
corpse.collision = collision;
|
corpse.collision = collision;
|
||||||
|
|
||||||
if ( get_players().size == 1 )
|
if (get_players().size == 1)
|
||||||
corpse thread afterlife_corpse_create_pois();
|
corpse thread afterlife_corpse_create_pois();
|
||||||
|
|
||||||
return corpse;
|
return corpse;
|
||||||
@ -233,57 +233,57 @@ afterlife_spawn_corpse()
|
|||||||
|
|
||||||
afterlife_fake_death()
|
afterlife_fake_death()
|
||||||
{
|
{
|
||||||
level notify( "fake_death" );
|
level notify("fake_death");
|
||||||
self notify( "fake_death" );
|
self notify("fake_death");
|
||||||
self takeallweapons();
|
self takeallweapons();
|
||||||
self allowstand( 0 );
|
self allowstand(0);
|
||||||
self allowcrouch( 0 );
|
self allowcrouch(0);
|
||||||
self allowprone( 1 );
|
self allowprone(1);
|
||||||
self setstance( "prone" );
|
self setstance("prone");
|
||||||
self enableinvulnerability();
|
self enableinvulnerability();
|
||||||
self.ignoreme = 1;
|
self.ignoreme = 1;
|
||||||
|
|
||||||
if ( self is_jumping() )
|
if (self is_jumping())
|
||||||
{
|
{
|
||||||
while ( self is_jumping() )
|
while (self is_jumping())
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
}
|
}
|
||||||
|
|
||||||
playfx( level._effect["afterlife_enter"], self.origin );
|
playfx(level._effect["afterlife_enter"], self.origin);
|
||||||
self freezecontrols( 1 );
|
self freezecontrols(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
afterlife_fake_revive()
|
afterlife_fake_revive()
|
||||||
{
|
{
|
||||||
level notify( "fake_revive" );
|
level notify("fake_revive");
|
||||||
self notify( "fake_revive" );
|
self notify("fake_revive");
|
||||||
|
|
||||||
playsoundatposition( "zmb_afterlife_spawn_leave", self.origin );
|
playsoundatposition("zmb_afterlife_spawn_leave", self.origin);
|
||||||
|
|
||||||
self allowstand( 1 );
|
self allowstand(1);
|
||||||
self allowcrouch( 0 );
|
self allowcrouch(0);
|
||||||
self allowprone( 0 );
|
self allowprone(0);
|
||||||
self.ignoreme = 0;
|
self.ignoreme = 0;
|
||||||
self setstance( "stand" );
|
self setstance("stand");
|
||||||
self giveweapon( "lightning_hands_zm" );
|
self giveweapon("lightning_hands_zm");
|
||||||
self switchtoweapon( "lightning_hands_zm" );
|
self switchtoweapon("lightning_hands_zm");
|
||||||
self.score = 0;
|
self.score = 0;
|
||||||
|
|
||||||
if ( flag( "afterlife_start_over" ) )
|
if (flag("afterlife_start_over"))
|
||||||
{
|
{
|
||||||
spawnpoint = [[ level.afterlife_get_spawnpoint ]]();
|
spawnpoint = [[ level.afterlife_get_spawnpoint ]]();
|
||||||
trace_start = spawnpoint.origin;
|
trace_start = spawnpoint.origin;
|
||||||
trace_end = spawnpoint.origin + vectorscale( ( 0, 0, -1 ), 200.0 );
|
trace_end = spawnpoint.origin + vectorscale((0, 0, -1), 200.0);
|
||||||
respawn_trace = playerphysicstrace( trace_start, trace_end );
|
respawn_trace = playerphysicstrace(trace_start, trace_end);
|
||||||
dir = vectornormalize( self.origin - respawn_trace );
|
dir = vectornormalize(self.origin - respawn_trace);
|
||||||
angles = vectortoangles( dir );
|
angles = vectortoangles(dir);
|
||||||
self setorigin( respawn_trace );
|
self setorigin(respawn_trace);
|
||||||
self setplayerangles( angles );
|
self setplayerangles(angles);
|
||||||
playsoundatposition( "zmb_afterlife_spawn_enter", spawnpoint.origin );
|
playsoundatposition("zmb_afterlife_spawn_enter", spawnpoint.origin);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
playsoundatposition( "zmb_afterlife_spawn_enter", self.origin );
|
playsoundatposition("zmb_afterlife_spawn_enter", self.origin);
|
||||||
}
|
}
|
||||||
|
|
||||||
wait 1;
|
wait 1;
|
||||||
@ -291,30 +291,30 @@ afterlife_fake_revive()
|
|||||||
|
|
||||||
afterlife_revive_invincible()
|
afterlife_revive_invincible()
|
||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
wait 2;
|
wait 2;
|
||||||
self disableinvulnerability();
|
self disableinvulnerability();
|
||||||
self.afterlife_revived = undefined;
|
self.afterlife_revived = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
afterlife_revive_do_revive( playerbeingrevived, revivergun )
|
afterlife_revive_do_revive(playerbeingrevived, revivergun)
|
||||||
{
|
{
|
||||||
playerbeingrevived_player = playerbeingrevived;
|
playerbeingrevived_player = playerbeingrevived;
|
||||||
playerbeingrevived_player.revive_hud.y = -160;
|
playerbeingrevived_player.revive_hud.y = -160;
|
||||||
beingrevivedprogressbar_y = level.primaryprogressbary * -1;
|
beingrevivedprogressbar_y = level.primaryprogressbary * -1;
|
||||||
|
|
||||||
if ( isDefined( playerbeingrevived.e_afterlife_player ) )
|
if (isDefined(playerbeingrevived.e_afterlife_player))
|
||||||
{
|
{
|
||||||
playerbeingrevived_player = playerbeingrevived.e_afterlife_player;
|
playerbeingrevived_player = playerbeingrevived.e_afterlife_player;
|
||||||
playerbeingrevived_player.revive_hud.y = -50;
|
playerbeingrevived_player.revive_hud.y = -50;
|
||||||
beingrevivedprogressbar_y = level.secondaryprogressbary * -2;
|
beingrevivedprogressbar_y = level.secondaryprogressbary * -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
assert( self is_reviving_afterlife( playerbeingrevived ) );
|
assert(self is_reviving_afterlife(playerbeingrevived));
|
||||||
revivetime = 3;
|
revivetime = 3;
|
||||||
playloop = 0;
|
playloop = 0;
|
||||||
|
|
||||||
if ( isdefined( self.afterlife ) && self.afterlife )
|
if (isdefined(self.afterlife) && self.afterlife)
|
||||||
{
|
{
|
||||||
playloop = 1;
|
playloop = 1;
|
||||||
revivetime = 1;
|
revivetime = 1;
|
||||||
@ -323,20 +323,20 @@ afterlife_revive_do_revive( playerbeingrevived, revivergun )
|
|||||||
timer = 0;
|
timer = 0;
|
||||||
revived = 0;
|
revived = 0;
|
||||||
playerbeingrevived.revivetrigger.beingrevived = 1;
|
playerbeingrevived.revivetrigger.beingrevived = 1;
|
||||||
playerbeingrevived.revivetrigger sethintstring( "" );
|
playerbeingrevived.revivetrigger sethintstring("");
|
||||||
|
|
||||||
if ( playerbeingrevived_player != self )
|
if (playerbeingrevived_player != self)
|
||||||
{
|
{
|
||||||
playerbeingrevived_player.revive_hud settext( &"GAME_PLAYER_IS_REVIVING_YOU", self );
|
playerbeingrevived_player.revive_hud settext(&"GAME_PLAYER_IS_REVIVING_YOU", self);
|
||||||
playerbeingrevived_player revive_hud_show_n_fade( revivetime );
|
playerbeingrevived_player revive_hud_show_n_fade(revivetime);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isplayer( playerbeingrevived ) )
|
if (isplayer(playerbeingrevived))
|
||||||
{
|
{
|
||||||
playerbeingrevived startrevive( self );
|
playerbeingrevived startrevive(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isDefined( playerbeingrevived_player.beingrevivedprogressbar ) && playerbeingrevived_player != self )
|
if (!isDefined(playerbeingrevived_player.beingrevivedprogressbar) && playerbeingrevived_player != self)
|
||||||
{
|
{
|
||||||
playerbeingrevived_player.beingrevivedprogressbar = playerbeingrevived_player createprimaryprogressbar();
|
playerbeingrevived_player.beingrevivedprogressbar = playerbeingrevived_player createprimaryprogressbar();
|
||||||
playerbeingrevived_player.beingrevivedprogressbar setpoint("CENTER", undefined, level.primaryprogressbarx, beingrevivedprogressbar_y);
|
playerbeingrevived_player.beingrevivedprogressbar setpoint("CENTER", undefined, level.primaryprogressbarx, beingrevivedprogressbar_y);
|
||||||
@ -351,7 +351,7 @@ afterlife_revive_do_revive( playerbeingrevived, revivergun )
|
|||||||
playerbeingrevived_player.beingrevivedprogressbar thread scripts\zm\_zm_reimagined::destroy_on_intermission();
|
playerbeingrevived_player.beingrevivedprogressbar thread scripts\zm\_zm_reimagined::destroy_on_intermission();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isdefined( self.reviveprogressbar ) )
|
if (!isdefined(self.reviveprogressbar))
|
||||||
{
|
{
|
||||||
self.reviveprogressbar = self createprimaryprogressbar();
|
self.reviveprogressbar = self createprimaryprogressbar();
|
||||||
self.reviveprogressbar.bar.color = (0.5, 0.5, 1);
|
self.reviveprogressbar.bar.color = (0.5, 0.5, 1);
|
||||||
@ -365,60 +365,60 @@ afterlife_revive_do_revive( playerbeingrevived, revivergun )
|
|||||||
self.reviveprogressbar thread scripts\zm\_zm_reimagined::destroy_on_intermission();
|
self.reviveprogressbar thread scripts\zm\_zm_reimagined::destroy_on_intermission();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isdefined( self.revivetexthud ) )
|
if (!isdefined(self.revivetexthud))
|
||||||
self.revivetexthud = newclienthudelem( self );
|
self.revivetexthud = newclienthudelem(self);
|
||||||
|
|
||||||
self thread revive_clean_up_on_gameover();
|
self thread revive_clean_up_on_gameover();
|
||||||
self thread laststand_clean_up_on_disconnect( playerbeingrevived, revivergun );
|
self thread laststand_clean_up_on_disconnect(playerbeingrevived, revivergun);
|
||||||
|
|
||||||
if ( !isdefined( self.is_reviving_any ) )
|
if (!isdefined(self.is_reviving_any))
|
||||||
self.is_reviving_any = 0;
|
self.is_reviving_any = 0;
|
||||||
|
|
||||||
self.is_reviving_any++;
|
self.is_reviving_any++;
|
||||||
self thread laststand_clean_up_reviving_any( playerbeingrevived );
|
self thread laststand_clean_up_reviving_any(playerbeingrevived);
|
||||||
self.reviveprogressbar updatebar( 0.01, 1 / revivetime );
|
self.reviveprogressbar updatebar(0.01, 1 / revivetime);
|
||||||
playerbeingrevived_player.beingrevivedprogressbar updatebar( 0.01, 1 / revivetime );
|
playerbeingrevived_player.beingrevivedprogressbar updatebar(0.01, 1 / revivetime);
|
||||||
self.revivetexthud.alignx = "center";
|
self.revivetexthud.alignx = "center";
|
||||||
self.revivetexthud.aligny = "middle";
|
self.revivetexthud.aligny = "middle";
|
||||||
self.revivetexthud.horzalign = "center";
|
self.revivetexthud.horzalign = "center";
|
||||||
self.revivetexthud.vertalign = "bottom";
|
self.revivetexthud.vertalign = "bottom";
|
||||||
self.revivetexthud.y = -113;
|
self.revivetexthud.y = -113;
|
||||||
|
|
||||||
if ( self issplitscreen() )
|
if (self issplitscreen())
|
||||||
self.revivetexthud.y = -347;
|
self.revivetexthud.y = -347;
|
||||||
|
|
||||||
self.revivetexthud.foreground = 1;
|
self.revivetexthud.foreground = 1;
|
||||||
self.revivetexthud.font = "default";
|
self.revivetexthud.font = "default";
|
||||||
self.revivetexthud.fontscale = 1.8;
|
self.revivetexthud.fontscale = 1.8;
|
||||||
self.revivetexthud.alpha = 1;
|
self.revivetexthud.alpha = 1;
|
||||||
self.revivetexthud.color = ( 1, 1, 1 );
|
self.revivetexthud.color = (1, 1, 1);
|
||||||
self.revivetexthud.hidewheninmenu = 1;
|
self.revivetexthud.hidewheninmenu = 1;
|
||||||
|
|
||||||
if ( self maps\mp\zombies\_zm_pers_upgrades_functions::pers_revive_active() )
|
if (self maps\mp\zombies\_zm_pers_upgrades_functions::pers_revive_active())
|
||||||
self.revivetexthud.color = ( 0.5, 0.5, 1.0 );
|
self.revivetexthud.color = (0.5, 0.5, 1.0);
|
||||||
|
|
||||||
self.revivetexthud settext( &"GAME_REVIVING" );
|
self.revivetexthud settext(&"GAME_REVIVING");
|
||||||
self thread check_for_failed_revive( playerbeingrevived );
|
self thread check_for_failed_revive(playerbeingrevived);
|
||||||
e_fx = spawn( "script_model", playerbeingrevived.revivetrigger.origin );
|
e_fx = spawn("script_model", playerbeingrevived.revivetrigger.origin);
|
||||||
e_fx setmodel( "tag_origin" );
|
e_fx setmodel("tag_origin");
|
||||||
e_fx thread revive_fx_clean_up_on_disconnect( playerbeingrevived );
|
e_fx thread revive_fx_clean_up_on_disconnect(playerbeingrevived);
|
||||||
playfxontag( level._effect["afterlife_leave"], e_fx, "tag_origin" );
|
playfxontag(level._effect["afterlife_leave"], e_fx, "tag_origin");
|
||||||
|
|
||||||
if ( isdefined( playloop ) && playloop )
|
if (isdefined(playloop) && playloop)
|
||||||
e_fx playloopsound( "zmb_afterlife_reviving", 0.05 );
|
e_fx playloopsound("zmb_afterlife_reviving", 0.05);
|
||||||
|
|
||||||
while ( self is_reviving_afterlife( playerbeingrevived ) )
|
while (self is_reviving_afterlife(playerbeingrevived))
|
||||||
{
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
timer += 0.05;
|
timer += 0.05;
|
||||||
|
|
||||||
if ( self player_is_in_laststand() )
|
if (self player_is_in_laststand())
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if ( isdefined( playerbeingrevived.revivetrigger.auto_revive ) && playerbeingrevived.revivetrigger.auto_revive == 1 )
|
if (isdefined(playerbeingrevived.revivetrigger.auto_revive) && playerbeingrevived.revivetrigger.auto_revive == 1)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if ( timer >= revivetime )
|
if (timer >= revivetime)
|
||||||
{
|
{
|
||||||
revived = 1;
|
revived = 1;
|
||||||
break;
|
break;
|
||||||
@ -427,71 +427,71 @@ afterlife_revive_do_revive( playerbeingrevived, revivergun )
|
|||||||
|
|
||||||
e_fx delete();
|
e_fx delete();
|
||||||
|
|
||||||
if ( isDefined( playerbeingrevived_player.beingrevivedprogressbar ) )
|
if (isDefined(playerbeingrevived_player.beingrevivedprogressbar))
|
||||||
{
|
{
|
||||||
playerbeingrevived_player.beingrevivedprogressbar destroyelem();
|
playerbeingrevived_player.beingrevivedprogressbar destroyelem();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( playerbeingrevived_player.revive_hud ) )
|
if (isDefined(playerbeingrevived_player.revive_hud))
|
||||||
{
|
{
|
||||||
playerbeingrevived_player.revive_hud.y = -160;
|
playerbeingrevived_player.revive_hud.y = -160;
|
||||||
|
|
||||||
if ( !flag( "wait_and_revive" ) )
|
if (!flag("wait_and_revive"))
|
||||||
{
|
{
|
||||||
playerbeingrevived_player.revive_hud settext("");
|
playerbeingrevived_player.revive_hud settext("");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( self.reviveprogressbar ) )
|
if (isdefined(self.reviveprogressbar))
|
||||||
{
|
{
|
||||||
self.reviveprogressbar destroyelem();
|
self.reviveprogressbar destroyelem();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( self.revivetexthud ) )
|
if (isdefined(self.revivetexthud))
|
||||||
{
|
{
|
||||||
self.revivetexthud destroy();
|
self.revivetexthud destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( playerbeingrevived.revivetrigger.auto_revive ) && playerbeingrevived.revivetrigger.auto_revive == 1 )
|
if (isdefined(playerbeingrevived.revivetrigger.auto_revive) && playerbeingrevived.revivetrigger.auto_revive == 1)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
else if ( !revived )
|
else if (!revived)
|
||||||
{
|
{
|
||||||
if ( isplayer( playerbeingrevived ) )
|
if (isplayer(playerbeingrevived))
|
||||||
playerbeingrevived stoprevive( self );
|
playerbeingrevived stoprevive(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
playerbeingrevived.revivetrigger sethintstring( &"GAME_BUTTON_TO_REVIVE_PLAYER" );
|
playerbeingrevived.revivetrigger sethintstring(&"GAME_BUTTON_TO_REVIVE_PLAYER");
|
||||||
playerbeingrevived.revivetrigger.beingrevived = 0;
|
playerbeingrevived.revivetrigger.beingrevived = 0;
|
||||||
self notify( "do_revive_ended_normally" );
|
self notify("do_revive_ended_normally");
|
||||||
self.is_reviving_any--;
|
self.is_reviving_any--;
|
||||||
|
|
||||||
if ( !revived )
|
if (!revived)
|
||||||
playerbeingrevived thread checkforbleedout( self );
|
playerbeingrevived thread checkforbleedout(self);
|
||||||
|
|
||||||
return revived;
|
return revived;
|
||||||
}
|
}
|
||||||
|
|
||||||
afterlife_corpse_cleanup( corpse )
|
afterlife_corpse_cleanup(corpse)
|
||||||
{
|
{
|
||||||
playsoundatposition( "zmb_afterlife_revived", corpse.origin );
|
playsoundatposition("zmb_afterlife_revived", corpse.origin);
|
||||||
|
|
||||||
if ( isdefined( corpse.revivetrigger ) )
|
if (isdefined(corpse.revivetrigger))
|
||||||
{
|
{
|
||||||
corpse notify( "stop_revive_trigger" );
|
corpse notify("stop_revive_trigger");
|
||||||
corpse.revivetrigger delete();
|
corpse.revivetrigger delete();
|
||||||
corpse.revivetrigger = undefined;
|
corpse.revivetrigger = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( corpse.collision ) )
|
if (isdefined(corpse.collision))
|
||||||
{
|
{
|
||||||
corpse.collision delete();
|
corpse.collision delete();
|
||||||
corpse.collision = undefined;
|
corpse.collision = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
self.e_afterlife_corpse = undefined;
|
self.e_afterlife_corpse = undefined;
|
||||||
corpse setclientfield( "player_corpse_id", 0 );
|
corpse setclientfield("player_corpse_id", 0);
|
||||||
corpse afterlife_corpse_remove_pois();
|
corpse afterlife_corpse_remove_pois();
|
||||||
corpse ghost();
|
corpse ghost();
|
||||||
self.loadout = undefined;
|
self.loadout = undefined;
|
||||||
@ -501,77 +501,77 @@ afterlife_corpse_cleanup( corpse )
|
|||||||
corpse delete();
|
corpse delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
afterlife_player_damage_callback( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime )
|
afterlife_player_damage_callback(einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime)
|
||||||
{
|
{
|
||||||
if ( isdefined( eattacker ) )
|
if (isdefined(eattacker))
|
||||||
{
|
{
|
||||||
if ( isdefined( eattacker.is_zombie ) && eattacker.is_zombie )
|
if (isdefined(eattacker.is_zombie) && eattacker.is_zombie)
|
||||||
{
|
{
|
||||||
if ( isdefined( eattacker.custom_damage_func ) )
|
if (isdefined(eattacker.custom_damage_func))
|
||||||
idamage = eattacker [[ eattacker.custom_damage_func ]]( self );
|
idamage = eattacker [[ eattacker.custom_damage_func ]](self);
|
||||||
else if ( isdefined( eattacker.meleedamage ) && smeansofdeath != "MOD_GRENADE_SPLASH" )
|
else if (isdefined(eattacker.meleedamage) && smeansofdeath != "MOD_GRENADE_SPLASH")
|
||||||
idamage = eattacker.meleedamage;
|
idamage = eattacker.meleedamage;
|
||||||
|
|
||||||
if ( isdefined( self.afterlife ) && self.afterlife )
|
if (isdefined(self.afterlife) && self.afterlife)
|
||||||
{
|
{
|
||||||
self afterlife_reduce_mana( 10 );
|
self afterlife_reduce_mana(10);
|
||||||
self clientnotify( "al_d" );
|
self clientnotify("al_d");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( self.afterlife ) && self.afterlife )
|
if (isdefined(self.afterlife) && self.afterlife)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if ( self maps\mp\zombies\_zm_laststand::player_is_in_laststand() )
|
if (self maps\mp\zombies\_zm_laststand::player_is_in_laststand())
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if ( isdefined( eattacker ) && ( isdefined( eattacker.is_zombie ) && eattacker.is_zombie || isplayer( eattacker ) ) )
|
if (isdefined(eattacker) && (isdefined(eattacker.is_zombie) && eattacker.is_zombie || isplayer(eattacker)))
|
||||||
{
|
{
|
||||||
if ( isdefined( self.hasriotshield ) && self.hasriotshield && isdefined( vdir ) )
|
if (isdefined(self.hasriotshield) && self.hasriotshield && isdefined(vdir))
|
||||||
{
|
{
|
||||||
item_dmg = 100;
|
item_dmg = 100;
|
||||||
|
|
||||||
if ( isdefined( eattacker.custom_item_dmg ) )
|
if (isdefined(eattacker.custom_item_dmg))
|
||||||
item_dmg = eattacker.custom_item_dmg;
|
item_dmg = eattacker.custom_item_dmg;
|
||||||
|
|
||||||
if ( isdefined( self.hasriotshieldequipped ) && self.hasriotshieldequipped )
|
if (isdefined(self.hasriotshieldequipped) && self.hasriotshieldequipped)
|
||||||
{
|
{
|
||||||
if ( self player_shield_facing_attacker( vdir, 0.2 ) && isdefined( self.player_shield_apply_damage ) )
|
if (self player_shield_facing_attacker(vdir, 0.2) && isdefined(self.player_shield_apply_damage))
|
||||||
{
|
{
|
||||||
self [[ self.player_shield_apply_damage ]]( item_dmg, 0 );
|
self [[ self.player_shield_apply_damage ]](item_dmg, 0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( !isdefined( self.riotshieldentity ) )
|
else if (!isdefined(self.riotshieldentity))
|
||||||
{
|
{
|
||||||
if ( !self player_shield_facing_attacker( vdir, -0.2 ) && isdefined( self.player_shield_apply_damage ) )
|
if (!self player_shield_facing_attacker(vdir, -0.2) && isdefined(self.player_shield_apply_damage))
|
||||||
{
|
{
|
||||||
self [[ self.player_shield_apply_damage ]]( item_dmg, 0 );
|
self [[ self.player_shield_apply_damage ]](item_dmg, 0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( sweapon == "tower_trap_zm" || sweapon == "tower_trap_upgraded_zm" || sweapon == "none" && shitloc == "riotshield" && !( isdefined( eattacker.is_zombie ) && eattacker.is_zombie ) )
|
if (sweapon == "tower_trap_zm" || sweapon == "tower_trap_upgraded_zm" || sweapon == "none" && shitloc == "riotshield" && !(isdefined(eattacker.is_zombie) && eattacker.is_zombie))
|
||||||
{
|
{
|
||||||
self.use_adjusted_grenade_damage = 1;
|
self.use_adjusted_grenade_damage = 1;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( smeansofdeath == "MOD_PROJECTILE" || smeansofdeath == "MOD_PROJECTILE_SPLASH" || smeansofdeath == "MOD_GRENADE" || smeansofdeath == "MOD_GRENADE_SPLASH" )
|
if (smeansofdeath == "MOD_PROJECTILE" || smeansofdeath == "MOD_PROJECTILE_SPLASH" || smeansofdeath == "MOD_GRENADE" || smeansofdeath == "MOD_GRENADE_SPLASH")
|
||||||
{
|
{
|
||||||
if ( sweapon == "blundersplat_explosive_dart_zm" )
|
if (sweapon == "blundersplat_explosive_dart_zm")
|
||||||
{
|
{
|
||||||
if ( self hasperk( "specialty_flakjacket" ) )
|
if (self hasperk("specialty_flakjacket"))
|
||||||
{
|
{
|
||||||
self.use_adjusted_grenade_damage = 1;
|
self.use_adjusted_grenade_damage = 1;
|
||||||
idamage = 0;
|
idamage = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isalive( self ) && !( isdefined( self.is_zombie ) && self.is_zombie ) )
|
if (isalive(self) && !(isdefined(self.is_zombie) && self.is_zombie))
|
||||||
{
|
{
|
||||||
self.use_adjusted_grenade_damage = 1;
|
self.use_adjusted_grenade_damage = 1;
|
||||||
idamage = 25;
|
idamage = 25;
|
||||||
@ -579,24 +579,24 @@ afterlife_player_damage_callback( einflictor, eattacker, idamage, idflags, smean
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( self hasperk( "specialty_flakjacket" ) )
|
if (self hasperk("specialty_flakjacket"))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if ( self.health > 75 && !( isdefined( self.is_zombie ) && self.is_zombie ) )
|
if (self.health > 75 && !(isdefined(self.is_zombie) && self.is_zombie))
|
||||||
idamage = 75;
|
idamage = 75;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( idamage >= self.health && ( isdefined( level.intermission ) && !level.intermission ) )
|
if (idamage >= self.health && (isdefined(level.intermission) && !level.intermission))
|
||||||
{
|
{
|
||||||
if ( self.lives > 0 && ( isdefined( self.afterlife ) && !self.afterlife ) )
|
if (self.lives > 0 && (isdefined(self.afterlife) && !self.afterlife))
|
||||||
{
|
{
|
||||||
self playsoundtoplayer( "zmb_afterlife_death", self );
|
self playsoundtoplayer("zmb_afterlife_death", self);
|
||||||
self afterlife_remove();
|
self afterlife_remove();
|
||||||
self.afterlife = 1;
|
self.afterlife = 1;
|
||||||
self thread afterlife_laststand();
|
self thread afterlife_laststand();
|
||||||
|
|
||||||
if ( self.health <= 1 )
|
if (self.health <= 1)
|
||||||
return 0;
|
return 0;
|
||||||
else
|
else
|
||||||
idamage = self.health - 1;
|
idamage = self.health - 1;
|
||||||
@ -614,116 +614,116 @@ afterlife_give_loadout()
|
|||||||
loadout = self.loadout;
|
loadout = self.loadout;
|
||||||
primaries = self getweaponslistprimaries();
|
primaries = self getweaponslistprimaries();
|
||||||
|
|
||||||
if ( loadout.weapons.size > 1 || primaries.size > 1 )
|
if (loadout.weapons.size > 1 || primaries.size > 1)
|
||||||
{
|
{
|
||||||
foreach ( weapon in primaries )
|
foreach (weapon in primaries)
|
||||||
self takeweapon( weapon );
|
self takeweapon(weapon);
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( i = 0; i < loadout.weapons.size; i++ )
|
for (i = 0; i < loadout.weapons.size; i++)
|
||||||
{
|
{
|
||||||
if ( !isdefined( loadout.weapons[i] ) )
|
if (!isdefined(loadout.weapons[i]))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( loadout.weapons[i] == "none" )
|
if (loadout.weapons[i] == "none")
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
weapon = loadout.weapons[i];
|
weapon = loadout.weapons[i];
|
||||||
stock_amount = loadout.stockcount[i];
|
stock_amount = loadout.stockcount[i];
|
||||||
clip_amount = loadout.clipcount[i];
|
clip_amount = loadout.clipcount[i];
|
||||||
|
|
||||||
if ( !self hasweapon( weapon ) )
|
if (!self hasweapon(weapon))
|
||||||
{
|
{
|
||||||
self giveweapon( weapon, 0, self maps\mp\zombies\_zm_weapons::get_pack_a_punch_weapon_options( weapon ) );
|
self giveweapon(weapon, 0, self maps\mp\zombies\_zm_weapons::get_pack_a_punch_weapon_options(weapon));
|
||||||
self setweaponammostock( weapon, stock_amount );
|
self setweaponammostock(weapon, stock_amount);
|
||||||
self setweaponammoclip( weapon, clip_amount );
|
self setweaponammoclip(weapon, clip_amount);
|
||||||
|
|
||||||
if ( weaponisdualwield( weapon ) )
|
if (weaponisdualwield(weapon))
|
||||||
{
|
{
|
||||||
weapon_dw = weapondualwieldweaponname( weapon );
|
weapon_dw = weapondualwieldweaponname(weapon);
|
||||||
self setweaponammoclip( weapon_dw, loadout.clipcount2[i] );
|
self setweaponammoclip(weapon_dw, loadout.clipcount2[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
weapon_alt = weaponaltweaponname( weapon );
|
weapon_alt = weaponaltweaponname(weapon);
|
||||||
|
|
||||||
if ( weapon_alt != "none" )
|
if (weapon_alt != "none")
|
||||||
{
|
{
|
||||||
self setweaponammostock( weapon_alt, loadout.stockcountalt[i] );
|
self setweaponammostock(weapon_alt, loadout.stockcountalt[i]);
|
||||||
self setweaponammoclip( weapon_alt, loadout.clipcountalt[i] );
|
self setweaponammoclip(weapon_alt, loadout.clipcountalt[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self setspawnweapon( loadout.weapons[loadout.current_weapon] );
|
self setspawnweapon(loadout.weapons[loadout.current_weapon]);
|
||||||
self switchtoweaponimmediate( loadout.weapons[loadout.current_weapon] );
|
self switchtoweaponimmediate(loadout.weapons[loadout.current_weapon]);
|
||||||
|
|
||||||
if ( isdefined( self get_player_melee_weapon() ) )
|
if (isdefined(self get_player_melee_weapon()))
|
||||||
self giveweapon( self get_player_melee_weapon() );
|
self giveweapon(self get_player_melee_weapon());
|
||||||
|
|
||||||
self.do_not_display_equipment_pickup_hint = 1;
|
self.do_not_display_equipment_pickup_hint = 1;
|
||||||
self maps\mp\zombies\_zm_equipment::equipment_give( self.loadout.equipment );
|
self maps\mp\zombies\_zm_equipment::equipment_give(self.loadout.equipment);
|
||||||
self.do_not_display_equipment_pickup_hint = undefined;
|
self.do_not_display_equipment_pickup_hint = undefined;
|
||||||
|
|
||||||
if ( isdefined( loadout.hasclaymore ) && loadout.hasclaymore && !self hasweapon( "claymore_zm" ) )
|
if (isdefined(loadout.hasclaymore) && loadout.hasclaymore && !self hasweapon("claymore_zm"))
|
||||||
{
|
{
|
||||||
self giveweapon( "claymore_zm" );
|
self giveweapon("claymore_zm");
|
||||||
self set_player_placeable_mine( "claymore_zm" );
|
self set_player_placeable_mine("claymore_zm");
|
||||||
self setactionslot( 4, "weapon", "claymore_zm" );
|
self setactionslot(4, "weapon", "claymore_zm");
|
||||||
self setweaponammoclip( "claymore_zm", loadout.claymoreclip );
|
self setweaponammoclip("claymore_zm", loadout.claymoreclip);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( loadout.hasemp ) && loadout.hasemp )
|
if (isdefined(loadout.hasemp) && loadout.hasemp)
|
||||||
{
|
{
|
||||||
self giveweapon( "emp_grenade_zm" );
|
self giveweapon("emp_grenade_zm");
|
||||||
self setweaponammoclip( "emp_grenade_zm", loadout.empclip );
|
self setweaponammoclip("emp_grenade_zm", loadout.empclip);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( loadout.hastomahawk ) && loadout.hastomahawk )
|
if (isdefined(loadout.hastomahawk) && loadout.hastomahawk)
|
||||||
{
|
{
|
||||||
self giveweapon( self.current_tomahawk_weapon );
|
self giveweapon(self.current_tomahawk_weapon);
|
||||||
self set_player_tactical_grenade( self.current_tomahawk_weapon );
|
self set_player_tactical_grenade(self.current_tomahawk_weapon);
|
||||||
self setclientfieldtoplayer( "tomahawk_in_use", 1 );
|
self setclientfieldtoplayer("tomahawk_in_use", 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
self.score = loadout.score;
|
self.score = loadout.score;
|
||||||
perk_array = maps\mp\zombies\_zm_perks::get_perk_array( 1 );
|
perk_array = maps\mp\zombies\_zm_perks::get_perk_array(1);
|
||||||
|
|
||||||
for ( i = 0; i < perk_array.size; i++ )
|
for (i = 0; i < perk_array.size; i++)
|
||||||
{
|
{
|
||||||
perk = perk_array[i];
|
perk = perk_array[i];
|
||||||
self unsetperk( perk );
|
self unsetperk(perk);
|
||||||
self set_perk_clientfield( perk, 0 );
|
self set_perk_clientfield(perk, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( self.keep_perks ) && self.keep_perks && isdefined( loadout.perks ) && loadout.perks.size > 0 )
|
if (isdefined(self.keep_perks) && self.keep_perks && isdefined(loadout.perks) && loadout.perks.size > 0)
|
||||||
{
|
{
|
||||||
for ( i = 0; i < loadout.perks.size; i++ )
|
for (i = 0; i < loadout.perks.size; i++)
|
||||||
{
|
{
|
||||||
if ( self hasperk( loadout.perks[i] ) )
|
if (self hasperk(loadout.perks[i]))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( loadout.perks[i] == "specialty_quickrevive" && flag( "solo_game" ) )
|
if (loadout.perks[i] == "specialty_quickrevive" && flag("solo_game"))
|
||||||
level.solo_game_free_player_quickrevive = 1;
|
level.solo_game_free_player_quickrevive = 1;
|
||||||
|
|
||||||
if ( loadout.perks[i] == "specialty_finalstand" )
|
if (loadout.perks[i] == "specialty_finalstand")
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
maps\mp\zombies\_zm_perks::give_perk( loadout.perks[i] );
|
maps\mp\zombies\_zm_perks::give_perk(loadout.perks[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self.keep_perks = undefined;
|
self.keep_perks = undefined;
|
||||||
self set_player_lethal_grenade( self.loadout.lethal_grenade );
|
self set_player_lethal_grenade(self.loadout.lethal_grenade);
|
||||||
|
|
||||||
if ( loadout.grenade > 0 )
|
if (loadout.grenade > 0)
|
||||||
{
|
{
|
||||||
curgrenadecount = 0;
|
curgrenadecount = 0;
|
||||||
|
|
||||||
if ( self hasweapon( self get_player_lethal_grenade() ) )
|
if (self hasweapon(self get_player_lethal_grenade()))
|
||||||
self getweaponammoclip( self get_player_lethal_grenade() );
|
self getweaponammoclip(self get_player_lethal_grenade());
|
||||||
else
|
else
|
||||||
self giveweapon( self get_player_lethal_grenade() );
|
self giveweapon(self get_player_lethal_grenade());
|
||||||
|
|
||||||
self setweaponammoclip( self get_player_lethal_grenade(), loadout.grenade + curgrenadecount );
|
self setweaponammoclip(self get_player_lethal_grenade(), loadout.grenade + curgrenadecount);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -18,25 +18,25 @@ check_range_attack()
|
|||||||
{
|
{
|
||||||
enemy = self.favoriteenemy;
|
enemy = self.favoriteenemy;
|
||||||
|
|
||||||
if ( isdefined( enemy ) )
|
if (isdefined(enemy))
|
||||||
{
|
{
|
||||||
vec_enemy = enemy.origin - self.origin;
|
vec_enemy = enemy.origin - self.origin;
|
||||||
dist_sq = lengthsquared( vec_enemy );
|
dist_sq = lengthsquared(vec_enemy);
|
||||||
|
|
||||||
if ( dist_sq > 4096 && dist_sq < 360000 )
|
if (dist_sq > 4096 && dist_sq < 360000)
|
||||||
{
|
{
|
||||||
vec_facing = anglestoforward( self.angles );
|
vec_facing = anglestoforward(self.angles);
|
||||||
norm_facing = vectornormalize( vec_facing );
|
norm_facing = vectornormalize(vec_facing);
|
||||||
norm_enemy = vectornormalize( vec_enemy );
|
norm_enemy = vectornormalize(vec_enemy);
|
||||||
dot = vectordot( norm_facing, norm_enemy );
|
dot = vectordot(norm_facing, norm_enemy);
|
||||||
|
|
||||||
if ( dot > 0.99 )
|
if (dot > 0.99)
|
||||||
{
|
{
|
||||||
enemy_eye_pos = enemy geteye();
|
enemy_eye_pos = enemy geteye();
|
||||||
eye_pos = self geteye();
|
eye_pos = self geteye();
|
||||||
passed = bullettracepassed( eye_pos, enemy_eye_pos, 0, undefined );
|
passed = bullettracepassed(eye_pos, enemy_eye_pos, 0, undefined);
|
||||||
|
|
||||||
if ( passed )
|
if (passed)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -45,87 +45,87 @@ check_range_attack()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
avogadro_exit( from )
|
avogadro_exit(from)
|
||||||
{
|
{
|
||||||
powerup_origin = spawn( "script_origin", self.origin );
|
powerup_origin = spawn("script_origin", self.origin);
|
||||||
|
|
||||||
if ( self.state == "attacking_bus" || self.state == "stay_attached" )
|
if (self.state == "attacking_bus" || self.state == "stay_attached")
|
||||||
{
|
{
|
||||||
powerup_origin linkto( level.the_bus );
|
powerup_origin linkto(level.the_bus);
|
||||||
}
|
}
|
||||||
|
|
||||||
self.state = "exiting";
|
self.state = "exiting";
|
||||||
self notify( "stop_find_flesh" );
|
self notify("stop_find_flesh");
|
||||||
self notify( "zombie_acquire_enemy" );
|
self notify("zombie_acquire_enemy");
|
||||||
self setfreecameralockonallowed( 0 );
|
self setfreecameralockonallowed(0);
|
||||||
self.audio_loop_ent stoploopsound( 0.5 );
|
self.audio_loop_ent stoploopsound(0.5);
|
||||||
self notify( "stop_health" );
|
self notify("stop_health");
|
||||||
|
|
||||||
if ( isdefined( self.health_fx ) )
|
if (isdefined(self.health_fx))
|
||||||
{
|
{
|
||||||
self.health_fx unlink();
|
self.health_fx unlink();
|
||||||
self.health_fx delete();
|
self.health_fx delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( from ) )
|
if (isdefined(from))
|
||||||
{
|
{
|
||||||
if ( from == "bus" )
|
if (from == "bus")
|
||||||
{
|
{
|
||||||
self playsound( "zmb_avogadro_death_short" );
|
self playsound("zmb_avogadro_death_short");
|
||||||
playfx( level._effect["avogadro_ascend_aerial"], self.origin );
|
playfx(level._effect["avogadro_ascend_aerial"], self.origin);
|
||||||
self animscripted( self.origin, self.angles, "zm_bus_win" );
|
self animscripted(self.origin, self.angles, "zm_bus_win");
|
||||||
maps\mp\animscripts\zm_shared::donotetracks( "bus_win_anim" );
|
maps\mp\animscripts\zm_shared::donotetracks("bus_win_anim");
|
||||||
}
|
}
|
||||||
else if ( from == "chamber" )
|
else if (from == "chamber")
|
||||||
{
|
{
|
||||||
self playsound( "zmb_avogadro_death_short" );
|
self playsound("zmb_avogadro_death_short");
|
||||||
playfx( level._effect["avogadro_ascend"], self.origin );
|
playfx(level._effect["avogadro_ascend"], self.origin);
|
||||||
self animscripted( self.origin, self.angles, "zm_chamber_out" );
|
self animscripted(self.origin, self.angles, "zm_chamber_out");
|
||||||
wait 0.4;
|
wait 0.4;
|
||||||
self ghost();
|
self ghost();
|
||||||
stop_exploder( 500 );
|
stop_exploder(500);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
self playsound( "zmb_avogadro_death" );
|
self playsound("zmb_avogadro_death");
|
||||||
playfx( level._effect["avogadro_ascend"], self.origin );
|
playfx(level._effect["avogadro_ascend"], self.origin);
|
||||||
self animscripted( self.origin, self.angles, "zm_exit" );
|
self animscripted(self.origin, self.angles, "zm_exit");
|
||||||
maps\mp\animscripts\zm_shared::donotetracks( "exit_anim" );
|
maps\mp\animscripts\zm_shared::donotetracks("exit_anim");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
self playsound( "zmb_avogadro_death" );
|
self playsound("zmb_avogadro_death");
|
||||||
playfx( level._effect["avogadro_ascend"], self.origin );
|
playfx(level._effect["avogadro_ascend"], self.origin);
|
||||||
self animscripted( self.origin, self.angles, "zm_exit" );
|
self animscripted(self.origin, self.angles, "zm_exit");
|
||||||
maps\mp\animscripts\zm_shared::donotetracks( "exit_anim" );
|
maps\mp\animscripts\zm_shared::donotetracks("exit_anim");
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isdefined( from ) || from != "chamber" )
|
if (!isdefined(from) || from != "chamber")
|
||||||
level thread do_avogadro_flee_vo( self );
|
level thread do_avogadro_flee_vo(self);
|
||||||
|
|
||||||
self ghost();
|
self ghost();
|
||||||
self.hit_by_melee = 0;
|
self.hit_by_melee = 0;
|
||||||
self.anchor.origin = self.origin;
|
self.anchor.origin = self.origin;
|
||||||
self.anchor.angles = self.angles;
|
self.anchor.angles = self.angles;
|
||||||
self linkto( self.anchor );
|
self linkto(self.anchor);
|
||||||
|
|
||||||
if ( isdefined( from ) && from == "exit_idle" )
|
if (isdefined(from) && from == "exit_idle")
|
||||||
self.return_round = level.round_number;
|
self.return_round = level.round_number;
|
||||||
else
|
else
|
||||||
self.return_round = level.round_number + randomintrange( 2, 5 );
|
self.return_round = level.round_number + randomintrange(2, 5);
|
||||||
|
|
||||||
level.next_avogadro_round = self.return_round;
|
level.next_avogadro_round = self.return_round;
|
||||||
self.state = "cloud";
|
self.state = "cloud";
|
||||||
self thread cloud_update_fx();
|
self thread cloud_update_fx();
|
||||||
|
|
||||||
if ( !isdefined( from ) )
|
if (!isdefined(from))
|
||||||
{
|
{
|
||||||
if ( level.powerup_drop_count >= level.zombie_vars["zombie_powerup_drop_max_per_round"] )
|
if (level.powerup_drop_count >= level.zombie_vars["zombie_powerup_drop_max_per_round"])
|
||||||
level.powerup_drop_count = level.zombie_vars["zombie_powerup_drop_max_per_round"] - 1;
|
level.powerup_drop_count = level.zombie_vars["zombie_powerup_drop_max_per_round"] - 1;
|
||||||
|
|
||||||
level.zombie_vars["zombie_drop_item"] = 1;
|
level.zombie_vars["zombie_drop_item"] = 1;
|
||||||
level thread maps\mp\zombies\_zm_powerups::powerup_drop( powerup_origin.origin );
|
level thread maps\mp\zombies\_zm_powerups::powerup_drop(powerup_origin.origin);
|
||||||
}
|
}
|
||||||
|
|
||||||
powerup_origin delete();
|
powerup_origin delete();
|
||||||
@ -133,8 +133,8 @@ avogadro_exit( from )
|
|||||||
|
|
||||||
cloud_update_fx()
|
cloud_update_fx()
|
||||||
{
|
{
|
||||||
self endon( "cloud_fx_end" );
|
self endon("cloud_fx_end");
|
||||||
level endon( "end_game" );
|
level endon("end_game");
|
||||||
region = [];
|
region = [];
|
||||||
region[0] = "bus";
|
region[0] = "bus";
|
||||||
region[1] = "diner";
|
region[1] = "diner";
|
||||||
@ -143,47 +143,47 @@ cloud_update_fx()
|
|||||||
region[4] = "power";
|
region[4] = "power";
|
||||||
region[5] = "town";
|
region[5] = "town";
|
||||||
|
|
||||||
if ( !isdefined( self.sndent ) )
|
if (!isdefined(self.sndent))
|
||||||
{
|
{
|
||||||
self.sndent = spawn( "script_origin", ( 0, 0, 0 ) );
|
self.sndent = spawn("script_origin", (0, 0, 0));
|
||||||
self.sndent playloopsound( "zmb_avogadro_thunder_overhead" );
|
self.sndent playloopsound("zmb_avogadro_thunder_overhead");
|
||||||
}
|
}
|
||||||
|
|
||||||
cloud_time = gettime();
|
cloud_time = gettime();
|
||||||
|
|
||||||
for ( vo_counter = 0; 1; vo_counter++ )
|
for (vo_counter = 0; 1; vo_counter++)
|
||||||
{
|
{
|
||||||
if ( gettime() >= cloud_time )
|
if (gettime() >= cloud_time)
|
||||||
{
|
{
|
||||||
if ( isdefined( self.current_region ) )
|
if (isdefined(self.current_region))
|
||||||
{
|
{
|
||||||
exploder_num = level.transit_region[self.current_region].exploder;
|
exploder_num = level.transit_region[self.current_region].exploder;
|
||||||
stop_exploder( exploder_num );
|
stop_exploder(exploder_num);
|
||||||
}
|
}
|
||||||
|
|
||||||
rand_region = array_randomize( region );
|
rand_region = array_randomize(region);
|
||||||
region_str = rand_region[0];
|
region_str = rand_region[0];
|
||||||
|
|
||||||
if ( !isdefined( self.current_region ) )
|
if (!isdefined(self.current_region))
|
||||||
region_str = region[4];
|
region_str = region[4];
|
||||||
|
|
||||||
self.current_region = region_str;
|
self.current_region = region_str;
|
||||||
exploder_num = level.transit_region[region_str].exploder;
|
exploder_num = level.transit_region[region_str].exploder;
|
||||||
exploder( exploder_num );
|
exploder(exploder_num);
|
||||||
self.sndent moveto( level.transit_region[region_str].sndorigin, 3 );
|
self.sndent moveto(level.transit_region[region_str].sndorigin, 3);
|
||||||
cloud_time = gettime() + 30000;
|
cloud_time = gettime() + 30000;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( vo_counter > 50 )
|
if (vo_counter > 50)
|
||||||
{
|
{
|
||||||
player = self get_player_in_region();
|
player = self get_player_in_region();
|
||||||
|
|
||||||
if ( isdefined( player ) )
|
if (isdefined(player))
|
||||||
{
|
{
|
||||||
if ( isdefined( self._in_cloud ) && self._in_cloud )
|
if (isdefined(self._in_cloud) && self._in_cloud)
|
||||||
player thread do_player_general_vox( "general", "avogadro_above", 90, 10 );
|
player thread do_player_general_vox("general", "avogadro_above", 90, 10);
|
||||||
else
|
else
|
||||||
player thread do_player_general_vox( "general", "avogadro_arrive", 60, 40 );
|
player thread do_player_general_vox("general", "avogadro_arrive", 60, 40);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
level thread avogadro_storm_vox();
|
level thread avogadro_storm_vox();
|
||||||
|
@ -4,32 +4,32 @@
|
|||||||
|
|
||||||
inert_wakeup()
|
inert_wakeup()
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
self endon( "stop_zombie_inert" );
|
self endon("stop_zombie_inert");
|
||||||
|
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
|
|
||||||
self thread maps\mp\zombies\_zm_ai_basic::inert_damage();
|
self thread maps\mp\zombies\_zm_ai_basic::inert_damage();
|
||||||
self thread maps\mp\zombies\_zm_ai_basic::inert_bump();
|
self thread maps\mp\zombies\_zm_ai_basic::inert_bump();
|
||||||
|
|
||||||
while ( 1 )
|
while (1)
|
||||||
{
|
{
|
||||||
current_time = getTime();
|
current_time = getTime();
|
||||||
players = get_players();
|
players = get_players();
|
||||||
|
|
||||||
foreach ( player in players )
|
foreach (player in players)
|
||||||
{
|
{
|
||||||
dist_sq = distancesquared( self.origin, player.origin );
|
dist_sq = distancesquared(self.origin, player.origin);
|
||||||
|
|
||||||
if ( dist_sq < 4096 )
|
if (dist_sq < 4096)
|
||||||
{
|
{
|
||||||
self maps\mp\zombies\_zm_ai_basic::stop_inert();
|
self maps\mp\zombies\_zm_ai_basic::stop_inert();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( dist_sq < 5760000 )
|
if (dist_sq < 5760000)
|
||||||
{
|
{
|
||||||
if ( ( current_time - player.lastfiretime ) < 100 )
|
if ((current_time - player.lastfiretime) < 100)
|
||||||
{
|
{
|
||||||
self maps\mp\zombies\_zm_ai_basic::stop_inert();
|
self maps\mp\zombies\_zm_ai_basic::stop_inert();
|
||||||
return;
|
return;
|
||||||
|
@ -6,20 +6,20 @@
|
|||||||
|
|
||||||
init()
|
init()
|
||||||
{
|
{
|
||||||
level.brutus_spawners = getentarray( "brutus_zombie_spawner", "script_noteworthy" );
|
level.brutus_spawners = getentarray("brutus_zombie_spawner", "script_noteworthy");
|
||||||
|
|
||||||
if ( level.brutus_spawners.size == 0 )
|
if (level.brutus_spawners.size == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
array_thread( level.brutus_spawners, ::add_spawn_function, ::brutus_prespawn );
|
array_thread(level.brutus_spawners, ::add_spawn_function, ::brutus_prespawn);
|
||||||
|
|
||||||
for ( i = 0; i < level.brutus_spawners.size; i++ )
|
for (i = 0; i < level.brutus_spawners.size; i++)
|
||||||
{
|
{
|
||||||
level.brutus_spawners[i].is_enabled = 1;
|
level.brutus_spawners[i].is_enabled = 1;
|
||||||
level.brutus_spawners[i].script_forcespawn = 1;
|
level.brutus_spawners[i].script_forcespawn = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
level.brutus_spawn_positions = getstructarray( "brutus_location", "script_noteworthy" );
|
level.brutus_spawn_positions = getstructarray("brutus_location", "script_noteworthy");
|
||||||
level thread setup_interaction_matrix();
|
level thread setup_interaction_matrix();
|
||||||
level.sndbrutusistalking = 0;
|
level.sndbrutusistalking = 0;
|
||||||
level.brutus_health = 500;
|
level.brutus_health = 500;
|
||||||
@ -59,13 +59,13 @@ init()
|
|||||||
level.brutus_respawn_after_despawn = 1;
|
level.brutus_respawn_after_despawn = 1;
|
||||||
level.brutus_in_grief = 0;
|
level.brutus_in_grief = 0;
|
||||||
|
|
||||||
if ( getdvar( "ui_gametype" ) == "zgrief" )
|
if (getdvar("ui_gametype") == "zgrief")
|
||||||
level.brutus_in_grief = 1;
|
level.brutus_in_grief = 1;
|
||||||
|
|
||||||
level.brutus_shotgun_damage_mod = 1.5;
|
level.brutus_shotgun_damage_mod = 1.5;
|
||||||
level.brutus_custom_goalradius = 48;
|
level.brutus_custom_goalradius = 48;
|
||||||
registerclientfield( "actor", "helmet_off", 9000, 1, "int" );
|
registerclientfield("actor", "helmet_off", 9000, 1, "int");
|
||||||
registerclientfield( "actor", "brutus_lock_down", 9000, 1, "int" );
|
registerclientfield("actor", "brutus_lock_down", 9000, 1, "int");
|
||||||
level thread maps\mp\zombies\_zm_ai_brutus::brutus_spawning_logic();
|
level thread maps\mp\zombies\_zm_ai_brutus::brutus_spawning_logic();
|
||||||
|
|
||||||
level thread maps\mp\zombies\_zm_ai_brutus::get_brutus_interest_points();
|
level thread maps\mp\zombies\_zm_ai_brutus::get_brutus_interest_points();
|
||||||
@ -106,7 +106,7 @@ setup_interaction_matrix()
|
|||||||
level.interaction_types["perk_machine"].num_times_to_scale = 3;
|
level.interaction_types["perk_machine"].num_times_to_scale = 3;
|
||||||
level.interaction_types["perk_machine"].unlock_cost = 2000;
|
level.interaction_types["perk_machine"].unlock_cost = 2000;
|
||||||
|
|
||||||
if ( !is_gametype_active( "zgrief" ) )
|
if (!is_gametype_active("zgrief"))
|
||||||
{
|
{
|
||||||
level.interaction_types["blocker"] = spawnstruct();
|
level.interaction_types["blocker"] = spawnstruct();
|
||||||
level.interaction_types["blocker"].priority = 5;
|
level.interaction_types["blocker"].priority = 5;
|
||||||
@ -168,24 +168,24 @@ setup_interaction_matrix()
|
|||||||
}
|
}
|
||||||
|
|
||||||
level.interaction_priority = [];
|
level.interaction_priority = [];
|
||||||
interaction_types = getarraykeys( level.interaction_types );
|
interaction_types = getarraykeys(level.interaction_types);
|
||||||
|
|
||||||
for ( i = 0; i < interaction_types.size; i++ )
|
for (i = 0; i < interaction_types.size; i++)
|
||||||
{
|
{
|
||||||
int_type = interaction_types[i];
|
int_type = interaction_types[i];
|
||||||
interaction = level.interaction_types[int_type];
|
interaction = level.interaction_types[int_type];
|
||||||
assert( !isdefined( level.interaction_priority[interaction.priority] ) );
|
assert(!isdefined(level.interaction_priority[interaction.priority]));
|
||||||
level.interaction_priority[interaction.priority] = int_type;
|
level.interaction_priority[interaction.priority] = int_type;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
check_craftable_table_valid( player )
|
check_craftable_table_valid(player)
|
||||||
{
|
{
|
||||||
if ( !isdefined( self.stub ) && ( isdefined( self.is_locked ) && self.is_locked ) )
|
if (!isdefined(self.stub) && (isdefined(self.is_locked) && self.is_locked))
|
||||||
{
|
{
|
||||||
if ( player.score >= self.locked_cost )
|
if (player.score >= self.locked_cost)
|
||||||
{
|
{
|
||||||
player minus_to_player_score( self.locked_cost );
|
player minus_to_player_score(self.locked_cost);
|
||||||
self.is_locked = 0;
|
self.is_locked = 0;
|
||||||
self.locked_cost = undefined;
|
self.locked_cost = undefined;
|
||||||
self.lock_fx delete();
|
self.lock_fx delete();
|
||||||
@ -193,15 +193,15 @@ check_craftable_table_valid( player )
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else if ( isdefined( self.stub ) && ( isdefined( self.stub.is_locked ) && self.stub.is_locked ) )
|
else if (isdefined(self.stub) && (isdefined(self.stub.is_locked) && self.stub.is_locked))
|
||||||
{
|
{
|
||||||
if ( player.score >= self.stub.locked_cost )
|
if (player.score >= self.stub.locked_cost)
|
||||||
{
|
{
|
||||||
player minus_to_player_score( self.stub.locked_cost );
|
player minus_to_player_score(self.stub.locked_cost);
|
||||||
self.stub.is_locked = 0;
|
self.stub.is_locked = 0;
|
||||||
self.stub.locked_cost = undefined;
|
self.stub.locked_cost = undefined;
|
||||||
self.stub.lock_fx delete();
|
self.stub.lock_fx delete();
|
||||||
self scripts\zm\zm_prison\zm_prison_reimagined::craftabletrigger_update_prompt( player );
|
self scripts\zm\zm_prison\zm_prison_reimagined::craftabletrigger_update_prompt(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
@ -212,36 +212,36 @@ check_craftable_table_valid( player )
|
|||||||
|
|
||||||
brutus_round_tracker()
|
brutus_round_tracker()
|
||||||
{
|
{
|
||||||
level.next_brutus_round = level.round_number + randomintrange( level.brutus_min_round_fq, level.brutus_max_round_fq );
|
level.next_brutus_round = level.round_number + randomintrange(level.brutus_min_round_fq, level.brutus_max_round_fq);
|
||||||
old_spawn_func = level.round_spawn_func;
|
old_spawn_func = level.round_spawn_func;
|
||||||
old_wait_func = level.round_wait_func;
|
old_wait_func = level.round_wait_func;
|
||||||
|
|
||||||
flag_wait_any( "activate_cellblock_east", "activate_cellblock_west" );
|
flag_wait_any("activate_cellblock_east", "activate_cellblock_west");
|
||||||
|
|
||||||
while ( true )
|
while (true)
|
||||||
{
|
{
|
||||||
level waittill( "between_round_over" );
|
level waittill("between_round_over");
|
||||||
|
|
||||||
players = get_players();
|
players = get_players();
|
||||||
|
|
||||||
if ( level.round_number < 9 && ( isdefined( level.is_forever_solo_game ) && level.is_forever_solo_game ) )
|
if (level.round_number < 9 && (isdefined(level.is_forever_solo_game) && level.is_forever_solo_game))
|
||||||
continue;
|
continue;
|
||||||
else if ( level.next_brutus_round <= level.round_number )
|
else if (level.next_brutus_round <= level.round_number)
|
||||||
{
|
{
|
||||||
if ( maps\mp\zm_alcatraz_utility::is_team_on_golden_gate_bridge() )
|
if (maps\mp\zm_alcatraz_utility::is_team_on_golden_gate_bridge())
|
||||||
{
|
{
|
||||||
level.next_brutus_round = level.round_number + 1;
|
level.next_brutus_round = level.round_number + 1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
wait( randomfloatrange( level.brutus_min_spawn_delay, level.brutus_max_spawn_delay ) );
|
wait(randomfloatrange(level.brutus_min_spawn_delay, level.brutus_max_spawn_delay));
|
||||||
|
|
||||||
if ( attempt_brutus_spawn( level.brutus_zombie_per_round ) )
|
if (attempt_brutus_spawn(level.brutus_zombie_per_round))
|
||||||
{
|
{
|
||||||
level.music_round_override = 1;
|
level.music_round_override = 1;
|
||||||
level thread maps\mp\zombies\_zm_audio::change_zombie_music( "brutus_round_start" );
|
level thread maps\mp\zombies\_zm_audio::change_zombie_music("brutus_round_start");
|
||||||
level thread sndforcewait();
|
level thread sndforcewait();
|
||||||
level.next_brutus_round = level.round_number + randomintrange( level.brutus_min_round_fq, level.brutus_max_round_fq );
|
level.next_brutus_round = level.round_number + randomintrange(level.brutus_min_round_fq, level.brutus_max_round_fq);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -249,55 +249,55 @@ brutus_round_tracker()
|
|||||||
|
|
||||||
craftable_table_lock()
|
craftable_table_lock()
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
table_struct = self.priority_item;
|
table_struct = self.priority_item;
|
||||||
|
|
||||||
if ( !isdefined( table_struct ) )
|
if (!isdefined(table_struct))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
craftable_table = table_struct get_trigger_for_craftable();
|
craftable_table = table_struct get_trigger_for_craftable();
|
||||||
int_struct = level.interaction_types["craftable_table"];
|
int_struct = level.interaction_types["craftable_table"];
|
||||||
craftable_table.lock_fx = spawn( "script_model", table_struct.origin );
|
craftable_table.lock_fx = spawn("script_model", table_struct.origin);
|
||||||
craftable_table.lock_fx.angles = table_struct.angles;
|
craftable_table.lock_fx.angles = table_struct.angles;
|
||||||
craftable_table.lock_fx = offset_fx_struct( int_struct, craftable_table.lock_fx );
|
craftable_table.lock_fx = offset_fx_struct(int_struct, craftable_table.lock_fx);
|
||||||
craftable_table.lock_fx setmodel( "tag_origin" );
|
craftable_table.lock_fx setmodel("tag_origin");
|
||||||
playfxontag( level._effect["brutus_lockdown_lg"], craftable_table.lock_fx, "tag_origin" );
|
playfxontag(level._effect["brutus_lockdown_lg"], craftable_table.lock_fx, "tag_origin");
|
||||||
craftable_table.lock_fx playsound( "zmb_ai_brutus_clang" );
|
craftable_table.lock_fx playsound("zmb_ai_brutus_clang");
|
||||||
craftable_table.is_locked = 1;
|
craftable_table.is_locked = 1;
|
||||||
craftable_table.locked_cost = get_scaling_lock_cost( "craftable_table", craftable_table );
|
craftable_table.locked_cost = get_scaling_lock_cost("craftable_table", craftable_table);
|
||||||
craftable_table.hint_string = get_lock_hint_string( craftable_table.locked_cost );
|
craftable_table.hint_string = get_lock_hint_string(craftable_table.locked_cost);
|
||||||
|
|
||||||
if ( !isdefined( craftable_table.equipname ) )
|
if (!isdefined(craftable_table.equipname))
|
||||||
{
|
{
|
||||||
craftable_table sethintstring( craftable_table.hint_string );
|
craftable_table sethintstring(craftable_table.hint_string);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( craftable_table.targetname ) && craftable_table.targetname == "blundergat_upgrade" )
|
if (isdefined(craftable_table.targetname) && craftable_table.targetname == "blundergat_upgrade")
|
||||||
{
|
{
|
||||||
level.lockdown_track["craft_kit"] = 1;
|
level.lockdown_track["craft_kit"] = 1;
|
||||||
|
|
||||||
t_upgrade = getent( "blundergat_upgrade", "targetname" );
|
t_upgrade = getent("blundergat_upgrade", "targetname");
|
||||||
t_upgrade.is_locked = 1;
|
t_upgrade.is_locked = 1;
|
||||||
t_upgrade sethintstring( craftable_table.hint_string );
|
t_upgrade sethintstring(craftable_table.hint_string);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( craftable_table.weaponname ) && craftable_table.weaponname == "alcatraz_shield_zm" )
|
if (isdefined(craftable_table.weaponname) && craftable_table.weaponname == "alcatraz_shield_zm")
|
||||||
{
|
{
|
||||||
level.lockdown_track["craft_shield"] = 1;
|
level.lockdown_track["craft_shield"] = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
level notify( "brutus_locked_object" );
|
level notify("brutus_locked_object");
|
||||||
self.priority_item = undefined;
|
self.priority_item = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
brutus_find_flesh()
|
brutus_find_flesh()
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
level endon( "intermission" );
|
level endon("intermission");
|
||||||
|
|
||||||
if ( level.intermission )
|
if (level.intermission)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
self.ai_state = "idle";
|
self.ai_state = "idle";
|
||||||
@ -310,22 +310,22 @@ brutus_find_flesh()
|
|||||||
self thread brutus_goal_watcher();
|
self thread brutus_goal_watcher();
|
||||||
self thread watch_for_player_dist();
|
self thread watch_for_player_dist();
|
||||||
|
|
||||||
while ( true )
|
while (true)
|
||||||
{
|
{
|
||||||
if ( self.not_interruptable )
|
if (self.not_interruptable)
|
||||||
{
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
player = brutus_get_closest_valid_player();
|
player = brutus_get_closest_valid_player();
|
||||||
brutus_zone = get_zone_from_position( self.origin );
|
brutus_zone = get_zone_from_position(self.origin);
|
||||||
|
|
||||||
if ( !isdefined( brutus_zone ) )
|
if (!isdefined(brutus_zone))
|
||||||
{
|
{
|
||||||
brutus_zone = self.prev_zone;
|
brutus_zone = self.prev_zone;
|
||||||
|
|
||||||
if ( !isdefined( brutus_zone ) )
|
if (!isdefined(brutus_zone))
|
||||||
{
|
{
|
||||||
wait 1;
|
wait 1;
|
||||||
continue;
|
continue;
|
||||||
@ -335,33 +335,33 @@ brutus_find_flesh()
|
|||||||
player_zone = undefined;
|
player_zone = undefined;
|
||||||
self.prev_zone = brutus_zone;
|
self.prev_zone = brutus_zone;
|
||||||
|
|
||||||
if ( !isdefined( player ) )
|
if (!isdefined(player))
|
||||||
self.priority_item = self get_priority_item_for_brutus( brutus_zone, 1 );
|
self.priority_item = self get_priority_item_for_brutus(brutus_zone, 1);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player_zone = player get_player_zone();
|
player_zone = player get_player_zone();
|
||||||
|
|
||||||
if ( isdefined( player_zone ) )
|
if (isdefined(player_zone))
|
||||||
self.priority_item = self get_priority_item_for_brutus( player_zone );
|
self.priority_item = self get_priority_item_for_brutus(player_zone);
|
||||||
else
|
else
|
||||||
self.priority_item = self get_priority_item_for_brutus( brutus_zone, 1 );
|
self.priority_item = self get_priority_item_for_brutus(brutus_zone, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( player ) && distancesquared( self.origin, player.origin ) < level.brutus_aggro_dist_sq && isdefined( player_zone ) && should_brutus_aggro( player_zone, brutus_zone ) )
|
if (isdefined(player) && distancesquared(self.origin, player.origin) < level.brutus_aggro_dist_sq && isdefined(player_zone) && should_brutus_aggro(player_zone, brutus_zone))
|
||||||
{
|
{
|
||||||
self.favorite_enemy = player;
|
self.favorite_enemy = player;
|
||||||
self.goal_pos = player.origin;
|
self.goal_pos = player.origin;
|
||||||
brutus_start_basic_find_flesh();
|
brutus_start_basic_find_flesh();
|
||||||
}
|
}
|
||||||
else if ( isdefined( self.priority_item ) )
|
else if (isdefined(self.priority_item))
|
||||||
{
|
{
|
||||||
brutus_stop_basic_find_flesh();
|
brutus_stop_basic_find_flesh();
|
||||||
self.goalradius = 12;
|
self.goalradius = 12;
|
||||||
self.custom_goalradius_override = 12;
|
self.custom_goalradius_override = 12;
|
||||||
self.goal_pos = self get_interact_offset( self.priority_item, self.ai_state );
|
self.goal_pos = self get_interact_offset(self.priority_item, self.ai_state);
|
||||||
self setgoalpos( self.goal_pos );
|
self setgoalpos(self.goal_pos);
|
||||||
}
|
}
|
||||||
else if ( isdefined( player ) )
|
else if (isdefined(player))
|
||||||
{
|
{
|
||||||
self.favorite_enemy = player;
|
self.favorite_enemy = player;
|
||||||
self.goal_pos = self.favorite_enemy.origin;
|
self.goal_pos = self.favorite_enemy.origin;
|
||||||
@ -371,57 +371,57 @@ brutus_find_flesh()
|
|||||||
{
|
{
|
||||||
self.goal_pos = self.origin;
|
self.goal_pos = self.origin;
|
||||||
self.ai_state = "idle";
|
self.ai_state = "idle";
|
||||||
self setanimstatefromasd( "zm_idle" );
|
self setanimstatefromasd("zm_idle");
|
||||||
self setgoalpos( self.goal_pos );
|
self setgoalpos(self.goal_pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
wait 1;
|
wait 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
get_brutus_spawn_pos_val( brutus_pos )
|
get_brutus_spawn_pos_val(brutus_pos)
|
||||||
{
|
{
|
||||||
score = 0;
|
score = 0;
|
||||||
zone_name = brutus_pos.zone_name;
|
zone_name = brutus_pos.zone_name;
|
||||||
|
|
||||||
if ( !maps\mp\zombies\_zm_zonemgr::zone_is_enabled( zone_name ) )
|
if (!maps\mp\zombies\_zm_zonemgr::zone_is_enabled(zone_name))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
a_players_in_zone = get_players_in_zone( zone_name, 1 );
|
a_players_in_zone = get_players_in_zone(zone_name, 1);
|
||||||
|
|
||||||
if ( a_players_in_zone.size == 0 )
|
if (a_players_in_zone.size == 0)
|
||||||
return 0;
|
return 0;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
n_score_addition = 1;
|
n_score_addition = 1;
|
||||||
|
|
||||||
for ( i = 0; i < a_players_in_zone.size; i++ )
|
for (i = 0; i < a_players_in_zone.size; i++)
|
||||||
{
|
{
|
||||||
if ( findpath( brutus_pos.origin, a_players_in_zone[i].origin, self, 0, 0 ) )
|
if (findpath(brutus_pos.origin, a_players_in_zone[i].origin, self, 0, 0))
|
||||||
{
|
{
|
||||||
n_dist = distance2d( brutus_pos.origin, a_players_in_zone[i].origin );
|
n_dist = distance2d(brutus_pos.origin, a_players_in_zone[i].origin);
|
||||||
n_score_addition += linear_map( n_dist, 2000, 0, 0, level.brutus_players_in_zone_spawn_point_cap );
|
n_score_addition += linear_map(n_dist, 2000, 0, 0, level.brutus_players_in_zone_spawn_point_cap);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( n_score_addition > level.brutus_players_in_zone_spawn_point_cap )
|
if (n_score_addition > level.brutus_players_in_zone_spawn_point_cap)
|
||||||
n_score_addition = level.brutus_players_in_zone_spawn_point_cap;
|
n_score_addition = level.brutus_players_in_zone_spawn_point_cap;
|
||||||
|
|
||||||
score += n_score_addition;
|
score += n_score_addition;
|
||||||
}
|
}
|
||||||
|
|
||||||
interaction_types = getarraykeys( level.interaction_types );
|
interaction_types = getarraykeys(level.interaction_types);
|
||||||
interact_array = level.interaction_types;
|
interact_array = level.interaction_types;
|
||||||
|
|
||||||
for ( i = 0; i < interaction_types.size; i++ )
|
for (i = 0; i < interaction_types.size; i++)
|
||||||
{
|
{
|
||||||
int_type = interaction_types[i];
|
int_type = interaction_types[i];
|
||||||
interaction = interact_array[int_type];
|
interaction = interact_array[int_type];
|
||||||
interact_points = [[ interaction.get_func ]]( zone_name );
|
interact_points = [[ interaction.get_func ]](zone_name);
|
||||||
|
|
||||||
for ( j = 0; j < interact_points.size; j++ )
|
for (j = 0; j < interact_points.size; j++)
|
||||||
{
|
{
|
||||||
if ( interact_points[j] [[ interaction.validity_func ]]() )
|
if (interact_points[j] [[ interaction.validity_func ]]())
|
||||||
score += interaction.spawn_bias;
|
score += interaction.spawn_bias;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -429,12 +429,12 @@ get_brutus_spawn_pos_val( brutus_pos )
|
|||||||
return score;
|
return score;
|
||||||
}
|
}
|
||||||
|
|
||||||
brutus_spawn( starting_health, has_helmet, helmet_hits, explosive_dmg_taken, zone_name )
|
brutus_spawn(starting_health, has_helmet, helmet_hits, explosive_dmg_taken, zone_name)
|
||||||
{
|
{
|
||||||
level.num_pulls_since_brutus_spawn = 0;
|
level.num_pulls_since_brutus_spawn = 0;
|
||||||
self set_zombie_run_cycle( "run" );
|
self set_zombie_run_cycle("run");
|
||||||
|
|
||||||
if ( !isDefined( has_helmet ) )
|
if (!isDefined(has_helmet))
|
||||||
{
|
{
|
||||||
self.has_helmet = 1;
|
self.has_helmet = 1;
|
||||||
}
|
}
|
||||||
@ -443,7 +443,7 @@ brutus_spawn( starting_health, has_helmet, helmet_hits, explosive_dmg_taken, zon
|
|||||||
self.has_helmet = has_helmet;
|
self.has_helmet = has_helmet;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isDefined( helmet_hits ) )
|
if (!isDefined(helmet_hits))
|
||||||
{
|
{
|
||||||
self.helmet_hits = 0;
|
self.helmet_hits = 0;
|
||||||
}
|
}
|
||||||
@ -452,7 +452,7 @@ brutus_spawn( starting_health, has_helmet, helmet_hits, explosive_dmg_taken, zon
|
|||||||
self.helmet_hits = helmet_hits;
|
self.helmet_hits = helmet_hits;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isDefined( explosive_dmg_taken ) )
|
if (!isDefined(explosive_dmg_taken))
|
||||||
{
|
{
|
||||||
self.explosive_dmg_taken = 0;
|
self.explosive_dmg_taken = 0;
|
||||||
}
|
}
|
||||||
@ -461,7 +461,7 @@ brutus_spawn( starting_health, has_helmet, helmet_hits, explosive_dmg_taken, zon
|
|||||||
self.explosive_dmg_taken = explosive_dmg_taken;
|
self.explosive_dmg_taken = explosive_dmg_taken;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isDefined( starting_health ) )
|
if (!isDefined(starting_health))
|
||||||
{
|
{
|
||||||
self brutus_health_increases();
|
self brutus_health_increases();
|
||||||
self.maxhealth = level.brutus_health;
|
self.maxhealth = level.brutus_health;
|
||||||
@ -475,8 +475,8 @@ brutus_spawn( starting_health, has_helmet, helmet_hits, explosive_dmg_taken, zon
|
|||||||
|
|
||||||
self.explosive_dmg_req = level.brutus_expl_dmg_req;
|
self.explosive_dmg_req = level.brutus_expl_dmg_req;
|
||||||
self.no_damage_points = 1;
|
self.no_damage_points = 1;
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
level endon( "intermission" );
|
level endon("intermission");
|
||||||
self.animname = "brutus_zombie";
|
self.animname = "brutus_zombie";
|
||||||
self.audio_type = "brutus";
|
self.audio_type = "brutus";
|
||||||
self.has_legs = 1;
|
self.has_legs = 1;
|
||||||
@ -490,46 +490,46 @@ brutus_spawn( starting_health, has_helmet, helmet_hits, explosive_dmg_taken, zon
|
|||||||
self.custom_item_dmg = 1000;
|
self.custom_item_dmg = 1000;
|
||||||
self.brutus_lockdown_state = 0;
|
self.brutus_lockdown_state = 0;
|
||||||
recalc_zombie_array();
|
recalc_zombie_array();
|
||||||
self setphysparams( 20, 0, 60 );
|
self setphysparams(20, 0, 60);
|
||||||
self.zombie_init_done = 1;
|
self.zombie_init_done = 1;
|
||||||
self notify( "zombie_init_done" );
|
self notify("zombie_init_done");
|
||||||
self.allowpain = 0;
|
self.allowpain = 0;
|
||||||
self animmode( "normal" );
|
self animmode("normal");
|
||||||
self orientmode( "face enemy" );
|
self orientmode("face enemy");
|
||||||
self maps\mp\zombies\_zm_spawner::zombie_setup_attack_properties();
|
self maps\mp\zombies\_zm_spawner::zombie_setup_attack_properties();
|
||||||
self setfreecameralockonallowed( 0 );
|
self setfreecameralockonallowed(0);
|
||||||
level thread maps\mp\zombies\_zm_spawner::zombie_death_event( self );
|
level thread maps\mp\zombies\_zm_spawner::zombie_death_event(self);
|
||||||
self thread maps\mp\zombies\_zm_spawner::enemy_death_detection();
|
self thread maps\mp\zombies\_zm_spawner::enemy_death_detection();
|
||||||
|
|
||||||
if ( isDefined( zone_name ) && zone_name == "zone_golden_gate_bridge" )
|
if (isDefined(zone_name) && zone_name == "zone_golden_gate_bridge")
|
||||||
{
|
{
|
||||||
wait randomfloat( 1.5 );
|
wait randomfloat(1.5);
|
||||||
spawn_pos = get_random_brutus_spawn_pos( zone_name );
|
spawn_pos = get_random_brutus_spawn_pos(zone_name);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
spawn_pos = get_best_brutus_spawn_pos( zone_name );
|
spawn_pos = get_best_brutus_spawn_pos(zone_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isDefined( spawn_pos ) )
|
if (!isDefined(spawn_pos))
|
||||||
{
|
{
|
||||||
self delete();
|
self delete();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isDefined( spawn_pos.angles ) )
|
if (!isDefined(spawn_pos.angles))
|
||||||
{
|
{
|
||||||
spawn_pos.angles = ( 0, 0, 0 );
|
spawn_pos.angles = (0, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( level.brutus_do_prologue ) && level.brutus_do_prologue )
|
if (isDefined(level.brutus_do_prologue) && level.brutus_do_prologue)
|
||||||
{
|
{
|
||||||
self brutus_spawn_prologue( spawn_pos );
|
self brutus_spawn_prologue(spawn_pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !self.has_helmet )
|
if (!self.has_helmet)
|
||||||
{
|
{
|
||||||
self detach( "c_zom_cellbreaker_helmet" );
|
self detach("c_zom_cellbreaker_helmet");
|
||||||
}
|
}
|
||||||
|
|
||||||
level.brutus_count++;
|
level.brutus_count++;
|
||||||
@ -538,30 +538,30 @@ brutus_spawn( starting_health, has_helmet, helmet_hits, explosive_dmg_taken, zon
|
|||||||
self thread brutus_death();
|
self thread brutus_death();
|
||||||
self thread brutus_check_zone();
|
self thread brutus_check_zone();
|
||||||
self thread brutus_watch_enemy();
|
self thread brutus_watch_enemy();
|
||||||
self forceteleport( spawn_pos.origin, spawn_pos.angles );
|
self forceteleport(spawn_pos.origin, spawn_pos.angles);
|
||||||
self.cant_melee = 1;
|
self.cant_melee = 1;
|
||||||
self.not_interruptable = 1;
|
self.not_interruptable = 1;
|
||||||
self.actor_damage_func = ::brutus_damage_override;
|
self.actor_damage_func = ::brutus_damage_override;
|
||||||
self.non_attacker_func = ::brutus_non_attacker_damage_override;
|
self.non_attacker_func = ::brutus_non_attacker_damage_override;
|
||||||
self thread brutus_lockdown_client_effects( 0.5 );
|
self thread brutus_lockdown_client_effects(0.5);
|
||||||
playfx( level._effect[ "brutus_spawn" ], self.origin );
|
playfx(level._effect[ "brutus_spawn" ], self.origin);
|
||||||
playsoundatposition( "zmb_ai_brutus_spawn", self.origin );
|
playsoundatposition("zmb_ai_brutus_spawn", self.origin);
|
||||||
self animscripted( spawn_pos.origin, spawn_pos.angles, "zm_spawn" );
|
self animscripted(spawn_pos.origin, spawn_pos.angles, "zm_spawn");
|
||||||
self thread maps\mp\animscripts\zm_shared::donotetracks( "spawn_anim" );
|
self thread maps\mp\animscripts\zm_shared::donotetracks("spawn_anim");
|
||||||
self waittillmatch( "spawn_anim" );
|
self waittillmatch("spawn_anim");
|
||||||
self.not_interruptable = 0;
|
self.not_interruptable = 0;
|
||||||
self.cant_melee = 0;
|
self.cant_melee = 0;
|
||||||
self thread brutus_chest_flashlight();
|
self thread brutus_chest_flashlight();
|
||||||
self thread brutus_find_flesh();
|
self thread brutus_find_flesh();
|
||||||
self thread maps\mp\zombies\_zm_spawner::delayed_zombie_eye_glow();
|
self thread maps\mp\zombies\_zm_spawner::delayed_zombie_eye_glow();
|
||||||
level notify( "brutus_spawned", self, "spawn_complete" );
|
level notify("brutus_spawned", self, "spawn_complete");
|
||||||
logline1 = "INFO: _zm_ai_brutus.gsc brutus_spawn() completed its operation " + "\n";
|
logline1 = "INFO: _zm_ai_brutus.gsc brutus_spawn() completed its operation " + "\n";
|
||||||
logprint( logline1 );
|
logprint(logline1);
|
||||||
}
|
}
|
||||||
|
|
||||||
brutus_damage_override( inflictor, attacker, damage, flags, meansofdeath, weapon, vpoint, vdir, shitloc, poffsettime, boneindex )
|
brutus_damage_override(inflictor, attacker, damage, flags, meansofdeath, weapon, vpoint, vdir, shitloc, poffsettime, boneindex)
|
||||||
{
|
{
|
||||||
if ( isDefined( attacker ) && isalive( attacker ) && isplayer( attacker ) && level.zombie_vars[ attacker.team ][ "zombie_insta_kill" ] || isDefined( attacker.personal_instakill ) && attacker.personal_instakill )
|
if (isDefined(attacker) && isalive(attacker) && isplayer(attacker) && level.zombie_vars[ attacker.team ][ "zombie_insta_kill" ] || isDefined(attacker.personal_instakill) && attacker.personal_instakill)
|
||||||
{
|
{
|
||||||
n_brutus_damage_percent = 1;
|
n_brutus_damage_percent = 1;
|
||||||
n_brutus_headshot_modifier = 2;
|
n_brutus_headshot_modifier = 2;
|
||||||
@ -572,28 +572,28 @@ brutus_damage_override( inflictor, attacker, damage, flags, meansofdeath, weapon
|
|||||||
n_brutus_headshot_modifier = 1;
|
n_brutus_headshot_modifier = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( weapon ) && is_weapon_shotgun( weapon ) )
|
if (isDefined(weapon) && is_weapon_shotgun(weapon))
|
||||||
{
|
{
|
||||||
n_brutus_damage_percent *= level.brutus_shotgun_damage_mod;
|
n_brutus_damage_percent *= level.brutus_shotgun_damage_mod;
|
||||||
n_brutus_headshot_modifier *= level.brutus_shotgun_damage_mod;
|
n_brutus_headshot_modifier *= level.brutus_shotgun_damage_mod;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( weapon ) && weapon == "bouncing_tomahawk_zm" && isDefined( inflictor ) )
|
if (isDefined(weapon) && weapon == "bouncing_tomahawk_zm" && isDefined(inflictor))
|
||||||
{
|
{
|
||||||
self playsound( "wpn_tomahawk_imp_zombie" );
|
self playsound("wpn_tomahawk_imp_zombie");
|
||||||
|
|
||||||
if ( self.has_helmet )
|
if (self.has_helmet)
|
||||||
{
|
{
|
||||||
if ( damage == 1 )
|
if (damage == 1)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( inflictor.n_cookedtime ) && inflictor.n_cookedtime >= 2000 )
|
if (isDefined(inflictor.n_cookedtime) && inflictor.n_cookedtime >= 2000)
|
||||||
{
|
{
|
||||||
self.helmet_hits = level.brutus_helmet_shots;
|
self.helmet_hits = level.brutus_helmet_shots;
|
||||||
}
|
}
|
||||||
else if ( isDefined( inflictor.n_grenade_charge_power ) && inflictor.n_grenade_charge_power >= 2 )
|
else if (isDefined(inflictor.n_grenade_charge_power) && inflictor.n_grenade_charge_power >= 2)
|
||||||
{
|
{
|
||||||
self.helmet_hits = level.brutus_helmet_shots;
|
self.helmet_hits = level.brutus_helmet_shots;
|
||||||
}
|
}
|
||||||
@ -602,25 +602,25 @@ brutus_damage_override( inflictor, attacker, damage, flags, meansofdeath, weapon
|
|||||||
self.helmet_hits++;
|
self.helmet_hits++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self.helmet_hits >= level.brutus_helmet_shots )
|
if (self.helmet_hits >= level.brutus_helmet_shots)
|
||||||
{
|
{
|
||||||
self thread brutus_remove_helmet( vdir );
|
self thread brutus_remove_helmet(vdir);
|
||||||
|
|
||||||
if ( level.brutus_in_grief )
|
if (level.brutus_in_grief)
|
||||||
{
|
{
|
||||||
player_points = level.brutus_points_for_helmet;
|
player_points = level.brutus_points_for_helmet;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
multiplier = maps\mp\zombies\_zm_score::get_points_multiplier( self );
|
multiplier = maps\mp\zombies\_zm_score::get_points_multiplier(self);
|
||||||
player_points = multiplier * round_up_score( level.brutus_points_for_helmet, 5 );
|
player_points = multiplier * round_up_score(level.brutus_points_for_helmet, 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( attacker ) && isplayer( attacker ) )
|
if (isDefined(attacker) && isplayer(attacker))
|
||||||
{
|
{
|
||||||
attacker add_to_player_score( player_points );
|
attacker add_to_player_score(player_points);
|
||||||
attacker.pers[ "score" ] = attacker.score;
|
attacker.pers[ "score" ] = attacker.score;
|
||||||
level notify( "brutus_helmet_removed", attacker );
|
level notify("brutus_helmet_removed", attacker);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -632,27 +632,27 @@ brutus_damage_override( inflictor, attacker, damage, flags, meansofdeath, weapon
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ( meansofdeath == "MOD_MELEE" || meansofdeath == "MOD_IMPACT" ) && isDefined( meansofdeath ) )
|
if ((meansofdeath == "MOD_MELEE" || meansofdeath == "MOD_IMPACT") && isDefined(meansofdeath))
|
||||||
{
|
{
|
||||||
if ( weapon == "alcatraz_shield_zm" )
|
if (weapon == "alcatraz_shield_zm")
|
||||||
{
|
{
|
||||||
shield_damage = level.zombie_vars[ "riotshield_fling_damage_shield" ];
|
shield_damage = level.zombie_vars[ "riotshield_fling_damage_shield" ];
|
||||||
inflictor maps\mp\zombies\_zm_weap_riotshield_prison::player_damage_shield( shield_damage, 0 );
|
inflictor maps\mp\zombies\_zm_weap_riotshield_prison::player_damage_shield(shield_damage, 0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( level.zombiemode_using_afterlife ) && level.zombiemode_using_afterlife && weapon == "lightning_hands_zm" )
|
if (isDefined(level.zombiemode_using_afterlife) && level.zombiemode_using_afterlife && weapon == "lightning_hands_zm")
|
||||||
{
|
{
|
||||||
self thread brutus_afterlife_teleport();
|
self thread brutus_afterlife_teleport();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( is_explosive_damage( meansofdeath ) && weapon != "raygun_mark2_zm" && weapon != "raygun_mark2_upgraded_zm" )
|
if (is_explosive_damage(meansofdeath) && weapon != "raygun_mark2_zm" && weapon != "raygun_mark2_upgraded_zm")
|
||||||
{
|
{
|
||||||
self.explosive_dmg_taken += damage;
|
self.explosive_dmg_taken += damage;
|
||||||
|
|
||||||
if ( !self.has_helmet )
|
if (!self.has_helmet)
|
||||||
{
|
{
|
||||||
scaler = n_brutus_headshot_modifier;
|
scaler = n_brutus_headshot_modifier;
|
||||||
}
|
}
|
||||||
@ -661,33 +661,33 @@ brutus_damage_override( inflictor, attacker, damage, flags, meansofdeath, weapon
|
|||||||
scaler = level.brutus_damage_percent;
|
scaler = level.brutus_damage_percent;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self.explosive_dmg_taken >= self.explosive_dmg_req && isDefined( self.has_helmet ) && self.has_helmet )
|
if (self.explosive_dmg_taken >= self.explosive_dmg_req && isDefined(self.has_helmet) && self.has_helmet)
|
||||||
{
|
{
|
||||||
self thread brutus_remove_helmet( vectorScale( ( 0, 1, 0 ), 10 ) );
|
self thread brutus_remove_helmet(vectorScale((0, 1, 0), 10));
|
||||||
|
|
||||||
if ( level.brutus_in_grief )
|
if (level.brutus_in_grief)
|
||||||
{
|
{
|
||||||
player_points = level.brutus_points_for_helmet;
|
player_points = level.brutus_points_for_helmet;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
multiplier = maps\mp\zombies\_zm_score::get_points_multiplier( self );
|
multiplier = maps\mp\zombies\_zm_score::get_points_multiplier(self);
|
||||||
player_points = multiplier * round_up_score( level.brutus_points_for_helmet, 5 );
|
player_points = multiplier * round_up_score(level.brutus_points_for_helmet, 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
attacker add_to_player_score( player_points );
|
attacker add_to_player_score(player_points);
|
||||||
attacker.pers[ "score" ] = inflictor.score;
|
attacker.pers[ "score" ] = inflictor.score;
|
||||||
}
|
}
|
||||||
|
|
||||||
return damage * scaler;
|
return damage * scaler;
|
||||||
}
|
}
|
||||||
else if ( shitloc != "head" && shitloc != "helmet" )
|
else if (shitloc != "head" && shitloc != "helmet")
|
||||||
{
|
{
|
||||||
return damage * n_brutus_damage_percent;
|
return damage * n_brutus_damage_percent;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return int( self scale_helmet_damage( attacker, damage, n_brutus_headshot_modifier, n_brutus_damage_percent, vdir ) );
|
return int(self scale_helmet_damage(attacker, damage, n_brutus_headshot_modifier, n_brutus_damage_percent, vdir));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -698,28 +698,28 @@ brutus_health_increases()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( level.round_number > level.brutus_last_spawn_round )
|
if (level.round_number > level.brutus_last_spawn_round)
|
||||||
{
|
{
|
||||||
players = getplayers();
|
players = getplayers();
|
||||||
n_player_modifier = 1;
|
n_player_modifier = 1;
|
||||||
|
|
||||||
if ( players.size > 1 )
|
if (players.size > 1)
|
||||||
{
|
{
|
||||||
n_player_modifier = players.size * 0.75;
|
n_player_modifier = players.size * 0.75;
|
||||||
}
|
}
|
||||||
|
|
||||||
level.brutus_round_count++;
|
level.brutus_round_count++;
|
||||||
level.brutus_health = int( level.brutus_health_increase * n_player_modifier * level.brutus_round_count );
|
level.brutus_health = int(level.brutus_health_increase * n_player_modifier * level.brutus_round_count);
|
||||||
level.brutus_expl_dmg_req = int( level.brutus_explosive_damage_increase * n_player_modifier * level.brutus_round_count );
|
level.brutus_expl_dmg_req = int(level.brutus_explosive_damage_increase * n_player_modifier * level.brutus_round_count);
|
||||||
|
|
||||||
if ( level.brutus_health >= ( 5000 * n_player_modifier ) )
|
if (level.brutus_health >= (5000 * n_player_modifier))
|
||||||
{
|
{
|
||||||
level.brutus_health = int( 5000 * n_player_modifier );
|
level.brutus_health = int(5000 * n_player_modifier);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( level.brutus_expl_dmg_req >= ( 4500 * n_player_modifier ) )
|
if (level.brutus_expl_dmg_req >= (4500 * n_player_modifier))
|
||||||
{
|
{
|
||||||
level.brutus_expl_dmg_req = int( 4500 * n_player_modifier );
|
level.brutus_expl_dmg_req = int(4500 * n_player_modifier);
|
||||||
}
|
}
|
||||||
|
|
||||||
level.brutus_last_spawn_round = level.round_number;
|
level.brutus_last_spawn_round = level.round_number;
|
||||||
|
@ -14,7 +14,7 @@ enable_dog_rounds()
|
|||||||
{
|
{
|
||||||
level.dog_rounds_enabled = 1;
|
level.dog_rounds_enabled = 1;
|
||||||
|
|
||||||
if ( !isdefined( level.dog_round_track_override ) )
|
if (!isdefined(level.dog_round_track_override))
|
||||||
level.dog_round_track_override = ::dog_round_tracker;
|
level.dog_round_track_override = ::dog_round_tracker;
|
||||||
|
|
||||||
level thread [[ level.dog_round_track_override ]]();
|
level thread [[ level.dog_round_track_override ]]();
|
||||||
@ -23,7 +23,7 @@ enable_dog_rounds()
|
|||||||
dog_round_tracker()
|
dog_round_tracker()
|
||||||
{
|
{
|
||||||
level.dog_round_count = 1;
|
level.dog_round_count = 1;
|
||||||
level.next_dog_round = level.round_number + randomintrange( 4, 6 );
|
level.next_dog_round = level.round_number + randomintrange(4, 6);
|
||||||
old_spawn_func = level.round_spawn_func;
|
old_spawn_func = level.round_spawn_func;
|
||||||
old_wait_func = level.round_wait_func;
|
old_wait_func = level.round_wait_func;
|
||||||
|
|
||||||
@ -36,11 +36,11 @@ dog_round_tracker()
|
|||||||
level.prev_dog_round_amount = 5;
|
level.prev_dog_round_amount = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
while ( true )
|
while (true)
|
||||||
{
|
{
|
||||||
level waittill( "between_round_over" );
|
level waittill("between_round_over");
|
||||||
|
|
||||||
if ( level.round_number == level.next_dog_round )
|
if (level.round_number == level.next_dog_round)
|
||||||
{
|
{
|
||||||
level.music_round_override = 1;
|
level.music_round_override = 1;
|
||||||
old_spawn_func = level.round_spawn_func;
|
old_spawn_func = level.round_spawn_func;
|
||||||
@ -48,9 +48,9 @@ dog_round_tracker()
|
|||||||
dog_round_start();
|
dog_round_start();
|
||||||
level.round_spawn_func = ::dog_round_spawning;
|
level.round_spawn_func = ::dog_round_spawning;
|
||||||
|
|
||||||
if ( !isdefined( level.prev_dog_round_amount ) )
|
if (!isdefined(level.prev_dog_round_amount))
|
||||||
{
|
{
|
||||||
level.prev_dog_round_amount = randomintrange( 4, 6 );
|
level.prev_dog_round_amount = randomintrange(4, 6);
|
||||||
level.next_dog_round = level.round_number + level.prev_dog_round_amount;
|
level.next_dog_round = level.round_number + level.prev_dog_round_amount;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -67,7 +67,7 @@ dog_round_tracker()
|
|||||||
level.prev_dog_round_amount = undefined;
|
level.prev_dog_round_amount = undefined;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( flag( "dog_round" ) )
|
else if (flag("dog_round"))
|
||||||
{
|
{
|
||||||
dog_round_stop();
|
dog_round_stop();
|
||||||
level.round_spawn_func = old_spawn_func;
|
level.round_spawn_func = old_spawn_func;
|
||||||
|
@ -16,19 +16,19 @@
|
|||||||
|
|
||||||
ghost_zone_spawning_think()
|
ghost_zone_spawning_think()
|
||||||
{
|
{
|
||||||
level endon( "intermission" );
|
level endon("intermission");
|
||||||
|
|
||||||
if ( isdefined( level.intermission ) && level.intermission )
|
if (isdefined(level.intermission) && level.intermission)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( !isdefined( level.female_ghost_spawner ) )
|
if (!isdefined(level.female_ghost_spawner))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
while ( true )
|
while (true)
|
||||||
{
|
{
|
||||||
if ( level.zombie_ghost_count >= level.zombie_ai_limit_ghost )
|
if (level.zombie_ghost_count >= level.zombie_ai_limit_ghost)
|
||||||
{
|
{
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
continue;
|
continue;
|
||||||
@ -37,16 +37,16 @@ ghost_zone_spawning_think()
|
|||||||
valid_player_count = 0;
|
valid_player_count = 0;
|
||||||
valid_players = [];
|
valid_players = [];
|
||||||
|
|
||||||
while ( valid_player_count < 1 )
|
while (valid_player_count < 1)
|
||||||
{
|
{
|
||||||
players = getplayers();
|
players = getplayers();
|
||||||
valid_player_count = 0;
|
valid_player_count = 0;
|
||||||
|
|
||||||
foreach ( player in players )
|
foreach (player in players)
|
||||||
{
|
{
|
||||||
if ( is_player_valid( player ) && !is_player_fully_claimed( player ) )
|
if (is_player_valid(player) && !is_player_fully_claimed(player))
|
||||||
{
|
{
|
||||||
if ( isdefined( player.is_in_ghost_zone ) && player.is_in_ghost_zone )
|
if (isdefined(player.is_in_ghost_zone) && player.is_in_ghost_zone)
|
||||||
{
|
{
|
||||||
valid_player_count++;
|
valid_player_count++;
|
||||||
valid_players[valid_players.size] = player;
|
valid_players[valid_players.size] = player;
|
||||||
@ -57,10 +57,10 @@ ghost_zone_spawning_think()
|
|||||||
wait 0.1;
|
wait 0.1;
|
||||||
}
|
}
|
||||||
|
|
||||||
valid_players = array_randomize( valid_players );
|
valid_players = array_randomize(valid_players);
|
||||||
spawn_point = get_best_spawn_point( valid_players[0] );
|
spawn_point = get_best_spawn_point(valid_players[0]);
|
||||||
|
|
||||||
if ( !isdefined( spawn_point ) )
|
if (!isdefined(spawn_point))
|
||||||
{
|
{
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
continue;
|
continue;
|
||||||
@ -68,16 +68,16 @@ ghost_zone_spawning_think()
|
|||||||
|
|
||||||
ghost_ai = undefined;
|
ghost_ai = undefined;
|
||||||
|
|
||||||
if ( isdefined( level.female_ghost_spawner ) )
|
if (isdefined(level.female_ghost_spawner))
|
||||||
ghost_ai = spawn_zombie( level.female_ghost_spawner, level.female_ghost_spawner.targetname, spawn_point );
|
ghost_ai = spawn_zombie(level.female_ghost_spawner, level.female_ghost_spawner.targetname, spawn_point);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( ghost_ai ) )
|
if (isdefined(ghost_ai))
|
||||||
{
|
{
|
||||||
ghost_ai setclientfield( "ghost_fx", 3 );
|
ghost_ai setclientfield("ghost_fx", 3);
|
||||||
ghost_ai.spawn_point = spawn_point;
|
ghost_ai.spawn_point = spawn_point;
|
||||||
ghost_ai.is_ghost = 1;
|
ghost_ai.is_ghost = 1;
|
||||||
ghost_ai.is_spawned_in_ghost_zone = 1;
|
ghost_ai.is_spawned_in_ghost_zone = 1;
|
||||||
@ -95,13 +95,13 @@ ghost_zone_spawning_think()
|
|||||||
|
|
||||||
should_last_ghost_drop_powerup()
|
should_last_ghost_drop_powerup()
|
||||||
{
|
{
|
||||||
if ( flag( "time_bomb_restore_active" ) )
|
if (flag("time_bomb_restore_active"))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if ( !isdefined( level.ghost_round_last_ghost_origin ) )
|
if (!isdefined(level.ghost_round_last_ghost_origin))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if ( !is_true( level.ghost_round_no_damage ) )
|
if (!is_true(level.ghost_round_no_damage))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
leaper_round_tracker()
|
leaper_round_tracker()
|
||||||
{
|
{
|
||||||
level.leaper_round_count = 1;
|
level.leaper_round_count = 1;
|
||||||
level.next_leaper_round = level.round_number + randomintrange( 4, 6 );
|
level.next_leaper_round = level.round_number + randomintrange(4, 6);
|
||||||
old_spawn_func = level.round_spawn_func;
|
old_spawn_func = level.round_spawn_func;
|
||||||
old_wait_func = level.round_wait_func;
|
old_wait_func = level.round_wait_func;
|
||||||
|
|
||||||
@ -29,11 +29,11 @@ leaper_round_tracker()
|
|||||||
level.prev_leaper_round_amount = 5;
|
level.prev_leaper_round_amount = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
while ( true )
|
while (true)
|
||||||
{
|
{
|
||||||
level waittill( "between_round_over" );
|
level waittill("between_round_over");
|
||||||
|
|
||||||
if ( level.round_number == level.next_leaper_round )
|
if (level.round_number == level.next_leaper_round)
|
||||||
{
|
{
|
||||||
level.music_round_override = 1;
|
level.music_round_override = 1;
|
||||||
old_spawn_func = level.round_spawn_func;
|
old_spawn_func = level.round_spawn_func;
|
||||||
@ -42,9 +42,9 @@ leaper_round_tracker()
|
|||||||
level.round_spawn_func = ::leaper_round_spawning;
|
level.round_spawn_func = ::leaper_round_spawning;
|
||||||
level.round_wait_func = ::leaper_round_wait;
|
level.round_wait_func = ::leaper_round_wait;
|
||||||
|
|
||||||
if ( !isdefined( level.prev_leaper_round_amount ) )
|
if (!isdefined(level.prev_leaper_round_amount))
|
||||||
{
|
{
|
||||||
level.prev_leaper_round_amount = randomintrange( 4, 6 );
|
level.prev_leaper_round_amount = randomintrange(4, 6);
|
||||||
level.next_leaper_round = level.round_number + level.prev_leaper_round_amount;
|
level.next_leaper_round = level.round_number + level.prev_leaper_round_amount;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -61,7 +61,7 @@ leaper_round_tracker()
|
|||||||
level.prev_leaper_round_amount = undefined;
|
level.prev_leaper_round_amount = undefined;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( flag( "leaper_round" ) )
|
else if (flag("leaper_round"))
|
||||||
{
|
{
|
||||||
leaper_round_stop();
|
leaper_round_stop();
|
||||||
level.round_spawn_func = old_spawn_func;
|
level.round_spawn_func = old_spawn_func;
|
||||||
@ -77,62 +77,62 @@ leaper_round_accuracy_tracking()
|
|||||||
players = getplayers();
|
players = getplayers();
|
||||||
level.leaper_round_accurate_players = 0;
|
level.leaper_round_accurate_players = 0;
|
||||||
|
|
||||||
for ( i = 0; i < players.size; i++ )
|
for (i = 0; i < players.size; i++)
|
||||||
{
|
{
|
||||||
players[i].total_shots_start_leaper_round = players[i] maps\mp\gametypes_zm\_globallogic_score::getpersstat( "total_shots" );
|
players[i].total_shots_start_leaper_round = players[i] maps\mp\gametypes_zm\_globallogic_score::getpersstat("total_shots");
|
||||||
players[i].total_hits_start_leaper_round = players[i] maps\mp\gametypes_zm\_globallogic_score::getpersstat( "hits" );
|
players[i].total_hits_start_leaper_round = players[i] maps\mp\gametypes_zm\_globallogic_score::getpersstat("hits");
|
||||||
}
|
}
|
||||||
|
|
||||||
level waittill( "last_leaper_down" );
|
level waittill("last_leaper_down");
|
||||||
|
|
||||||
players = getplayers();
|
players = getplayers();
|
||||||
|
|
||||||
for ( i = 0; i < players.size; i++ )
|
for (i = 0; i < players.size; i++)
|
||||||
{
|
{
|
||||||
total_shots_end_leaper_round = players[i] maps\mp\gametypes_zm\_globallogic_score::getpersstat( "total_shots" ) - players[i].total_shots_start_leaper_round;
|
total_shots_end_leaper_round = players[i] maps\mp\gametypes_zm\_globallogic_score::getpersstat("total_shots") - players[i].total_shots_start_leaper_round;
|
||||||
total_hits_end_leaper_round = players[i] maps\mp\gametypes_zm\_globallogic_score::getpersstat( "hits" ) - players[i].total_hits_start_leaper_round;
|
total_hits_end_leaper_round = players[i] maps\mp\gametypes_zm\_globallogic_score::getpersstat("hits") - players[i].total_hits_start_leaper_round;
|
||||||
|
|
||||||
if ( total_shots_end_leaper_round == total_hits_end_leaper_round )
|
if (total_shots_end_leaper_round == total_hits_end_leaper_round)
|
||||||
level.leaper_round_accurate_players++;
|
level.leaper_round_accurate_players++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( level.leaper_round_accurate_players == players.size )
|
if (level.leaper_round_accurate_players == players.size)
|
||||||
{
|
{
|
||||||
if ( isdefined( level.last_leaper_origin ) )
|
if (isdefined(level.last_leaper_origin))
|
||||||
{
|
{
|
||||||
trace = groundtrace( level.last_leaper_origin + vectorscale( ( 0, 0, 1 ), 10.0 ), level.last_leaper_origin + vectorscale( ( 0, 0, -1 ), 150.0 ), 0, undefined, 1 );
|
trace = groundtrace(level.last_leaper_origin + vectorscale((0, 0, 1), 10.0), level.last_leaper_origin + vectorscale((0, 0, -1), 150.0), 0, undefined, 1);
|
||||||
power_up_origin = trace["position"];
|
power_up_origin = trace["position"];
|
||||||
level thread maps\mp\zombies\_zm_powerups::specific_powerup_drop( "free_perk", power_up_origin + vectorscale( ( 1, 1, 0 ), 30.0 ) );
|
level thread maps\mp\zombies\_zm_powerups::specific_powerup_drop("free_perk", power_up_origin + vectorscale((1, 1, 0), 30.0));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
leaper_death()
|
leaper_death()
|
||||||
{
|
{
|
||||||
self endon( "leaper_cleanup" );
|
self endon("leaper_cleanup");
|
||||||
|
|
||||||
self waittill( "death" );
|
self waittill("death");
|
||||||
|
|
||||||
self leaper_stop_trail_fx();
|
self leaper_stop_trail_fx();
|
||||||
self playsound( "zmb_vocals_leaper_death" );
|
self playsound("zmb_vocals_leaper_death");
|
||||||
playfx( level._effect["leaper_death"], self.origin );
|
playfx(level._effect["leaper_death"], self.origin);
|
||||||
|
|
||||||
if ( get_current_zombie_count() == 0 && level.zombie_total == 0 )
|
if (get_current_zombie_count() == 0 && level.zombie_total == 0)
|
||||||
{
|
{
|
||||||
level.last_leaper_origin = self.origin;
|
level.last_leaper_origin = self.origin;
|
||||||
level notify( "last_leaper_down" );
|
level notify("last_leaper_down");
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isplayer( self.attacker ) )
|
if (isplayer(self.attacker))
|
||||||
{
|
{
|
||||||
self.deathpoints_already_given = 1;
|
self.deathpoints_already_given = 1;
|
||||||
|
|
||||||
event = "death";
|
event = "death";
|
||||||
|
|
||||||
if ( issubstr( self.damageweapon, "knife_ballistic_" ) )
|
if (issubstr(self.damageweapon, "knife_ballistic_"))
|
||||||
event = "ballistic_knife_death";
|
event = "ballistic_knife_death";
|
||||||
|
|
||||||
self.attacker thread do_player_general_vox( "general", "leaper_killed", 20, 20 );
|
self.attacker thread do_player_general_vox("general", "leaper_killed", 20, 20);
|
||||||
self.attacker maps\mp\zombies\_zm_score::player_add_points( event, self.damagemod, self.damagelocation, 1 );
|
self.attacker maps\mp\zombies\_zm_score::player_add_points(event, self.damagemod, self.damagelocation, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -39,13 +39,13 @@ mechz_set_starting_health()
|
|||||||
self.nuke_damage_func = ::mechz_nuke_override;
|
self.nuke_damage_func = ::mechz_nuke_override;
|
||||||
}
|
}
|
||||||
|
|
||||||
mechz_damage_override( inflictor, attacker, damage, flags, meansofdeath, weapon, vpoint, vdir, shitloc, poffsettime, boneindex )
|
mechz_damage_override(inflictor, attacker, damage, flags, meansofdeath, weapon, vpoint, vdir, shitloc, poffsettime, boneindex)
|
||||||
{
|
{
|
||||||
num_tiers = level.mechz_armor_info.size + 1;
|
num_tiers = level.mechz_armor_info.size + 1;
|
||||||
old_health_tier = int( num_tiers * self.health / self.maxhealth );
|
old_health_tier = int(num_tiers * self.health / self.maxhealth);
|
||||||
bonename = getpartname( "c_zom_mech_body", boneindex );
|
bonename = getpartname("c_zom_mech_body", boneindex);
|
||||||
|
|
||||||
if ( isdefined( attacker ) && isalive( attacker ) && isplayer( attacker ) && ( level.zombie_vars[attacker.team]["zombie_insta_kill"] || isdefined( attacker.personal_instakill ) && attacker.personal_instakill ) )
|
if (isdefined(attacker) && isalive(attacker) && isplayer(attacker) && (level.zombie_vars[attacker.team]["zombie_insta_kill"] || isdefined(attacker.personal_instakill) && attacker.personal_instakill))
|
||||||
{
|
{
|
||||||
n_mechz_damage_percent = 1.0;
|
n_mechz_damage_percent = 1.0;
|
||||||
n_mechz_headshot_modifier = 2.0;
|
n_mechz_headshot_modifier = 2.0;
|
||||||
@ -56,67 +56,67 @@ mechz_damage_override( inflictor, attacker, damage, flags, meansofdeath, weapon,
|
|||||||
n_mechz_headshot_modifier = 1.0;
|
n_mechz_headshot_modifier = 1.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( weapon ) && is_weapon_shotgun( weapon ) )
|
if (isdefined(weapon) && is_weapon_shotgun(weapon))
|
||||||
{
|
{
|
||||||
n_mechz_damage_percent *= level.mechz_shotgun_damage_mod;
|
n_mechz_damage_percent *= level.mechz_shotgun_damage_mod;
|
||||||
n_mechz_headshot_modifier *= level.mechz_shotgun_damage_mod;
|
n_mechz_headshot_modifier *= level.mechz_shotgun_damage_mod;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( damage <= 10 )
|
if (damage <= 10)
|
||||||
n_mechz_damage_percent = 1.0;
|
n_mechz_damage_percent = 1.0;
|
||||||
|
|
||||||
if ( ( is_explosive_damage( meansofdeath ) && weapon != "c96_upgraded_zm" && weapon != "raygun_mark2_zm" && weapon != "raygun_mark2_upgraded_zm" ) || issubstr( weapon, "staff" ) )
|
if ((is_explosive_damage(meansofdeath) && weapon != "c96_upgraded_zm" && weapon != "raygun_mark2_zm" && weapon != "raygun_mark2_upgraded_zm") || issubstr(weapon, "staff"))
|
||||||
{
|
{
|
||||||
if ( n_mechz_damage_percent < 0.5 )
|
if (n_mechz_damage_percent < 0.5)
|
||||||
n_mechz_damage_percent = 0.5;
|
n_mechz_damage_percent = 0.5;
|
||||||
|
|
||||||
if ( !( isdefined( self.has_helmet ) && self.has_helmet ) && issubstr( weapon, "staff" ) && n_mechz_damage_percent < 1.0 )
|
if (!(isdefined(self.has_helmet) && self.has_helmet) && issubstr(weapon, "staff") && n_mechz_damage_percent < 1.0)
|
||||||
n_mechz_damage_percent = 1.0;
|
n_mechz_damage_percent = 1.0;
|
||||||
|
|
||||||
final_damage = damage * n_mechz_damage_percent;
|
final_damage = damage * n_mechz_damage_percent;
|
||||||
|
|
||||||
if ( !isdefined( self.explosive_dmg_taken ) )
|
if (!isdefined(self.explosive_dmg_taken))
|
||||||
self.explosive_dmg_taken = 0;
|
self.explosive_dmg_taken = 0;
|
||||||
|
|
||||||
self.explosive_dmg_taken += final_damage;
|
self.explosive_dmg_taken += final_damage;
|
||||||
self.helmet_dmg += final_damage;
|
self.helmet_dmg += final_damage;
|
||||||
|
|
||||||
if ( isdefined( self.explosive_dmg_taken_on_grab_start ) )
|
if (isdefined(self.explosive_dmg_taken_on_grab_start))
|
||||||
{
|
{
|
||||||
if ( isdefined( self.e_grabbed ) && self.explosive_dmg_taken - self.explosive_dmg_taken_on_grab_start > level.mechz_explosive_dmg_to_cancel_claw )
|
if (isdefined(self.e_grabbed) && self.explosive_dmg_taken - self.explosive_dmg_taken_on_grab_start > level.mechz_explosive_dmg_to_cancel_claw)
|
||||||
{
|
{
|
||||||
if ( isdefined( self.has_helmet ) && self.has_helmet && self.helmet_dmg < self.helmet_dmg_for_removal || !( isdefined( self.has_helmet ) && self.has_helmet ) )
|
if (isdefined(self.has_helmet) && self.has_helmet && self.helmet_dmg < self.helmet_dmg_for_removal || !(isdefined(self.has_helmet) && self.has_helmet))
|
||||||
self thread mechz_claw_shot_pain_reaction();
|
self thread mechz_claw_shot_pain_reaction();
|
||||||
|
|
||||||
self thread ent_released_from_claw_grab_achievement( attacker, self.e_grabbed );
|
self thread ent_released_from_claw_grab_achievement(attacker, self.e_grabbed);
|
||||||
self thread mechz_claw_release();
|
self thread mechz_claw_release();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( shitloc != "head" && shitloc != "helmet" )
|
else if (shitloc != "head" && shitloc != "helmet")
|
||||||
{
|
{
|
||||||
if ( bonename == "tag_powersupply" )
|
if (bonename == "tag_powersupply")
|
||||||
{
|
{
|
||||||
final_damage = damage * n_mechz_damage_percent;
|
final_damage = damage * n_mechz_damage_percent;
|
||||||
|
|
||||||
if ( !( isdefined( self.powerplant_covered ) && self.powerplant_covered ) )
|
if (!(isdefined(self.powerplant_covered) && self.powerplant_covered))
|
||||||
self.powerplant_dmg += final_damage;
|
self.powerplant_dmg += final_damage;
|
||||||
else
|
else
|
||||||
self.powerplant_cover_dmg += final_damage;
|
self.powerplant_cover_dmg += final_damage;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( self.e_grabbed ) && ( shitloc == "left_hand" || shitloc == "left_arm_lower" || shitloc == "left_arm_upper" ) )
|
if (isdefined(self.e_grabbed) && (shitloc == "left_hand" || shitloc == "left_arm_lower" || shitloc == "left_arm_upper"))
|
||||||
{
|
{
|
||||||
if ( isdefined( self.e_grabbed ) )
|
if (isdefined(self.e_grabbed))
|
||||||
self thread mechz_claw_shot_pain_reaction();
|
self thread mechz_claw_shot_pain_reaction();
|
||||||
|
|
||||||
self thread ent_released_from_claw_grab_achievement( attacker, self.e_grabbed );
|
self thread ent_released_from_claw_grab_achievement(attacker, self.e_grabbed);
|
||||||
self thread mechz_claw_release( 1 );
|
self thread mechz_claw_release(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
final_damage = damage * n_mechz_damage_percent;
|
final_damage = damage * n_mechz_damage_percent;
|
||||||
}
|
}
|
||||||
else if ( !( isdefined( self.has_helmet ) && self.has_helmet ) )
|
else if (!(isdefined(self.has_helmet) && self.has_helmet))
|
||||||
final_damage = damage * n_mechz_headshot_modifier;
|
final_damage = damage * n_mechz_headshot_modifier;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -124,77 +124,77 @@ mechz_damage_override( inflictor, attacker, damage, flags, meansofdeath, weapon,
|
|||||||
self.helmet_dmg += final_damage;
|
self.helmet_dmg += final_damage;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isdefined( weapon ) || weapon == "none" )
|
if (!isdefined(weapon) || weapon == "none")
|
||||||
{
|
{
|
||||||
if ( !isplayer( attacker ) )
|
if (!isplayer(attacker))
|
||||||
final_damage = 0;
|
final_damage = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
new_health_tier = int( num_tiers * ( self.health - final_damage ) / self.maxhealth );
|
new_health_tier = int(num_tiers * (self.health - final_damage) / self.maxhealth);
|
||||||
|
|
||||||
if ( old_health_tier > new_health_tier )
|
if (old_health_tier > new_health_tier)
|
||||||
{
|
{
|
||||||
while ( old_health_tier > new_health_tier )
|
while (old_health_tier > new_health_tier)
|
||||||
{
|
{
|
||||||
if ( old_health_tier < num_tiers )
|
if (old_health_tier < num_tiers)
|
||||||
self mechz_launch_armor_piece();
|
self mechz_launch_armor_piece();
|
||||||
|
|
||||||
old_health_tier--;
|
old_health_tier--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( self.has_helmet ) && self.has_helmet && self.helmet_dmg >= self.helmet_dmg_for_removal )
|
if (isdefined(self.has_helmet) && self.has_helmet && self.helmet_dmg >= self.helmet_dmg_for_removal)
|
||||||
{
|
{
|
||||||
self.has_helmet = 0;
|
self.has_helmet = 0;
|
||||||
self detach( "c_zom_mech_faceplate", "J_Helmet" );
|
self detach("c_zom_mech_faceplate", "J_Helmet");
|
||||||
|
|
||||||
if ( sndmechzisnetworksafe( "destruction" ) )
|
if (sndmechzisnetworksafe("destruction"))
|
||||||
self playsound( "zmb_ai_mechz_destruction" );
|
self playsound("zmb_ai_mechz_destruction");
|
||||||
|
|
||||||
if ( sndmechzisnetworksafe( "angry" ) )
|
if (sndmechzisnetworksafe("angry"))
|
||||||
self playsound( "zmb_ai_mechz_vox_angry" );
|
self playsound("zmb_ai_mechz_vox_angry");
|
||||||
|
|
||||||
self.fx_field |= 1024;
|
self.fx_field |= 1024;
|
||||||
self.fx_field &= ~2048;
|
self.fx_field &= ~2048;
|
||||||
self setclientfield( "mechz_fx", self.fx_field );
|
self setclientfield("mechz_fx", self.fx_field);
|
||||||
|
|
||||||
if ( !( isdefined( self.not_interruptable ) && self.not_interruptable ) && !( isdefined( self.is_traversing ) && self.is_traversing ) )
|
if (!(isdefined(self.not_interruptable) && self.not_interruptable) && !(isdefined(self.is_traversing) && self.is_traversing))
|
||||||
{
|
{
|
||||||
self mechz_interrupt();
|
self mechz_interrupt();
|
||||||
self animscripted( self.origin, self.angles, "zm_pain_faceplate" );
|
self animscripted(self.origin, self.angles, "zm_pain_faceplate");
|
||||||
self maps\mp\animscripts\zm_shared::donotetracks( "pain_anim_faceplate" );
|
self maps\mp\animscripts\zm_shared::donotetracks("pain_anim_faceplate");
|
||||||
}
|
}
|
||||||
|
|
||||||
self thread shoot_mechz_head_vo();
|
self thread shoot_mechz_head_vo();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( self.powerplant_covered ) && self.powerplant_covered && self.powerplant_cover_dmg >= self.powerplant_cover_dmg_for_removal )
|
if (isdefined(self.powerplant_covered) && self.powerplant_covered && self.powerplant_cover_dmg >= self.powerplant_cover_dmg_for_removal)
|
||||||
{
|
{
|
||||||
self.powerplant_covered = 0;
|
self.powerplant_covered = 0;
|
||||||
self detach( "c_zom_mech_powersupply_cap", "tag_powersupply" );
|
self detach("c_zom_mech_powersupply_cap", "tag_powersupply");
|
||||||
cap_model = spawn( "script_model", self gettagorigin( "tag_powersupply" ) );
|
cap_model = spawn("script_model", self gettagorigin("tag_powersupply"));
|
||||||
cap_model.angles = self gettagangles( "tag_powersupply" );
|
cap_model.angles = self gettagangles("tag_powersupply");
|
||||||
cap_model setmodel( "c_zom_mech_powersupply_cap" );
|
cap_model setmodel("c_zom_mech_powersupply_cap");
|
||||||
cap_model physicslaunch( cap_model.origin, anglestoforward( cap_model.angles ) );
|
cap_model physicslaunch(cap_model.origin, anglestoforward(cap_model.angles));
|
||||||
cap_model thread mechz_delayed_item_delete();
|
cap_model thread mechz_delayed_item_delete();
|
||||||
|
|
||||||
if ( sndmechzisnetworksafe( "destruction" ) )
|
if (sndmechzisnetworksafe("destruction"))
|
||||||
self playsound( "zmb_ai_mechz_destruction" );
|
self playsound("zmb_ai_mechz_destruction");
|
||||||
|
|
||||||
if ( !( isdefined( self.not_interruptable ) && self.not_interruptable ) && !( isdefined( self.is_traversing ) && self.is_traversing ) )
|
if (!(isdefined(self.not_interruptable) && self.not_interruptable) && !(isdefined(self.is_traversing) && self.is_traversing))
|
||||||
{
|
{
|
||||||
self mechz_interrupt();
|
self mechz_interrupt();
|
||||||
self animscripted( self.origin, self.angles, "zm_pain_powercore" );
|
self animscripted(self.origin, self.angles, "zm_pain_powercore");
|
||||||
self maps\mp\animscripts\zm_shared::donotetracks( "pain_anim_powercore" );
|
self maps\mp\animscripts\zm_shared::donotetracks("pain_anim_powercore");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( !( isdefined( self.powerplant_covered ) && self.powerplant_covered ) && ( isdefined( self.has_powerplant ) && self.has_powerplant ) && self.powerplant_dmg >= self.powerplant_dmg_for_destroy )
|
else if (!(isdefined(self.powerplant_covered) && self.powerplant_covered) && (isdefined(self.has_powerplant) && self.has_powerplant) && self.powerplant_dmg >= self.powerplant_dmg_for_destroy)
|
||||||
{
|
{
|
||||||
self.has_powerplant = 0;
|
self.has_powerplant = 0;
|
||||||
self thread mechz_stun( level.mechz_powerplant_stun_time );
|
self thread mechz_stun(level.mechz_powerplant_stun_time);
|
||||||
|
|
||||||
if ( sndmechzisnetworksafe( "destruction" ) )
|
if (sndmechzisnetworksafe("destruction"))
|
||||||
self playsound( "zmb_ai_mechz_destruction" );
|
self playsound("zmb_ai_mechz_destruction");
|
||||||
}
|
}
|
||||||
|
|
||||||
return final_damage;
|
return final_damage;
|
||||||
@ -207,35 +207,35 @@ mechz_round_tracker()
|
|||||||
old_spawn_func = level.round_spawn_func;
|
old_spawn_func = level.round_spawn_func;
|
||||||
old_wait_func = level.round_wait_func;
|
old_wait_func = level.round_wait_func;
|
||||||
|
|
||||||
while ( !isdefined( level.zombie_mechz_locations ) )
|
while (!isdefined(level.zombie_mechz_locations))
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
|
||||||
flag_wait( "activate_zone_nml" );
|
flag_wait("activate_zone_nml");
|
||||||
mech_start_round_num = 8;
|
mech_start_round_num = 8;
|
||||||
|
|
||||||
if ( isdefined( level.is_forever_solo_game ) && level.is_forever_solo_game )
|
if (isdefined(level.is_forever_solo_game) && level.is_forever_solo_game)
|
||||||
mech_start_round_num = 8;
|
mech_start_round_num = 8;
|
||||||
|
|
||||||
while ( level.round_number < mech_start_round_num )
|
while (level.round_number < mech_start_round_num)
|
||||||
level waittill( "between_round_over" );
|
level waittill("between_round_over");
|
||||||
|
|
||||||
level.next_mechz_round = level.round_number;
|
level.next_mechz_round = level.round_number;
|
||||||
level thread debug_print_mechz_round();
|
level thread debug_print_mechz_round();
|
||||||
|
|
||||||
while ( true )
|
while (true)
|
||||||
{
|
{
|
||||||
maps\mp\zombies\_zm_ai_mechz_ffotd::mechz_round_tracker_loop_start();
|
maps\mp\zombies\_zm_ai_mechz_ffotd::mechz_round_tracker_loop_start();
|
||||||
|
|
||||||
if ( level.num_mechz_spawned > 0 )
|
if (level.num_mechz_spawned > 0)
|
||||||
level.mechz_should_drop_powerup = 1;
|
level.mechz_should_drop_powerup = 1;
|
||||||
|
|
||||||
if ( level.next_mechz_round <= level.round_number )
|
if (level.next_mechz_round <= level.round_number)
|
||||||
{
|
{
|
||||||
a_zombies = getaispeciesarray( level.zombie_team, "all" );
|
a_zombies = getaispeciesarray(level.zombie_team, "all");
|
||||||
|
|
||||||
foreach ( zombie in a_zombies )
|
foreach (zombie in a_zombies)
|
||||||
{
|
{
|
||||||
if ( isdefined( zombie.is_mechz ) && zombie.is_mechz && isalive( zombie ) )
|
if (isdefined(zombie.is_mechz) && zombie.is_mechz && isalive(zombie))
|
||||||
{
|
{
|
||||||
level.next_mechz_round++;
|
level.next_mechz_round++;
|
||||||
break;
|
break;
|
||||||
@ -243,28 +243,28 @@ mechz_round_tracker()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( level.mechz_left_to_spawn == 0 && level.next_mechz_round <= level.round_number )
|
if (level.mechz_left_to_spawn == 0 && level.next_mechz_round <= level.round_number)
|
||||||
{
|
{
|
||||||
mechz_health_increases();
|
mechz_health_increases();
|
||||||
|
|
||||||
if ( get_players().size == 1 )
|
if (get_players().size == 1)
|
||||||
level.mechz_zombie_per_round = 1;
|
level.mechz_zombie_per_round = 1;
|
||||||
else if ( level.mechz_round_count < 2 )
|
else if (level.mechz_round_count < 2)
|
||||||
level.mechz_zombie_per_round = 1;
|
level.mechz_zombie_per_round = 1;
|
||||||
else if ( level.mechz_round_count < 5 )
|
else if (level.mechz_round_count < 5)
|
||||||
level.mechz_zombie_per_round = 2;
|
level.mechz_zombie_per_round = 2;
|
||||||
else
|
else
|
||||||
level.mechz_zombie_per_round = 3;
|
level.mechz_zombie_per_round = 3;
|
||||||
|
|
||||||
level.mechz_left_to_spawn = level.mechz_zombie_per_round;
|
level.mechz_left_to_spawn = level.mechz_zombie_per_round;
|
||||||
mechz_spawning = level.mechz_left_to_spawn;
|
mechz_spawning = level.mechz_left_to_spawn;
|
||||||
wait( randomfloatrange( 10.0, 15.0 ) );
|
wait(randomfloatrange(10.0, 15.0));
|
||||||
level notify( "spawn_mechz" );
|
level notify("spawn_mechz");
|
||||||
|
|
||||||
if ( isdefined( level.is_forever_solo_game ) && level.is_forever_solo_game )
|
if (isdefined(level.is_forever_solo_game) && level.is_forever_solo_game)
|
||||||
n_round_gap = randomintrange( level.mechz_min_round_fq_solo, level.mechz_max_round_fq_solo );
|
n_round_gap = randomintrange(level.mechz_min_round_fq_solo, level.mechz_max_round_fq_solo);
|
||||||
else
|
else
|
||||||
n_round_gap = randomintrange( level.mechz_min_round_fq, level.mechz_max_round_fq );
|
n_round_gap = randomintrange(level.mechz_min_round_fq, level.mechz_max_round_fq);
|
||||||
|
|
||||||
level.next_mechz_round = level.round_number + n_round_gap;
|
level.next_mechz_round = level.round_number + n_round_gap;
|
||||||
level.mechz_round_count++;
|
level.mechz_round_count++;
|
||||||
@ -274,7 +274,7 @@ mechz_round_tracker()
|
|||||||
|
|
||||||
maps\mp\zombies\_zm_ai_mechz_ffotd::mechz_round_tracker_loop_end();
|
maps\mp\zombies\_zm_ai_mechz_ffotd::mechz_round_tracker_loop_end();
|
||||||
|
|
||||||
level waittill( "between_round_over" );
|
level waittill("between_round_over");
|
||||||
|
|
||||||
mechz_clear_spawns();
|
mechz_clear_spawns();
|
||||||
}
|
}
|
||||||
|
@ -12,38 +12,38 @@
|
|||||||
|
|
||||||
screecher_spawning_logic()
|
screecher_spawning_logic()
|
||||||
{
|
{
|
||||||
level endon( "intermission" );
|
level endon("intermission");
|
||||||
|
|
||||||
if ( level.intermission )
|
if (level.intermission)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( level.screecher_spawners.size < 1 )
|
if (level.screecher_spawners.size < 1)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
while ( true )
|
while (true)
|
||||||
{
|
{
|
||||||
while ( !isdefined( level.zombie_screecher_locations ) || level.zombie_screecher_locations.size <= 0 )
|
while (!isdefined(level.zombie_screecher_locations) || level.zombie_screecher_locations.size <= 0)
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
|
|
||||||
// while ( getdvarint( _hash_B0C0D38F ) )
|
// while ( getdvarint( _hash_B0C0D38F ) )
|
||||||
// wait 0.1;
|
// wait 0.1;
|
||||||
|
|
||||||
if ( !flag( "spawn_zombies" ) )
|
if (!flag("spawn_zombies"))
|
||||||
flag_wait( "spawn_zombies" );
|
flag_wait("spawn_zombies");
|
||||||
|
|
||||||
valid_players_in_screecher_zone = 0;
|
valid_players_in_screecher_zone = 0;
|
||||||
valid_players = [];
|
valid_players = [];
|
||||||
|
|
||||||
while ( valid_players_in_screecher_zone <= level.zombie_screecher_count )
|
while (valid_players_in_screecher_zone <= level.zombie_screecher_count)
|
||||||
{
|
{
|
||||||
players = getplayers();
|
players = getplayers();
|
||||||
valid_players_in_screecher_zone = 0;
|
valid_players_in_screecher_zone = 0;
|
||||||
|
|
||||||
for ( p = 0; p < players.size; p++ )
|
for (p = 0; p < players.size; p++)
|
||||||
{
|
{
|
||||||
if ( is_player_valid( players[p] ) && player_in_screecher_zone( players[p] ) && !isdefined( players[p].screecher ) )
|
if (is_player_valid(players[p]) && player_in_screecher_zone(players[p]) && !isdefined(players[p].screecher))
|
||||||
{
|
{
|
||||||
valid_players_in_screecher_zone++;
|
valid_players_in_screecher_zone++;
|
||||||
valid_players[valid_players.size] = players[p];
|
valid_players[valid_players.size] = players[p];
|
||||||
@ -53,21 +53,21 @@ screecher_spawning_logic()
|
|||||||
wait 0.1;
|
wait 0.1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isdefined( level.zombie_screecher_locations ) || level.zombie_screecher_locations.size <= 0 )
|
if (!isdefined(level.zombie_screecher_locations) || level.zombie_screecher_locations.size <= 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
valid_players = array_randomize( valid_players );
|
valid_players = array_randomize(valid_players);
|
||||||
|
|
||||||
spawn_points = get_array_of_closest( valid_players[0].origin, level.zombie_screecher_locations );
|
spawn_points = get_array_of_closest(valid_players[0].origin, level.zombie_screecher_locations);
|
||||||
spawn_point = undefined;
|
spawn_point = undefined;
|
||||||
|
|
||||||
if ( !isdefined( spawn_points ) || spawn_points.size == 0 )
|
if (!isdefined(spawn_points) || spawn_points.size == 0)
|
||||||
{
|
{
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isdefined( level.last_spawn ) )
|
if (!isdefined(level.last_spawn))
|
||||||
{
|
{
|
||||||
level.last_spawn_index = 0;
|
level.last_spawn_index = 0;
|
||||||
level.last_spawn = [];
|
level.last_spawn = [];
|
||||||
@ -77,35 +77,35 @@ screecher_spawning_logic()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
foreach ( point in spawn_points )
|
foreach (point in spawn_points)
|
||||||
{
|
{
|
||||||
if ( point == level.last_spawn[0] )
|
if (point == level.last_spawn[0])
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( isdefined( level.last_spawn[1] ) && point == level.last_spawn[1] )
|
if (isdefined(level.last_spawn[1]) && point == level.last_spawn[1])
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
spawn_point = point;
|
spawn_point = point;
|
||||||
level.last_spawn[level.last_spawn_index] = spawn_point;
|
level.last_spawn[level.last_spawn_index] = spawn_point;
|
||||||
level.last_spawn_index++;
|
level.last_spawn_index++;
|
||||||
|
|
||||||
if ( level.last_spawn_index > 1 )
|
if (level.last_spawn_index > 1)
|
||||||
level.last_spawn_index = 0;
|
level.last_spawn_index = 0;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isdefined( spawn_point ) )
|
if (!isdefined(spawn_point))
|
||||||
spawn_point = spawn_points[0];
|
spawn_point = spawn_points[0];
|
||||||
|
|
||||||
if ( isdefined( level.screecher_spawners ) )
|
if (isdefined(level.screecher_spawners))
|
||||||
{
|
{
|
||||||
spawner = random( level.screecher_spawners );
|
spawner = random(level.screecher_spawners);
|
||||||
ai = spawn_zombie( spawner, spawner.targetname, spawn_point );
|
ai = spawn_zombie(spawner, spawner.targetname, spawn_point);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( ai ) )
|
if (isdefined(ai))
|
||||||
{
|
{
|
||||||
ai.spawn_point = spawn_point;
|
ai.spawn_point = spawn_point;
|
||||||
level.zombie_screecher_count++;
|
level.zombie_screecher_count++;
|
||||||
@ -115,15 +115,15 @@ screecher_spawning_logic()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
screecher_melee_damage( player )
|
screecher_melee_damage(player)
|
||||||
{
|
{
|
||||||
melee_score = 0;
|
melee_score = 0;
|
||||||
|
|
||||||
if ( player hasweapon( "tazer_knuckles_zm" ) )
|
if (player hasweapon("tazer_knuckles_zm"))
|
||||||
{
|
{
|
||||||
melee_score = 30;
|
melee_score = 30;
|
||||||
}
|
}
|
||||||
else if ( player hasweapon( "bowie_knife_zm" ) )
|
else if (player hasweapon("bowie_knife_zm"))
|
||||||
{
|
{
|
||||||
melee_score = 15;
|
melee_score = 15;
|
||||||
}
|
}
|
||||||
@ -132,9 +132,9 @@ screecher_melee_damage( player )
|
|||||||
melee_score = 10;
|
melee_score = 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self.screecher_score > 0 )
|
if (self.screecher_score > 0)
|
||||||
{
|
{
|
||||||
if ( melee_score > self.screecher_score )
|
if (melee_score > self.screecher_score)
|
||||||
{
|
{
|
||||||
self.screecher_score = 0;
|
self.screecher_score = 0;
|
||||||
}
|
}
|
||||||
@ -144,79 +144,79 @@ screecher_melee_damage( player )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self.screecher_score <= 0 )
|
if (self.screecher_score <= 0)
|
||||||
{
|
{
|
||||||
self.player_score += melee_score;
|
self.player_score += melee_score;
|
||||||
}
|
}
|
||||||
|
|
||||||
self playsound( "zmb_vocals_screecher_pain" );
|
self playsound("zmb_vocals_screecher_pain");
|
||||||
|
|
||||||
if ( level.zombie_vars[player.team]["zombie_insta_kill"] )
|
if (level.zombie_vars[player.team]["zombie_insta_kill"])
|
||||||
self.player_score = 30;
|
self.player_score = 30;
|
||||||
else
|
else
|
||||||
player thread do_player_general_vox( "general", "screecher_cut" );
|
player thread do_player_general_vox("general", "screecher_cut");
|
||||||
|
|
||||||
self screecher_check_score();
|
self screecher_check_score();
|
||||||
}
|
}
|
||||||
|
|
||||||
screecher_detach( player )
|
screecher_detach(player)
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
self.state = "detached";
|
self.state = "detached";
|
||||||
|
|
||||||
if ( !isdefined( self.linked_ent ) )
|
if (!isdefined(self.linked_ent))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( isdefined( player ) )
|
if (isdefined(player))
|
||||||
{
|
{
|
||||||
player clientnotify( "scrEnd" );
|
player clientnotify("scrEnd");
|
||||||
|
|
||||||
player allowprone( 1 );
|
player allowprone(1);
|
||||||
|
|
||||||
player takeweapon( "screecher_arms_zm" );
|
player takeweapon("screecher_arms_zm");
|
||||||
|
|
||||||
// if ( !getdvarint( _hash_E7EF8EB7 ) )
|
// if ( !getdvarint( _hash_E7EF8EB7 ) )
|
||||||
player stoppoisoning();
|
player stoppoisoning();
|
||||||
|
|
||||||
if ( !player maps\mp\zombies\_zm_laststand::player_is_in_laststand() && !( isdefined( player.intermission ) && player.intermission ) )
|
if (!player maps\mp\zombies\_zm_laststand::player_is_in_laststand() && !(isdefined(player.intermission) && player.intermission))
|
||||||
player decrement_is_drinking();
|
player decrement_is_drinking();
|
||||||
|
|
||||||
if ( isdefined( player.screecher_weapon ) && player.screecher_weapon != "none" && is_player_valid( player ) && !is_equipment_that_blocks_purchase( player.screecher_weapon ) )
|
if (isdefined(player.screecher_weapon) && player.screecher_weapon != "none" && is_player_valid(player) && !is_equipment_that_blocks_purchase(player.screecher_weapon))
|
||||||
player switchtoweapon( player.screecher_weapon );
|
player switchtoweapon(player.screecher_weapon);
|
||||||
else if ( !player maps\mp\zombies\_zm_laststand::player_is_in_laststand() )
|
else if (!player maps\mp\zombies\_zm_laststand::player_is_in_laststand())
|
||||||
{
|
{
|
||||||
primaryweapons = player getweaponslistprimaries();
|
primaryweapons = player getweaponslistprimaries();
|
||||||
|
|
||||||
if ( isdefined( primaryweapons ) && primaryweapons.size > 0 )
|
if (isdefined(primaryweapons) && primaryweapons.size > 0)
|
||||||
player switchtoweapon( primaryweapons[0] );
|
player switchtoweapon(primaryweapons[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
player.screecher_weapon = undefined;
|
player.screecher_weapon = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
self unlink();
|
self unlink();
|
||||||
self setclientfield( "render_third_person", 0 );
|
self setclientfield("render_third_person", 0);
|
||||||
|
|
||||||
if ( isdefined( self.linked_ent ) )
|
if (isdefined(self.linked_ent))
|
||||||
{
|
{
|
||||||
self.linked_ent.screecher = undefined;
|
self.linked_ent.screecher = undefined;
|
||||||
self.linked_ent setmovespeedscale( 1 );
|
self.linked_ent setmovespeedscale(1);
|
||||||
self.linked_ent = undefined;
|
self.linked_ent = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
self.green_light = player.green_light;
|
self.green_light = player.green_light;
|
||||||
self animcustom( ::screecher_jump_down );
|
self animcustom(::screecher_jump_down);
|
||||||
|
|
||||||
self waittill( "jump_down_done" );
|
self waittill("jump_down_done");
|
||||||
|
|
||||||
maps\mp\_visionset_mgr::vsmgr_deactivate( "overlay", "zm_ai_screecher_blur", player );
|
maps\mp\_visionset_mgr::vsmgr_deactivate("overlay", "zm_ai_screecher_blur", player);
|
||||||
self animmode( "normal" );
|
self animmode("normal");
|
||||||
self.ignoreall = 1;
|
self.ignoreall = 1;
|
||||||
self setplayercollision( 1 );
|
self setplayercollision(1);
|
||||||
|
|
||||||
if ( isdefined( level.screecher_should_burrow ) )
|
if (isdefined(level.screecher_should_burrow))
|
||||||
{
|
{
|
||||||
if ( self [[ level.screecher_should_burrow ]]() )
|
if (self [[ level.screecher_should_burrow ]]())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -227,15 +227,15 @@ screecher_detach( player )
|
|||||||
|
|
||||||
screecher_cleanup()
|
screecher_cleanup()
|
||||||
{
|
{
|
||||||
self waittill( "death", attacker );
|
self waittill("death", attacker);
|
||||||
|
|
||||||
if ( isdefined( attacker ) && isplayer( attacker ) )
|
if (isdefined(attacker) && isplayer(attacker))
|
||||||
{
|
{
|
||||||
if ( isdefined( self.damagelocation ) && isdefined( self.damagemod ) )
|
if (isdefined(self.damagelocation) && isdefined(self.damagemod))
|
||||||
level thread maps\mp\zombies\_zm_audio::player_zombie_kill_vox( self.damagelocation, attacker, self.damagemod, self );
|
level thread maps\mp\zombies\_zm_audio::player_zombie_kill_vox(self.damagelocation, attacker, self.damagemod, self);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( self.loopsoundent ) )
|
if (isdefined(self.loopsoundent))
|
||||||
{
|
{
|
||||||
self.loopsoundent delete();
|
self.loopsoundent delete();
|
||||||
self.loopsoundent = undefined;
|
self.loopsoundent = undefined;
|
||||||
@ -243,50 +243,50 @@ screecher_cleanup()
|
|||||||
|
|
||||||
player = self.linked_ent;
|
player = self.linked_ent;
|
||||||
|
|
||||||
if ( isdefined( player ) )
|
if (isdefined(player))
|
||||||
{
|
{
|
||||||
player playsound( "zmb_vocals_screecher_death" );
|
player playsound("zmb_vocals_screecher_death");
|
||||||
player setmovespeedscale( 1 );
|
player setmovespeedscale(1);
|
||||||
maps\mp\_visionset_mgr::vsmgr_deactivate( "overlay", "zm_ai_screecher_blur", player );
|
maps\mp\_visionset_mgr::vsmgr_deactivate("overlay", "zm_ai_screecher_blur", player);
|
||||||
|
|
||||||
if ( isdefined( player.screecher_weapon ) )
|
if (isdefined(player.screecher_weapon))
|
||||||
{
|
{
|
||||||
player clientnotify( "scrEnd" );
|
player clientnotify("scrEnd");
|
||||||
|
|
||||||
player allowprone( 1 );
|
player allowprone(1);
|
||||||
|
|
||||||
player takeweapon( "screecher_arms_zm" );
|
player takeweapon("screecher_arms_zm");
|
||||||
|
|
||||||
// if ( !getdvarint( _hash_E7EF8EB7 ) )
|
// if ( !getdvarint( _hash_E7EF8EB7 ) )
|
||||||
player stoppoisoning();
|
player stoppoisoning();
|
||||||
|
|
||||||
if ( !player maps\mp\zombies\_zm_laststand::player_is_in_laststand() && !( isdefined( player.intermission ) && player.intermission ) )
|
if (!player maps\mp\zombies\_zm_laststand::player_is_in_laststand() && !(isdefined(player.intermission) && player.intermission))
|
||||||
player decrement_is_drinking();
|
player decrement_is_drinking();
|
||||||
|
|
||||||
if ( player.screecher_weapon != "none" && is_player_valid( player ) )
|
if (player.screecher_weapon != "none" && is_player_valid(player))
|
||||||
player switchtoweapon( player.screecher_weapon );
|
player switchtoweapon(player.screecher_weapon);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
primaryweapons = player getweaponslistprimaries();
|
primaryweapons = player getweaponslistprimaries();
|
||||||
|
|
||||||
if ( isdefined( primaryweapons ) && primaryweapons.size > 0 )
|
if (isdefined(primaryweapons) && primaryweapons.size > 0)
|
||||||
player switchtoweapon( primaryweapons[0] );
|
player switchtoweapon(primaryweapons[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
player.screecher_weapon = undefined;
|
player.screecher_weapon = undefined;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( self.claw_fx ) )
|
if (isdefined(self.claw_fx))
|
||||||
self.claw_fx destroy();
|
self.claw_fx destroy();
|
||||||
|
|
||||||
if ( isdefined( self.anchor ) )
|
if (isdefined(self.anchor))
|
||||||
self.anchor delete();
|
self.anchor delete();
|
||||||
|
|
||||||
if ( isdefined( level.screecher_cleanup ) )
|
if (isdefined(level.screecher_cleanup))
|
||||||
self [[ level.screecher_cleanup ]]();
|
self [[ level.screecher_cleanup ]]();
|
||||||
|
|
||||||
if ( level.zombie_screecher_count > 0 )
|
if (level.zombie_screecher_count > 0)
|
||||||
{
|
{
|
||||||
level.zombie_screecher_count--;
|
level.zombie_screecher_count--;
|
||||||
}
|
}
|
||||||
|
@ -73,98 +73,98 @@ sloth_init_update_funcs()
|
|||||||
self.locomotion_func = ::update_locomotion;
|
self.locomotion_func = ::update_locomotion;
|
||||||
}
|
}
|
||||||
|
|
||||||
start_jail_run( do_pain )
|
start_jail_run(do_pain)
|
||||||
{
|
{
|
||||||
if ( self is_jail_state() )
|
if (self is_jail_state())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if ( self.state == "berserk" || self.state == "crash" )
|
if (self.state == "berserk" || self.state == "crash")
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if ( self sloth_is_traversing() )
|
if (self sloth_is_traversing())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if ( self.state == "gunshop_candy" || self.state == "table_eat" )
|
if (self.state == "gunshop_candy" || self.state == "table_eat")
|
||||||
{
|
{
|
||||||
if ( isdefined( self.bench ) )
|
if (isdefined(self.bench))
|
||||||
{
|
{
|
||||||
if ( isdefined( level.weapon_bench_reset ) )
|
if (isdefined(level.weapon_bench_reset))
|
||||||
self.bench [[ level.weapon_bench_reset ]]();
|
self.bench [[ level.weapon_bench_reset ]]();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self stop_action();
|
self stop_action();
|
||||||
self thread sndchangebreathingstate( "happy" );
|
self thread sndchangebreathingstate("happy");
|
||||||
self thread action_jail_run( self.jail_start.origin, do_pain );
|
self thread action_jail_run(self.jail_start.origin, do_pain);
|
||||||
|
|
||||||
if ( self.state == "context" )
|
if (self.state == "context")
|
||||||
{
|
{
|
||||||
if ( isdefined( self.context.interrupt ) )
|
if (isdefined(self.context.interrupt))
|
||||||
self [[ self.context.interrupt ]]();
|
self [[ self.context.interrupt ]]();
|
||||||
}
|
}
|
||||||
|
|
||||||
self sloth_init_roam_point();
|
self sloth_init_roam_point();
|
||||||
thread maps\mp\zombies\_zm_unitrigger::unregister_unitrigger( self.gift_trigger );
|
thread maps\mp\zombies\_zm_unitrigger::unregister_unitrigger(self.gift_trigger);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
action_jail_run( pos, do_pain )
|
action_jail_run(pos, do_pain)
|
||||||
{
|
{
|
||||||
self.needs_action = 0;
|
self.needs_action = 0;
|
||||||
|
|
||||||
if ( isdefined( self.candy_model ) )
|
if (isdefined(self.candy_model))
|
||||||
self.candy_model ghost();
|
self.candy_model ghost();
|
||||||
|
|
||||||
if ( isdefined( self.booze_model ) )
|
if (isdefined(self.booze_model))
|
||||||
self.booze_model ghost();
|
self.booze_model ghost();
|
||||||
|
|
||||||
if ( is_true( do_pain ) )
|
if (is_true(do_pain))
|
||||||
{
|
{
|
||||||
if ( !self sloth_is_traversing() && !is_true( self.is_pain ) )
|
if (!self sloth_is_traversing() && !is_true(self.is_pain))
|
||||||
{
|
{
|
||||||
self.is_pain = 1;
|
self.is_pain = 1;
|
||||||
self setanimstatefromasd( "zm_pain" );
|
self setanimstatefromasd("zm_pain");
|
||||||
self.reset_asd = "zm_pain";
|
self.reset_asd = "zm_pain";
|
||||||
self thread finish_pain();
|
self thread finish_pain();
|
||||||
maps\mp\animscripts\zm_shared::donotetracks( "pain_anim" );
|
maps\mp\animscripts\zm_shared::donotetracks("pain_anim");
|
||||||
self notify( "pain_done" );
|
self notify("pain_done");
|
||||||
self.is_pain = 0;
|
self.is_pain = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
while ( true )
|
while (true)
|
||||||
{
|
{
|
||||||
if ( !self sloth_is_pain() )
|
if (!self sloth_is_pain())
|
||||||
break;
|
break;
|
||||||
|
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
}
|
}
|
||||||
|
|
||||||
self.reset_asd = undefined;
|
self.reset_asd = undefined;
|
||||||
self animmode( "normal" );
|
self animmode("normal");
|
||||||
self set_zombie_run_cycle( "run" );
|
self set_zombie_run_cycle("run");
|
||||||
self.locomotion = "run";
|
self.locomotion = "run";
|
||||||
self thread sloth_retreat_vo();
|
self thread sloth_retreat_vo();
|
||||||
self check_behind_mansion();
|
self check_behind_mansion();
|
||||||
|
|
||||||
if ( isdefined( self.mansion_goal ) )
|
if (isdefined(self.mansion_goal))
|
||||||
{
|
{
|
||||||
self setgoalpos( self.mansion_goal.origin );
|
self setgoalpos(self.mansion_goal.origin);
|
||||||
|
|
||||||
self waittill( "goal" );
|
self waittill("goal");
|
||||||
|
|
||||||
self action_teleport_to_courtyard();
|
self action_teleport_to_courtyard();
|
||||||
}
|
}
|
||||||
|
|
||||||
self.goalradius = 2;
|
self.goalradius = 2;
|
||||||
|
|
||||||
self setgoalpos( self.jail_start.origin + (0, 128, 0) );
|
self setgoalpos(self.jail_start.origin + (0, 128, 0));
|
||||||
|
|
||||||
self waittill( "goal" );
|
self waittill("goal");
|
||||||
|
|
||||||
self.goalradius = 16;
|
self.goalradius = 16;
|
||||||
|
|
||||||
self orientmode( "face angle", self.jail_start.angles[1] );
|
self orientmode("face angle", self.jail_start.angles[1]);
|
||||||
|
|
||||||
wait 0.5;
|
wait 0.5;
|
||||||
|
|
||||||
@ -175,33 +175,33 @@ start_jail_wait()
|
|||||||
{
|
{
|
||||||
self stopanimscripted();
|
self stopanimscripted();
|
||||||
self action_jail_wait();
|
self action_jail_wait();
|
||||||
self thread sndchangebreathingstate( "happy" );
|
self thread sndchangebreathingstate("happy");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
action_jail_wait()
|
action_jail_wait()
|
||||||
{
|
{
|
||||||
self.needs_action = 0;
|
self.needs_action = 0;
|
||||||
self setgoalpos( self.origin );
|
self setgoalpos(self.origin);
|
||||||
self.anchor.origin = self.origin;
|
self.anchor.origin = self.origin;
|
||||||
self.anchor.angles = self.angles;
|
self.anchor.angles = self.angles;
|
||||||
self linkto( self.anchor );
|
self linkto(self.anchor);
|
||||||
self setanimstatefromasd( "zm_idle_protect" );
|
self setanimstatefromasd("zm_idle_protect");
|
||||||
self.needs_action = 1;
|
self.needs_action = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
update_jail_idle()
|
update_jail_idle()
|
||||||
{
|
{
|
||||||
if ( is_true( self.open_jail ) )
|
if (is_true(self.open_jail))
|
||||||
{
|
{
|
||||||
level notify( "cell_open" );
|
level notify("cell_open");
|
||||||
self.open_jail = 0;
|
self.open_jail = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( is_true( level.cell_open ) )
|
if (is_true(level.cell_open))
|
||||||
{
|
{
|
||||||
self stop_action();
|
self stop_action();
|
||||||
self sloth_set_state( "jail_idle" );
|
self sloth_set_state("jail_idle");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -214,98 +214,98 @@ update_jail_wait()
|
|||||||
|
|
||||||
players = get_players();
|
players = get_players();
|
||||||
|
|
||||||
foreach ( player in players )
|
foreach (player in players)
|
||||||
{
|
{
|
||||||
if ( player maps\mp\zombies\_zm_zonemgr::entity_in_zone( "zone_underground_jail" ) )
|
if (player maps\mp\zombies\_zm_zonemgr::entity_in_zone("zone_underground_jail"))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self.needs_action )
|
if (self.needs_action)
|
||||||
self sloth_set_state( "jail_close" );
|
self sloth_set_state("jail_close");
|
||||||
}
|
}
|
||||||
|
|
||||||
update_eat()
|
update_eat()
|
||||||
{
|
{
|
||||||
if ( is_true( self.needs_action ) )
|
if (is_true(self.needs_action))
|
||||||
{
|
{
|
||||||
self setclientfield( "sloth_eating", 0 );
|
self setclientfield("sloth_eating", 0);
|
||||||
|
|
||||||
if ( isdefined( self.candy_model ) )
|
if (isdefined(self.candy_model))
|
||||||
self.candy_model ghost();
|
self.candy_model ghost();
|
||||||
|
|
||||||
context = self check_contextual_actions();
|
context = self check_contextual_actions();
|
||||||
|
|
||||||
if ( isdefined( context ) )
|
if (isdefined(context))
|
||||||
{
|
{
|
||||||
self sloth_set_state( "context", context );
|
self sloth_set_state("context", context);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
self sloth_set_state( "roam" );
|
self sloth_set_state("roam");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sloth_check_ragdolls( ignore_zombie )
|
sloth_check_ragdolls(ignore_zombie)
|
||||||
{
|
{
|
||||||
non_ragdoll = 0;
|
non_ragdoll = 0;
|
||||||
zombies = getaispeciesarray( level.zombie_team, "all" );
|
zombies = getaispeciesarray(level.zombie_team, "all");
|
||||||
|
|
||||||
for ( i = 0; i < zombies.size; i++ )
|
for (i = 0; i < zombies.size; i++)
|
||||||
{
|
{
|
||||||
zombie = zombies[i];
|
zombie = zombies[i];
|
||||||
|
|
||||||
if ( is_true( zombie.is_sloth ) )
|
if (is_true(zombie.is_sloth))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( isdefined( ignore_zombie ) && zombie == ignore_zombie )
|
if (isdefined(ignore_zombie) && zombie == ignore_zombie)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( isdefined( self.crawler ) && zombie == self.crawler )
|
if (isdefined(self.crawler) && zombie == self.crawler)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( self is_facing( zombie ) )
|
if (self is_facing(zombie))
|
||||||
{
|
{
|
||||||
dist = distancesquared( self.origin, zombie.origin );
|
dist = distancesquared(self.origin, zombie.origin);
|
||||||
|
|
||||||
if ( dist < 4096 )
|
if (dist < 4096)
|
||||||
{
|
{
|
||||||
if ( !self sloth_ragdoll_zombie( zombie ) )
|
if (!self sloth_ragdoll_zombie(zombie))
|
||||||
{
|
{
|
||||||
if ( !is_true( self.no_gib ) && non_ragdoll % 3 == 0 )
|
if (!is_true(self.no_gib) && non_ragdoll % 3 == 0)
|
||||||
{
|
{
|
||||||
zombie.force_gib = 1;
|
zombie.force_gib = 1;
|
||||||
zombie.a.gib_ref = random( array( "guts", "right_arm", "left_arm", "head" ) );
|
zombie.a.gib_ref = random(array("guts", "right_arm", "left_arm", "head"));
|
||||||
zombie thread maps\mp\animscripts\zm_death::do_gib();
|
zombie thread maps\mp\animscripts\zm_death::do_gib();
|
||||||
}
|
}
|
||||||
|
|
||||||
non_ragdoll++;
|
non_ragdoll++;
|
||||||
zombie dodamage( zombie.health * 10, zombie.origin );
|
zombie dodamage(zombie.health * 10, zombie.origin);
|
||||||
zombie playsound( "zmb_ai_sloth_attack_impact" );
|
zombie playsound("zmb_ai_sloth_attack_impact");
|
||||||
zombie.noragdoll = 1;
|
zombie.noragdoll = 1;
|
||||||
zombie.nodeathragdoll = 1;
|
zombie.nodeathragdoll = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( self.target_zombie ) && self.target_zombie == zombie )
|
if (isdefined(self.target_zombie) && self.target_zombie == zombie)
|
||||||
self.target_zombie = undefined;
|
self.target_zombie = undefined;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sloth_ragdoll_zombie( zombie )
|
sloth_ragdoll_zombie(zombie)
|
||||||
{
|
{
|
||||||
if ( !isdefined( self.ragdolls ) )
|
if (!isdefined(self.ragdolls))
|
||||||
self.ragdolls = 0;
|
self.ragdolls = 0;
|
||||||
|
|
||||||
if ( self.ragdolls < 4 )
|
if (self.ragdolls < 4)
|
||||||
{
|
{
|
||||||
self.ragdolls++;
|
self.ragdolls++;
|
||||||
zombie dodamage( zombie.health * 10, zombie.origin );
|
zombie dodamage(zombie.health * 10, zombie.origin);
|
||||||
zombie playsound( "zmb_ai_sloth_attack_impact" );
|
zombie playsound("zmb_ai_sloth_attack_impact");
|
||||||
zombie startragdoll();
|
zombie startragdoll();
|
||||||
zombie setclientfield( "sloth_ragdoll_zombie", 1 );
|
zombie setclientfield("sloth_ragdoll_zombie", 1);
|
||||||
self thread sloth_ragdoll_wait();
|
self thread sloth_ragdoll_wait();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -313,7 +313,7 @@ sloth_ragdoll_zombie( zombie )
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
wait_start_candy_booze( piece )
|
wait_start_candy_booze(piece)
|
||||||
{
|
{
|
||||||
// remove
|
// remove
|
||||||
}
|
}
|
@ -8,21 +8,21 @@
|
|||||||
#include maps\mp\_music;
|
#include maps\mp\_music;
|
||||||
#include maps\mp\zombies\_zm_spawner;
|
#include maps\mp\zombies\_zm_spawner;
|
||||||
|
|
||||||
create_and_play_dialog( category, type, response, force_variant, override )
|
create_and_play_dialog(category, type, response, force_variant, override)
|
||||||
{
|
{
|
||||||
waittime = 0.25;
|
waittime = 0.25;
|
||||||
|
|
||||||
if ( !isdefined( self.zmbvoxid ) )
|
if (!isdefined(self.zmbvoxid))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( self.dontspeak ) && self.dontspeak )
|
if (isdefined(self.dontspeak) && self.dontspeak)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( getDvarInt("disable_character_dialog") )
|
if (getDvarInt("disable_character_dialog"))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -32,39 +32,39 @@ create_and_play_dialog( category, type, response, force_variant, override )
|
|||||||
index = undefined;
|
index = undefined;
|
||||||
prefix = undefined;
|
prefix = undefined;
|
||||||
|
|
||||||
if ( !isdefined( level.vox.speaker[self.zmbvoxid].alias[category][type] ) )
|
if (!isdefined(level.vox.speaker[self.zmbvoxid].alias[category][type]))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
prefix = level.vox.speaker[self.zmbvoxid].prefix;
|
prefix = level.vox.speaker[self.zmbvoxid].prefix;
|
||||||
alias_suffix = level.vox.speaker[self.zmbvoxid].alias[category][type];
|
alias_suffix = level.vox.speaker[self.zmbvoxid].alias[category][type];
|
||||||
|
|
||||||
if ( self is_player() )
|
if (self is_player())
|
||||||
{
|
{
|
||||||
if ( self.sessionstate != "playing" )
|
if (self.sessionstate != "playing")
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( self maps\mp\zombies\_zm_laststand::player_is_in_laststand() && ( type != "revive_down" || type != "revive_up" ) )
|
if (self maps\mp\zombies\_zm_laststand::player_is_in_laststand() && (type != "revive_down" || type != "revive_up"))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
index = maps\mp\zombies\_zm_weapons::get_player_index( self );
|
index = maps\mp\zombies\_zm_weapons::get_player_index(self);
|
||||||
prefix = prefix + index + "_";
|
prefix = prefix + index + "_";
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( response ) )
|
if (isdefined(response))
|
||||||
{
|
{
|
||||||
if ( isdefined( level.vox.speaker[self.zmbvoxid].response[category][type] ) )
|
if (isdefined(level.vox.speaker[self.zmbvoxid].response[category][type]))
|
||||||
alias_suffix = response + level.vox.speaker[self.zmbvoxid].response[category][type];
|
alias_suffix = response + level.vox.speaker[self.zmbvoxid].response[category][type];
|
||||||
|
|
||||||
isresponse = 1;
|
isresponse = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
sound_to_play = self zmbvoxgetlinevariant( prefix, alias_suffix, force_variant, override );
|
sound_to_play = self zmbvoxgetlinevariant(prefix, alias_suffix, force_variant, override);
|
||||||
|
|
||||||
if ( isdefined( sound_to_play ) )
|
if (isdefined(sound_to_play))
|
||||||
{
|
{
|
||||||
if ( isdefined( level._audio_custom_player_playvox ) )
|
if (isdefined(level._audio_custom_player_playvox))
|
||||||
self thread [[ level._audio_custom_player_playvox ]]( prefix, index, sound_to_play, waittime, category, type, override );
|
self thread [[ level._audio_custom_player_playvox ]](prefix, index, sound_to_play, waittime, category, type, override);
|
||||||
else
|
else
|
||||||
self thread do_player_or_npc_playvox( prefix, index, sound_to_play, waittime, category, type, override, isresponse );
|
self thread do_player_or_npc_playvox(prefix, index, sound_to_play, waittime, category, type, override, isresponse);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -3,31 +3,31 @@
|
|||||||
#include common_scripts\utility;
|
#include common_scripts\utility;
|
||||||
#include maps\mp\zombies\_zm_utility;
|
#include maps\mp\zombies\_zm_utility;
|
||||||
|
|
||||||
playleaderdialogonplayer( dialog, team, waittime )
|
playleaderdialogonplayer(dialog, team, waittime)
|
||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
|
|
||||||
if ( level.allowzmbannouncer )
|
if (level.allowzmbannouncer)
|
||||||
{
|
{
|
||||||
if ( !isDefined( game[ "zmbdialog" ][ dialog ] ) )
|
if (!isDefined(game[ "zmbdialog" ][ dialog ]))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( self.zmbdialoggroups[ dialog ] ) )
|
if (isDefined(self.zmbdialoggroups[ dialog ]))
|
||||||
{
|
{
|
||||||
group = dialog;
|
group = dialog;
|
||||||
dialog = self.zmbdialoggroups[ group ];
|
dialog = self.zmbdialoggroups[ group ];
|
||||||
self.zmbdialoggroups[ group ] = undefined;
|
self.zmbdialoggroups[ group ] = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( level.allowzmbannouncer )
|
if (level.allowzmbannouncer)
|
||||||
{
|
{
|
||||||
alias = game[ "zmbdialog" ][ "prefix" ] + "_" + game[ "zmbdialog" ][ dialog ];
|
alias = game[ "zmbdialog" ][ "prefix" ] + "_" + game[ "zmbdialog" ][ dialog ];
|
||||||
variant = self getleaderdialogvariant( alias );
|
variant = self getleaderdialogvariant(alias);
|
||||||
|
|
||||||
if ( !isDefined( variant ) )
|
if (!isDefined(variant))
|
||||||
{
|
{
|
||||||
full_alias = alias;
|
full_alias = alias;
|
||||||
}
|
}
|
||||||
@ -36,6 +36,6 @@ playleaderdialogonplayer( dialog, team, waittime )
|
|||||||
full_alias = alias + "_" + variant;
|
full_alias = alias + "_" + variant;
|
||||||
}
|
}
|
||||||
|
|
||||||
self playlocalsound( full_alias );
|
self playlocalsound(full_alias);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -5,14 +5,14 @@
|
|||||||
|
|
||||||
init()
|
init()
|
||||||
{
|
{
|
||||||
onplayerconnect_callback( ::onplayerconnect_bank_deposit_box );
|
onplayerconnect_callback(::onplayerconnect_bank_deposit_box);
|
||||||
|
|
||||||
if ( !isDefined( level.ta_vaultfee ) )
|
if (!isDefined(level.ta_vaultfee))
|
||||||
{
|
{
|
||||||
level.ta_vaultfee = 100;
|
level.ta_vaultfee = 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isDefined( level.ta_tellerfee ) )
|
if (!isDefined(level.ta_tellerfee))
|
||||||
{
|
{
|
||||||
level.ta_tellerfee = 100;
|
level.ta_tellerfee = 100;
|
||||||
}
|
}
|
||||||
@ -48,37 +48,37 @@ bank_deposit_box()
|
|||||||
level.bank_deposit_max_amount = 250000;
|
level.bank_deposit_max_amount = 250000;
|
||||||
level.bank_deposit_ddl_increment_amount = 1000;
|
level.bank_deposit_ddl_increment_amount = 1000;
|
||||||
level.bank_account_max = level.bank_deposit_max_amount / level.bank_deposit_ddl_increment_amount;
|
level.bank_account_max = level.bank_deposit_max_amount / level.bank_deposit_ddl_increment_amount;
|
||||||
level.bank_account_increment = int( level.bank_deposit_ddl_increment_amount / 1000 );
|
level.bank_account_increment = int(level.bank_deposit_ddl_increment_amount / 1000);
|
||||||
deposit_triggers = getstructarray( "bank_deposit", "targetname" );
|
deposit_triggers = getstructarray("bank_deposit", "targetname");
|
||||||
array_thread( deposit_triggers, ::bank_deposit_unitrigger );
|
array_thread(deposit_triggers, ::bank_deposit_unitrigger);
|
||||||
withdraw_triggers = getstructarray( "bank_withdraw", "targetname" );
|
withdraw_triggers = getstructarray("bank_withdraw", "targetname");
|
||||||
array_thread( withdraw_triggers, ::bank_withdraw_unitrigger );
|
array_thread(withdraw_triggers, ::bank_withdraw_unitrigger);
|
||||||
}
|
}
|
||||||
|
|
||||||
bank_deposit_unitrigger()
|
bank_deposit_unitrigger()
|
||||||
{
|
{
|
||||||
bank_unitrigger( "bank_deposit", ::trigger_deposit_update_prompt, ::trigger_deposit_think, 5, 5, undefined, 5 );
|
bank_unitrigger("bank_deposit", ::trigger_deposit_update_prompt, ::trigger_deposit_think, 5, 5, undefined, 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
bank_withdraw_unitrigger()
|
bank_withdraw_unitrigger()
|
||||||
{
|
{
|
||||||
bank_unitrigger( "bank_withdraw", ::trigger_withdraw_update_prompt, ::trigger_withdraw_think, 5, 5, undefined, 5 );
|
bank_unitrigger("bank_withdraw", ::trigger_withdraw_update_prompt, ::trigger_withdraw_think, 5, 5, undefined, 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
trigger_deposit_think()
|
trigger_deposit_think()
|
||||||
{
|
{
|
||||||
self endon( "kill_trigger" );
|
self endon("kill_trigger");
|
||||||
|
|
||||||
while ( 1 )
|
while (1)
|
||||||
{
|
{
|
||||||
self waittill( "trigger", player );
|
self waittill("trigger", player);
|
||||||
|
|
||||||
while ( !is_player_valid( player ) )
|
while (!is_player_valid(player))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( player.account_value < level.bank_account_max )
|
if (player.account_value < level.bank_account_max)
|
||||||
{
|
{
|
||||||
account_value = level.bank_account_increment;
|
account_value = level.bank_account_increment;
|
||||||
score = level.bank_deposit_ddl_increment_amount;
|
score = level.bank_deposit_ddl_increment_amount;
|
||||||
@ -96,23 +96,23 @@ trigger_deposit_think()
|
|||||||
score -= score % 10;
|
score -= score % 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
player playsoundtoplayer( "zmb_vault_bank_deposit", player );
|
player playsoundtoplayer("zmb_vault_bank_deposit", player);
|
||||||
player.score -= score;
|
player.score -= score;
|
||||||
player.account_value += account_value;
|
player.account_value += account_value;
|
||||||
|
|
||||||
if ( isDefined( level.custom_bank_deposit_vo ) )
|
if (isDefined(level.custom_bank_deposit_vo))
|
||||||
{
|
{
|
||||||
player thread [[ level.custom_bank_deposit_vo ]]();
|
player thread [[ level.custom_bank_deposit_vo ]]();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( (player.score <= 0) || (player.account_value >= level.bank_account_max) )
|
if ((player.score <= 0) || (player.account_value >= level.bank_account_max))
|
||||||
{
|
{
|
||||||
self sethintstring( "" );
|
self sethintstring("");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player thread do_player_general_vox( "general", "exert_sigh", 10, 50 );
|
player thread do_player_general_vox("general", "exert_sigh", 10, 50);
|
||||||
}
|
}
|
||||||
|
|
||||||
self thread show_balance(player);
|
self thread show_balance(player);
|
||||||
@ -121,18 +121,18 @@ trigger_deposit_think()
|
|||||||
|
|
||||||
trigger_withdraw_think()
|
trigger_withdraw_think()
|
||||||
{
|
{
|
||||||
self endon( "kill_trigger" );
|
self endon("kill_trigger");
|
||||||
|
|
||||||
while ( 1 )
|
while (1)
|
||||||
{
|
{
|
||||||
self waittill( "trigger", player );
|
self waittill("trigger", player);
|
||||||
|
|
||||||
while ( !is_player_valid( player ) )
|
while (!is_player_valid(player))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( player.account_value > 0 )
|
if (player.account_value > 0)
|
||||||
{
|
{
|
||||||
score = level.bank_deposit_ddl_increment_amount;
|
score = level.bank_deposit_ddl_increment_amount;
|
||||||
account_value = level.bank_account_increment;
|
account_value = level.bank_account_increment;
|
||||||
@ -143,59 +143,59 @@ trigger_withdraw_think()
|
|||||||
score = round_up_to_ten(int(account_value * level.bank_deposit_ddl_increment_amount));
|
score = round_up_to_ten(int(account_value * level.bank_deposit_ddl_increment_amount));
|
||||||
}
|
}
|
||||||
|
|
||||||
player playsoundtoplayer( "zmb_vault_bank_withdraw", player );
|
player playsoundtoplayer("zmb_vault_bank_withdraw", player);
|
||||||
player.score += score;
|
player.score += score;
|
||||||
level notify( "bank_withdrawal" );
|
level notify("bank_withdrawal");
|
||||||
player.account_value -= account_value;
|
player.account_value -= account_value;
|
||||||
|
|
||||||
if ( isDefined( level.custom_bank_withdrawl_vo ) )
|
if (isDefined(level.custom_bank_withdrawl_vo))
|
||||||
{
|
{
|
||||||
player thread [[ level.custom_bank_withdrawl_vo ]]();
|
player thread [[ level.custom_bank_withdrawl_vo ]]();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player thread do_player_general_vox( "general", "exert_laugh", 10, 50 );
|
player thread do_player_general_vox("general", "exert_laugh", 10, 50);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( player.account_value <= 0 )
|
if (player.account_value <= 0)
|
||||||
{
|
{
|
||||||
self sethintstring( "" );
|
self sethintstring("");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player thread do_player_general_vox( "general", "exert_sigh", 10, 50 );
|
player thread do_player_general_vox("general", "exert_sigh", 10, 50);
|
||||||
}
|
}
|
||||||
|
|
||||||
self thread show_balance(player);
|
self thread show_balance(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
trigger_deposit_update_prompt( player )
|
trigger_deposit_update_prompt(player)
|
||||||
{
|
{
|
||||||
self thread show_balance(player);
|
self thread show_balance(player);
|
||||||
|
|
||||||
if ( (player.score <= 0) || (player.account_value >= level.bank_account_max) )
|
if ((player.score <= 0) || (player.account_value >= level.bank_account_max))
|
||||||
{
|
{
|
||||||
self sethintstring( "" );
|
self sethintstring("");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
self sethintstring( &"ZOMBIE_BANK_DEPOSIT_PROMPT", level.bank_deposit_ddl_increment_amount );
|
self sethintstring(&"ZOMBIE_BANK_DEPOSIT_PROMPT", level.bank_deposit_ddl_increment_amount);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
trigger_withdraw_update_prompt( player )
|
trigger_withdraw_update_prompt(player)
|
||||||
{
|
{
|
||||||
self thread show_balance(player);
|
self thread show_balance(player);
|
||||||
|
|
||||||
if ( player.account_value <= 0 )
|
if (player.account_value <= 0)
|
||||||
{
|
{
|
||||||
self sethintstring( "" );
|
self sethintstring("");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
self sethintstring( &"ZOMBIE_BANK_WITHDRAW_PROMPT", level.bank_deposit_ddl_increment_amount, level.ta_vaultfee );
|
self sethintstring(&"ZOMBIE_BANK_WITHDRAW_PROMPT", level.bank_deposit_ddl_increment_amount, level.ta_vaultfee);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -216,7 +216,7 @@ show_balance(player)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
hud = newclienthudelem( player );
|
hud = newclienthudelem(player);
|
||||||
hud.alignx = "center";
|
hud.alignx = "center";
|
||||||
hud.aligny = "middle";
|
hud.aligny = "middle";
|
||||||
hud.horzalign = "center";
|
hud.horzalign = "center";
|
||||||
@ -227,13 +227,13 @@ show_balance(player)
|
|||||||
hud.font = "default";
|
hud.font = "default";
|
||||||
hud.fontscale = 1;
|
hud.fontscale = 1;
|
||||||
hud.alpha = 1;
|
hud.alpha = 1;
|
||||||
hud.color = ( 1, 1, 1 );
|
hud.color = (1, 1, 1);
|
||||||
hud.label = &"Account Balance: ";
|
hud.label = &"Account Balance: ";
|
||||||
stub.bankbalancehud[num] = hud;
|
stub.bankbalancehud[num] = hud;
|
||||||
|
|
||||||
hud thread update_balance(player);
|
hud thread update_balance(player);
|
||||||
|
|
||||||
while ( isDefined( self ) )
|
while (isDefined(self))
|
||||||
{
|
{
|
||||||
if (!player isTouching(self) || !is_player_valid(player) || player isSprinting() || player isThrowingGrenade())
|
if (!player isTouching(self) || !is_player_valid(player) || player isSprinting() || player isThrowingGrenade())
|
||||||
{
|
{
|
||||||
@ -257,7 +257,7 @@ update_balance(player)
|
|||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
self setvalue( round_up_to_ten(int(player.account_value * level.bank_deposit_ddl_increment_amount)) );
|
self setvalue(round_up_to_ten(int(player.account_value * level.bank_deposit_ddl_increment_amount)));
|
||||||
|
|
||||||
player waittill("update_account_value");
|
player waittill("update_account_value");
|
||||||
}
|
}
|
||||||
|
@ -16,145 +16,145 @@
|
|||||||
|
|
||||||
door_buy()
|
door_buy()
|
||||||
{
|
{
|
||||||
self waittill( "trigger", who, force );
|
self waittill("trigger", who, force);
|
||||||
|
|
||||||
if ( isdefined( level.custom_door_buy_check ) )
|
if (isdefined(level.custom_door_buy_check))
|
||||||
{
|
{
|
||||||
if ( !who [[ level.custom_door_buy_check ]]( self ) )
|
if (!who [[ level.custom_door_buy_check ]](self))
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( getdvarint( "zombie_unlock_all" ) > 0 || isdefined( force ) && force )
|
if (getdvarint("zombie_unlock_all") > 0 || isdefined(force) && force)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if ( !who usebuttonpressed() )
|
if (!who usebuttonpressed())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if ( who in_revive_trigger() )
|
if (who in_revive_trigger())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if ( is_player_valid( who ) )
|
if (is_player_valid(who))
|
||||||
{
|
{
|
||||||
players = get_players();
|
players = get_players();
|
||||||
cost = self.zombie_cost;
|
cost = self.zombie_cost;
|
||||||
|
|
||||||
if ( who maps\mp\zombies\_zm_pers_upgrades_functions::is_pers_double_points_active() )
|
if (who maps\mp\zombies\_zm_pers_upgrades_functions::is_pers_double_points_active())
|
||||||
cost = who maps\mp\zombies\_zm_pers_upgrades_functions::pers_upgrade_double_points_cost( cost );
|
cost = who maps\mp\zombies\_zm_pers_upgrades_functions::pers_upgrade_double_points_cost(cost);
|
||||||
|
|
||||||
if ( self._door_open == 1 )
|
if (self._door_open == 1)
|
||||||
self.purchaser = undefined;
|
self.purchaser = undefined;
|
||||||
else if ( who.score >= cost )
|
else if (who.score >= cost)
|
||||||
{
|
{
|
||||||
who maps\mp\zombies\_zm_score::minus_to_player_score( cost, 1 );
|
who maps\mp\zombies\_zm_score::minus_to_player_score(cost, 1);
|
||||||
maps\mp\_demo::bookmark( "zm_player_door", gettime(), who );
|
maps\mp\_demo::bookmark("zm_player_door", gettime(), who);
|
||||||
who maps\mp\zombies\_zm_stats::increment_client_stat( "doors_purchased" );
|
who maps\mp\zombies\_zm_stats::increment_client_stat("doors_purchased");
|
||||||
who maps\mp\zombies\_zm_stats::increment_player_stat( "doors_purchased" );
|
who maps\mp\zombies\_zm_stats::increment_player_stat("doors_purchased");
|
||||||
self.purchaser = who;
|
self.purchaser = who;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
play_sound_at_pos( "no_purchase", self.origin );
|
play_sound_at_pos("no_purchase", self.origin);
|
||||||
|
|
||||||
if ( isdefined( level.custom_generic_deny_vo_func ) )
|
if (isdefined(level.custom_generic_deny_vo_func))
|
||||||
who thread [[ level.custom_generic_deny_vo_func ]]( 1 );
|
who thread [[ level.custom_generic_deny_vo_func ]](1);
|
||||||
else
|
else
|
||||||
who maps\mp\zombies\_zm_audio::create_and_play_dialog( "general", "door_deny" );
|
who maps\mp\zombies\_zm_audio::create_and_play_dialog("general", "door_deny");
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( level._door_open_rumble_func ) )
|
if (isdefined(level._door_open_rumble_func))
|
||||||
who thread [[ level._door_open_rumble_func ]]();
|
who thread [[ level._door_open_rumble_func ]]();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
door_opened( cost, quick_close )
|
door_opened(cost, quick_close)
|
||||||
{
|
{
|
||||||
if ( isdefined( self.door_is_moving ) && self.door_is_moving )
|
if (isdefined(self.door_is_moving) && self.door_is_moving)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
play_sound_at_pos( "purchase", self.origin );
|
play_sound_at_pos("purchase", self.origin);
|
||||||
|
|
||||||
self.has_been_opened = 1;
|
self.has_been_opened = 1;
|
||||||
all_trigs = getentarray( self.target, "target" );
|
all_trigs = getentarray(self.target, "target");
|
||||||
self.door_is_moving = 1;
|
self.door_is_moving = 1;
|
||||||
|
|
||||||
foreach ( trig in all_trigs )
|
foreach (trig in all_trigs)
|
||||||
{
|
{
|
||||||
trig.door_is_moving = 1;
|
trig.door_is_moving = 1;
|
||||||
trig trigger_off();
|
trig trigger_off();
|
||||||
trig.has_been_opened = 1;
|
trig.has_been_opened = 1;
|
||||||
|
|
||||||
if ( !isdefined( trig._door_open ) || trig._door_open == 0 )
|
if (!isdefined(trig._door_open) || trig._door_open == 0)
|
||||||
{
|
{
|
||||||
trig._door_open = 1;
|
trig._door_open = 1;
|
||||||
trig notify( "door_opened" );
|
trig notify("door_opened");
|
||||||
level thread maps\mp\zombies\_zm_audio::sndmusicstingerevent( "door_open" );
|
level thread maps\mp\zombies\_zm_audio::sndmusicstingerevent("door_open");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
trig._door_open = 0;
|
trig._door_open = 0;
|
||||||
|
|
||||||
if ( isdefined( trig.script_flag ) && trig._door_open == 1 )
|
if (isdefined(trig.script_flag) && trig._door_open == 1)
|
||||||
{
|
{
|
||||||
tokens = strtok( trig.script_flag, "," );
|
tokens = strtok(trig.script_flag, ",");
|
||||||
|
|
||||||
for ( i = 0; i < tokens.size; i++ )
|
for (i = 0; i < tokens.size; i++)
|
||||||
flag_set( tokens[i] );
|
flag_set(tokens[i]);
|
||||||
}
|
}
|
||||||
else if ( isdefined( trig.script_flag ) && trig._door_open == 0 )
|
else if (isdefined(trig.script_flag) && trig._door_open == 0)
|
||||||
{
|
{
|
||||||
tokens = strtok( trig.script_flag, "," );
|
tokens = strtok(trig.script_flag, ",");
|
||||||
|
|
||||||
for ( i = 0; i < tokens.size; i++ )
|
for (i = 0; i < tokens.size; i++)
|
||||||
flag_clear( tokens[i] );
|
flag_clear(tokens[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( quick_close ) && quick_close )
|
if (isdefined(quick_close) && quick_close)
|
||||||
{
|
{
|
||||||
trig set_hint_string( trig, "" );
|
trig set_hint_string(trig, "");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( trig._door_open == 1 && flag( "door_can_close" ) )
|
if (trig._door_open == 1 && flag("door_can_close"))
|
||||||
{
|
{
|
||||||
trig set_hint_string( trig, "default_buy_door_close" );
|
trig set_hint_string(trig, "default_buy_door_close");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( trig._door_open == 0 )
|
if (trig._door_open == 0)
|
||||||
trig set_hint_string( trig, "default_buy_door", cost );
|
trig set_hint_string(trig, "default_buy_door", cost);
|
||||||
}
|
}
|
||||||
|
|
||||||
level notify( "door_opened" );
|
level notify("door_opened");
|
||||||
|
|
||||||
if ( isdefined( self.doors ) )
|
if (isdefined(self.doors))
|
||||||
{
|
{
|
||||||
is_script_model_door = 0;
|
is_script_model_door = 0;
|
||||||
have_moving_clip_for_door = 0;
|
have_moving_clip_for_door = 0;
|
||||||
use_blocker_clip_for_pathing = 0;
|
use_blocker_clip_for_pathing = 0;
|
||||||
|
|
||||||
foreach ( door in self.doors )
|
foreach (door in self.doors)
|
||||||
{
|
{
|
||||||
if ( is_true( door.ignore_use_blocker_clip_for_pathing_check ) )
|
if (is_true(door.ignore_use_blocker_clip_for_pathing_check))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( door.classname == "script_model" )
|
if (door.classname == "script_model")
|
||||||
{
|
{
|
||||||
is_script_model_door = 1;
|
is_script_model_door = 1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( door.classname == "script_brushmodel" && ( !isdefined( door.script_noteworthy ) || door.script_noteworthy != "clip" ) && ( !isdefined( door.script_string ) || door.script_string != "clip" ) )
|
if (door.classname == "script_brushmodel" && (!isdefined(door.script_noteworthy) || door.script_noteworthy != "clip") && (!isdefined(door.script_string) || door.script_string != "clip"))
|
||||||
have_moving_clip_for_door = 1;
|
have_moving_clip_for_door = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
use_blocker_clip_for_pathing = is_script_model_door && !have_moving_clip_for_door;
|
use_blocker_clip_for_pathing = is_script_model_door && !have_moving_clip_for_door;
|
||||||
|
|
||||||
for ( i = 0; i < self.doors.size; i++ )
|
for (i = 0; i < self.doors.size; i++)
|
||||||
{
|
{
|
||||||
self.doors[i] thread door_activate( self.doors[i].script_transition_time, self._door_open, quick_close, use_blocker_clip_for_pathing );
|
self.doors[i] thread door_activate(self.doors[i].script_transition_time, self._door_open, quick_close, use_blocker_clip_for_pathing);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -162,69 +162,69 @@ door_opened( cost, quick_close )
|
|||||||
wait 1;
|
wait 1;
|
||||||
self.door_is_moving = 0;
|
self.door_is_moving = 0;
|
||||||
|
|
||||||
foreach ( trig in all_trigs )
|
foreach (trig in all_trigs)
|
||||||
trig.door_is_moving = 0;
|
trig.door_is_moving = 0;
|
||||||
|
|
||||||
if ( isdefined( quick_close ) && quick_close )
|
if (isdefined(quick_close) && quick_close)
|
||||||
{
|
{
|
||||||
for ( i = 0; i < all_trigs.size; i++ )
|
for (i = 0; i < all_trigs.size; i++)
|
||||||
all_trigs[i] trigger_on();
|
all_trigs[i] trigger_on();
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( flag( "door_can_close" ) )
|
if (flag("door_can_close"))
|
||||||
{
|
{
|
||||||
wait 2.0;
|
wait 2.0;
|
||||||
|
|
||||||
for ( i = 0; i < all_trigs.size; i++ )
|
for (i = 0; i < all_trigs.size; i++)
|
||||||
all_trigs[i] trigger_on();
|
all_trigs[i] trigger_on();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
handle_post_board_repair_rewards( cost, zbarrier )
|
handle_post_board_repair_rewards(cost, zbarrier)
|
||||||
{
|
{
|
||||||
self maps\mp\zombies\_zm_stats::increment_client_stat( "boards" );
|
self maps\mp\zombies\_zm_stats::increment_client_stat("boards");
|
||||||
self maps\mp\zombies\_zm_stats::increment_player_stat( "boards" );
|
self maps\mp\zombies\_zm_stats::increment_player_stat("boards");
|
||||||
|
|
||||||
if ( isDefined( self.pers[ "boards" ] ) && ( self.pers[ "boards" ] % 10 ) == 0 )
|
if (isDefined(self.pers[ "boards" ]) && (self.pers[ "boards" ] % 10) == 0)
|
||||||
{
|
{
|
||||||
self thread do_player_general_vox( "general", "reboard", 90 );
|
self thread do_player_general_vox("general", "reboard", 90);
|
||||||
}
|
}
|
||||||
|
|
||||||
self maps\mp\zombies\_zm_pers_upgrades_functions::pers_boards_updated( zbarrier );
|
self maps\mp\zombies\_zm_pers_upgrades_functions::pers_boards_updated(zbarrier);
|
||||||
self.rebuild_barrier_reward += cost;
|
self.rebuild_barrier_reward += cost;
|
||||||
|
|
||||||
self maps\mp\zombies\_zm_score::player_add_points( "rebuild_board", cost );
|
self maps\mp\zombies\_zm_score::player_add_points("rebuild_board", cost);
|
||||||
self play_sound_on_ent( "purchase" );
|
self play_sound_on_ent("purchase");
|
||||||
|
|
||||||
if ( isDefined( self.board_repair ) )
|
if (isDefined(self.board_repair))
|
||||||
{
|
{
|
||||||
self.board_repair += 1;
|
self.board_repair += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
player_fails_blocker_repair_trigger_preamble( player, players, trigger, hold_required )
|
player_fails_blocker_repair_trigger_preamble(player, players, trigger, hold_required)
|
||||||
{
|
{
|
||||||
if ( !isdefined( trigger ) )
|
if (!isdefined(trigger))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if ( !is_player_valid( player ) )
|
if (!is_player_valid(player))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if ( players.size == 1 && isdefined( players[0].intermission ) && players[0].intermission == 1 )
|
if (players.size == 1 && isdefined(players[0].intermission) && players[0].intermission == 1)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if ( hold_required && !player usebuttonpressed() )
|
if (hold_required && !player usebuttonpressed())
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if ( !hold_required && !player use_button_held() )
|
if (!hold_required && !player use_button_held())
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if ( player in_revive_trigger() )
|
if (player in_revive_trigger())
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if ( player issprinting() || player isthrowinggrenade() )
|
if (player issprinting() || player isthrowinggrenade())
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -12,193 +12,193 @@
|
|||||||
|
|
||||||
buildable_place_think()
|
buildable_place_think()
|
||||||
{
|
{
|
||||||
self endon( "kill_trigger" );
|
self endon("kill_trigger");
|
||||||
player_built = undefined;
|
player_built = undefined;
|
||||||
|
|
||||||
while ( isDefined( self.stub.built ) && !self.stub.built )
|
while (isDefined(self.stub.built) && !self.stub.built)
|
||||||
{
|
{
|
||||||
self waittill( "trigger", player );
|
self waittill("trigger", player);
|
||||||
|
|
||||||
bind_to = self.stub.buildable_pool scripts\zm\replaced\_zm_buildables_pooled::pooledbuildable_stub_for_equipname( self.stub );
|
bind_to = self.stub.buildable_pool scripts\zm\replaced\_zm_buildables_pooled::pooledbuildable_stub_for_equipname(self.stub);
|
||||||
|
|
||||||
if ( player != self.parent_player )
|
if (player != self.parent_player)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( player.screecher_weapon ) )
|
if (isDefined(player.screecher_weapon))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !is_player_valid( player ) )
|
if (!is_player_valid(player))
|
||||||
{
|
{
|
||||||
player thread ignore_triggers( 0.5 );
|
player thread ignore_triggers(0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
status = player player_can_build( self.stub.buildablezone );
|
status = player player_can_build(self.stub.buildablezone);
|
||||||
|
|
||||||
if ( !status )
|
if (!status)
|
||||||
{
|
{
|
||||||
self.stub.hint_string = "";
|
self.stub.hint_string = "";
|
||||||
self sethintstring( self.stub.hint_string );
|
self sethintstring(self.stub.hint_string);
|
||||||
|
|
||||||
if ( isDefined( self.stub.oncantuse ) )
|
if (isDefined(self.stub.oncantuse))
|
||||||
{
|
{
|
||||||
self.stub [[ self.stub.oncantuse ]]( player );
|
self.stub [[ self.stub.oncantuse ]](player);
|
||||||
}
|
}
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( isDefined( self.stub.onbeginuse ) )
|
if (isDefined(self.stub.onbeginuse))
|
||||||
{
|
{
|
||||||
self.stub [[ self.stub.onbeginuse ]]( player );
|
self.stub [[ self.stub.onbeginuse ]](player);
|
||||||
}
|
}
|
||||||
|
|
||||||
result = self buildable_use_hold_think( player );
|
result = self buildable_use_hold_think(player);
|
||||||
team = player.pers[ "team" ];
|
team = player.pers[ "team" ];
|
||||||
|
|
||||||
if ( isDefined( self.stub.onenduse ) )
|
if (isDefined(self.stub.onenduse))
|
||||||
{
|
{
|
||||||
self.stub [[ self.stub.onenduse ]]( team, player, result );
|
self.stub [[ self.stub.onenduse ]](team, player, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !result )
|
if (!result)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bind_to != self.stub)
|
if (bind_to != self.stub)
|
||||||
{
|
{
|
||||||
scripts\zm\replaced\_zm_buildables_pooled::swap_buildable_fields( self.stub, bind_to );
|
scripts\zm\replaced\_zm_buildables_pooled::swap_buildable_fields(self.stub, bind_to);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( self.stub.onuse ) )
|
if (isDefined(self.stub.onuse))
|
||||||
{
|
{
|
||||||
self.stub [[ self.stub.onuse ]]( player );
|
self.stub [[ self.stub.onuse ]](player);
|
||||||
}
|
}
|
||||||
|
|
||||||
prompt = player maps\mp\zombies\_zm_buildables::player_build( self.stub.buildablezone );
|
prompt = player maps\mp\zombies\_zm_buildables::player_build(self.stub.buildablezone);
|
||||||
player_built = player;
|
player_built = player;
|
||||||
self.stub.hint_string = prompt;
|
self.stub.hint_string = prompt;
|
||||||
self sethintstring( self.stub.hint_string );
|
self sethintstring(self.stub.hint_string);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self.stub.persistent == 4 )
|
if (self.stub.persistent == 4)
|
||||||
{
|
{
|
||||||
self [[ self.stub.custom_completion_callback ]]( player_built );
|
self [[ self.stub.custom_completion_callback ]](player_built);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self.stub.persistent == 0 )
|
if (self.stub.persistent == 0)
|
||||||
{
|
{
|
||||||
self.stub maps\mp\zombies\_zm_buildables::buildablestub_remove();
|
self.stub maps\mp\zombies\_zm_buildables::buildablestub_remove();
|
||||||
thread maps\mp\zombies\_zm_unitrigger::unregister_unitrigger( self.stub );
|
thread maps\mp\zombies\_zm_unitrigger::unregister_unitrigger(self.stub);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self.stub.persistent == 3 )
|
if (self.stub.persistent == 3)
|
||||||
{
|
{
|
||||||
maps\mp\zombies\_zm_buildables::stub_unbuild_buildable( self.stub, 1 );
|
maps\mp\zombies\_zm_buildables::stub_unbuild_buildable(self.stub, 1);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self.stub.persistent == 2 )
|
if (self.stub.persistent == 2)
|
||||||
{
|
{
|
||||||
if ( isDefined( player_built ) )
|
if (isDefined(player_built))
|
||||||
{
|
{
|
||||||
self scripts\zm\replaced\_zm_buildables_pooled::pooledbuildabletrigger_update_prompt( player_built );
|
self scripts\zm\replaced\_zm_buildables_pooled::pooledbuildabletrigger_update_prompt(player_built);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !maps\mp\zombies\_zm_weapons::limited_weapon_below_quota( self.stub.weaponname, undefined ) )
|
if (!maps\mp\zombies\_zm_weapons::limited_weapon_below_quota(self.stub.weaponname, undefined))
|
||||||
{
|
{
|
||||||
self.stub.hint_string = &"ZOMBIE_GO_TO_THE_BOX_LIMITED";
|
self.stub.hint_string = &"ZOMBIE_GO_TO_THE_BOX_LIMITED";
|
||||||
self sethintstring( self.stub.hint_string );
|
self sethintstring(self.stub.hint_string);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( self.stub.bought ) && self.stub.bought )
|
if (isDefined(self.stub.bought) && self.stub.bought)
|
||||||
{
|
{
|
||||||
self.stub.hint_string = &"ZOMBIE_GO_TO_THE_BOX";
|
self.stub.hint_string = &"ZOMBIE_GO_TO_THE_BOX";
|
||||||
self sethintstring( self.stub.hint_string );
|
self sethintstring(self.stub.hint_string);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( self.stub.model ) )
|
if (isDefined(self.stub.model))
|
||||||
{
|
{
|
||||||
self.stub.model notsolid();
|
self.stub.model notsolid();
|
||||||
self.stub.model show();
|
self.stub.model show();
|
||||||
}
|
}
|
||||||
|
|
||||||
while ( self.stub.persistent == 2 )
|
while (self.stub.persistent == 2)
|
||||||
{
|
{
|
||||||
self waittill( "trigger", player );
|
self waittill("trigger", player);
|
||||||
|
|
||||||
current_weapon = player getCurrentWeapon();
|
current_weapon = player getCurrentWeapon();
|
||||||
|
|
||||||
if ( isDefined( player.screecher_weapon ) || is_melee_weapon( current_weapon ) || is_placeable_mine( current_weapon ) )
|
if (isDefined(player.screecher_weapon) || is_melee_weapon(current_weapon) || is_placeable_mine(current_weapon))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !maps\mp\zombies\_zm_weapons::limited_weapon_below_quota( self.stub.weaponname, undefined ) )
|
if (!maps\mp\zombies\_zm_weapons::limited_weapon_below_quota(self.stub.weaponname, undefined))
|
||||||
{
|
{
|
||||||
self.stub.hint_string = &"ZOMBIE_GO_TO_THE_BOX_LIMITED";
|
self.stub.hint_string = &"ZOMBIE_GO_TO_THE_BOX_LIMITED";
|
||||||
self sethintstring( self.stub.hint_string );
|
self sethintstring(self.stub.hint_string);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( self.stub.built ) && !self.stub.built )
|
if (isDefined(self.stub.built) && !self.stub.built)
|
||||||
{
|
{
|
||||||
self.stub.hint_string = "";
|
self.stub.hint_string = "";
|
||||||
self sethintstring( self.stub.hint_string );
|
self sethintstring(self.stub.hint_string);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( player != self.parent_player )
|
if (player != self.parent_player)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !is_player_valid( player ) )
|
if (!is_player_valid(player))
|
||||||
{
|
{
|
||||||
player thread ignore_triggers( 0.5 );
|
player thread ignore_triggers(0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (player.score < self.stub.cost)
|
if (player.score < self.stub.cost)
|
||||||
{
|
{
|
||||||
self play_sound_on_ent( "no_purchase" );
|
self play_sound_on_ent("no_purchase");
|
||||||
player maps\mp\zombies\_zm_audio::create_and_play_dialog( "general", "no_money_weapon" );
|
player maps\mp\zombies\_zm_audio::create_and_play_dialog("general", "no_money_weapon");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
player maps\mp\zombies\_zm_score::minus_to_player_score( self.stub.cost );
|
player maps\mp\zombies\_zm_score::minus_to_player_score(self.stub.cost);
|
||||||
self play_sound_on_ent( "purchase" );
|
self play_sound_on_ent("purchase");
|
||||||
|
|
||||||
self.stub.bought = 1;
|
self.stub.bought = 1;
|
||||||
|
|
||||||
if ( isDefined( self.stub.model ) )
|
if (isDefined(self.stub.model))
|
||||||
{
|
{
|
||||||
self.stub.model thread model_fly_away(self.stub.weaponname);
|
self.stub.model thread model_fly_away(self.stub.weaponname);
|
||||||
}
|
}
|
||||||
|
|
||||||
player maps\mp\zombies\_zm_weapons::weapon_give( self.stub.weaponname );
|
player maps\mp\zombies\_zm_weapons::weapon_give(self.stub.weaponname);
|
||||||
|
|
||||||
if ( isDefined( level.zombie_include_buildables[ self.stub.equipname ].onbuyweapon ) )
|
if (isDefined(level.zombie_include_buildables[ self.stub.equipname ].onbuyweapon))
|
||||||
{
|
{
|
||||||
self [[ level.zombie_include_buildables[ self.stub.equipname ].onbuyweapon ]]( player );
|
self [[ level.zombie_include_buildables[ self.stub.equipname ].onbuyweapon ]](player);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( level.zombie_buildables[ self.stub.equipname ].bought ) )
|
if (isDefined(level.zombie_buildables[ self.stub.equipname ].bought))
|
||||||
{
|
{
|
||||||
self.stub.hint_string = level.zombie_buildables[ self.stub.equipname ].bought;
|
self.stub.hint_string = level.zombie_buildables[ self.stub.equipname ].bought;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( !maps\mp\zombies\_zm_weapons::limited_weapon_below_quota( self.stub.weaponname, undefined ) )
|
if (!maps\mp\zombies\_zm_weapons::limited_weapon_below_quota(self.stub.weaponname, undefined))
|
||||||
{
|
{
|
||||||
self.stub.hint_string = &"ZOMBIE_GO_TO_THE_BOX_LIMITED";
|
self.stub.hint_string = &"ZOMBIE_GO_TO_THE_BOX_LIMITED";
|
||||||
}
|
}
|
||||||
@ -208,97 +208,97 @@ buildable_place_think()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self sethintstring( self.stub.hint_string );
|
self sethintstring(self.stub.hint_string);
|
||||||
player maps\mp\zombies\_zm_buildables::track_buildables_pickedup( self.stub.weaponname );
|
player maps\mp\zombies\_zm_buildables::track_buildables_pickedup(self.stub.weaponname);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else while ( !isDefined( player_built ) || self scripts\zm\replaced\_zm_buildables_pooled::pooledbuildabletrigger_update_prompt( player_built ) )
|
else while (!isDefined(player_built) || self scripts\zm\replaced\_zm_buildables_pooled::pooledbuildabletrigger_update_prompt(player_built))
|
||||||
{
|
{
|
||||||
if ( isDefined( self.stub.model ) )
|
if (isDefined(self.stub.model))
|
||||||
{
|
{
|
||||||
self.stub.model notsolid();
|
self.stub.model notsolid();
|
||||||
self.stub.model show();
|
self.stub.model show();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isDefined( self.stub.stand_model ) && maps\mp\zombies\_zm_equipment::is_limited_equipment( self.stub.weaponname ) )
|
if (!isDefined(self.stub.stand_model) && maps\mp\zombies\_zm_equipment::is_limited_equipment(self.stub.weaponname))
|
||||||
{
|
{
|
||||||
self.stub.stand_model = spawn( "script_model", self.stub.model.origin );
|
self.stub.stand_model = spawn("script_model", self.stub.model.origin);
|
||||||
self.stub.stand_model.angles = self.stub.model.angles;
|
self.stub.stand_model.angles = self.stub.model.angles;
|
||||||
|
|
||||||
if ( self.stub.weaponname == "jetgun_zm" )
|
if (self.stub.weaponname == "jetgun_zm")
|
||||||
{
|
{
|
||||||
self.stub.stand_model setModel( "p6_zm_buildable_sq_electric_box" );
|
self.stub.stand_model setModel("p6_zm_buildable_sq_electric_box");
|
||||||
self.stub.stand_model.origin += (0, 0, -23);
|
self.stub.stand_model.origin += (0, 0, -23);
|
||||||
self.stub.stand_model.angles += (0, 90, 90);
|
self.stub.stand_model.angles += (0, 90, 90);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
while ( self.stub.persistent == 1 )
|
while (self.stub.persistent == 1)
|
||||||
{
|
{
|
||||||
self waittill( "trigger", player );
|
self waittill("trigger", player);
|
||||||
|
|
||||||
if ( isDefined( player.screecher_weapon ) )
|
if (isDefined(player.screecher_weapon))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( self.stub.built ) && !self.stub.built )
|
if (isDefined(self.stub.built) && !self.stub.built)
|
||||||
{
|
{
|
||||||
self.stub.hint_string = "";
|
self.stub.hint_string = "";
|
||||||
self sethintstring( self.stub.hint_string );
|
self sethintstring(self.stub.hint_string);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( player != self.parent_player )
|
if (player != self.parent_player)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !is_player_valid( player ) )
|
if (!is_player_valid(player))
|
||||||
{
|
{
|
||||||
player thread ignore_triggers( 0.5 );
|
player thread ignore_triggers(0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( player has_player_equipment( self.stub.weaponname ) )
|
if (player has_player_equipment(self.stub.weaponname))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (player.score < self.stub.cost)
|
if (player.score < self.stub.cost)
|
||||||
{
|
{
|
||||||
self play_sound_on_ent( "no_purchase" );
|
self play_sound_on_ent("no_purchase");
|
||||||
player maps\mp\zombies\_zm_audio::create_and_play_dialog( "general", "no_money_weapon" );
|
player maps\mp\zombies\_zm_audio::create_and_play_dialog("general", "no_money_weapon");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !maps\mp\zombies\_zm_equipment::is_limited_equipment( self.stub.weaponname ) || !maps\mp\zombies\_zm_equipment::limited_equipment_in_use( self.stub.weaponname ) )
|
if (!maps\mp\zombies\_zm_equipment::is_limited_equipment(self.stub.weaponname) || !maps\mp\zombies\_zm_equipment::limited_equipment_in_use(self.stub.weaponname))
|
||||||
{
|
{
|
||||||
player maps\mp\zombies\_zm_score::minus_to_player_score( self.stub.cost );
|
player maps\mp\zombies\_zm_score::minus_to_player_score(self.stub.cost);
|
||||||
self play_sound_on_ent( "purchase" );
|
self play_sound_on_ent("purchase");
|
||||||
|
|
||||||
player maps\mp\zombies\_zm_equipment::equipment_buy( self.stub.weaponname );
|
player maps\mp\zombies\_zm_equipment::equipment_buy(self.stub.weaponname);
|
||||||
player giveweapon( self.stub.weaponname );
|
player giveweapon(self.stub.weaponname);
|
||||||
player setweaponammoclip( self.stub.weaponname, 1 );
|
player setweaponammoclip(self.stub.weaponname, 1);
|
||||||
|
|
||||||
if ( maps\mp\zombies\_zm_equipment::is_limited_equipment( self.stub.weaponname ) )
|
if (maps\mp\zombies\_zm_equipment::is_limited_equipment(self.stub.weaponname))
|
||||||
{
|
{
|
||||||
if ( isDefined( self.stub.model ) )
|
if (isDefined(self.stub.model))
|
||||||
{
|
{
|
||||||
self.stub.model thread model_go_away(self.stub.weaponname);
|
self.stub.model thread model_go_away(self.stub.weaponname);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( level.zombie_include_buildables[ self.stub.equipname ].onbuyweapon ) )
|
if (isDefined(level.zombie_include_buildables[ self.stub.equipname ].onbuyweapon))
|
||||||
{
|
{
|
||||||
self [[ level.zombie_include_buildables[ self.stub.equipname ].onbuyweapon ]]( player );
|
self [[ level.zombie_include_buildables[ self.stub.equipname ].onbuyweapon ]](player);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self.stub.weaponname != "keys_zm" )
|
if (self.stub.weaponname != "keys_zm")
|
||||||
{
|
{
|
||||||
player setactionslot( 1, "weapon", self.stub.weaponname );
|
player setactionslot(1, "weapon", self.stub.weaponname);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( level.zombie_buildables[ self.stub.equipname ].bought ) )
|
if (isDefined(level.zombie_buildables[ self.stub.equipname ].bought))
|
||||||
{
|
{
|
||||||
self.stub.hint_string = level.zombie_buildables[ self.stub.equipname ].bought;
|
self.stub.hint_string = level.zombie_buildables[ self.stub.equipname ].bought;
|
||||||
}
|
}
|
||||||
@ -307,59 +307,59 @@ buildable_place_think()
|
|||||||
self.stub.hint_string = "";
|
self.stub.hint_string = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
self sethintstring( self.stub.hint_string );
|
self sethintstring(self.stub.hint_string);
|
||||||
player maps\mp\zombies\_zm_buildables::track_buildables_pickedup( self.stub.weaponname );
|
player maps\mp\zombies\_zm_buildables::track_buildables_pickedup(self.stub.weaponname);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
self.stub.hint_string = "";
|
self.stub.hint_string = "";
|
||||||
self sethintstring( self.stub.hint_string );
|
self sethintstring(self.stub.hint_string);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
player_can_build( buildable, continuing )
|
player_can_build(buildable, continuing)
|
||||||
{
|
{
|
||||||
if ( !isdefined( buildable ) )
|
if (!isdefined(buildable))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if ( isdefined( continuing ) && continuing )
|
if (isdefined(continuing) && continuing)
|
||||||
{
|
{
|
||||||
if ( buildable buildable_is_piece_built( buildable.pieces[0] ) )
|
if (buildable buildable_is_piece_built(buildable.pieces[0]))
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else if ( buildable buildable_is_piece_built_or_building( buildable.pieces[0] ) )
|
else if (buildable buildable_is_piece_built_or_building(buildable.pieces[0]))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if ( isdefined( buildable.stub ) && isdefined( buildable.stub.custom_buildablestub_update_prompt ) && isdefined( buildable.stub.playertrigger[0] ) && isdefined( buildable.stub.playertrigger[0].stub ) && !buildable.stub.playertrigger[0].stub [[ buildable.stub.custom_buildablestub_update_prompt ]]( self, 1, buildable.stub.playertrigger[0] ) )
|
if (isdefined(buildable.stub) && isdefined(buildable.stub.custom_buildablestub_update_prompt) && isdefined(buildable.stub.playertrigger[0]) && isdefined(buildable.stub.playertrigger[0].stub) && !buildable.stub.playertrigger[0].stub [[ buildable.stub.custom_buildablestub_update_prompt ]](self, 1, buildable.stub.playertrigger[0]))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
buildable_use_hold_think( player, bind_stub = self.stub )
|
buildable_use_hold_think(player, bind_stub = self.stub)
|
||||||
{
|
{
|
||||||
self thread buildable_play_build_fx( player );
|
self thread buildable_play_build_fx(player);
|
||||||
self thread buildable_use_hold_think_internal( player, bind_stub );
|
self thread buildable_use_hold_think_internal(player, bind_stub);
|
||||||
retval = self waittill_any_return( "build_succeed", "build_failed" );
|
retval = self waittill_any_return("build_succeed", "build_failed");
|
||||||
|
|
||||||
if ( retval == "build_succeed" )
|
if (retval == "build_succeed")
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
buildable_use_hold_think_internal( player, bind_stub = self.stub )
|
buildable_use_hold_think_internal(player, bind_stub = self.stub)
|
||||||
{
|
{
|
||||||
wait 0.01;
|
wait 0.01;
|
||||||
|
|
||||||
if ( !isdefined( self ) )
|
if (!isdefined(self))
|
||||||
{
|
{
|
||||||
self notify( "build_failed" );
|
self notify("build_failed");
|
||||||
|
|
||||||
if ( isdefined( player.buildableaudio ) )
|
if (isdefined(player.buildableaudio))
|
||||||
{
|
{
|
||||||
player.buildableaudio delete();
|
player.buildableaudio delete();
|
||||||
player.buildableaudio = undefined;
|
player.buildableaudio = undefined;
|
||||||
@ -368,191 +368,191 @@ buildable_use_hold_think_internal( player, bind_stub = self.stub )
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isdefined( self.usetime ) )
|
if (!isdefined(self.usetime))
|
||||||
self.usetime = int( 3000 );
|
self.usetime = int(3000);
|
||||||
|
|
||||||
self.build_time = self.usetime;
|
self.build_time = self.usetime;
|
||||||
self.build_start_time = gettime();
|
self.build_start_time = gettime();
|
||||||
build_time = self.build_time;
|
build_time = self.build_time;
|
||||||
build_start_time = self.build_start_time;
|
build_start_time = self.build_start_time;
|
||||||
player disable_player_move_states( 1 );
|
player disable_player_move_states(1);
|
||||||
player increment_is_drinking();
|
player increment_is_drinking();
|
||||||
orgweapon = player getcurrentweapon();
|
orgweapon = player getcurrentweapon();
|
||||||
build_weapon = "zombie_builder_zm";
|
build_weapon = "zombie_builder_zm";
|
||||||
|
|
||||||
if ( isdefined( bind_stub.build_weapon ) )
|
if (isdefined(bind_stub.build_weapon))
|
||||||
build_weapon = bind_stub.build_weapon;
|
build_weapon = bind_stub.build_weapon;
|
||||||
|
|
||||||
player giveweapon( build_weapon );
|
player giveweapon(build_weapon);
|
||||||
player switchtoweapon( build_weapon );
|
player switchtoweapon(build_weapon);
|
||||||
bind_stub.buildablezone buildable_set_piece_building( bind_stub.buildablezone.pieces[0] );
|
bind_stub.buildablezone buildable_set_piece_building(bind_stub.buildablezone.pieces[0]);
|
||||||
player thread player_progress_bar( build_start_time, build_time, bind_stub.building_prompt );
|
player thread player_progress_bar(build_start_time, build_time, bind_stub.building_prompt);
|
||||||
|
|
||||||
if ( isdefined( level.buildable_build_custom_func ) )
|
if (isdefined(level.buildable_build_custom_func))
|
||||||
player thread [[ level.buildable_build_custom_func ]]( self.stub );
|
player thread [[ level.buildable_build_custom_func ]](self.stub);
|
||||||
|
|
||||||
while ( isdefined( self ) && player player_continue_building( bind_stub.buildablezone, self.stub ) && gettime() - self.build_start_time < self.build_time )
|
while (isdefined(self) && player player_continue_building(bind_stub.buildablezone, self.stub) && gettime() - self.build_start_time < self.build_time)
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
|
||||||
player notify( "buildable_progress_end" );
|
player notify("buildable_progress_end");
|
||||||
|
|
||||||
if ( player hasWeapon( orgweapon ) )
|
if (player hasWeapon(orgweapon))
|
||||||
{
|
{
|
||||||
player switchToWeapon( orgweapon );
|
player switchToWeapon(orgweapon);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player maps\mp\zombies\_zm_weapons::switch_back_primary_weapon( orgweapon );
|
player maps\mp\zombies\_zm_weapons::switch_back_primary_weapon(orgweapon);
|
||||||
}
|
}
|
||||||
|
|
||||||
player takeweapon( "zombie_builder_zm" );
|
player takeweapon("zombie_builder_zm");
|
||||||
|
|
||||||
if ( isdefined( player.is_drinking ) && player.is_drinking )
|
if (isdefined(player.is_drinking) && player.is_drinking)
|
||||||
player decrement_is_drinking();
|
player decrement_is_drinking();
|
||||||
|
|
||||||
player enable_player_move_states();
|
player enable_player_move_states();
|
||||||
|
|
||||||
if ( isdefined( self ) && player player_continue_building( bind_stub.buildablezone, self.stub ) && gettime() - self.build_start_time >= self.build_time )
|
if (isdefined(self) && player player_continue_building(bind_stub.buildablezone, self.stub) && gettime() - self.build_start_time >= self.build_time)
|
||||||
{
|
{
|
||||||
buildable_clear_piece_building( bind_stub.buildablezone.pieces[0] );
|
buildable_clear_piece_building(bind_stub.buildablezone.pieces[0]);
|
||||||
self notify( "build_succeed" );
|
self notify("build_succeed");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( isdefined( player.buildableaudio ) )
|
if (isdefined(player.buildableaudio))
|
||||||
{
|
{
|
||||||
player.buildableaudio delete();
|
player.buildableaudio delete();
|
||||||
player.buildableaudio = undefined;
|
player.buildableaudio = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
buildable_clear_piece_building( bind_stub.buildablezone.pieces[0] );
|
buildable_clear_piece_building(bind_stub.buildablezone.pieces[0]);
|
||||||
self notify( "build_failed" );
|
self notify("build_failed");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
player_continue_building( buildablezone, build_stub = buildablezone.stub )
|
player_continue_building(buildablezone, build_stub = buildablezone.stub)
|
||||||
{
|
{
|
||||||
if ( self maps\mp\zombies\_zm_laststand::player_is_in_laststand() || self in_revive_trigger() )
|
if (self maps\mp\zombies\_zm_laststand::player_is_in_laststand() || self in_revive_trigger())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if ( self isthrowinggrenade() )
|
if (self isthrowinggrenade())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if ( !self player_can_build( buildablezone, 1 ) )
|
if (!self player_can_build(buildablezone, 1))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if ( isdefined( self.screecher ) )
|
if (isdefined(self.screecher))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if ( !self usebuttonpressed() )
|
if (!self usebuttonpressed())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if ( !buildablezone buildable_is_piece_building( buildablezone.pieces[0] ) )
|
if (!buildablezone buildable_is_piece_building(buildablezone.pieces[0]))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
trigger = build_stub maps\mp\zombies\_zm_unitrigger::unitrigger_trigger( self );
|
trigger = build_stub maps\mp\zombies\_zm_unitrigger::unitrigger_trigger(self);
|
||||||
|
|
||||||
if ( build_stub.script_unitrigger_type == "unitrigger_radius_use" )
|
if (build_stub.script_unitrigger_type == "unitrigger_radius_use")
|
||||||
{
|
{
|
||||||
torigin = build_stub unitrigger_origin();
|
torigin = build_stub unitrigger_origin();
|
||||||
porigin = self geteye();
|
porigin = self geteye();
|
||||||
radius_sq = 2.25 * build_stub.test_radius_sq;
|
radius_sq = 2.25 * build_stub.test_radius_sq;
|
||||||
|
|
||||||
if ( distance2dsquared( torigin, porigin ) > radius_sq )
|
if (distance2dsquared(torigin, porigin) > radius_sq)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else if ( !isdefined( trigger ) || !trigger istouching( self ) )
|
else if (!isdefined(trigger) || !trigger istouching(self))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if ( isdefined( build_stub.require_look_at ) && build_stub.require_look_at && !self is_player_looking_at( trigger.origin, 0.4 ) )
|
if (isdefined(build_stub.require_look_at) && build_stub.require_look_at && !self is_player_looking_at(trigger.origin, 0.4))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
player_build( buildable, pieces )
|
player_build(buildable, pieces)
|
||||||
{
|
{
|
||||||
foreach ( piece in buildable.pieces )
|
foreach (piece in buildable.pieces)
|
||||||
{
|
{
|
||||||
buildable buildable_set_piece_built( piece );
|
buildable buildable_set_piece_built(piece);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( buildable.stub.model ) )
|
if (isdefined(buildable.stub.model))
|
||||||
{
|
{
|
||||||
for ( i = 0; i < buildable.pieces.size; i++ )
|
for (i = 0; i < buildable.pieces.size; i++)
|
||||||
{
|
{
|
||||||
if ( isdefined( buildable.pieces[i].part_name ) )
|
if (isdefined(buildable.pieces[i].part_name))
|
||||||
{
|
{
|
||||||
buildable.stub.model notsolid();
|
buildable.stub.model notsolid();
|
||||||
|
|
||||||
if ( !( isdefined( buildable.pieces[i].built ) && buildable.pieces[i].built ) )
|
if (!(isdefined(buildable.pieces[i].built) && buildable.pieces[i].built))
|
||||||
{
|
{
|
||||||
buildable.stub.model hidepart( buildable.pieces[i].part_name );
|
buildable.stub.model hidepart(buildable.pieces[i].part_name);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
buildable.stub.model show();
|
buildable.stub.model show();
|
||||||
buildable.stub.model showpart( buildable.pieces[i].part_name );
|
buildable.stub.model showpart(buildable.pieces[i].part_name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isplayer( self ) )
|
if (isplayer(self))
|
||||||
self track_buildable_pieces_built( buildable );
|
self track_buildable_pieces_built(buildable);
|
||||||
|
|
||||||
if ( buildable buildable_all_built() )
|
if (buildable buildable_all_built())
|
||||||
{
|
{
|
||||||
self player_finish_buildable( buildable );
|
self player_finish_buildable(buildable);
|
||||||
buildable.stub buildablestub_finish_build( self );
|
buildable.stub buildablestub_finish_build(self);
|
||||||
|
|
||||||
if ( isplayer( self ) )
|
if (isplayer(self))
|
||||||
self track_buildables_built( buildable );
|
self track_buildables_built(buildable);
|
||||||
|
|
||||||
if ( isdefined( level.buildable_built_custom_func ) )
|
if (isdefined(level.buildable_built_custom_func))
|
||||||
self thread [[ level.buildable_built_custom_func ]]( buildable );
|
self thread [[ level.buildable_built_custom_func ]](buildable);
|
||||||
|
|
||||||
alias = sndbuildablecompletealias( buildable.buildable_name );
|
alias = sndbuildablecompletealias(buildable.buildable_name);
|
||||||
self playsound( alias );
|
self playsound(alias);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
self playsound( "zmb_buildable_piece_add" );
|
self playsound("zmb_buildable_piece_add");
|
||||||
assert( isdefined( level.zombie_buildables[buildable.buildable_name].building ), "Missing builing hint" );
|
assert(isdefined(level.zombie_buildables[buildable.buildable_name].building), "Missing builing hint");
|
||||||
|
|
||||||
if ( isdefined( level.zombie_buildables[buildable.buildable_name].building ) )
|
if (isdefined(level.zombie_buildables[buildable.buildable_name].building))
|
||||||
return level.zombie_buildables[buildable.buildable_name].building;
|
return level.zombie_buildables[buildable.buildable_name].building;
|
||||||
}
|
}
|
||||||
|
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
player_progress_bar( start_time, build_time, building_prompt )
|
player_progress_bar(start_time, build_time, building_prompt)
|
||||||
{
|
{
|
||||||
self.usebar = self createprimaryprogressbar();
|
self.usebar = self createprimaryprogressbar();
|
||||||
self.usebartext = self createprimaryprogressbartext();
|
self.usebartext = self createprimaryprogressbartext();
|
||||||
|
|
||||||
if ( isdefined( building_prompt ) )
|
if (isdefined(building_prompt))
|
||||||
self.usebartext settext( building_prompt );
|
self.usebartext settext(building_prompt);
|
||||||
else
|
else
|
||||||
self.usebartext settext( &"ZOMBIE_BUILDING" );
|
self.usebartext settext(&"ZOMBIE_BUILDING");
|
||||||
|
|
||||||
if ( isdefined( self ) && isdefined( start_time ) && isdefined( build_time ) )
|
if (isdefined(self) && isdefined(start_time) && isdefined(build_time))
|
||||||
self player_progress_bar_update( start_time, build_time );
|
self player_progress_bar_update(start_time, build_time);
|
||||||
|
|
||||||
self.usebartext destroyelem();
|
self.usebartext destroyelem();
|
||||||
self.usebar destroyelem();
|
self.usebar destroyelem();
|
||||||
}
|
}
|
||||||
|
|
||||||
player_progress_bar_update( start_time, build_time )
|
player_progress_bar_update(start_time, build_time)
|
||||||
{
|
{
|
||||||
self endon( "entering_last_stand" );
|
self endon("entering_last_stand");
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
self endon( "buildable_progress_end" );
|
self endon("buildable_progress_end");
|
||||||
|
|
||||||
self.usebar updatebar( 0.01, 1000 / build_time );
|
self.usebar updatebar(0.01, 1000 / build_time);
|
||||||
|
|
||||||
while ( isdefined( self ) && gettime() - start_time < build_time )
|
while (isdefined(self) && gettime() - start_time < build_time)
|
||||||
{
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
}
|
}
|
||||||
@ -573,49 +573,49 @@ model_go_away(weaponname)
|
|||||||
model_fly_away(weaponname)
|
model_fly_away(weaponname)
|
||||||
{
|
{
|
||||||
origin = self.origin;
|
origin = self.origin;
|
||||||
self moveto( self.origin + vectorscale( ( 0, 0, 1 ), 40.0 ), 3 );
|
self moveto(self.origin + vectorscale((0, 0, 1), 40.0), 3);
|
||||||
direction = self.origin;
|
direction = self.origin;
|
||||||
direction = ( direction[1], direction[0], 0 );
|
direction = (direction[1], direction[0], 0);
|
||||||
|
|
||||||
if ( direction[1] < 0 || direction[0] > 0 && direction[1] > 0 )
|
if (direction[1] < 0 || direction[0] > 0 && direction[1] > 0)
|
||||||
direction = ( direction[0], direction[1] * -1, 0 );
|
direction = (direction[0], direction[1] * -1, 0);
|
||||||
else if ( direction[0] < 0 )
|
else if (direction[0] < 0)
|
||||||
direction = ( direction[0] * -1, direction[1], 0 );
|
direction = (direction[0] * -1, direction[1], 0);
|
||||||
|
|
||||||
self vibrate( direction, 10, 0.5, 3 );
|
self vibrate(direction, 10, 0.5, 3);
|
||||||
|
|
||||||
self waittill( "movedone" );
|
self waittill("movedone");
|
||||||
|
|
||||||
self.origin = origin;
|
self.origin = origin;
|
||||||
self.angles = (0, self.angles[1], 0);
|
self.angles = (0, self.angles[1], 0);
|
||||||
self hide();
|
self hide();
|
||||||
playfx( level._effect["poltergeist"], self.origin );
|
playfx(level._effect["poltergeist"], self.origin);
|
||||||
|
|
||||||
self thread model_fly_away_think(weaponname);
|
self thread model_fly_away_think(weaponname);
|
||||||
}
|
}
|
||||||
|
|
||||||
model_fly_away_think(weaponname)
|
model_fly_away_think(weaponname)
|
||||||
{
|
{
|
||||||
joker_model = spawn( "script_model", self.origin - (0, 0, 14) );
|
joker_model = spawn("script_model", self.origin - (0, 0, 14));
|
||||||
joker_model.angles = self.angles + (0, 90, 0);
|
joker_model.angles = self.angles + (0, 90, 0);
|
||||||
joker_model setModel(level.chest_joker_model);
|
joker_model setModel(level.chest_joker_model);
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
while (!maps\mp\zombies\_zm_weapons::limited_weapon_below_quota( weaponname, undefined ))
|
while (!maps\mp\zombies\_zm_weapons::limited_weapon_below_quota(weaponname, undefined))
|
||||||
{
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
}
|
}
|
||||||
|
|
||||||
joker_model rotateto( joker_model.angles + (90, 0, 0), 0.5 );
|
joker_model rotateto(joker_model.angles + (90, 0, 0), 0.5);
|
||||||
joker_model waittill( "rotatedone" );
|
joker_model waittill("rotatedone");
|
||||||
|
|
||||||
while (maps\mp\zombies\_zm_weapons::limited_weapon_below_quota( weaponname, undefined ))
|
while (maps\mp\zombies\_zm_weapons::limited_weapon_below_quota(weaponname, undefined))
|
||||||
{
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
}
|
}
|
||||||
|
|
||||||
joker_model rotateto( joker_model.angles - (90, 0, 0), 0.5 );
|
joker_model rotateto(joker_model.angles - (90, 0, 0), 0.5);
|
||||||
joker_model waittill( "rotatedone" );
|
joker_model waittill("rotatedone");
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -3,12 +3,12 @@
|
|||||||
#include common_scripts\utility;
|
#include common_scripts\utility;
|
||||||
#include maps\mp\zombies\_zm_utility;
|
#include maps\mp\zombies\_zm_utility;
|
||||||
|
|
||||||
add_buildable_to_pool( stub, poolname )
|
add_buildable_to_pool(stub, poolname)
|
||||||
{
|
{
|
||||||
if ( !isdefined( level.buildablepools ) )
|
if (!isdefined(level.buildablepools))
|
||||||
level.buildablepools = [];
|
level.buildablepools = [];
|
||||||
|
|
||||||
if ( !isdefined( level.buildablepools[poolname] ) )
|
if (!isdefined(level.buildablepools[poolname]))
|
||||||
{
|
{
|
||||||
level.buildablepools[poolname] = spawnstruct();
|
level.buildablepools[poolname] = spawnstruct();
|
||||||
level.buildablepools[poolname].stubs = [];
|
level.buildablepools[poolname].stubs = [];
|
||||||
@ -16,90 +16,90 @@ add_buildable_to_pool( stub, poolname )
|
|||||||
|
|
||||||
level.buildablepools[poolname].stubs[level.buildablepools[poolname].stubs.size] = stub;
|
level.buildablepools[poolname].stubs[level.buildablepools[poolname].stubs.size] = stub;
|
||||||
|
|
||||||
if ( !isdefined( level.buildablepools[poolname].buildable_slot ) )
|
if (!isdefined(level.buildablepools[poolname].buildable_slot))
|
||||||
level.buildablepools[poolname].buildable_slot = stub.buildablestruct.buildable_slot;
|
level.buildablepools[poolname].buildable_slot = stub.buildablestruct.buildable_slot;
|
||||||
else
|
else
|
||||||
assert( level.buildablepools[poolname].buildable_slot == stub.buildablestruct.buildable_slot );
|
assert(level.buildablepools[poolname].buildable_slot == stub.buildablestruct.buildable_slot);
|
||||||
|
|
||||||
stub.buildable_pool = level.buildablepools[poolname];
|
stub.buildable_pool = level.buildablepools[poolname];
|
||||||
stub.original_prompt_and_visibility_func = stub.prompt_and_visibility_func;
|
stub.original_prompt_and_visibility_func = stub.prompt_and_visibility_func;
|
||||||
stub.original_trigger_func = stub.trigger_func;
|
stub.original_trigger_func = stub.trigger_func;
|
||||||
stub.prompt_and_visibility_func = ::pooledbuildabletrigger_update_prompt;
|
stub.prompt_and_visibility_func = ::pooledbuildabletrigger_update_prompt;
|
||||||
reregister_unitrigger( stub, ::pooled_buildable_place_think );
|
reregister_unitrigger(stub, ::pooled_buildable_place_think);
|
||||||
}
|
}
|
||||||
|
|
||||||
reregister_unitrigger( unitrigger_stub, new_trigger_func )
|
reregister_unitrigger(unitrigger_stub, new_trigger_func)
|
||||||
{
|
{
|
||||||
static = 0;
|
static = 0;
|
||||||
|
|
||||||
if ( isdefined( unitrigger_stub.in_zone ) )
|
if (isdefined(unitrigger_stub.in_zone))
|
||||||
static = 1;
|
static = 1;
|
||||||
|
|
||||||
unregister_unitrigger( unitrigger_stub );
|
unregister_unitrigger(unitrigger_stub);
|
||||||
unitrigger_stub.trigger_func = new_trigger_func;
|
unitrigger_stub.trigger_func = new_trigger_func;
|
||||||
|
|
||||||
if ( static )
|
if (static)
|
||||||
register_static_unitrigger( unitrigger_stub, new_trigger_func, 0 );
|
register_static_unitrigger(unitrigger_stub, new_trigger_func, 0);
|
||||||
else
|
else
|
||||||
register_unitrigger( unitrigger_stub, new_trigger_func );
|
register_unitrigger(unitrigger_stub, new_trigger_func);
|
||||||
}
|
}
|
||||||
|
|
||||||
randomize_pooled_buildables( poolname )
|
randomize_pooled_buildables(poolname)
|
||||||
{
|
{
|
||||||
level waittill( "buildables_setup" );
|
level waittill("buildables_setup");
|
||||||
|
|
||||||
if ( isdefined( level.buildablepools[poolname] ) )
|
if (isdefined(level.buildablepools[poolname]))
|
||||||
{
|
{
|
||||||
count = level.buildablepools[poolname].stubs.size;
|
count = level.buildablepools[poolname].stubs.size;
|
||||||
|
|
||||||
if ( count > 1 )
|
if (count > 1)
|
||||||
{
|
{
|
||||||
for ( i = 0; i < count; i++ )
|
for (i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
rand = randomint(count);
|
rand = randomint(count);
|
||||||
|
|
||||||
if ( rand != i )
|
if (rand != i)
|
||||||
{
|
{
|
||||||
swap_buildable_fields( level.buildablepools[poolname].stubs[i], level.buildablepools[poolname].stubs[rand] );
|
swap_buildable_fields(level.buildablepools[poolname].stubs[i], level.buildablepools[poolname].stubs[rand]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pooledbuildabletrigger_update_prompt( player )
|
pooledbuildabletrigger_update_prompt(player)
|
||||||
{
|
{
|
||||||
can_use = self.stub pooledbuildablestub_update_prompt( player, self );
|
can_use = self.stub pooledbuildablestub_update_prompt(player, self);
|
||||||
|
|
||||||
if (can_use && is_true(self.stub.built))
|
if (can_use && is_true(self.stub.built))
|
||||||
{
|
{
|
||||||
self sethintstring( self.stub.hint_string, " [Cost: " + self.stub.cost + "]" );
|
self sethintstring(self.stub.hint_string, " [Cost: " + self.stub.cost + "]");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
self sethintstring( self.stub.hint_string );
|
self sethintstring(self.stub.hint_string);
|
||||||
}
|
}
|
||||||
|
|
||||||
self setcursorhint( "HINT_NOICON" );
|
self setcursorhint("HINT_NOICON");
|
||||||
|
|
||||||
return can_use;
|
return can_use;
|
||||||
}
|
}
|
||||||
|
|
||||||
pooledbuildablestub_update_prompt( player, trigger )
|
pooledbuildablestub_update_prompt(player, trigger)
|
||||||
{
|
{
|
||||||
if ( !self anystub_update_prompt( player ) )
|
if (!self anystub_update_prompt(player))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
can_use = 1;
|
can_use = 1;
|
||||||
|
|
||||||
if ( isdefined( self.custom_buildablestub_update_prompt ) && !self [[ self.custom_buildablestub_update_prompt ]]( player ) )
|
if (isdefined(self.custom_buildablestub_update_prompt) && !self [[ self.custom_buildablestub_update_prompt ]](player))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
self.cursor_hint = "HINT_NOICON";
|
self.cursor_hint = "HINT_NOICON";
|
||||||
self.cursor_hint_weapon = undefined;
|
self.cursor_hint_weapon = undefined;
|
||||||
piece = undefined;
|
piece = undefined;
|
||||||
|
|
||||||
if ( !( isdefined( self.built ) && self.built ) )
|
if (!(isdefined(self.built) && self.built))
|
||||||
{
|
{
|
||||||
if (!is_true(self.solo_pool))
|
if (!is_true(self.solo_pool))
|
||||||
{
|
{
|
||||||
@ -117,10 +117,10 @@ pooledbuildablestub_update_prompt( player, trigger )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
self notify( "kill_choose_open_buildable" );
|
self notify("kill_choose_open_buildable");
|
||||||
self.open_buildable_checking_input = 0;
|
self.open_buildable_checking_input = 0;
|
||||||
|
|
||||||
if ( isdefined( self.openbuildablehudelem ) )
|
if (isdefined(self.openbuildablehudelem))
|
||||||
{
|
{
|
||||||
self.openbuildablehudelem destroy();
|
self.openbuildablehudelem destroy();
|
||||||
self.openbuildablehudelem = undefined;
|
self.openbuildablehudelem = undefined;
|
||||||
@ -134,23 +134,23 @@ pooledbuildablestub_update_prompt( player, trigger )
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( level.zombie_buildables[self.equipname].hint ) )
|
if (isdefined(level.zombie_buildables[self.equipname].hint))
|
||||||
self.hint_string = level.zombie_buildables[self.equipname].hint;
|
self.hint_string = level.zombie_buildables[self.equipname].hint;
|
||||||
else
|
else
|
||||||
self.hint_string = "Missing buildable hint";
|
self.hint_string = "Missing buildable hint";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return trigger [[ self.original_prompt_and_visibility_func ]]( player );
|
return trigger [[ self.original_prompt_and_visibility_func ]](player);
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
find_bench( bench_name )
|
find_bench(bench_name)
|
||||||
{
|
{
|
||||||
return getent( bench_name, "targetname" );
|
return getent(bench_name, "targetname");
|
||||||
}
|
}
|
||||||
|
|
||||||
swap_buildable_fields( stub1, stub2 )
|
swap_buildable_fields(stub1, stub2)
|
||||||
{
|
{
|
||||||
temp = stub2.buildablezone;
|
temp = stub2.buildablezone;
|
||||||
stub2.buildablezone = stub1.buildablezone;
|
stub2.buildablezone = stub1.buildablezone;
|
||||||
@ -200,22 +200,22 @@ swap_buildable_fields( stub1, stub2 )
|
|||||||
bench2 = undefined;
|
bench2 = undefined;
|
||||||
transfer_pos_as_is = 1;
|
transfer_pos_as_is = 1;
|
||||||
|
|
||||||
if ( isdefined( stub1.model.target ) && isdefined( stub2.model.target ) )
|
if (isdefined(stub1.model.target) && isdefined(stub2.model.target))
|
||||||
{
|
{
|
||||||
bench1 = find_bench( stub1.model.target );
|
bench1 = find_bench(stub1.model.target);
|
||||||
bench2 = find_bench( stub2.model.target );
|
bench2 = find_bench(stub2.model.target);
|
||||||
|
|
||||||
if ( isdefined( bench1 ) && isdefined( bench2 ) )
|
if (isdefined(bench1) && isdefined(bench2))
|
||||||
{
|
{
|
||||||
transfer_pos_as_is = 0;
|
transfer_pos_as_is = 0;
|
||||||
temp = [];
|
temp = [];
|
||||||
temp[0] = bench1 worldtolocalcoords( stub1.model.origin );
|
temp[0] = bench1 worldtolocalcoords(stub1.model.origin);
|
||||||
temp[1] = stub1.model.angles - bench1.angles;
|
temp[1] = stub1.model.angles - bench1.angles;
|
||||||
temp[2] = bench2 worldtolocalcoords( stub2.model.origin );
|
temp[2] = bench2 worldtolocalcoords(stub2.model.origin);
|
||||||
temp[3] = stub2.model.angles - bench2.angles;
|
temp[3] = stub2.model.angles - bench2.angles;
|
||||||
stub1.model.origin = bench2 localtoworldcoords( temp[0] );
|
stub1.model.origin = bench2 localtoworldcoords(temp[0]);
|
||||||
stub1.model.angles = bench2.angles + temp[1];
|
stub1.model.angles = bench2.angles + temp[1];
|
||||||
stub2.model.origin = bench1 localtoworldcoords( temp[2] );
|
stub2.model.origin = bench1 localtoworldcoords(temp[2]);
|
||||||
stub2.model.angles = bench1.angles + temp[3];
|
stub2.model.angles = bench1.angles + temp[3];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -228,7 +228,7 @@ swap_buildable_fields( stub1, stub2 )
|
|||||||
stub2.model = stub1.model;
|
stub2.model = stub1.model;
|
||||||
stub1.model = temp;
|
stub1.model = temp;
|
||||||
|
|
||||||
if ( transfer_pos_as_is )
|
if (transfer_pos_as_is)
|
||||||
{
|
{
|
||||||
temp = [];
|
temp = [];
|
||||||
temp[0] = stub2.model.origin;
|
temp[0] = stub2.model.origin;
|
||||||
@ -400,82 +400,82 @@ swap_buildable_fields_model_offset(stub1, stub2)
|
|||||||
|
|
||||||
pooled_buildable_place_think()
|
pooled_buildable_place_think()
|
||||||
{
|
{
|
||||||
self endon( "kill_trigger" );
|
self endon("kill_trigger");
|
||||||
|
|
||||||
if ( isdefined( self.stub.built ) && self.stub.built )
|
if (isdefined(self.stub.built) && self.stub.built)
|
||||||
return scripts\zm\replaced\_zm_buildables::buildable_place_think();
|
return scripts\zm\replaced\_zm_buildables::buildable_place_think();
|
||||||
|
|
||||||
while ( !( isdefined( self.stub.built ) && self.stub.built ) )
|
while (!(isdefined(self.stub.built) && self.stub.built))
|
||||||
{
|
{
|
||||||
self waittill( "trigger", player );
|
self waittill("trigger", player);
|
||||||
|
|
||||||
if ( player != self.parent_player )
|
if (player != self.parent_player)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( isdefined( player.screecher_weapon ) )
|
if (isdefined(player.screecher_weapon))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( !is_player_valid( player ) )
|
if (!is_player_valid(player))
|
||||||
{
|
{
|
||||||
player thread ignore_triggers( 0.5 );
|
player thread ignore_triggers(0.5);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
bind_to = self.stub.buildable_pool pooledbuildable_stub_for_equipname( level.buildables_available[self.stub.buildables_available_index] );
|
bind_to = self.stub.buildable_pool pooledbuildable_stub_for_equipname(level.buildables_available[self.stub.buildables_available_index]);
|
||||||
|
|
||||||
if ( !isdefined( bind_to ) || isdefined( self.stub.bound_to_buildable ) && self.stub.bound_to_buildable != bind_to || isdefined( bind_to.bound_to_buildable ) && self.stub != bind_to.bound_to_buildable )
|
if (!isdefined(bind_to) || isdefined(self.stub.bound_to_buildable) && self.stub.bound_to_buildable != bind_to || isdefined(bind_to.bound_to_buildable) && self.stub != bind_to.bound_to_buildable)
|
||||||
{
|
{
|
||||||
self.stub.hint_string = "";
|
self.stub.hint_string = "";
|
||||||
self sethintstring( self.stub.hint_string );
|
self sethintstring(self.stub.hint_string);
|
||||||
|
|
||||||
if ( isdefined( self.stub.oncantuse ) )
|
if (isdefined(self.stub.oncantuse))
|
||||||
self.stub [[ self.stub.oncantuse ]]( player );
|
self.stub [[ self.stub.oncantuse ]](player);
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
status = player scripts\zm\replaced\_zm_buildables::player_can_build( bind_to.buildablezone );
|
status = player scripts\zm\replaced\_zm_buildables::player_can_build(bind_to.buildablezone);
|
||||||
|
|
||||||
if ( !status )
|
if (!status)
|
||||||
{
|
{
|
||||||
self.stub.hint_string = "";
|
self.stub.hint_string = "";
|
||||||
self sethintstring( self.stub.hint_string );
|
self sethintstring(self.stub.hint_string);
|
||||||
|
|
||||||
if ( isdefined( bind_to.oncantuse ) )
|
if (isdefined(bind_to.oncantuse))
|
||||||
bind_to [[ bind_to.oncantuse ]]( player );
|
bind_to [[ bind_to.oncantuse ]](player);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( isdefined( bind_to.onbeginuse ) )
|
if (isdefined(bind_to.onbeginuse))
|
||||||
self.stub [[ bind_to.onbeginuse ]]( player );
|
self.stub [[ bind_to.onbeginuse ]](player);
|
||||||
|
|
||||||
result = self scripts\zm\replaced\_zm_buildables::buildable_use_hold_think( player, bind_to );
|
result = self scripts\zm\replaced\_zm_buildables::buildable_use_hold_think(player, bind_to);
|
||||||
team = player.pers["team"];
|
team = player.pers["team"];
|
||||||
|
|
||||||
if ( result )
|
if (result)
|
||||||
{
|
{
|
||||||
if ( isdefined( self.stub.bound_to_buildable ) && self.stub.bound_to_buildable != bind_to )
|
if (isdefined(self.stub.bound_to_buildable) && self.stub.bound_to_buildable != bind_to)
|
||||||
result = 0;
|
result = 0;
|
||||||
|
|
||||||
if ( isdefined( bind_to.bound_to_buildable ) && self.stub != bind_to.bound_to_buildable )
|
if (isdefined(bind_to.bound_to_buildable) && self.stub != bind_to.bound_to_buildable)
|
||||||
result = 0;
|
result = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( bind_to.onenduse ) )
|
if (isdefined(bind_to.onenduse))
|
||||||
self.stub [[ bind_to.onenduse ]]( team, player, result );
|
self.stub [[ bind_to.onenduse ]](team, player, result);
|
||||||
|
|
||||||
if ( !result )
|
if (!result)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( bind_to != self.stub )
|
if (bind_to != self.stub)
|
||||||
{
|
{
|
||||||
swap_buildable_fields( self.stub, bind_to );
|
swap_buildable_fields(self.stub, bind_to);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( self.stub.onuse ) )
|
if (isdefined(self.stub.onuse))
|
||||||
self.stub [[ self.stub.onuse ]]( player );
|
self.stub [[ self.stub.onuse ]](player);
|
||||||
|
|
||||||
prompt = player scripts\zm\replaced\_zm_buildables::player_build( self.stub.buildablezone );
|
prompt = player scripts\zm\replaced\_zm_buildables::player_build(self.stub.buildablezone);
|
||||||
self.stub.hint_string = self.stub.trigger_hintstring;
|
self.stub.hint_string = self.stub.trigger_hintstring;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -501,40 +501,40 @@ pooled_buildable_place_update_all()
|
|||||||
{
|
{
|
||||||
players = get_players();
|
players = get_players();
|
||||||
|
|
||||||
foreach ( player in players )
|
foreach (player in players)
|
||||||
{
|
{
|
||||||
num = player getentitynumber();
|
num = player getentitynumber();
|
||||||
|
|
||||||
if ( isDefined( self.stub.playertrigger[num] ) )
|
if (isDefined(self.stub.playertrigger[num]))
|
||||||
{
|
{
|
||||||
self.stub.playertrigger[num] notify( "kill_trigger" );
|
self.stub.playertrigger[num] notify("kill_trigger");
|
||||||
self.stub.playertrigger[num] pooledbuildabletrigger_update_prompt( player );
|
self.stub.playertrigger[num] pooledbuildabletrigger_update_prompt(player);
|
||||||
self.stub.playertrigger[num] pooled_buildable_place_think();
|
self.stub.playertrigger[num] pooled_buildable_place_think();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pooledbuildable_stub_for_equipname( equipname )
|
pooledbuildable_stub_for_equipname(equipname)
|
||||||
{
|
{
|
||||||
foreach ( stub in self.stubs )
|
foreach (stub in self.stubs)
|
||||||
{
|
{
|
||||||
if ( isdefined( stub.bound_to_buildable ) )
|
if (isdefined(stub.bound_to_buildable))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( stub.equipname == equipname )
|
if (stub.equipname == equipname)
|
||||||
return stub;
|
return stub;
|
||||||
}
|
}
|
||||||
|
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
choose_open_buildable( player )
|
choose_open_buildable(player)
|
||||||
{
|
{
|
||||||
self endon( "kill_choose_open_buildable" );
|
self endon("kill_choose_open_buildable");
|
||||||
|
|
||||||
num = player getentitynumber();
|
num = player getentitynumber();
|
||||||
got_input = 1;
|
got_input = 1;
|
||||||
hud = newclienthudelem( player );
|
hud = newclienthudelem(player);
|
||||||
hud.alignx = "center";
|
hud.alignx = "center";
|
||||||
hud.aligny = "middle";
|
hud.aligny = "middle";
|
||||||
hud.horzalign = "center";
|
hud.horzalign = "center";
|
||||||
@ -545,8 +545,8 @@ choose_open_buildable( player )
|
|||||||
hud.font = "default";
|
hud.font = "default";
|
||||||
hud.fontscale = 1;
|
hud.fontscale = 1;
|
||||||
hud.alpha = 1;
|
hud.alpha = 1;
|
||||||
hud.color = ( 1, 1, 1 );
|
hud.color = (1, 1, 1);
|
||||||
hud settext( "Press [{+actionslot 1}] or [{+actionslot 2}] to change item" );
|
hud settext("Press [{+actionslot 1}] or [{+actionslot 2}] to change item");
|
||||||
self.open_buildable_checking_input = 1;
|
self.open_buildable_checking_input = 1;
|
||||||
self.openbuildablehudelem = hud;
|
self.openbuildablehudelem = hud;
|
||||||
|
|
||||||
@ -555,7 +555,7 @@ choose_open_buildable( player )
|
|||||||
self.buildables_available_index = 0;
|
self.buildables_available_index = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
while ( isDefined( self.playertrigger[ num ] ) && !self.built )
|
while (isDefined(self.playertrigger[ num ]) && !self.built)
|
||||||
{
|
{
|
||||||
if (!player isTouching(self.playertrigger[num]) || !player is_player_looking_at(self.playertrigger[num].origin, 0.76) || !is_player_valid(player) || player isSprinting() || player isThrowingGrenade())
|
if (!player isTouching(self.playertrigger[num]) || !player is_player_looking_at(self.playertrigger[num].origin, 0.76) || !is_player_valid(player) || player isSprinting() || player isThrowingGrenade())
|
||||||
{
|
{
|
||||||
@ -566,27 +566,27 @@ choose_open_buildable( player )
|
|||||||
|
|
||||||
hud.alpha = 1;
|
hud.alpha = 1;
|
||||||
|
|
||||||
if ( player actionslotonebuttonpressed() )
|
if (player actionslotonebuttonpressed())
|
||||||
{
|
{
|
||||||
self.buildables_available_index++;
|
self.buildables_available_index++;
|
||||||
got_input = 1;
|
got_input = 1;
|
||||||
}
|
}
|
||||||
else if ( player actionslottwobuttonpressed() )
|
else if (player actionslottwobuttonpressed())
|
||||||
{
|
{
|
||||||
self.buildables_available_index--;
|
self.buildables_available_index--;
|
||||||
got_input = 1;
|
got_input = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self.buildables_available_index >= level.buildables_available.size )
|
if (self.buildables_available_index >= level.buildables_available.size)
|
||||||
{
|
{
|
||||||
self.buildables_available_index = 0;
|
self.buildables_available_index = 0;
|
||||||
}
|
}
|
||||||
else if ( self.buildables_available_index < 0 )
|
else if (self.buildables_available_index < 0)
|
||||||
{
|
{
|
||||||
self.buildables_available_index = level.buildables_available.size - 1;
|
self.buildables_available_index = level.buildables_available.size - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( got_input )
|
if (got_input)
|
||||||
{
|
{
|
||||||
equipname = level.buildables_available[self.buildables_available_index];
|
equipname = level.buildables_available[self.buildables_available_index];
|
||||||
self.hint_string = level.zombie_buildables[equipname].hint;
|
self.hint_string = level.zombie_buildables[equipname].hint;
|
||||||
|
@ -13,23 +13,23 @@ init()
|
|||||||
stats_init();
|
stats_init();
|
||||||
level.a_m_challenge_boards = [];
|
level.a_m_challenge_boards = [];
|
||||||
level.a_uts_challenge_boxes = [];
|
level.a_uts_challenge_boxes = [];
|
||||||
a_m_challenge_boxes = getentarray( "challenge_box", "targetname" );
|
a_m_challenge_boxes = getentarray("challenge_box", "targetname");
|
||||||
array_thread( a_m_challenge_boxes, ::box_init );
|
array_thread(a_m_challenge_boxes, ::box_init);
|
||||||
onplayerconnect_callback( ::onplayerconnect );
|
onplayerconnect_callback(::onplayerconnect);
|
||||||
n_bits = getminbitcountfornum( 14 );
|
n_bits = getminbitcountfornum(14);
|
||||||
registerclientfield( "toplayer", "challenge_complete_1", 14000, 1, "int" );
|
registerclientfield("toplayer", "challenge_complete_1", 14000, 1, "int");
|
||||||
registerclientfield( "toplayer", "challenge_complete_2", 14000, 1, "int" );
|
registerclientfield("toplayer", "challenge_complete_2", 14000, 1, "int");
|
||||||
registerclientfield( "toplayer", "challenge_complete_3", 14000, 1, "int" );
|
registerclientfield("toplayer", "challenge_complete_3", 14000, 1, "int");
|
||||||
registerclientfield( "toplayer", "challenge_complete_4", 14000, 1, "int" );
|
registerclientfield("toplayer", "challenge_complete_4", 14000, 1, "int");
|
||||||
}
|
}
|
||||||
|
|
||||||
#using_animtree("fxanim_props_dlc4");
|
#using_animtree("fxanim_props_dlc4");
|
||||||
|
|
||||||
box_init()
|
box_init()
|
||||||
{
|
{
|
||||||
self useanimtree( #animtree );
|
self useanimtree(#animtree);
|
||||||
s_unitrigger_stub = spawnstruct();
|
s_unitrigger_stub = spawnstruct();
|
||||||
s_unitrigger_stub.origin = self.origin + ( 0, 0, 0 );
|
s_unitrigger_stub.origin = self.origin + (0, 0, 0);
|
||||||
s_unitrigger_stub.angles = self.angles;
|
s_unitrigger_stub.angles = self.angles;
|
||||||
s_unitrigger_stub.radius = 64;
|
s_unitrigger_stub.radius = 64;
|
||||||
s_unitrigger_stub.script_length = 64;
|
s_unitrigger_stub.script_length = 64;
|
||||||
@ -39,66 +39,66 @@ box_init()
|
|||||||
s_unitrigger_stub.hint_string = &"";
|
s_unitrigger_stub.hint_string = &"";
|
||||||
s_unitrigger_stub.script_unitrigger_type = "unitrigger_box_use";
|
s_unitrigger_stub.script_unitrigger_type = "unitrigger_box_use";
|
||||||
s_unitrigger_stub.prompt_and_visibility_func = ::box_prompt_and_visiblity;
|
s_unitrigger_stub.prompt_and_visibility_func = ::box_prompt_and_visiblity;
|
||||||
s_unitrigger_stub ent_flag_init( "waiting_for_grab" );
|
s_unitrigger_stub ent_flag_init("waiting_for_grab");
|
||||||
s_unitrigger_stub ent_flag_init( "reward_timeout" );
|
s_unitrigger_stub ent_flag_init("reward_timeout");
|
||||||
s_unitrigger_stub.b_busy = 0;
|
s_unitrigger_stub.b_busy = 0;
|
||||||
s_unitrigger_stub.m_box = self;
|
s_unitrigger_stub.m_box = self;
|
||||||
s_unitrigger_stub.b_disable_trigger = 0;
|
s_unitrigger_stub.b_disable_trigger = 0;
|
||||||
|
|
||||||
if ( isdefined( self.script_string ) )
|
if (isdefined(self.script_string))
|
||||||
s_unitrigger_stub.str_location = self.script_string;
|
s_unitrigger_stub.str_location = self.script_string;
|
||||||
|
|
||||||
if ( isdefined( s_unitrigger_stub.m_box.target ) )
|
if (isdefined(s_unitrigger_stub.m_box.target))
|
||||||
{
|
{
|
||||||
s_unitrigger_stub.m_board = getent( s_unitrigger_stub.m_box.target, "targetname" );
|
s_unitrigger_stub.m_board = getent(s_unitrigger_stub.m_box.target, "targetname");
|
||||||
s_unitrigger_stub board_init( s_unitrigger_stub.m_board );
|
s_unitrigger_stub board_init(s_unitrigger_stub.m_board);
|
||||||
}
|
}
|
||||||
|
|
||||||
unitrigger_force_per_player_triggers( s_unitrigger_stub, 1 );
|
unitrigger_force_per_player_triggers(s_unitrigger_stub, 1);
|
||||||
level.a_uts_challenge_boxes[level.a_uts_challenge_boxes.size] = s_unitrigger_stub;
|
level.a_uts_challenge_boxes[level.a_uts_challenge_boxes.size] = s_unitrigger_stub;
|
||||||
maps\mp\zombies\_zm_unitrigger::register_static_unitrigger( s_unitrigger_stub, ::box_think );
|
maps\mp\zombies\_zm_unitrigger::register_static_unitrigger(s_unitrigger_stub, ::box_think);
|
||||||
}
|
}
|
||||||
|
|
||||||
box_think()
|
box_think()
|
||||||
{
|
{
|
||||||
self endon( "kill_trigger" );
|
self endon("kill_trigger");
|
||||||
s_team = level._challenges.s_team;
|
s_team = level._challenges.s_team;
|
||||||
|
|
||||||
while ( true )
|
while (true)
|
||||||
{
|
{
|
||||||
self waittill( "trigger", player );
|
self waittill("trigger", player);
|
||||||
|
|
||||||
if ( !is_player_valid( player ) )
|
if (!is_player_valid(player))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( self.stub.b_busy )
|
if (self.stub.b_busy)
|
||||||
{
|
{
|
||||||
current_weapon = player getcurrentweapon();
|
current_weapon = player getcurrentweapon();
|
||||||
|
|
||||||
if ( isdefined( player.intermission ) && player.intermission || is_melee_weapon( current_weapon ) || is_placeable_mine( current_weapon ) || is_equipment_that_blocks_purchase( current_weapon ) || current_weapon == "none" || player maps\mp\zombies\_zm_laststand::player_is_in_laststand() || player isthrowinggrenade() || player in_revive_trigger() || player isswitchingweapons() || player.is_drinking > 0 )
|
if (isdefined(player.intermission) && player.intermission || is_melee_weapon(current_weapon) || is_placeable_mine(current_weapon) || is_equipment_that_blocks_purchase(current_weapon) || current_weapon == "none" || player maps\mp\zombies\_zm_laststand::player_is_in_laststand() || player isthrowinggrenade() || player in_revive_trigger() || player isswitchingweapons() || player.is_drinking > 0)
|
||||||
{
|
{
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self.stub ent_flag( "waiting_for_grab" ) )
|
if (self.stub ent_flag("waiting_for_grab"))
|
||||||
{
|
{
|
||||||
if ( !isdefined( self.stub.player_using ) )
|
if (!isdefined(self.stub.player_using))
|
||||||
self.stub.player_using = player;
|
self.stub.player_using = player;
|
||||||
|
|
||||||
if ( player == self.stub.player_using )
|
if (player == self.stub.player_using)
|
||||||
self.stub ent_flag_clear( "waiting_for_grab" );
|
self.stub ent_flag_clear("waiting_for_grab");
|
||||||
}
|
}
|
||||||
|
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self.b_can_open )
|
if (self.b_can_open)
|
||||||
{
|
{
|
||||||
self.stub.hint_string = &"";
|
self.stub.hint_string = &"";
|
||||||
self sethintstring( self.stub.hint_string );
|
self sethintstring(self.stub.hint_string);
|
||||||
level thread open_box( player, self.stub );
|
level thread open_box(player, self.stub);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -6,13 +6,13 @@
|
|||||||
|
|
||||||
chugabud_laststand()
|
chugabud_laststand()
|
||||||
{
|
{
|
||||||
self endon( "player_suicide" );
|
self endon("player_suicide");
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
self endon( "chugabud_bleedout" );
|
self endon("chugabud_bleedout");
|
||||||
|
|
||||||
if ( isdefined( self.e_chugabud_corpse ) )
|
if (isdefined(self.e_chugabud_corpse))
|
||||||
{
|
{
|
||||||
self notify( "chugabud_handle_multiple_instances" );
|
self notify("chugabud_handle_multiple_instances");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -23,34 +23,34 @@ chugabud_laststand()
|
|||||||
self chugabud_fake_death();
|
self chugabud_fake_death();
|
||||||
wait 3;
|
wait 3;
|
||||||
|
|
||||||
if ( isdefined( self.insta_killed ) && self.insta_killed || isdefined( self.disable_chugabud_corpse ) )
|
if (isdefined(self.insta_killed) && self.insta_killed || isdefined(self.disable_chugabud_corpse))
|
||||||
create_corpse = 0;
|
create_corpse = 0;
|
||||||
else
|
else
|
||||||
create_corpse = 1;
|
create_corpse = 1;
|
||||||
|
|
||||||
if ( create_corpse == 1 )
|
if (create_corpse == 1)
|
||||||
{
|
{
|
||||||
if ( isdefined( level._chugabug_reject_corpse_override_func ) )
|
if (isdefined(level._chugabug_reject_corpse_override_func))
|
||||||
{
|
{
|
||||||
reject_corpse = self [[ level._chugabug_reject_corpse_override_func ]]( self.origin );
|
reject_corpse = self [[ level._chugabug_reject_corpse_override_func ]](self.origin);
|
||||||
|
|
||||||
if ( reject_corpse )
|
if (reject_corpse)
|
||||||
create_corpse = 0;
|
create_corpse = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( create_corpse == 1 )
|
if (create_corpse == 1)
|
||||||
{
|
{
|
||||||
self thread activate_chugabud_effects_and_audio();
|
self thread activate_chugabud_effects_and_audio();
|
||||||
corpse = self chugabud_spawn_corpse();
|
corpse = self chugabud_spawn_corpse();
|
||||||
self.e_chugabud_corpse = corpse;
|
self.e_chugabud_corpse = corpse;
|
||||||
corpse.e_chugabud_player = self;
|
corpse.e_chugabud_player = self;
|
||||||
corpse thread chugabud_corpse_revive_icon( self );
|
corpse thread chugabud_corpse_revive_icon(self);
|
||||||
corpse thread chugabud_corpse_cleanup_on_spectator( self );
|
corpse thread chugabud_corpse_cleanup_on_spectator(self);
|
||||||
corpse thread chugabud_corpse_cleanup_on_disconnect( self );
|
corpse thread chugabud_corpse_cleanup_on_disconnect(self);
|
||||||
|
|
||||||
if ( isdefined( level.whos_who_client_setup ) )
|
if (isdefined(level.whos_who_client_setup))
|
||||||
corpse setclientfield( "clientfield_whos_who_clone_glow_shader", 1 );
|
corpse setclientfield("clientfield_whos_who_clone_glow_shader", 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
self thread chugabud_fake_revive();
|
self thread chugabud_fake_revive();
|
||||||
@ -58,41 +58,41 @@ chugabud_laststand()
|
|||||||
self.ignore_insta_kill = undefined;
|
self.ignore_insta_kill = undefined;
|
||||||
self.disable_chugabud_corpse = undefined;
|
self.disable_chugabud_corpse = undefined;
|
||||||
|
|
||||||
if ( create_corpse == 0 )
|
if (create_corpse == 0)
|
||||||
{
|
{
|
||||||
if ( is_player_valid( self ) )
|
if (is_player_valid(self))
|
||||||
{
|
{
|
||||||
self.statusicon = "";
|
self.statusicon = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
self notify( "chugabud_effects_cleanup" );
|
self notify("chugabud_effects_cleanup");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
bleedout_time = 30;
|
bleedout_time = 30;
|
||||||
self thread chugabud_bleed_timeout( bleedout_time, corpse );
|
self thread chugabud_bleed_timeout(bleedout_time, corpse);
|
||||||
self thread chugabud_handle_multiple_instances( corpse );
|
self thread chugabud_handle_multiple_instances(corpse);
|
||||||
|
|
||||||
corpse waittill( "player_revived", e_reviver );
|
corpse waittill("player_revived", e_reviver);
|
||||||
|
|
||||||
if ( isdefined( e_reviver ) && e_reviver == self )
|
if (isdefined(e_reviver) && e_reviver == self)
|
||||||
self notify( "whos_who_self_revive" );
|
self notify("whos_who_self_revive");
|
||||||
|
|
||||||
self perk_abort_drinking( 0.1 );
|
self perk_abort_drinking(0.1);
|
||||||
self maps\mp\zombies\_zm_perks::perk_set_max_health_if_jugg( "health_reboot", 1, 0 );
|
self maps\mp\zombies\_zm_perks::perk_set_max_health_if_jugg("health_reboot", 1, 0);
|
||||||
self setorigin( corpse.origin );
|
self setorigin(corpse.origin);
|
||||||
self setplayerangles( corpse.angles );
|
self setplayerangles(corpse.angles);
|
||||||
|
|
||||||
if ( self player_is_in_laststand() )
|
if (self player_is_in_laststand())
|
||||||
{
|
{
|
||||||
self thread chugabud_laststand_cleanup( corpse, "player_revived" );
|
self thread chugabud_laststand_cleanup(corpse, "player_revived");
|
||||||
self enableweaponcycling();
|
self enableweaponcycling();
|
||||||
self enableoffhandweapons();
|
self enableoffhandweapons();
|
||||||
self auto_revive( self, 1 );
|
self auto_revive(self, 1);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
self chugabud_laststand_cleanup( corpse, undefined );
|
self chugabud_laststand_cleanup(corpse, undefined);
|
||||||
}
|
}
|
||||||
|
|
||||||
chugabud_save_loadout()
|
chugabud_save_loadout()
|
||||||
@ -105,46 +105,46 @@ chugabud_save_loadout()
|
|||||||
self.loadout.score = self.score;
|
self.loadout.score = self.score;
|
||||||
self.loadout.current_weapon = -1;
|
self.loadout.current_weapon = -1;
|
||||||
|
|
||||||
foreach ( index, weapon in primaries )
|
foreach (index, weapon in primaries)
|
||||||
{
|
{
|
||||||
self.loadout.weapons[index] = maps\mp\zombies\_zm_weapons::get_player_weapondata( self, weapon );
|
self.loadout.weapons[index] = maps\mp\zombies\_zm_weapons::get_player_weapondata(self, weapon);
|
||||||
|
|
||||||
if ( weapon == currentweapon || self.loadout.weapons[index]["alt_name"] == currentweapon )
|
if (weapon == currentweapon || self.loadout.weapons[index]["alt_name"] == currentweapon)
|
||||||
self.loadout.current_weapon = index;
|
self.loadout.current_weapon = index;
|
||||||
}
|
}
|
||||||
|
|
||||||
self.loadout.equipment = self get_player_equipment();
|
self.loadout.equipment = self get_player_equipment();
|
||||||
|
|
||||||
if ( isdefined( self.loadout.equipment ) )
|
if (isdefined(self.loadout.equipment))
|
||||||
self equipment_take( self.loadout.equipment );
|
self equipment_take(self.loadout.equipment);
|
||||||
|
|
||||||
self.loadout save_weapons_for_chugabud( self );
|
self.loadout save_weapons_for_chugabud(self);
|
||||||
|
|
||||||
if ( self hasweapon( "claymore_zm" ) )
|
if (self hasweapon("claymore_zm"))
|
||||||
{
|
{
|
||||||
self.loadout.hasclaymore = 1;
|
self.loadout.hasclaymore = 1;
|
||||||
self.loadout.claymoreclip = self getweaponammoclip( "claymore_zm" );
|
self.loadout.claymoreclip = self getweaponammoclip("claymore_zm");
|
||||||
}
|
}
|
||||||
|
|
||||||
self.loadout.perks = chugabud_save_perks( self );
|
self.loadout.perks = chugabud_save_perks(self);
|
||||||
self chugabud_save_grenades();
|
self chugabud_save_grenades();
|
||||||
|
|
||||||
if ( maps\mp\zombies\_zm_weap_cymbal_monkey::cymbal_monkey_exists() )
|
if (maps\mp\zombies\_zm_weap_cymbal_monkey::cymbal_monkey_exists())
|
||||||
self.loadout.zombie_cymbal_monkey_count = self getweaponammoclip( "cymbal_monkey_zm" );
|
self.loadout.zombie_cymbal_monkey_count = self getweaponammoclip("cymbal_monkey_zm");
|
||||||
}
|
}
|
||||||
|
|
||||||
chugabud_save_perks( ent )
|
chugabud_save_perks(ent)
|
||||||
{
|
{
|
||||||
perk_array = ent get_perk_array( 1 );
|
perk_array = ent get_perk_array(1);
|
||||||
|
|
||||||
foreach ( perk in perk_array )
|
foreach (perk in perk_array)
|
||||||
{
|
{
|
||||||
if ( perk == "specialty_additionalprimaryweapon" )
|
if (perk == "specialty_additionalprimaryweapon")
|
||||||
{
|
{
|
||||||
ent maps\mp\zombies\_zm::take_additionalprimaryweapon();
|
ent maps\mp\zombies\_zm::take_additionalprimaryweapon();
|
||||||
}
|
}
|
||||||
|
|
||||||
ent unsetperk( perk );
|
ent unsetperk(perk);
|
||||||
}
|
}
|
||||||
|
|
||||||
return perk_array;
|
return perk_array;
|
||||||
@ -152,67 +152,67 @@ chugabud_save_perks( ent )
|
|||||||
|
|
||||||
chugabud_fake_death()
|
chugabud_fake_death()
|
||||||
{
|
{
|
||||||
level notify( "fake_death" );
|
level notify("fake_death");
|
||||||
self notify( "fake_death" );
|
self notify("fake_death");
|
||||||
self takeallweapons();
|
self takeallweapons();
|
||||||
self allowstand( 0 );
|
self allowstand(0);
|
||||||
self allowcrouch( 0 );
|
self allowcrouch(0);
|
||||||
self allowprone( 1 );
|
self allowprone(1);
|
||||||
self setstance( "prone" );
|
self setstance("prone");
|
||||||
self.ignoreme = 1;
|
self.ignoreme = 1;
|
||||||
self enableinvulnerability();
|
self enableinvulnerability();
|
||||||
|
|
||||||
if ( self is_jumping() )
|
if (self is_jumping())
|
||||||
{
|
{
|
||||||
while ( self is_jumping() )
|
while (self is_jumping())
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
}
|
}
|
||||||
|
|
||||||
self freezecontrols( 1 );
|
self freezecontrols(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
chugabud_fake_revive()
|
chugabud_fake_revive()
|
||||||
{
|
{
|
||||||
level notify( "fake_revive" );
|
level notify("fake_revive");
|
||||||
self notify( "fake_revive" );
|
self notify("fake_revive");
|
||||||
playsoundatposition( "evt_ww_disappear", self.origin );
|
playsoundatposition("evt_ww_disappear", self.origin);
|
||||||
playfx( level._effect["chugabud_revive_fx"], self.origin );
|
playfx(level._effect["chugabud_revive_fx"], self.origin);
|
||||||
spawnpoint = chugabud_get_spawnpoint();
|
spawnpoint = chugabud_get_spawnpoint();
|
||||||
|
|
||||||
if ( isdefined( level._chugabud_post_respawn_override_func ) )
|
if (isdefined(level._chugabud_post_respawn_override_func))
|
||||||
self [[ level._chugabud_post_respawn_override_func ]]( spawnpoint.origin );
|
self [[ level._chugabud_post_respawn_override_func ]](spawnpoint.origin);
|
||||||
|
|
||||||
if ( isdefined( level.chugabud_force_corpse_position ) )
|
if (isdefined(level.chugabud_force_corpse_position))
|
||||||
{
|
{
|
||||||
if ( isdefined( self.e_chugabud_corpse ) )
|
if (isdefined(self.e_chugabud_corpse))
|
||||||
self.e_chugabud_corpse forceteleport( level.chugabud_force_corpse_position );
|
self.e_chugabud_corpse forceteleport(level.chugabud_force_corpse_position);
|
||||||
|
|
||||||
level.chugabud_force_corpse_position = undefined;
|
level.chugabud_force_corpse_position = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( level.chugabud_force_player_position ) )
|
if (isdefined(level.chugabud_force_player_position))
|
||||||
{
|
{
|
||||||
spawnpoint.origin = level.chugabud_force_player_position;
|
spawnpoint.origin = level.chugabud_force_player_position;
|
||||||
level.chugabud_force_player_position = undefined;
|
level.chugabud_force_player_position = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
self allowstand( 1 );
|
self allowstand(1);
|
||||||
self allowcrouch( 1 );
|
self allowcrouch(1);
|
||||||
self allowprone( 1 );
|
self allowprone(1);
|
||||||
self setstance( "stand" );
|
self setstance("stand");
|
||||||
self chugabud_give_loadout();
|
self chugabud_give_loadout();
|
||||||
self seteverhadweaponall( 1 );
|
self seteverhadweaponall(1);
|
||||||
self.score = self.loadout.score;
|
self.score = self.loadout.score;
|
||||||
self.pers["score"] = self.loadout.score;
|
self.pers["score"] = self.loadout.score;
|
||||||
|
|
||||||
self setorigin( spawnpoint.origin );
|
self setorigin(spawnpoint.origin);
|
||||||
self setplayerangles( spawnpoint.angles );
|
self setplayerangles(spawnpoint.angles);
|
||||||
playsoundatposition( "evt_ww_appear", spawnpoint.origin );
|
playsoundatposition("evt_ww_appear", spawnpoint.origin);
|
||||||
playfx( level._effect["chugabud_revive_fx"], spawnpoint.origin );
|
playfx(level._effect["chugabud_revive_fx"], spawnpoint.origin);
|
||||||
|
|
||||||
wait 0.5;
|
wait 0.5;
|
||||||
|
|
||||||
self freezecontrols( 0 );
|
self freezecontrols(0);
|
||||||
|
|
||||||
wait 0.5;
|
wait 0.5;
|
||||||
|
|
||||||
@ -229,23 +229,23 @@ chugabud_give_loadout()
|
|||||||
loadout = self.loadout;
|
loadout = self.loadout;
|
||||||
primaries = self getweaponslistprimaries();
|
primaries = self getweaponslistprimaries();
|
||||||
|
|
||||||
if ( loadout.weapons.size > 1 || primaries.size > 1 )
|
if (loadout.weapons.size > 1 || primaries.size > 1)
|
||||||
{
|
{
|
||||||
foreach ( weapon in primaries )
|
foreach (weapon in primaries)
|
||||||
self takeweapon( weapon );
|
self takeweapon(weapon);
|
||||||
}
|
}
|
||||||
|
|
||||||
weapons_given = 0;
|
weapons_given = 0;
|
||||||
|
|
||||||
for ( i = 0; i < loadout.weapons.size; i++ )
|
for (i = 0; i < loadout.weapons.size; i++)
|
||||||
{
|
{
|
||||||
if ( !isdefined( loadout.weapons[i] ) )
|
if (!isdefined(loadout.weapons[i]))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( loadout.weapons[i]["name"] == "none" )
|
if (loadout.weapons[i]["name"] == "none")
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
self maps\mp\zombies\_zm_weapons::weapondata_give( loadout.weapons[i] );
|
self maps\mp\zombies\_zm_weapons::weapondata_give(loadout.weapons[i]);
|
||||||
|
|
||||||
weapons_given++;
|
weapons_given++;
|
||||||
|
|
||||||
@ -255,26 +255,26 @@ chugabud_give_loadout()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( loadout.current_weapon >= 0 && isdefined( loadout.weapons[loadout.current_weapon]["name"] ) )
|
if (loadout.current_weapon >= 0 && isdefined(loadout.weapons[loadout.current_weapon]["name"]))
|
||||||
self switchtoweapon( loadout.weapons[loadout.current_weapon]["name"] );
|
self switchtoweapon(loadout.weapons[loadout.current_weapon]["name"]);
|
||||||
|
|
||||||
self giveweapon( "knife_zm" );
|
self giveweapon("knife_zm");
|
||||||
self.do_not_display_equipment_pickup_hint = 1;
|
self.do_not_display_equipment_pickup_hint = 1;
|
||||||
self maps\mp\zombies\_zm_equipment::equipment_give( self.loadout.equipment );
|
self maps\mp\zombies\_zm_equipment::equipment_give(self.loadout.equipment);
|
||||||
self.do_not_display_equipment_pickup_hint = undefined;
|
self.do_not_display_equipment_pickup_hint = undefined;
|
||||||
loadout restore_weapons_for_chugabud( self );
|
loadout restore_weapons_for_chugabud(self);
|
||||||
self chugabud_restore_claymore();
|
self chugabud_restore_claymore();
|
||||||
self.score = loadout.score;
|
self.score = loadout.score;
|
||||||
self.pers["score"] = loadout.score;
|
self.pers["score"] = loadout.score;
|
||||||
|
|
||||||
self chugabud_restore_grenades();
|
self chugabud_restore_grenades();
|
||||||
|
|
||||||
if ( maps\mp\zombies\_zm_weap_cymbal_monkey::cymbal_monkey_exists() )
|
if (maps\mp\zombies\_zm_weap_cymbal_monkey::cymbal_monkey_exists())
|
||||||
{
|
{
|
||||||
if ( loadout.zombie_cymbal_monkey_count )
|
if (loadout.zombie_cymbal_monkey_count)
|
||||||
{
|
{
|
||||||
self maps\mp\zombies\_zm_weap_cymbal_monkey::player_give_cymbal_monkey();
|
self maps\mp\zombies\_zm_weap_cymbal_monkey::player_give_cymbal_monkey();
|
||||||
self setweaponammoclip( "cymbal_monkey_zm", loadout.zombie_cymbal_monkey_count );
|
self setweaponammoclip("cymbal_monkey_zm", loadout.zombie_cymbal_monkey_count);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -285,20 +285,20 @@ chugabud_give_perks()
|
|||||||
{
|
{
|
||||||
loadout = self.loadout;
|
loadout = self.loadout;
|
||||||
|
|
||||||
if ( isdefined( loadout.perks ) && loadout.perks.size > 0 )
|
if (isdefined(loadout.perks) && loadout.perks.size > 0)
|
||||||
{
|
{
|
||||||
for ( i = 0; i < loadout.perks.size; i++ )
|
for (i = 0; i < loadout.perks.size; i++)
|
||||||
{
|
{
|
||||||
if ( self hasperk( loadout.perks[i] ) )
|
if (self hasperk(loadout.perks[i]))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( loadout.perks[i] == "specialty_quickrevive" && flag( "solo_game" ) )
|
if (loadout.perks[i] == "specialty_quickrevive" && flag("solo_game"))
|
||||||
level.solo_game_free_player_quickrevive = 1;
|
level.solo_game_free_player_quickrevive = 1;
|
||||||
|
|
||||||
if ( loadout.perks[i] == "specialty_finalstand" )
|
if (loadout.perks[i] == "specialty_finalstand")
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
maps\mp\zombies\_zm_perks::give_perk( loadout.perks[i] );
|
maps\mp\zombies\_zm_perks::give_perk(loadout.perks[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -307,15 +307,15 @@ chugabud_give_perks()
|
|||||||
|
|
||||||
chugabud_spawn_corpse()
|
chugabud_spawn_corpse()
|
||||||
{
|
{
|
||||||
corpse = maps\mp\zombies\_zm_clone::spawn_player_clone( self, self.origin, undefined, self.whos_who_shader );
|
corpse = maps\mp\zombies\_zm_clone::spawn_player_clone(self, self.origin, undefined, self.whos_who_shader);
|
||||||
corpse.angles = self.angles;
|
corpse.angles = self.angles;
|
||||||
corpse maps\mp\zombies\_zm_clone::clone_give_weapon( "m1911_zm" );
|
corpse maps\mp\zombies\_zm_clone::clone_give_weapon("m1911_zm");
|
||||||
corpse maps\mp\zombies\_zm_clone::clone_animate( "laststand" );
|
corpse maps\mp\zombies\_zm_clone::clone_animate("laststand");
|
||||||
corpse thread maps\mp\zombies\_zm_laststand::revive_trigger_spawn();
|
corpse thread maps\mp\zombies\_zm_laststand::revive_trigger_spawn();
|
||||||
return corpse;
|
return corpse;
|
||||||
}
|
}
|
||||||
|
|
||||||
chugabud_bleed_timeout_hud_create( delay )
|
chugabud_bleed_timeout_hud_create(delay)
|
||||||
{
|
{
|
||||||
hud = self createbar((0.25, 0.25, 1), level.secondaryprogressbarwidth * 2, level.secondaryprogressbarheight);
|
hud = self createbar((0.25, 0.25, 1), level.secondaryprogressbarwidth * 2, level.secondaryprogressbarheight);
|
||||||
hud setpoint("CENTER", undefined, level.secondaryprogressbarx, -2.25 * level.secondaryprogressbary);
|
hud setpoint("CENTER", undefined, level.secondaryprogressbarx, -2.25 * level.secondaryprogressbary);
|
||||||
@ -337,14 +337,14 @@ chugabud_bleed_timeout_hud_create( delay )
|
|||||||
return hud;
|
return hud;
|
||||||
}
|
}
|
||||||
|
|
||||||
chugabud_corpse_revive_icon( player )
|
chugabud_corpse_revive_icon(player)
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
height_offset = 30;
|
height_offset = 30;
|
||||||
index = player.clientid;
|
index = player.clientid;
|
||||||
self.revive_waypoint_origin = spawn( "script_model", self.origin + (0, 0, height_offset) );
|
self.revive_waypoint_origin = spawn("script_model", self.origin + (0, 0, height_offset));
|
||||||
self.revive_waypoint_origin setmodel( "tag_origin" );
|
self.revive_waypoint_origin setmodel("tag_origin");
|
||||||
self.revive_waypoint_origin linkto( self );
|
self.revive_waypoint_origin linkto(self);
|
||||||
|
|
||||||
hud_elem = newhudelem();
|
hud_elem = newhudelem();
|
||||||
self.revive_hud_elem = hud_elem;
|
self.revive_hud_elem = hud_elem;
|
||||||
@ -352,46 +352,46 @@ chugabud_corpse_revive_icon( player )
|
|||||||
hud_elem.archived = 1;
|
hud_elem.archived = 1;
|
||||||
hud_elem.hidewheninmenu = 1;
|
hud_elem.hidewheninmenu = 1;
|
||||||
hud_elem.immunetodemogamehudsettings = 1;
|
hud_elem.immunetodemogamehudsettings = 1;
|
||||||
hud_elem setwaypoint( 1, "specialty_chugabud_zombies" );
|
hud_elem setwaypoint(1, "specialty_chugabud_zombies");
|
||||||
hud_elem settargetent( self.revive_waypoint_origin );
|
hud_elem settargetent(self.revive_waypoint_origin);
|
||||||
}
|
}
|
||||||
|
|
||||||
chugabud_corpse_cleanup( corpse, was_revived )
|
chugabud_corpse_cleanup(corpse, was_revived)
|
||||||
{
|
{
|
||||||
self notify( "chugabud_effects_cleanup" );
|
self notify("chugabud_effects_cleanup");
|
||||||
|
|
||||||
if ( was_revived )
|
if (was_revived)
|
||||||
{
|
{
|
||||||
playsoundatposition( "evt_ww_appear", corpse.origin );
|
playsoundatposition("evt_ww_appear", corpse.origin);
|
||||||
playfx( level._effect["chugabud_revive_fx"], corpse.origin );
|
playfx(level._effect["chugabud_revive_fx"], corpse.origin);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
playsoundatposition( "evt_ww_disappear", corpse.origin );
|
playsoundatposition("evt_ww_disappear", corpse.origin);
|
||||||
playfx( level._effect["chugabud_bleedout_fx"], corpse.origin );
|
playfx(level._effect["chugabud_bleedout_fx"], corpse.origin);
|
||||||
self notify( "chugabud_bleedout" );
|
self notify("chugabud_bleedout");
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( corpse.revivetrigger ) )
|
if (isdefined(corpse.revivetrigger))
|
||||||
{
|
{
|
||||||
corpse notify( "stop_revive_trigger" );
|
corpse notify("stop_revive_trigger");
|
||||||
corpse.revivetrigger delete();
|
corpse.revivetrigger delete();
|
||||||
corpse.revivetrigger = undefined;
|
corpse.revivetrigger = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( corpse.revive_hud_elem ) )
|
if (isdefined(corpse.revive_hud_elem))
|
||||||
{
|
{
|
||||||
corpse.revive_hud_elem destroy();
|
corpse.revive_hud_elem destroy();
|
||||||
corpse.revive_hud_elem = undefined;
|
corpse.revive_hud_elem = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( corpse.revive_waypoint_origin ) )
|
if (isdefined(corpse.revive_waypoint_origin))
|
||||||
{
|
{
|
||||||
corpse.revive_waypoint_origin delete();
|
corpse.revive_waypoint_origin delete();
|
||||||
corpse.revive_waypoint_origin = undefined;
|
corpse.revive_waypoint_origin = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( self.chugabud_bleed_timeout_hud ) )
|
if (isdefined(self.chugabud_bleed_timeout_hud))
|
||||||
{
|
{
|
||||||
self.chugabud_bleed_timeout_hud destroy();
|
self.chugabud_bleed_timeout_hud destroy();
|
||||||
self.chugabud_bleed_timeout_hud.bar destroy();
|
self.chugabud_bleed_timeout_hud.bar destroy();
|
||||||
@ -404,67 +404,67 @@ chugabud_corpse_cleanup( corpse, was_revived )
|
|||||||
corpse delete();
|
corpse delete();
|
||||||
self.e_chugabud_corpse = undefined;
|
self.e_chugabud_corpse = undefined;
|
||||||
|
|
||||||
if ( is_player_valid( self ) )
|
if (is_player_valid(self))
|
||||||
{
|
{
|
||||||
self.statusicon = "";
|
self.statusicon = "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
chugabud_handle_multiple_instances( corpse )
|
chugabud_handle_multiple_instances(corpse)
|
||||||
{
|
{
|
||||||
corpse endon( "death" );
|
corpse endon("death");
|
||||||
|
|
||||||
self waittill( "chugabud_handle_multiple_instances" );
|
self waittill("chugabud_handle_multiple_instances");
|
||||||
|
|
||||||
self thread chugabud_laststand_wait( corpse );
|
self thread chugabud_laststand_wait(corpse);
|
||||||
self chugabud_corpse_cleanup( corpse, 0 );
|
self chugabud_corpse_cleanup(corpse, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
chugabud_laststand_wait( corpse )
|
chugabud_laststand_wait(corpse)
|
||||||
{
|
{
|
||||||
corpse waittill( "death" );
|
corpse waittill("death");
|
||||||
|
|
||||||
self chugabud_laststand();
|
self chugabud_laststand();
|
||||||
}
|
}
|
||||||
|
|
||||||
chugabud_corpse_cleanup_on_disconnect( player )
|
chugabud_corpse_cleanup_on_disconnect(player)
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
|
|
||||||
player waittill( "disconnect" );
|
player waittill("disconnect");
|
||||||
|
|
||||||
player chugabud_corpse_cleanup( self, 0 );
|
player chugabud_corpse_cleanup(self, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
chugabud_laststand_cleanup( corpse, str_notify )
|
chugabud_laststand_cleanup(corpse, str_notify)
|
||||||
{
|
{
|
||||||
if ( isdefined( str_notify ) )
|
if (isdefined(str_notify))
|
||||||
self waittill( str_notify );
|
self waittill(str_notify);
|
||||||
|
|
||||||
self setstance( "stand" );
|
self setstance("stand");
|
||||||
self thread chugabud_leave_freeze();
|
self thread chugabud_leave_freeze();
|
||||||
self thread chugabud_revive_invincible();
|
self thread chugabud_revive_invincible();
|
||||||
self chugabud_give_perks();
|
self chugabud_give_perks();
|
||||||
self chugabud_corpse_cleanup( corpse, 1 );
|
self chugabud_corpse_cleanup(corpse, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
chugabud_leave_freeze()
|
chugabud_leave_freeze()
|
||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
level endon( "end_game" );
|
level endon("end_game");
|
||||||
|
|
||||||
self freezecontrols( 1 );
|
self freezecontrols(1);
|
||||||
|
|
||||||
wait 0.5;
|
wait 0.5;
|
||||||
|
|
||||||
if ( !is_true( self.hostmigrationcontrolsfrozen ) )
|
if (!is_true(self.hostmigrationcontrolsfrozen))
|
||||||
self freezecontrols( 0 );
|
self freezecontrols(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
chugabud_revive_invincible()
|
chugabud_revive_invincible()
|
||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
level endon( "end_game" );
|
level endon("end_game");
|
||||||
|
|
||||||
self.health = self.maxhealth;
|
self.health = self.maxhealth;
|
||||||
self enableinvulnerability();
|
self enableinvulnerability();
|
||||||
@ -474,23 +474,23 @@ chugabud_revive_invincible()
|
|||||||
self disableinvulnerability();
|
self disableinvulnerability();
|
||||||
}
|
}
|
||||||
|
|
||||||
chugabud_bleed_timeout( delay, corpse )
|
chugabud_bleed_timeout(delay, corpse)
|
||||||
{
|
{
|
||||||
self endon( "player_suicide" );
|
self endon("player_suicide");
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
corpse endon( "death" );
|
corpse endon("death");
|
||||||
|
|
||||||
self.chugabud_bleed_timeout_hud = self chugabud_bleed_timeout_hud_create( delay );
|
self.chugabud_bleed_timeout_hud = self chugabud_bleed_timeout_hud_create(delay);
|
||||||
|
|
||||||
wait delay;
|
wait delay;
|
||||||
|
|
||||||
if ( isDefined( corpse.revivetrigger ) )
|
if (isDefined(corpse.revivetrigger))
|
||||||
{
|
{
|
||||||
while ( corpse.revivetrigger.beingrevived )
|
while (corpse.revivetrigger.beingrevived)
|
||||||
{
|
{
|
||||||
wait 0.01;
|
wait 0.01;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self chugabud_corpse_cleanup( corpse, 0 );
|
self chugabud_corpse_cleanup(corpse, 0);
|
||||||
}
|
}
|
@ -3,23 +3,23 @@
|
|||||||
#include maps\mp\_utility;
|
#include maps\mp\_utility;
|
||||||
#include maps\mp\zombies\_zm_utility;
|
#include maps\mp\zombies\_zm_utility;
|
||||||
|
|
||||||
spawn_player_clone( player, origin = player.origin, forceweapon, forcemodel )
|
spawn_player_clone(player, origin = player.origin, forceweapon, forcemodel)
|
||||||
{
|
{
|
||||||
primaryweapons = player getweaponslistprimaries();
|
primaryweapons = player getweaponslistprimaries();
|
||||||
|
|
||||||
if ( isdefined( forceweapon ) )
|
if (isdefined(forceweapon))
|
||||||
weapon = forceweapon;
|
weapon = forceweapon;
|
||||||
else if ( primaryweapons.size )
|
else if (primaryweapons.size)
|
||||||
weapon = primaryweapons[0];
|
weapon = primaryweapons[0];
|
||||||
else
|
else
|
||||||
weapon = player getcurrentweapon();
|
weapon = player getcurrentweapon();
|
||||||
|
|
||||||
weaponmodel = getweaponmodel( weapon );
|
weaponmodel = getweaponmodel(weapon);
|
||||||
spawner = getent( "fake_player_spawner", "targetname" );
|
spawner = getent("fake_player_spawner", "targetname");
|
||||||
|
|
||||||
if ( isdefined( spawner ) )
|
if (isdefined(spawner))
|
||||||
{
|
{
|
||||||
while ( getfreeactorcount() < 1 )
|
while (getfreeactorcount() < 1)
|
||||||
{
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
}
|
}
|
||||||
@ -30,25 +30,25 @@ spawn_player_clone( player, origin = player.origin, forceweapon, forcemodel )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
clone = spawn( "script_model", origin );
|
clone = spawn("script_model", origin);
|
||||||
clone.isactor = 0;
|
clone.isactor = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( forcemodel ) )
|
if (isdefined(forcemodel))
|
||||||
clone setmodel( forcemodel );
|
clone setmodel(forcemodel);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
clone setmodel( self.model );
|
clone setmodel(self.model);
|
||||||
|
|
||||||
if ( isdefined( player.headmodel ) )
|
if (isdefined(player.headmodel))
|
||||||
{
|
{
|
||||||
clone.headmodel = player.headmodel;
|
clone.headmodel = player.headmodel;
|
||||||
clone attach( clone.headmodel, "", 1 );
|
clone attach(clone.headmodel, "", 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( weaponmodel != "" && weaponmodel != "none" )
|
if (weaponmodel != "" && weaponmodel != "none")
|
||||||
clone attach( weaponmodel, "tag_weapon_right" );
|
clone attach(weaponmodel, "tag_weapon_right");
|
||||||
|
|
||||||
clone.team = player.team;
|
clone.team = player.team;
|
||||||
clone.is_inert = 1;
|
clone.is_inert = 1;
|
||||||
|
@ -10,20 +10,20 @@
|
|||||||
#include maps\mp\zombies\_zm_weapons;
|
#include maps\mp\zombies\_zm_weapons;
|
||||||
#include maps\mp\_demo;
|
#include maps\mp\_demo;
|
||||||
|
|
||||||
choose_open_craftable( player )
|
choose_open_craftable(player)
|
||||||
{
|
{
|
||||||
self endon( "kill_choose_open_craftable" );
|
self endon("kill_choose_open_craftable");
|
||||||
n_playernum = player getentitynumber();
|
n_playernum = player getentitynumber();
|
||||||
self.b_open_craftable_checking_input = 1;
|
self.b_open_craftable_checking_input = 1;
|
||||||
b_got_input = 1;
|
b_got_input = 1;
|
||||||
hinttexthudelem = newclienthudelem( player );
|
hinttexthudelem = newclienthudelem(player);
|
||||||
hinttexthudelem.alignx = "center";
|
hinttexthudelem.alignx = "center";
|
||||||
hinttexthudelem.aligny = "middle";
|
hinttexthudelem.aligny = "middle";
|
||||||
hinttexthudelem.horzalign = "center";
|
hinttexthudelem.horzalign = "center";
|
||||||
hinttexthudelem.vertalign = "bottom";
|
hinttexthudelem.vertalign = "bottom";
|
||||||
hinttexthudelem.y = -100;
|
hinttexthudelem.y = -100;
|
||||||
|
|
||||||
if ( player issplitscreen() )
|
if (player issplitscreen())
|
||||||
hinttexthudelem.y = -50;
|
hinttexthudelem.y = -50;
|
||||||
|
|
||||||
hinttexthudelem.foreground = 1;
|
hinttexthudelem.foreground = 1;
|
||||||
@ -31,25 +31,25 @@ choose_open_craftable( player )
|
|||||||
hinttexthudelem.font = "default";
|
hinttexthudelem.font = "default";
|
||||||
hinttexthudelem.fontscale = 1.0;
|
hinttexthudelem.fontscale = 1.0;
|
||||||
hinttexthudelem.alpha = 1;
|
hinttexthudelem.alpha = 1;
|
||||||
hinttexthudelem.color = ( 1, 1, 1 );
|
hinttexthudelem.color = (1, 1, 1);
|
||||||
hinttexthudelem settext( &"ZM_CRAFTABLES_CHANGE_BUILD" );
|
hinttexthudelem settext(&"ZM_CRAFTABLES_CHANGE_BUILD");
|
||||||
|
|
||||||
if ( !isdefined( self.opencraftablehudelem ) )
|
if (!isdefined(self.opencraftablehudelem))
|
||||||
self.opencraftablehudelem = [];
|
self.opencraftablehudelem = [];
|
||||||
|
|
||||||
self.opencraftablehudelem[n_playernum] = hinttexthudelem;
|
self.opencraftablehudelem[n_playernum] = hinttexthudelem;
|
||||||
|
|
||||||
if ( self.n_open_craftable_choice < 0 )
|
if (self.n_open_craftable_choice < 0)
|
||||||
{
|
{
|
||||||
self.n_open_craftable_choice = self.a_uts_open_craftables_available.size - 1;
|
self.n_open_craftable_choice = self.a_uts_open_craftables_available.size - 1;
|
||||||
self.equipname = self.a_uts_open_craftables_available[self.n_open_craftable_choice].equipname;
|
self.equipname = self.a_uts_open_craftables_available[self.n_open_craftable_choice].equipname;
|
||||||
self.hint_string = self.a_uts_open_craftables_available[self.n_open_craftable_choice].hint_string;
|
self.hint_string = self.a_uts_open_craftables_available[self.n_open_craftable_choice].hint_string;
|
||||||
self.playertrigger[n_playernum] sethintstring( self.hint_string );
|
self.playertrigger[n_playernum] sethintstring(self.hint_string);
|
||||||
}
|
}
|
||||||
|
|
||||||
while ( isdefined( self.playertrigger[n_playernum] ) && !self.crafted )
|
while (isdefined(self.playertrigger[n_playernum]) && !self.crafted)
|
||||||
{
|
{
|
||||||
if (!player isTouching(self.playertrigger[n_playernum]) || !player is_player_looking_at( self.playertrigger[n_playernum].origin, 0.76 ) || player isSprinting() || player isThrowingGrenade())
|
if (!player isTouching(self.playertrigger[n_playernum]) || !player is_player_looking_at(self.playertrigger[n_playernum].origin, 0.76) || player isSprinting() || player isThrowingGrenade())
|
||||||
{
|
{
|
||||||
self.opencraftablehudelem[n_playernum].alpha = 0;
|
self.opencraftablehudelem[n_playernum].alpha = 0;
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
@ -58,27 +58,27 @@ choose_open_craftable( player )
|
|||||||
|
|
||||||
self.opencraftablehudelem[n_playernum].alpha = 1;
|
self.opencraftablehudelem[n_playernum].alpha = 1;
|
||||||
|
|
||||||
if ( player actionslotonebuttonpressed() )
|
if (player actionslotonebuttonpressed())
|
||||||
{
|
{
|
||||||
self.n_open_craftable_choice++;
|
self.n_open_craftable_choice++;
|
||||||
b_got_input = 1;
|
b_got_input = 1;
|
||||||
}
|
}
|
||||||
else if ( player actionslottwobuttonpressed() )
|
else if (player actionslottwobuttonpressed())
|
||||||
{
|
{
|
||||||
self.n_open_craftable_choice--;
|
self.n_open_craftable_choice--;
|
||||||
b_got_input = 1;
|
b_got_input = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self.n_open_craftable_choice >= self.a_uts_open_craftables_available.size )
|
if (self.n_open_craftable_choice >= self.a_uts_open_craftables_available.size)
|
||||||
self.n_open_craftable_choice = 0;
|
self.n_open_craftable_choice = 0;
|
||||||
else if ( self.n_open_craftable_choice < 0 )
|
else if (self.n_open_craftable_choice < 0)
|
||||||
self.n_open_craftable_choice = self.a_uts_open_craftables_available.size - 1;
|
self.n_open_craftable_choice = self.a_uts_open_craftables_available.size - 1;
|
||||||
|
|
||||||
if ( b_got_input )
|
if (b_got_input)
|
||||||
{
|
{
|
||||||
self.equipname = self.a_uts_open_craftables_available[self.n_open_craftable_choice].equipname;
|
self.equipname = self.a_uts_open_craftables_available[self.n_open_craftable_choice].equipname;
|
||||||
self.hint_string = self.a_uts_open_craftables_available[self.n_open_craftable_choice].hint_string;
|
self.hint_string = self.a_uts_open_craftables_available[self.n_open_craftable_choice].hint_string;
|
||||||
self.playertrigger[n_playernum] sethintstring( self.hint_string );
|
self.playertrigger[n_playernum] sethintstring(self.hint_string);
|
||||||
b_got_input = 0;
|
b_got_input = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -90,15 +90,15 @@ choose_open_craftable( player )
|
|||||||
self.opencraftablehudelem[n_playernum] = undefined;
|
self.opencraftablehudelem[n_playernum] = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
craftable_use_hold_think_internal( player )
|
craftable_use_hold_think_internal(player)
|
||||||
{
|
{
|
||||||
wait 0.01;
|
wait 0.01;
|
||||||
|
|
||||||
if ( !isdefined( self ) )
|
if (!isdefined(self))
|
||||||
{
|
{
|
||||||
self notify( "craft_failed" );
|
self notify("craft_failed");
|
||||||
|
|
||||||
if ( isdefined( player.craftableaudio ) )
|
if (isdefined(player.craftableaudio))
|
||||||
{
|
{
|
||||||
player.craftableaudio delete();
|
player.craftableaudio delete();
|
||||||
player.craftableaudio = undefined;
|
player.craftableaudio = undefined;
|
||||||
@ -107,73 +107,73 @@ craftable_use_hold_think_internal( player )
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isdefined( self.usetime ) )
|
if (!isdefined(self.usetime))
|
||||||
self.usetime = int( 3000 );
|
self.usetime = int(3000);
|
||||||
|
|
||||||
self.craft_time = self.usetime;
|
self.craft_time = self.usetime;
|
||||||
self.craft_start_time = gettime();
|
self.craft_start_time = gettime();
|
||||||
craft_time = self.craft_time;
|
craft_time = self.craft_time;
|
||||||
craft_start_time = self.craft_start_time;
|
craft_start_time = self.craft_start_time;
|
||||||
player disable_player_move_states( 1 );
|
player disable_player_move_states(1);
|
||||||
player increment_is_drinking();
|
player increment_is_drinking();
|
||||||
orgweapon = player getcurrentweapon();
|
orgweapon = player getcurrentweapon();
|
||||||
player giveweapon( "zombie_builder_zm" );
|
player giveweapon("zombie_builder_zm");
|
||||||
player switchtoweapon( "zombie_builder_zm" );
|
player switchtoweapon("zombie_builder_zm");
|
||||||
self.stub.craftablespawn craftable_set_piece_crafting( player.current_craftable_piece );
|
self.stub.craftablespawn craftable_set_piece_crafting(player.current_craftable_piece);
|
||||||
player thread player_progress_bar( craft_start_time, craft_time );
|
player thread player_progress_bar(craft_start_time, craft_time);
|
||||||
|
|
||||||
if ( isdefined( level.craftable_craft_custom_func ) )
|
if (isdefined(level.craftable_craft_custom_func))
|
||||||
player thread [[ level.craftable_craft_custom_func ]]( self.stub );
|
player thread [[ level.craftable_craft_custom_func ]](self.stub);
|
||||||
|
|
||||||
while ( isdefined( self ) && player player_continue_crafting( self.stub.craftablespawn ) && gettime() - self.craft_start_time < self.craft_time )
|
while (isdefined(self) && player player_continue_crafting(self.stub.craftablespawn) && gettime() - self.craft_start_time < self.craft_time)
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
|
||||||
player notify( "craftable_progress_end" );
|
player notify("craftable_progress_end");
|
||||||
|
|
||||||
if ( player hasWeapon( orgweapon ) )
|
if (player hasWeapon(orgweapon))
|
||||||
{
|
{
|
||||||
player switchToWeapon( orgweapon );
|
player switchToWeapon(orgweapon);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player maps\mp\zombies\_zm_weapons::switch_back_primary_weapon( orgweapon );
|
player maps\mp\zombies\_zm_weapons::switch_back_primary_weapon(orgweapon);
|
||||||
}
|
}
|
||||||
|
|
||||||
player takeweapon( "zombie_builder_zm" );
|
player takeweapon("zombie_builder_zm");
|
||||||
|
|
||||||
if ( isdefined( player.is_drinking ) && player.is_drinking )
|
if (isdefined(player.is_drinking) && player.is_drinking)
|
||||||
player decrement_is_drinking();
|
player decrement_is_drinking();
|
||||||
|
|
||||||
player enable_player_move_states();
|
player enable_player_move_states();
|
||||||
|
|
||||||
if ( isdefined( self ) && player player_continue_crafting( self.stub.craftablespawn ) && gettime() - self.craft_start_time >= self.craft_time )
|
if (isdefined(self) && player player_continue_crafting(self.stub.craftablespawn) && gettime() - self.craft_start_time >= self.craft_time)
|
||||||
{
|
{
|
||||||
self.stub.craftablespawn craftable_clear_piece_crafting( player.current_craftable_piece );
|
self.stub.craftablespawn craftable_clear_piece_crafting(player.current_craftable_piece);
|
||||||
self notify( "craft_succeed" );
|
self notify("craft_succeed");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( isdefined( player.craftableaudio ) )
|
if (isdefined(player.craftableaudio))
|
||||||
{
|
{
|
||||||
player.craftableaudio delete();
|
player.craftableaudio delete();
|
||||||
player.craftableaudio = undefined;
|
player.craftableaudio = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
self.stub.craftablespawn craftable_clear_piece_crafting( player.current_craftable_piece );
|
self.stub.craftablespawn craftable_clear_piece_crafting(player.current_craftable_piece);
|
||||||
self notify( "craft_failed" );
|
self notify("craft_failed");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
player_progress_bar_update( start_time, craft_time )
|
player_progress_bar_update(start_time, craft_time)
|
||||||
{
|
{
|
||||||
self endon( "entering_last_stand" );
|
self endon("entering_last_stand");
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
self endon( "craftable_progress_end" );
|
self endon("craftable_progress_end");
|
||||||
|
|
||||||
self.usebar updatebar( 0.01, 1000 / craft_time );
|
self.usebar updatebar(0.01, 1000 / craft_time);
|
||||||
|
|
||||||
while ( isdefined( self ) && gettime() - start_time < craft_time )
|
while (isdefined(self) && gettime() - start_time < craft_time)
|
||||||
{
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
}
|
}
|
||||||
@ -190,21 +190,21 @@ update_open_table_status_actual()
|
|||||||
|
|
||||||
b_open_craftables_remaining = 0;
|
b_open_craftables_remaining = 0;
|
||||||
|
|
||||||
foreach ( uts_craftable in level.a_uts_craftables )
|
foreach (uts_craftable in level.a_uts_craftables)
|
||||||
{
|
{
|
||||||
if ( is_true( uts_craftable.craftablestub.is_open_table ) && !is_true( uts_craftable.crafted ) && uts_craftable.craftablespawn.craftable_name != "open_table" && uts_craftable.craftablespawn craftable_can_use_shared_piece() )
|
if (is_true(uts_craftable.craftablestub.is_open_table) && !is_true(uts_craftable.crafted) && uts_craftable.craftablespawn.craftable_name != "open_table" && uts_craftable.craftablespawn craftable_can_use_shared_piece())
|
||||||
{
|
{
|
||||||
b_open_craftables_remaining++;
|
b_open_craftables_remaining++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !b_open_craftables_remaining )
|
if (!b_open_craftables_remaining)
|
||||||
{
|
{
|
||||||
foreach ( uts_craftable in level.a_uts_craftables )
|
foreach (uts_craftable in level.a_uts_craftables)
|
||||||
{
|
{
|
||||||
if ( uts_craftable.craftablespawn.craftable_name == "open_table" )
|
if (uts_craftable.craftablespawn.craftable_name == "open_table")
|
||||||
{
|
{
|
||||||
thread maps\mp\zombies\_zm_unitrigger::unregister_unitrigger( uts_craftable );
|
thread maps\mp\zombies\_zm_unitrigger::unregister_unitrigger(uts_craftable);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,76 +2,76 @@
|
|||||||
#include common_scripts\utility;
|
#include common_scripts\utility;
|
||||||
#include maps\mp\zombies\_zm_utility;
|
#include maps\mp\zombies\_zm_utility;
|
||||||
|
|
||||||
startelectrictrapdeploy( weapon )
|
startelectrictrapdeploy(weapon)
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
self endon( "equip_electrictrap_zm_taken" );
|
self endon("equip_electrictrap_zm_taken");
|
||||||
|
|
||||||
self thread maps\mp\zombies\_zm_equip_electrictrap::watchforcleanup();
|
self thread maps\mp\zombies\_zm_equip_electrictrap::watchforcleanup();
|
||||||
electricradius = 45;
|
electricradius = 45;
|
||||||
|
|
||||||
if ( !isDefined( self.electrictrap_health ) )
|
if (!isDefined(self.electrictrap_health))
|
||||||
{
|
{
|
||||||
self.electrictrap_health = 30;
|
self.electrictrap_health = 30;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( weapon ) )
|
if (isDefined(weapon))
|
||||||
{
|
{
|
||||||
wait 0.5;
|
wait 0.5;
|
||||||
|
|
||||||
self trap_power_on( weapon );
|
self trap_power_on(weapon);
|
||||||
self thread maps\mp\zombies\_zm_equip_electrictrap::electrictrapthink( weapon, electricradius );
|
self thread maps\mp\zombies\_zm_equip_electrictrap::electrictrapthink(weapon, electricradius);
|
||||||
self thread electrictrapdecay( weapon );
|
self thread electrictrapdecay(weapon);
|
||||||
self thread maps\mp\zombies\_zm_buildables::delete_on_disconnect( weapon );
|
self thread maps\mp\zombies\_zm_buildables::delete_on_disconnect(weapon);
|
||||||
|
|
||||||
weapon waittill( "death" );
|
weapon waittill("death");
|
||||||
|
|
||||||
if ( isDefined( weapon.electrap_sound_ent ) )
|
if (isDefined(weapon.electrap_sound_ent))
|
||||||
{
|
{
|
||||||
weapon.electrap_sound_ent playsound( "wpn_zmb_electrap_stop" );
|
weapon.electrap_sound_ent playsound("wpn_zmb_electrap_stop");
|
||||||
weapon.electrap_sound_ent delete();
|
weapon.electrap_sound_ent delete();
|
||||||
weapon.electrap_sound_ent = undefined;
|
weapon.electrap_sound_ent = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
self notify( "etrap_cleanup" );
|
self notify("etrap_cleanup");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
trap_power_on( weapon )
|
trap_power_on(weapon)
|
||||||
{
|
{
|
||||||
weapon.power_on = 1;
|
weapon.power_on = 1;
|
||||||
weapon.power_on_time = getTime() - 2000; // ::electrictrapthink doesn't start until after 2 seconds
|
weapon.power_on_time = getTime() - 2000; // ::electrictrapthink doesn't start until after 2 seconds
|
||||||
weapon notify( "stop_attracting_zombies" );
|
weapon notify("stop_attracting_zombies");
|
||||||
|
|
||||||
if ( !isDefined( weapon.electrap_sound_ent ) )
|
if (!isDefined(weapon.electrap_sound_ent))
|
||||||
{
|
{
|
||||||
weapon.electrap_sound_ent = spawn( "script_origin", weapon.origin );
|
weapon.electrap_sound_ent = spawn("script_origin", weapon.origin);
|
||||||
}
|
}
|
||||||
|
|
||||||
weapon.electrap_sound_ent playsound( "wpn_zmb_electrap_start" );
|
weapon.electrap_sound_ent playsound("wpn_zmb_electrap_start");
|
||||||
weapon.electrap_sound_ent playloopsound( "wpn_zmb_electrap_loop", 2 );
|
weapon.electrap_sound_ent playloopsound("wpn_zmb_electrap_loop", 2);
|
||||||
weapon thread maps\mp\zombies\_zm_equip_electrictrap::trapfx();
|
weapon thread maps\mp\zombies\_zm_equip_electrictrap::trapfx();
|
||||||
}
|
}
|
||||||
|
|
||||||
electrictrapdecay( weapon )
|
electrictrapdecay(weapon)
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
self endon( "equip_electrictrap_zm_taken" );
|
self endon("equip_electrictrap_zm_taken");
|
||||||
|
|
||||||
while ( isDefined( weapon ) )
|
while (isDefined(weapon))
|
||||||
{
|
{
|
||||||
if ( weapon.power_on )
|
if (weapon.power_on)
|
||||||
{
|
{
|
||||||
self.electrictrap_health--;
|
self.electrictrap_health--;
|
||||||
|
|
||||||
if ( self.electrictrap_health <= 0 )
|
if (self.electrictrap_health <= 0)
|
||||||
{
|
{
|
||||||
maps\mp\zombies\_zm_equipment::equipment_disappear_fx( weapon.origin, undefined, weapon.angles );
|
maps\mp\zombies\_zm_equipment::equipment_disappear_fx(weapon.origin, undefined, weapon.angles);
|
||||||
self maps\mp\zombies\_zm_equip_electrictrap::cleanupoldtrap();
|
self maps\mp\zombies\_zm_equip_electrictrap::cleanupoldtrap();
|
||||||
self.electrictrap_health = undefined;
|
self.electrictrap_health = undefined;
|
||||||
self thread maps\mp\zombies\_zm_equipment::equipment_release( level.electrictrap_name );
|
self thread maps\mp\zombies\_zm_equipment::equipment_release(level.electrictrap_name);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -83,15 +83,15 @@ electrictrapdecay( weapon )
|
|||||||
|
|
||||||
cleanupoldtrap()
|
cleanupoldtrap()
|
||||||
{
|
{
|
||||||
if ( isDefined( self.buildableelectrictrap ) )
|
if (isDefined(self.buildableelectrictrap))
|
||||||
{
|
{
|
||||||
if ( isDefined( self.buildableelectrictrap.stub ) )
|
if (isDefined(self.buildableelectrictrap.stub))
|
||||||
{
|
{
|
||||||
thread maps\mp\zombies\_zm_unitrigger::unregister_unitrigger( self.buildableelectrictrap.stub );
|
thread maps\mp\zombies\_zm_unitrigger::unregister_unitrigger(self.buildableelectrictrap.stub);
|
||||||
self.buildableelectrictrap.stub = undefined;
|
self.buildableelectrictrap.stub = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( self.buildableelectrictrap.electrap_sound_ent ) )
|
if (isDefined(self.buildableelectrictrap.electrap_sound_ent))
|
||||||
{
|
{
|
||||||
self.buildableelectrictrap.electrap_sound_ent delete();
|
self.buildableelectrictrap.electrap_sound_ent delete();
|
||||||
self.buildableelectrictrap.electrap_sound_ent = undefined;
|
self.buildableelectrictrap.electrap_sound_ent = undefined;
|
||||||
|
@ -18,15 +18,15 @@
|
|||||||
init_anim_slice_times()
|
init_anim_slice_times()
|
||||||
{
|
{
|
||||||
level.headchopper_slice_times = [];
|
level.headchopper_slice_times = [];
|
||||||
slice_times = getnotetracktimes( %o_zmb_chopper_slice_slow, "slice" );
|
slice_times = getnotetracktimes(%o_zmb_chopper_slice_slow, "slice");
|
||||||
retract_times = getnotetracktimes( %o_zmb_chopper_slice_slow, "retract" );
|
retract_times = getnotetracktimes(%o_zmb_chopper_slice_slow, "retract");
|
||||||
animlength = getanimlength( %o_zmb_chopper_slice_slow );
|
animlength = getanimlength(%o_zmb_chopper_slice_slow);
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
|
|
||||||
foreach ( frac in slice_times )
|
foreach (frac in slice_times)
|
||||||
{
|
{
|
||||||
if ( i != 6 )
|
if (i != 6)
|
||||||
{
|
{
|
||||||
i++;
|
i++;
|
||||||
continue;
|
continue;
|
||||||
@ -38,9 +38,9 @@ init_anim_slice_times()
|
|||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
|
|
||||||
foreach ( frac in retract_times )
|
foreach (frac in retract_times)
|
||||||
{
|
{
|
||||||
if ( i == 0 || i == 6 )
|
if (i == 0 || i == 6)
|
||||||
{
|
{
|
||||||
i++;
|
i++;
|
||||||
continue;
|
continue;
|
||||||
@ -51,74 +51,74 @@ init_anim_slice_times()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
headchopperthink( weapon, electricradius, armed )
|
headchopperthink(weapon, electricradius, armed)
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
self endon( "equip_headchopper_zm_taken" );
|
self endon("equip_headchopper_zm_taken");
|
||||||
weapon endon( "death" );
|
weapon endon("death");
|
||||||
radiussquared = electricradius * electricradius;
|
radiussquared = electricradius * electricradius;
|
||||||
traceposition = weapon getcentroid() + anglestoforward( flat_angle( weapon.angles ) ) * -15;
|
traceposition = weapon getcentroid() + anglestoforward(flat_angle(weapon.angles)) * -15;
|
||||||
trace = bullettrace( traceposition, traceposition + vectorscale( ( 0, 0, -1 ), 48.0 ), 1, weapon );
|
trace = bullettrace(traceposition, traceposition + vectorscale((0, 0, -1), 48.0), 1, weapon);
|
||||||
trigger_origin = weapon gettagorigin( "TAG_SAW" );
|
trigger_origin = weapon gettagorigin("TAG_SAW");
|
||||||
trigger = spawn( "trigger_box", trigger_origin, 1, 16, 128, 64 );
|
trigger = spawn("trigger_box", trigger_origin, 1, 16, 128, 64);
|
||||||
trigger.origin += anglestoup( weapon.angles ) * 32.0;
|
trigger.origin += anglestoup(weapon.angles) * 32.0;
|
||||||
trigger.angles = weapon.angles;
|
trigger.angles = weapon.angles;
|
||||||
trigger enablelinkto();
|
trigger enablelinkto();
|
||||||
trigger linkto( weapon );
|
trigger linkto(weapon);
|
||||||
weapon.trigger = trigger;
|
weapon.trigger = trigger;
|
||||||
weapon thread headchopperthinkcleanup( trigger );
|
weapon thread headchopperthinkcleanup(trigger);
|
||||||
direction_forward = anglestoforward( flat_angle( weapon.angles ) + vectorscale( ( -1, 0, 0 ), 60.0 ) );
|
direction_forward = anglestoforward(flat_angle(weapon.angles) + vectorscale((-1, 0, 0), 60.0));
|
||||||
direction_vector = vectorscale( direction_forward, 1024 );
|
direction_vector = vectorscale(direction_forward, 1024);
|
||||||
direction_origin = weapon.origin + direction_vector;
|
direction_origin = weapon.origin + direction_vector;
|
||||||
home_angles = weapon.angles;
|
home_angles = weapon.angles;
|
||||||
weapon.is_armed = 0;
|
weapon.is_armed = 0;
|
||||||
self thread headchopper_fx( weapon );
|
self thread headchopper_fx(weapon);
|
||||||
self thread headchopper_animate( weapon, armed );
|
self thread headchopper_animate(weapon, armed);
|
||||||
|
|
||||||
while ( !( isdefined( weapon.is_armed ) && weapon.is_armed ) )
|
while (!(isdefined(weapon.is_armed) && weapon.is_armed))
|
||||||
wait 0.5;
|
wait 0.5;
|
||||||
|
|
||||||
weapon.chop_targets = [];
|
weapon.chop_targets = [];
|
||||||
self thread targeting_thread( weapon, trigger );
|
self thread targeting_thread(weapon, trigger);
|
||||||
|
|
||||||
while ( isdefined( weapon ) )
|
while (isdefined(weapon))
|
||||||
{
|
{
|
||||||
wait_for_targets( weapon );
|
wait_for_targets(weapon);
|
||||||
|
|
||||||
if ( isdefined( weapon.chop_targets ) && weapon.chop_targets.size > 0 )
|
if (isdefined(weapon.chop_targets) && weapon.chop_targets.size > 0)
|
||||||
{
|
{
|
||||||
is_slicing = 1;
|
is_slicing = 1;
|
||||||
slice_count = 0;
|
slice_count = 0;
|
||||||
|
|
||||||
weapon.headchopper_kills++;
|
weapon.headchopper_kills++;
|
||||||
|
|
||||||
while ( isdefined( is_slicing ) && is_slicing )
|
while (isdefined(is_slicing) && is_slicing)
|
||||||
{
|
{
|
||||||
weapon notify( "chop", 1 );
|
weapon notify("chop", 1);
|
||||||
weapon.is_armed = 0;
|
weapon.is_armed = 0;
|
||||||
weapon.zombies_only = 1;
|
weapon.zombies_only = 1;
|
||||||
|
|
||||||
self headchopper_add_chop_ents( weapon, trigger );
|
self headchopper_add_chop_ents(weapon, trigger);
|
||||||
|
|
||||||
foreach ( ent in weapon.chop_targets )
|
foreach (ent in weapon.chop_targets)
|
||||||
self thread headchopperattack( weapon, ent );
|
self thread headchopperattack(weapon, ent);
|
||||||
|
|
||||||
weapon.chop_targets = [];
|
weapon.chop_targets = [];
|
||||||
weapon waittill_any( "slicing", "end" );
|
weapon waittill_any("slicing", "end");
|
||||||
|
|
||||||
slice_count++;
|
slice_count++;
|
||||||
is_slicing = weapon.is_slicing;
|
is_slicing = weapon.is_slicing;
|
||||||
}
|
}
|
||||||
|
|
||||||
weapon notify( "slice_done" );
|
weapon notify("slice_done");
|
||||||
|
|
||||||
while ( !( isdefined( weapon.is_armed ) && weapon.is_armed ) )
|
while (!(isdefined(weapon.is_armed) && weapon.is_armed))
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
|
||||||
if ( weapon.headchopper_kills >= 10 )
|
if (weapon.headchopper_kills >= 10)
|
||||||
{
|
{
|
||||||
self thread headchopper_expired( weapon );
|
self thread headchopper_expired(weapon);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -127,66 +127,66 @@ headchopperthink( weapon, electricradius, armed )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
targeting_thread( weapon, trigger )
|
targeting_thread(weapon, trigger)
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
self endon( "equip_headchopper_zm_taken" );
|
self endon("equip_headchopper_zm_taken");
|
||||||
weapon endon( "death" );
|
weapon endon("death");
|
||||||
weapon.zombies_only = 1;
|
weapon.zombies_only = 1;
|
||||||
|
|
||||||
while ( isdefined( weapon ) )
|
while (isdefined(weapon))
|
||||||
{
|
{
|
||||||
if ( weapon.is_armed || isdefined( weapon.is_slicing ) && weapon.is_slicing )
|
if (weapon.is_armed || isdefined(weapon.is_slicing) && weapon.is_slicing)
|
||||||
{
|
{
|
||||||
if ( isdefined( weapon.is_slicing ) && weapon.is_slicing )
|
if (isdefined(weapon.is_slicing) && weapon.is_slicing)
|
||||||
weapon waittill( "slice_done" );
|
weapon waittill("slice_done");
|
||||||
|
|
||||||
self headchopper_add_chop_ents( weapon, trigger );
|
self headchopper_add_chop_ents(weapon, trigger);
|
||||||
|
|
||||||
if ( !weapon.zombies_only )
|
if (!weapon.zombies_only)
|
||||||
weapon notify( "hi_priority_target" );
|
weapon notify("hi_priority_target");
|
||||||
}
|
}
|
||||||
|
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
headchopper_add_chop_ents( weapon, trigger )
|
headchopper_add_chop_ents(weapon, trigger)
|
||||||
{
|
{
|
||||||
zombies = getaiarray( level.zombie_team );
|
zombies = getaiarray(level.zombie_team);
|
||||||
|
|
||||||
foreach ( zombie in zombies )
|
foreach (zombie in zombies)
|
||||||
{
|
{
|
||||||
if ( !isdefined( zombie ) || !isalive( zombie ) )
|
if (!isdefined(zombie) || !isalive(zombie))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( isdefined( zombie.ignore_headchopper ) && zombie.ignore_headchopper )
|
if (isdefined(zombie.ignore_headchopper) && zombie.ignore_headchopper)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( zombie istouching( trigger ) )
|
if (zombie istouching(trigger))
|
||||||
weapon headchopper_add_chop_ent( zombie );
|
weapon headchopper_add_chop_ent(zombie);
|
||||||
}
|
}
|
||||||
|
|
||||||
players = get_players();
|
players = get_players();
|
||||||
|
|
||||||
foreach ( player in players )
|
foreach (player in players)
|
||||||
{
|
{
|
||||||
if ( is_player_valid( player ) && player istouching( trigger ) )
|
if (is_player_valid(player) && player istouching(trigger))
|
||||||
{
|
{
|
||||||
weapon headchopper_add_chop_ent( player );
|
weapon headchopper_add_chop_ent(player);
|
||||||
weapon.zombies_only = 0;
|
weapon.zombies_only = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
wait_for_targets( weapon )
|
wait_for_targets(weapon)
|
||||||
{
|
{
|
||||||
weapon endon( "hi_priority_target" );
|
weapon endon("hi_priority_target");
|
||||||
|
|
||||||
while ( isdefined( weapon ) )
|
while (isdefined(weapon))
|
||||||
{
|
{
|
||||||
if ( isdefined( weapon.chop_targets ) && weapon.chop_targets.size > 0 )
|
if (isdefined(weapon.chop_targets) && weapon.chop_targets.size > 0)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -195,107 +195,107 @@ wait_for_targets( weapon )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
headchopperattack( weapon, ent )
|
headchopperattack(weapon, ent)
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
self endon( "equip_headchopper_zm_taken" );
|
self endon("equip_headchopper_zm_taken");
|
||||||
weapon endon( "death" );
|
weapon endon("death");
|
||||||
|
|
||||||
if ( !isdefined( ent ) || !isalive( ent ) )
|
if (!isdefined(ent) || !isalive(ent))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
eye_position = ent geteye();
|
eye_position = ent geteye();
|
||||||
head_position = eye_position[2] + 13;
|
head_position = eye_position[2] + 13;
|
||||||
foot_position = ent.origin[2];
|
foot_position = ent.origin[2];
|
||||||
length_head_to_toe = abs( head_position - foot_position );
|
length_head_to_toe = abs(head_position - foot_position);
|
||||||
length_head_to_toe_25_percent = length_head_to_toe * 0.25;
|
length_head_to_toe_25_percent = length_head_to_toe * 0.25;
|
||||||
is_headchop = weapon.origin[2] >= head_position - length_head_to_toe_25_percent;
|
is_headchop = weapon.origin[2] >= head_position - length_head_to_toe_25_percent;
|
||||||
is_torsochop = weapon.origin[2] >= foot_position + length_head_to_toe_25_percent;
|
is_torsochop = weapon.origin[2] >= foot_position + length_head_to_toe_25_percent;
|
||||||
is_footchop = abs( foot_position - weapon.origin[2] ) <= length_head_to_toe_25_percent;
|
is_footchop = abs(foot_position - weapon.origin[2]) <= length_head_to_toe_25_percent;
|
||||||
trace_point = undefined;
|
trace_point = undefined;
|
||||||
|
|
||||||
if ( isdefined( is_headchop ) && is_headchop )
|
if (isdefined(is_headchop) && is_headchop)
|
||||||
trace_point = eye_position;
|
trace_point = eye_position;
|
||||||
else if ( isdefined( is_torsochop ) && is_torsochop )
|
else if (isdefined(is_torsochop) && is_torsochop)
|
||||||
trace_point = ent.origin + ( 0, 0, length_head_to_toe_25_percent * 2 );
|
trace_point = ent.origin + (0, 0, length_head_to_toe_25_percent * 2);
|
||||||
else
|
else
|
||||||
trace_point = ent.origin + ( 0, 0, length_head_to_toe_25_percent );
|
trace_point = ent.origin + (0, 0, length_head_to_toe_25_percent);
|
||||||
|
|
||||||
fwdangles = anglestoup( weapon.angles );
|
fwdangles = anglestoup(weapon.angles);
|
||||||
tracefwd = bullettrace( weapon.origin + fwdangles * 5, trace_point, 0, weapon, 1, 1 );
|
tracefwd = bullettrace(weapon.origin + fwdangles * 5, trace_point, 0, weapon, 1, 1);
|
||||||
|
|
||||||
if ( !isdefined( tracefwd ) || !isdefined( tracefwd["position"] ) || tracefwd["position"] != trace_point )
|
if (!isdefined(tracefwd) || !isdefined(tracefwd["position"]) || tracefwd["position"] != trace_point)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( isplayer( ent ) )
|
if (isplayer(ent))
|
||||||
{
|
{
|
||||||
if ( isdefined( is_headchop ) && is_headchop )
|
if (isdefined(is_headchop) && is_headchop)
|
||||||
{
|
{
|
||||||
radiusdamage( ent.origin + (0, 0, 5), 10, 50, 50, weapon, "MOD_MELEE" );
|
radiusdamage(ent.origin + (0, 0, 5), 10, 50, 50, weapon, "MOD_MELEE");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
radiusdamage( ent.origin + (0, 0, 5), 10, 25, 25, weapon, "MOD_MELEE" );
|
radiusdamage(ent.origin + (0, 0, 5), 10, 25, 25, weapon, "MOD_MELEE");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( !( isdefined( is_headchop ) && is_headchop ) || !( isdefined( is_headchop ) && is_headchop ) && !( isdefined( ent.has_legs ) && ent.has_legs ) )
|
if (!(isdefined(is_headchop) && is_headchop) || !(isdefined(is_headchop) && is_headchop) && !(isdefined(ent.has_legs) && ent.has_legs))
|
||||||
{
|
{
|
||||||
headchop_height = 25;
|
headchop_height = 25;
|
||||||
|
|
||||||
if ( !( isdefined( ent.has_legs ) && ent.has_legs ) )
|
if (!(isdefined(ent.has_legs) && ent.has_legs))
|
||||||
headchop_height = 35;
|
headchop_height = 35;
|
||||||
|
|
||||||
is_headchop = abs( eye_position[2] - weapon.origin[2] ) <= headchop_height;
|
is_headchop = abs(eye_position[2] - weapon.origin[2]) <= headchop_height;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( is_headchop ) && is_headchop )
|
if (isdefined(is_headchop) && is_headchop)
|
||||||
{
|
{
|
||||||
if ( !( isdefined( ent.no_gib ) && ent.no_gib ) )
|
if (!(isdefined(ent.no_gib) && ent.no_gib))
|
||||||
ent maps\mp\zombies\_zm_spawner::zombie_head_gib();
|
ent maps\mp\zombies\_zm_spawner::zombie_head_gib();
|
||||||
|
|
||||||
ent dodamage( ent.health + 666, weapon.origin );
|
ent dodamage(ent.health + 666, weapon.origin);
|
||||||
ent.headchopper_last_damage_time = gettime();
|
ent.headchopper_last_damage_time = gettime();
|
||||||
ent playsound( "zmb_exp_jib_headchopper_zombie" );
|
ent playsound("zmb_exp_jib_headchopper_zombie");
|
||||||
self thread headchopper_kill_vo( ent );
|
self thread headchopper_kill_vo(ent);
|
||||||
}
|
}
|
||||||
else if ( isdefined( is_torsochop ) && is_torsochop )
|
else if (isdefined(is_torsochop) && is_torsochop)
|
||||||
{
|
{
|
||||||
if ( ent.health <= 20 )
|
if (ent.health <= 20)
|
||||||
{
|
{
|
||||||
ent playsound( "zmb_exp_jib_headchopper_zombie" );
|
ent playsound("zmb_exp_jib_headchopper_zombie");
|
||||||
self thread headchopper_kill_vo( ent );
|
self thread headchopper_kill_vo(ent);
|
||||||
}
|
}
|
||||||
|
|
||||||
ent dodamage( 20, weapon.origin );
|
ent dodamage(20, weapon.origin);
|
||||||
ent.headchopper_last_damage_time = gettime();
|
ent.headchopper_last_damage_time = gettime();
|
||||||
}
|
}
|
||||||
else if ( isdefined( is_footchop ) && is_footchop )
|
else if (isdefined(is_footchop) && is_footchop)
|
||||||
{
|
{
|
||||||
if ( !( isdefined( ent.no_gib ) && ent.no_gib ) )
|
if (!(isdefined(ent.no_gib) && ent.no_gib))
|
||||||
{
|
{
|
||||||
ent.a.gib_ref = "no_legs";
|
ent.a.gib_ref = "no_legs";
|
||||||
ent thread maps\mp\animscripts\zm_death::do_gib();
|
ent thread maps\mp\animscripts\zm_death::do_gib();
|
||||||
ent.has_legs = 0;
|
ent.has_legs = 0;
|
||||||
ent allowedstances( "crouch" );
|
ent allowedstances("crouch");
|
||||||
ent setphysparams( 15, 0, 24 );
|
ent setphysparams(15, 0, 24);
|
||||||
ent allowpitchangle( 1 );
|
ent allowpitchangle(1);
|
||||||
ent setpitchorient();
|
ent setpitchorient();
|
||||||
ent thread maps\mp\animscripts\zm_run::needsdelayedupdate();
|
ent thread maps\mp\animscripts\zm_run::needsdelayedupdate();
|
||||||
|
|
||||||
if ( isdefined( ent.crawl_anim_override ) )
|
if (isdefined(ent.crawl_anim_override))
|
||||||
ent [[ ent.crawl_anim_override ]]();
|
ent [[ ent.crawl_anim_override ]]();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ent.health <= 10 )
|
if (ent.health <= 10)
|
||||||
{
|
{
|
||||||
ent playsound( "zmb_exp_jib_headchopper_zombie" );
|
ent playsound("zmb_exp_jib_headchopper_zombie");
|
||||||
self thread headchopper_kill_vo( ent );
|
self thread headchopper_kill_vo(ent);
|
||||||
}
|
}
|
||||||
|
|
||||||
ent dodamage( 10, weapon.origin );
|
ent dodamage(10, weapon.origin);
|
||||||
ent.headchopper_last_damage_time = gettime();
|
ent.headchopper_last_damage_time = gettime();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -303,36 +303,36 @@ headchopperattack( weapon, ent )
|
|||||||
|
|
||||||
setupwatchers()
|
setupwatchers()
|
||||||
{
|
{
|
||||||
self waittill( "weapon_watchers_created" );
|
self waittill("weapon_watchers_created");
|
||||||
|
|
||||||
watcher = maps\mp\gametypes_zm\_weaponobjects::getweaponobjectwatcher( "equip_headchopper" );
|
watcher = maps\mp\gametypes_zm\_weaponobjects::getweaponobjectwatcher("equip_headchopper");
|
||||||
watcher.onspawnretrievetriggers = ::equipment_onspawnretrievableweaponobject;
|
watcher.onspawnretrievetriggers = ::equipment_onspawnretrievableweaponobject;
|
||||||
}
|
}
|
||||||
|
|
||||||
equipment_onspawnretrievableweaponobject( watcher, player )
|
equipment_onspawnretrievableweaponobject(watcher, player)
|
||||||
{
|
{
|
||||||
self.plant_parent = self;
|
self.plant_parent = self;
|
||||||
iswallmount = isdefined( level.placeable_equipment_type[self.name] ) && level.placeable_equipment_type[self.name] == "wallmount";
|
iswallmount = isdefined(level.placeable_equipment_type[self.name]) && level.placeable_equipment_type[self.name] == "wallmount";
|
||||||
|
|
||||||
if ( !isdefined( player.turret_placement ) || !player.turret_placement["result"] )
|
if (!isdefined(player.turret_placement) || !player.turret_placement["result"])
|
||||||
{
|
{
|
||||||
if ( iswallmount || !getdvarint( "tu11_zombie_turret_placement_ignores_bodies" ) )
|
if (iswallmount || !getdvarint("tu11_zombie_turret_placement_ignores_bodies"))
|
||||||
{
|
{
|
||||||
self waittill( "stationary" );
|
self waittill("stationary");
|
||||||
|
|
||||||
waittillframeend;
|
waittillframeend;
|
||||||
|
|
||||||
if ( iswallmount )
|
if (iswallmount)
|
||||||
{
|
{
|
||||||
if ( isdefined( player.planted_wallmount_on_a_zombie ) && player.planted_wallmount_on_a_zombie )
|
if (isdefined(player.planted_wallmount_on_a_zombie) && player.planted_wallmount_on_a_zombie)
|
||||||
{
|
{
|
||||||
equip_name = self.name;
|
equip_name = self.name;
|
||||||
equipment_disappear_fx( self.origin, undefined, self.angles );
|
equipment_disappear_fx(self.origin, undefined, self.angles);
|
||||||
self delete();
|
self delete();
|
||||||
|
|
||||||
player.do_not_display_equipment_pickup_hint = 1;
|
player.do_not_display_equipment_pickup_hint = 1;
|
||||||
player maps\mp\zombies\_zm_equipment::equipment_take( equip_name );
|
player maps\mp\zombies\_zm_equipment::equipment_take(equip_name);
|
||||||
player maps\mp\zombies\_zm_equipment::equipment_give( equip_name );
|
player maps\mp\zombies\_zm_equipment::equipment_give(equip_name);
|
||||||
player.do_not_display_equipment_pickup_hint = undefined;
|
player.do_not_display_equipment_pickup_hint = undefined;
|
||||||
|
|
||||||
player.planted_wallmount_on_a_zombie = undefined;
|
player.planted_wallmount_on_a_zombie = undefined;
|
||||||
@ -351,17 +351,17 @@ equipment_onspawnretrievableweaponobject( watcher, player )
|
|||||||
|
|
||||||
equipment = watcher.name + "_zm";
|
equipment = watcher.name + "_zm";
|
||||||
|
|
||||||
if ( isdefined( player.current_equipment ) && player.current_equipment == equipment )
|
if (isdefined(player.current_equipment) && player.current_equipment == equipment)
|
||||||
player equipment_to_deployed( equipment );
|
player equipment_to_deployed(equipment);
|
||||||
|
|
||||||
if ( isdefined( level.zombie_equipment[equipment].place_fn ) )
|
if (isdefined(level.zombie_equipment[equipment].place_fn))
|
||||||
{
|
{
|
||||||
if ( isdefined( player.turret_placement ) && player.turret_placement["result"] )
|
if (isdefined(player.turret_placement) && player.turret_placement["result"])
|
||||||
{
|
{
|
||||||
plant_origin = player.turret_placement["origin"];
|
plant_origin = player.turret_placement["origin"];
|
||||||
plant_angles = player.turret_placement["angles"];
|
plant_angles = player.turret_placement["angles"];
|
||||||
}
|
}
|
||||||
else if ( isdefined( level.placeable_equipment_type[self.name] ) && level.placeable_equipment_type[self.name] == "wallmount" )
|
else if (isdefined(level.placeable_equipment_type[self.name]) && level.placeable_equipment_type[self.name] == "wallmount")
|
||||||
{
|
{
|
||||||
plant_origin = self.origin;
|
plant_origin = self.origin;
|
||||||
plant_angles = self.angles;
|
plant_angles = self.angles;
|
||||||
@ -372,40 +372,40 @@ equipment_onspawnretrievableweaponobject( watcher, player )
|
|||||||
plant_angles = self.angles;
|
plant_angles = self.angles;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( level.check_force_deploy_origin ) )
|
if (isdefined(level.check_force_deploy_origin))
|
||||||
{
|
{
|
||||||
if ( player [[ level.check_force_deploy_origin ]]( self, plant_origin, plant_angles ) )
|
if (player [[ level.check_force_deploy_origin ]](self, plant_origin, plant_angles))
|
||||||
{
|
{
|
||||||
plant_origin = player.origin;
|
plant_origin = player.origin;
|
||||||
plant_angles = player.angles;
|
plant_angles = player.angles;
|
||||||
self.plant_parent = player;
|
self.plant_parent = player;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( isdefined( level.check_force_deploy_z ) )
|
else if (isdefined(level.check_force_deploy_z))
|
||||||
{
|
{
|
||||||
if ( player [[ level.check_force_deploy_z ]]( self, plant_origin, plant_angles ) )
|
if (player [[ level.check_force_deploy_z ]](self, plant_origin, plant_angles))
|
||||||
plant_origin = ( plant_origin[0], plant_origin[1], player.origin[2] + 10 );
|
plant_origin = (plant_origin[0], plant_origin[1], player.origin[2] + 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( iswallmount ) && iswallmount )
|
if (isdefined(iswallmount) && iswallmount)
|
||||||
self ghost();
|
self ghost();
|
||||||
|
|
||||||
replacement = player [[ level.zombie_equipment[equipment].place_fn ]]( plant_origin, plant_angles );
|
replacement = player [[ level.zombie_equipment[equipment].place_fn ]](plant_origin, plant_angles);
|
||||||
|
|
||||||
if ( isdefined( replacement ) )
|
if (isdefined(replacement))
|
||||||
{
|
{
|
||||||
replacement.owner = player;
|
replacement.owner = player;
|
||||||
replacement.original_owner = player;
|
replacement.original_owner = player;
|
||||||
replacement.name = self.name;
|
replacement.name = self.name;
|
||||||
player notify( "equipment_placed", replacement, self.name );
|
player notify("equipment_placed", replacement, self.name);
|
||||||
|
|
||||||
if ( isdefined( level.equipment_planted ) )
|
if (isdefined(level.equipment_planted))
|
||||||
player [[ level.equipment_planted ]]( replacement, equipment, self.plant_parent );
|
player [[ level.equipment_planted ]](replacement, equipment, self.plant_parent);
|
||||||
|
|
||||||
player maps\mp\zombies\_zm_buildables::track_buildables_planted( self );
|
player maps\mp\zombies\_zm_buildables::track_buildables_planted(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( self ) )
|
if (isdefined(self))
|
||||||
self delete();
|
self delete();
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -9,94 +9,94 @@
|
|||||||
#include maps\mp\zombies\_zm_power;
|
#include maps\mp\zombies\_zm_power;
|
||||||
#include maps\mp\zombies\_zm_buildables;
|
#include maps\mp\zombies\_zm_buildables;
|
||||||
|
|
||||||
springpadthink( weapon, electricradius, armed )
|
springpadthink(weapon, electricradius, armed)
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
self endon( "equip_springpad_zm_taken" );
|
self endon("equip_springpad_zm_taken");
|
||||||
weapon endon( "death" );
|
weapon endon("death");
|
||||||
radiussquared = electricradius * electricradius;
|
radiussquared = electricradius * electricradius;
|
||||||
trigger = spawn( "trigger_box", weapon getcentroid(), 1, 48, 48, 32 );
|
trigger = spawn("trigger_box", weapon getcentroid(), 1, 48, 48, 32);
|
||||||
trigger.origin += anglestoforward( flat_angle( weapon.angles ) ) * -15;
|
trigger.origin += anglestoforward(flat_angle(weapon.angles)) * -15;
|
||||||
trigger.angles = weapon.angles;
|
trigger.angles = weapon.angles;
|
||||||
trigger enablelinkto();
|
trigger enablelinkto();
|
||||||
trigger linkto( weapon );
|
trigger linkto(weapon);
|
||||||
weapon.trigger = trigger;
|
weapon.trigger = trigger;
|
||||||
weapon thread springpadthinkcleanup( trigger );
|
weapon thread springpadthinkcleanup(trigger);
|
||||||
direction_forward = anglestoforward( flat_angle( weapon.angles ) + vectorscale( ( -1, 0, 0 ), 60.0 ) );
|
direction_forward = anglestoforward(flat_angle(weapon.angles) + vectorscale((-1, 0, 0), 60.0));
|
||||||
direction_vector = vectorscale( direction_forward, 1024 );
|
direction_vector = vectorscale(direction_forward, 1024);
|
||||||
direction_origin = weapon.origin + direction_vector;
|
direction_origin = weapon.origin + direction_vector;
|
||||||
home_angles = weapon.angles;
|
home_angles = weapon.angles;
|
||||||
weapon.is_armed = 0;
|
weapon.is_armed = 0;
|
||||||
self thread springpad_fx( weapon );
|
self thread springpad_fx(weapon);
|
||||||
self thread springpad_animate( weapon, armed );
|
self thread springpad_animate(weapon, armed);
|
||||||
|
|
||||||
weapon waittill( "armed" );
|
weapon waittill("armed");
|
||||||
|
|
||||||
weapon.is_armed = 1;
|
weapon.is_armed = 1;
|
||||||
weapon.fling_targets = [];
|
weapon.fling_targets = [];
|
||||||
self thread targeting_thread( weapon, trigger );
|
self thread targeting_thread(weapon, trigger);
|
||||||
|
|
||||||
while ( isdefined( weapon ) )
|
while (isdefined(weapon))
|
||||||
{
|
{
|
||||||
wait_for_targets( weapon );
|
wait_for_targets(weapon);
|
||||||
|
|
||||||
if ( isdefined( weapon.fling_targets ) && weapon.fling_targets.size > 0 )
|
if (isdefined(weapon.fling_targets) && weapon.fling_targets.size > 0)
|
||||||
{
|
{
|
||||||
weapon notify( "fling", weapon.zombies_only );
|
weapon notify("fling", weapon.zombies_only);
|
||||||
weapon.is_armed = 0;
|
weapon.is_armed = 0;
|
||||||
weapon.zombies_only = 1;
|
weapon.zombies_only = 1;
|
||||||
|
|
||||||
weapon.springpad_kills++;
|
weapon.springpad_kills++;
|
||||||
|
|
||||||
foreach ( ent in weapon.fling_targets )
|
foreach (ent in weapon.fling_targets)
|
||||||
{
|
{
|
||||||
if ( isplayer( ent ) )
|
if (isplayer(ent))
|
||||||
{
|
{
|
||||||
ent thread player_fling( weapon.origin + vectorscale( ( 0, 0, 1 ), 30.0 ), weapon.angles, direction_vector, weapon );
|
ent thread player_fling(weapon.origin + vectorscale((0, 0, 1), 30.0), weapon.angles, direction_vector, weapon);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( ent ) && isdefined( ent.custom_springpad_fling ) )
|
if (isdefined(ent) && isdefined(ent.custom_springpad_fling))
|
||||||
{
|
{
|
||||||
if ( !isdefined( self.num_zombies_flung ) )
|
if (!isdefined(self.num_zombies_flung))
|
||||||
self.num_zombies_flung = 0;
|
self.num_zombies_flung = 0;
|
||||||
|
|
||||||
self.num_zombies_flung++;
|
self.num_zombies_flung++;
|
||||||
self notify( "zombie_flung" );
|
self notify("zombie_flung");
|
||||||
ent thread [[ ent.custom_springpad_fling ]]( weapon, self );
|
ent thread [[ ent.custom_springpad_fling ]](weapon, self);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( ent ) )
|
if (isdefined(ent))
|
||||||
{
|
{
|
||||||
if ( !isdefined( self.num_zombies_flung ) )
|
if (!isdefined(self.num_zombies_flung))
|
||||||
self.num_zombies_flung = 0;
|
self.num_zombies_flung = 0;
|
||||||
|
|
||||||
self.num_zombies_flung++;
|
self.num_zombies_flung++;
|
||||||
self notify( "zombie_flung" );
|
self notify("zombie_flung");
|
||||||
|
|
||||||
if ( !isdefined( weapon.fling_scaler ) )
|
if (!isdefined(weapon.fling_scaler))
|
||||||
weapon.fling_scaler = 1;
|
weapon.fling_scaler = 1;
|
||||||
|
|
||||||
if ( isdefined( weapon.direction_vec_override ) )
|
if (isdefined(weapon.direction_vec_override))
|
||||||
direction_vector = weapon.direction_vec_override;
|
direction_vector = weapon.direction_vec_override;
|
||||||
|
|
||||||
ent dodamage( ent.health + 666, ent.origin );
|
ent dodamage(ent.health + 666, ent.origin);
|
||||||
ent startragdoll();
|
ent startragdoll();
|
||||||
ent launchragdoll( direction_vector / 4 * weapon.fling_scaler );
|
ent launchragdoll(direction_vector / 4 * weapon.fling_scaler);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
weapon.fling_targets = [];
|
weapon.fling_targets = [];
|
||||||
|
|
||||||
weapon waittill( "armed" );
|
weapon waittill("armed");
|
||||||
|
|
||||||
weapon.is_armed = 1;
|
weapon.is_armed = 1;
|
||||||
|
|
||||||
if ( weapon.springpad_kills >= 15 )
|
if (weapon.springpad_kills >= 15)
|
||||||
{
|
{
|
||||||
self thread springpad_expired( weapon );
|
self thread springpad_expired(weapon);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -105,24 +105,24 @@ springpadthink( weapon, electricradius, armed )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
player_fling( origin, angles, velocity, weapon )
|
player_fling(origin, angles, velocity, weapon)
|
||||||
{
|
{
|
||||||
torigin = ( self.origin[0], self.origin[1], origin[2] );
|
torigin = (self.origin[0], self.origin[1], origin[2]);
|
||||||
aorigin = ( origin + torigin ) * 0.5;
|
aorigin = (origin + torigin) * 0.5;
|
||||||
trace = physicstrace( origin, torigin, vectorscale( ( -1, -1, 0 ), 15.0 ), ( 15, 15, 30 ), self );
|
trace = physicstrace(origin, torigin, vectorscale((-1, -1, 0), 15.0), (15, 15, 30), self);
|
||||||
|
|
||||||
self setorigin( aorigin );
|
self setorigin(aorigin);
|
||||||
wait_network_frame();
|
wait_network_frame();
|
||||||
self setvelocity( velocity );
|
self setvelocity(velocity);
|
||||||
}
|
}
|
||||||
|
|
||||||
wait_for_targets( weapon )
|
wait_for_targets(weapon)
|
||||||
{
|
{
|
||||||
weapon endon( "hi_priority_target" );
|
weapon endon("hi_priority_target");
|
||||||
|
|
||||||
while ( isdefined( weapon ) )
|
while (isdefined(weapon))
|
||||||
{
|
{
|
||||||
if ( isdefined( weapon.fling_targets ) && weapon.fling_targets.size > 0 )
|
if (isdefined(weapon.fling_targets) && weapon.fling_targets.size > 0)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -133,59 +133,59 @@ wait_for_targets( weapon )
|
|||||||
|
|
||||||
#using_animtree("zombie_springpad");
|
#using_animtree("zombie_springpad");
|
||||||
|
|
||||||
springpad_animate( weapon, armed )
|
springpad_animate(weapon, armed)
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
self endon( "equip_springpad_zm_taken" );
|
self endon("equip_springpad_zm_taken");
|
||||||
weapon endon( "death" );
|
weapon endon("death");
|
||||||
weapon useanimtree( #animtree );
|
weapon useanimtree(#animtree);
|
||||||
f_animlength = getanimlength( %o_zombie_buildable_tramplesteam_reset_zombie );
|
f_animlength = getanimlength(%o_zombie_buildable_tramplesteam_reset_zombie);
|
||||||
r_animlength = getanimlength( %o_zombie_buildable_tramplesteam_reset );
|
r_animlength = getanimlength(%o_zombie_buildable_tramplesteam_reset);
|
||||||
l_animlength = getanimlength( %o_zombie_buildable_tramplesteam_launch );
|
l_animlength = getanimlength(%o_zombie_buildable_tramplesteam_launch);
|
||||||
weapon thread springpad_audio();
|
weapon thread springpad_audio();
|
||||||
prearmed = 0;
|
prearmed = 0;
|
||||||
|
|
||||||
if ( isdefined( armed ) && armed )
|
if (isdefined(armed) && armed)
|
||||||
prearmed = 1;
|
prearmed = 1;
|
||||||
|
|
||||||
fast_reset = 0;
|
fast_reset = 0;
|
||||||
|
|
||||||
while ( isdefined( weapon ) )
|
while (isdefined(weapon))
|
||||||
{
|
{
|
||||||
if ( !prearmed )
|
if (!prearmed)
|
||||||
{
|
{
|
||||||
if ( fast_reset )
|
if (fast_reset)
|
||||||
{
|
{
|
||||||
weapon setanim( %o_zombie_buildable_tramplesteam_reset_zombie );
|
weapon setanim(%o_zombie_buildable_tramplesteam_reset_zombie);
|
||||||
weapon thread playspringpadresetaudio( f_animlength );
|
weapon thread playspringpadresetaudio(f_animlength);
|
||||||
wait( f_animlength );
|
wait(f_animlength);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
weapon setanim( %o_zombie_buildable_tramplesteam_reset );
|
weapon setanim(%o_zombie_buildable_tramplesteam_reset);
|
||||||
weapon thread playspringpadresetaudio( r_animlength );
|
weapon thread playspringpadresetaudio(r_animlength);
|
||||||
wait( r_animlength );
|
wait(r_animlength);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
|
||||||
prearmed = 0;
|
prearmed = 0;
|
||||||
weapon notify( "armed" );
|
weapon notify("armed");
|
||||||
fast_reset = 1;
|
fast_reset = 1;
|
||||||
|
|
||||||
if ( isdefined( weapon ) )
|
if (isdefined(weapon))
|
||||||
{
|
{
|
||||||
weapon setanim( %o_zombie_buildable_tramplesteam_compressed_idle );
|
weapon setanim(%o_zombie_buildable_tramplesteam_compressed_idle);
|
||||||
|
|
||||||
weapon waittill( "fling", fast );
|
weapon waittill("fling", fast);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( weapon ) )
|
if (isdefined(weapon))
|
||||||
{
|
{
|
||||||
weapon setanim( %o_zombie_buildable_tramplesteam_launch );
|
weapon setanim(%o_zombie_buildable_tramplesteam_launch);
|
||||||
wait( l_animlength );
|
wait(l_animlength);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -3,14 +3,14 @@
|
|||||||
#include common_scripts\utility;
|
#include common_scripts\utility;
|
||||||
#include maps\mp\zombies\_zm_utility;
|
#include maps\mp\zombies\_zm_utility;
|
||||||
|
|
||||||
startsubwooferdecay( weapon )
|
startsubwooferdecay(weapon)
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
self endon( "equip_subwoofer_zm_taken" );
|
self endon("equip_subwoofer_zm_taken");
|
||||||
|
|
||||||
// hack to decrease max subwoofer time
|
// hack to decrease max subwoofer time
|
||||||
if ( self.subwoofer_health > 30 )
|
if (self.subwoofer_health > 30)
|
||||||
{
|
{
|
||||||
self.subwoofer_health = 30;
|
self.subwoofer_health = 30;
|
||||||
}
|
}
|
||||||
@ -19,17 +19,17 @@ startsubwooferdecay( weapon )
|
|||||||
|
|
||||||
wait fire_time + 0.05; // startup time
|
wait fire_time + 0.05; // startup time
|
||||||
|
|
||||||
while ( isDefined( weapon ) )
|
while (isDefined(weapon))
|
||||||
{
|
{
|
||||||
if ( weapon.power_on )
|
if (weapon.power_on)
|
||||||
{
|
{
|
||||||
weapon.subwoofer_kills = 0; // hack to make subwoofer not get destroyed from kills
|
weapon.subwoofer_kills = 0; // hack to make subwoofer not get destroyed from kills
|
||||||
self.subwoofer_health -= fire_time;
|
self.subwoofer_health -= fire_time;
|
||||||
|
|
||||||
if ( self.subwoofer_health <= 0 )
|
if (self.subwoofer_health <= 0)
|
||||||
{
|
{
|
||||||
self.subwoofer_health = undefined;
|
self.subwoofer_health = undefined;
|
||||||
self thread subwoofer_expired( weapon );
|
self thread subwoofer_expired(weapon);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -2,55 +2,55 @@
|
|||||||
#include common_scripts\utility;
|
#include common_scripts\utility;
|
||||||
#include maps\mp\zombies\_zm_utility;
|
#include maps\mp\zombies\_zm_utility;
|
||||||
|
|
||||||
startturretdeploy( weapon )
|
startturretdeploy(weapon)
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
self endon( "equip_turret_zm_taken" );
|
self endon("equip_turret_zm_taken");
|
||||||
self thread maps\mp\zombies\_zm_equip_turret::watchforcleanup();
|
self thread maps\mp\zombies\_zm_equip_turret::watchforcleanup();
|
||||||
|
|
||||||
if ( !isDefined( self.turret_health ) )
|
if (!isDefined(self.turret_health))
|
||||||
{
|
{
|
||||||
self.turret_health = 30;
|
self.turret_health = 30;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( weapon ) )
|
if (isDefined(weapon))
|
||||||
{
|
{
|
||||||
weapon hide();
|
weapon hide();
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
|
|
||||||
if ( isDefined( weapon.power_on ) && weapon.power_on )
|
if (isDefined(weapon.power_on) && weapon.power_on)
|
||||||
{
|
{
|
||||||
weapon.turret notify( "stop_burst_fire_unmanned" );
|
weapon.turret notify("stop_burst_fire_unmanned");
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isDefined( weapon ) )
|
if (!isDefined(weapon))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( self.turret ) )
|
if (isDefined(self.turret))
|
||||||
{
|
{
|
||||||
self.turret notify( "stop_burst_fire_unmanned" );
|
self.turret notify("stop_burst_fire_unmanned");
|
||||||
self.turret notify( "turret_deactivated" );
|
self.turret notify("turret_deactivated");
|
||||||
self.turret delete();
|
self.turret delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
turret = spawnturret( "misc_turret", weapon.origin, "zombie_bullet_crouch_zm" );
|
turret = spawnturret("misc_turret", weapon.origin, "zombie_bullet_crouch_zm");
|
||||||
turret.turrettype = "sentry";
|
turret.turrettype = "sentry";
|
||||||
turret setturrettype( turret.turrettype );
|
turret setturrettype(turret.turrettype);
|
||||||
turret setmodel( "p6_anim_zm_buildable_turret" );
|
turret setmodel("p6_anim_zm_buildable_turret");
|
||||||
turret.origin = weapon.origin;
|
turret.origin = weapon.origin;
|
||||||
turret.angles = weapon.angles;
|
turret.angles = weapon.angles;
|
||||||
turret linkto( weapon );
|
turret linkto(weapon);
|
||||||
turret makeunusable();
|
turret makeunusable();
|
||||||
turret.owner = self;
|
turret.owner = self;
|
||||||
turret setowner( turret.owner );
|
turret setowner(turret.owner);
|
||||||
turret maketurretunusable();
|
turret maketurretunusable();
|
||||||
turret setmode( "auto_nonai" );
|
turret setmode("auto_nonai");
|
||||||
turret setdefaultdroppitch( 45 );
|
turret setdefaultdroppitch(45);
|
||||||
turret setconvergencetime( 0.3 );
|
turret setconvergencetime(0.3);
|
||||||
turret setturretteam( self.team );
|
turret setturretteam(self.team);
|
||||||
turret.team = self.team;
|
turret.team = self.team;
|
||||||
turret.damage_own_team = 0;
|
turret.damage_own_team = 0;
|
||||||
turret.turret_active = 1;
|
turret.turret_active = 1;
|
||||||
@ -60,31 +60,31 @@ startturretdeploy( weapon )
|
|||||||
self.turret = turret;
|
self.turret = turret;
|
||||||
weapon turret_power_on();
|
weapon turret_power_on();
|
||||||
|
|
||||||
if ( weapon.power_on )
|
if (weapon.power_on)
|
||||||
{
|
{
|
||||||
turret thread maps\mp\zombies\_zm_mgturret::burst_fire_unmanned();
|
turret thread maps\mp\zombies\_zm_mgturret::burst_fire_unmanned();
|
||||||
}
|
}
|
||||||
|
|
||||||
self thread turretdecay( weapon );
|
self thread turretdecay(weapon);
|
||||||
self thread maps\mp\zombies\_zm_buildables::delete_on_disconnect( weapon );
|
self thread maps\mp\zombies\_zm_buildables::delete_on_disconnect(weapon);
|
||||||
weapon waittill("death");
|
weapon waittill("death");
|
||||||
|
|
||||||
if ( isDefined( self.buildableturret.sound_ent ) )
|
if (isDefined(self.buildableturret.sound_ent))
|
||||||
{
|
{
|
||||||
self.buildableturret.sound_ent playsound( "wpn_zmb_turret_stop" );
|
self.buildableturret.sound_ent playsound("wpn_zmb_turret_stop");
|
||||||
self.buildableturret.sound_ent delete();
|
self.buildableturret.sound_ent delete();
|
||||||
self.buildableturret.sound_ent = undefined;
|
self.buildableturret.sound_ent = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( turret ) )
|
if (isDefined(turret))
|
||||||
{
|
{
|
||||||
turret notify( "stop_burst_fire_unmanned" );
|
turret notify("stop_burst_fire_unmanned");
|
||||||
turret notify( "turret_deactivated" );
|
turret notify("turret_deactivated");
|
||||||
turret delete();
|
turret delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
self.turret = undefined;
|
self.turret = undefined;
|
||||||
self notify( "turret_cleanup" );
|
self notify("turret_cleanup");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -94,32 +94,32 @@ turret_power_on()
|
|||||||
self.turret thread maps\mp\zombies\_zm_mgturret::burst_fire_unmanned();
|
self.turret thread maps\mp\zombies\_zm_mgturret::burst_fire_unmanned();
|
||||||
player = self.turret.owner;
|
player = self.turret.owner;
|
||||||
|
|
||||||
if ( !isDefined( player.buildableturret.sound_ent ) )
|
if (!isDefined(player.buildableturret.sound_ent))
|
||||||
{
|
{
|
||||||
player.buildableturret.sound_ent = spawn( "script_origin", self.turret.origin );
|
player.buildableturret.sound_ent = spawn("script_origin", self.turret.origin);
|
||||||
}
|
}
|
||||||
|
|
||||||
player.buildableturret.sound_ent playsound( "wpn_zmb_turret_start" );
|
player.buildableturret.sound_ent playsound("wpn_zmb_turret_start");
|
||||||
player.buildableturret.sound_ent playloopsound( "wpn_zmb_turret_loop", 2 );
|
player.buildableturret.sound_ent playloopsound("wpn_zmb_turret_loop", 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
turretdecay( weapon )
|
turretdecay(weapon)
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
self endon( "equip_turret_zm_taken" );
|
self endon("equip_turret_zm_taken");
|
||||||
|
|
||||||
while ( isDefined( weapon ) )
|
while (isDefined(weapon))
|
||||||
{
|
{
|
||||||
if ( weapon.power_on )
|
if (weapon.power_on)
|
||||||
{
|
{
|
||||||
self.turret_health--;
|
self.turret_health--;
|
||||||
|
|
||||||
if ( self.turret_health <= 0 )
|
if (self.turret_health <= 0)
|
||||||
{
|
{
|
||||||
maps\mp\zombies\_zm_equipment::equipment_disappear_fx( weapon.origin, undefined, weapon.angles );
|
maps\mp\zombies\_zm_equipment::equipment_disappear_fx(weapon.origin, undefined, weapon.angles);
|
||||||
self maps\mp\zombies\_zm_equip_turret::cleanupoldturret();
|
self maps\mp\zombies\_zm_equip_turret::cleanupoldturret();
|
||||||
self thread maps\mp\zombies\_zm_equipment::equipment_release( level.turret_name );
|
self thread maps\mp\zombies\_zm_equipment::equipment_release(level.turret_name);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,49 +2,49 @@
|
|||||||
#include common_scripts\utility;
|
#include common_scripts\utility;
|
||||||
#include maps\mp\zombies\_zm_utility;
|
#include maps\mp\zombies\_zm_utility;
|
||||||
|
|
||||||
show_equipment_hint( equipment )
|
show_equipment_hint(equipment)
|
||||||
{
|
{
|
||||||
if ( is_true( self.do_not_display_equipment_pickup_hint ) )
|
if (is_true(self.do_not_display_equipment_pickup_hint))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
self notify( "kill_previous_show_equipment_hint_thread" );
|
self notify("kill_previous_show_equipment_hint_thread");
|
||||||
self endon( "kill_previous_show_equipment_hint_thread" );
|
self endon("kill_previous_show_equipment_hint_thread");
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
|
|
||||||
wait 0.5;
|
wait 0.5;
|
||||||
|
|
||||||
text = maps\mp\zombies\_zm_equipment::get_equipment_howto_hint( equipment );
|
text = maps\mp\zombies\_zm_equipment::get_equipment_howto_hint(equipment);
|
||||||
self maps\mp\zombies\_zm_equipment::show_equipment_hint_text( text );
|
self maps\mp\zombies\_zm_equipment::show_equipment_hint_text(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
placed_equipment_think( model, equipname, origin, angles, tradius, toffset )
|
placed_equipment_think(model, equipname, origin, angles, tradius, toffset)
|
||||||
{
|
{
|
||||||
pickupmodel = spawn( "script_model", origin );
|
pickupmodel = spawn("script_model", origin);
|
||||||
|
|
||||||
if ( isDefined( angles ) )
|
if (isDefined(angles))
|
||||||
{
|
{
|
||||||
pickupmodel.angles = angles;
|
pickupmodel.angles = angles;
|
||||||
}
|
}
|
||||||
|
|
||||||
pickupmodel setmodel( model );
|
pickupmodel setmodel(model);
|
||||||
|
|
||||||
if ( isDefined( level.equipment_safe_to_drop ) )
|
if (isDefined(level.equipment_safe_to_drop))
|
||||||
{
|
{
|
||||||
if ( !( self [[ level.equipment_safe_to_drop ]]( pickupmodel ) ) )
|
if (!(self [[ level.equipment_safe_to_drop ]](pickupmodel)))
|
||||||
{
|
{
|
||||||
maps\mp\zombies\_zm_equipment::equipment_disappear_fx( pickupmodel.origin, undefined, pickupmodel.angles );
|
maps\mp\zombies\_zm_equipment::equipment_disappear_fx(pickupmodel.origin, undefined, pickupmodel.angles);
|
||||||
pickupmodel delete();
|
pickupmodel delete();
|
||||||
self maps\mp\zombies\_zm_equipment::equipment_take( equipname );
|
self maps\mp\zombies\_zm_equipment::equipment_take(equipname);
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
watchername = getsubstr( equipname, 0, equipname.size - 3 );
|
watchername = getsubstr(equipname, 0, equipname.size - 3);
|
||||||
|
|
||||||
if ( isDefined( level.retrievehints[ watchername ] ) )
|
if (isDefined(level.retrievehints[ watchername ]))
|
||||||
{
|
{
|
||||||
hint = level.retrievehints[ watchername ].hint;
|
hint = level.retrievehints[ watchername ].hint;
|
||||||
}
|
}
|
||||||
@ -53,105 +53,105 @@ placed_equipment_think( model, equipname, origin, angles, tradius, toffset )
|
|||||||
hint = &"MP_GENERIC_PICKUP";
|
hint = &"MP_GENERIC_PICKUP";
|
||||||
}
|
}
|
||||||
|
|
||||||
icon = maps\mp\zombies\_zm_equipment::get_equipment_icon( equipname );
|
icon = maps\mp\zombies\_zm_equipment::get_equipment_icon(equipname);
|
||||||
|
|
||||||
if ( !isDefined( tradius ) )
|
if (!isDefined(tradius))
|
||||||
{
|
{
|
||||||
tradius = 32;
|
tradius = 32;
|
||||||
}
|
}
|
||||||
|
|
||||||
torigin = origin;
|
torigin = origin;
|
||||||
|
|
||||||
if ( isDefined( toffset ) )
|
if (isDefined(toffset))
|
||||||
{
|
{
|
||||||
tforward = anglesToForward( angles );
|
tforward = anglesToForward(angles);
|
||||||
torigin += toffset * tforward;
|
torigin += toffset * tforward;
|
||||||
}
|
}
|
||||||
|
|
||||||
tup = anglesToUp( angles );
|
tup = anglesToUp(angles);
|
||||||
eq_unitrigger_offset = 12 * tup;
|
eq_unitrigger_offset = 12 * tup;
|
||||||
pickupmodel.stub = maps\mp\zombies\_zm_equipment::generate_equipment_unitrigger( "trigger_radius_use", torigin + eq_unitrigger_offset, angles, 0, tradius, 64, hint, equipname, maps\mp\zombies\_zm_equipment::placed_equipment_unitrigger_think, pickupmodel.canmove );
|
pickupmodel.stub = maps\mp\zombies\_zm_equipment::generate_equipment_unitrigger("trigger_radius_use", torigin + eq_unitrigger_offset, angles, 0, tradius, 64, hint, equipname, maps\mp\zombies\_zm_equipment::placed_equipment_unitrigger_think, pickupmodel.canmove);
|
||||||
pickupmodel.stub.model = pickupmodel;
|
pickupmodel.stub.model = pickupmodel;
|
||||||
pickupmodel.stub.equipname = equipname;
|
pickupmodel.stub.equipname = equipname;
|
||||||
pickupmodel.equipname = equipname;
|
pickupmodel.equipname = equipname;
|
||||||
pickupmodel thread item_watch_damage();
|
pickupmodel thread item_watch_damage();
|
||||||
|
|
||||||
if ( maps\mp\zombies\_zm_equipment::is_limited_equipment( equipname ) )
|
if (maps\mp\zombies\_zm_equipment::is_limited_equipment(equipname))
|
||||||
{
|
{
|
||||||
if ( !isDefined( level.dropped_equipment ) )
|
if (!isDefined(level.dropped_equipment))
|
||||||
{
|
{
|
||||||
level.dropped_equipment = [];
|
level.dropped_equipment = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( level.dropped_equipment[ equipname ] ) && isDefined( level.dropped_equipment[ equipname ].model ) )
|
if (isDefined(level.dropped_equipment[ equipname ]) && isDefined(level.dropped_equipment[ equipname ].model))
|
||||||
{
|
{
|
||||||
level.dropped_equipment[ equipname ].model maps\mp\zombies\_zm_equipment::dropped_equipment_destroy( 1 );
|
level.dropped_equipment[ equipname ].model maps\mp\zombies\_zm_equipment::dropped_equipment_destroy(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
level.dropped_equipment[ equipname ] = pickupmodel.stub;
|
level.dropped_equipment[ equipname ] = pickupmodel.stub;
|
||||||
}
|
}
|
||||||
|
|
||||||
maps\mp\zombies\_zm_equipment::destructible_equipment_list_add( pickupmodel );
|
maps\mp\zombies\_zm_equipment::destructible_equipment_list_add(pickupmodel);
|
||||||
return pickupmodel;
|
return pickupmodel;
|
||||||
}
|
}
|
||||||
|
|
||||||
item_watch_damage()
|
item_watch_damage()
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
self setcandamage( 1 );
|
self setcandamage(1);
|
||||||
|
|
||||||
while ( 1 )
|
while (1)
|
||||||
{
|
{
|
||||||
self.health = 1000000;
|
self.health = 1000000;
|
||||||
self waittill( "damage", amount );
|
self waittill("damage", amount);
|
||||||
self item_damage( amount );
|
self item_damage(amount);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
item_damage( damage )
|
item_damage(damage)
|
||||||
{
|
{
|
||||||
if ( isdefined( self.isriotshield ) && self.isriotshield )
|
if (isdefined(self.isriotshield) && self.isriotshield)
|
||||||
{
|
{
|
||||||
if ( isdefined( level.riotshield_damage_callback ) && isdefined( self.owner ) )
|
if (isdefined(level.riotshield_damage_callback) && isdefined(self.owner))
|
||||||
self.owner [[ level.riotshield_damage_callback ]]( damage, 0 );
|
self.owner [[ level.riotshield_damage_callback ]](damage, 0);
|
||||||
else if ( isdefined( level.deployed_riotshield_damage_callback ) )
|
else if (isdefined(level.deployed_riotshield_damage_callback))
|
||||||
self [[ level.deployed_riotshield_damage_callback ]]( damage );
|
self [[ level.deployed_riotshield_damage_callback ]](damage);
|
||||||
}
|
}
|
||||||
else if ( isdefined( self.owner ) )
|
else if (isdefined(self.owner))
|
||||||
{
|
{
|
||||||
self.owner player_damage_equipment( self.equipname, damage, self.origin, self.stub );
|
self.owner player_damage_equipment(self.equipname, damage, self.origin, self.stub);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( !isdefined( self.damage ) )
|
if (!isdefined(self.damage))
|
||||||
self.damage = 0;
|
self.damage = 0;
|
||||||
|
|
||||||
self.damage += damage;
|
self.damage += damage;
|
||||||
|
|
||||||
if ( self.damage >= 1500 )
|
if (self.damage >= 1500)
|
||||||
self thread maps\mp\zombies\_zm_equipment::dropped_equipment_destroy( 1 );
|
self thread maps\mp\zombies\_zm_equipment::dropped_equipment_destroy(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
player_damage_equipment( equipment, damage, origin, stub )
|
player_damage_equipment(equipment, damage, origin, stub)
|
||||||
{
|
{
|
||||||
if ( !isdefined( self.equipment_damage ) )
|
if (!isdefined(self.equipment_damage))
|
||||||
self.equipment_damage = [];
|
self.equipment_damage = [];
|
||||||
|
|
||||||
if ( !isdefined( self.equipment_damage[equipment] ) )
|
if (!isdefined(self.equipment_damage[equipment]))
|
||||||
self.equipment_damage[equipment] = 0;
|
self.equipment_damage[equipment] = 0;
|
||||||
|
|
||||||
self.equipment_damage[equipment] += damage;
|
self.equipment_damage[equipment] += damage;
|
||||||
|
|
||||||
if ( self.equipment_damage[equipment] >= 1500 )
|
if (self.equipment_damage[equipment] >= 1500)
|
||||||
{
|
{
|
||||||
thread maps\mp\zombies\_zm_unitrigger::unregister_unitrigger( stub );
|
thread maps\mp\zombies\_zm_unitrigger::unregister_unitrigger(stub);
|
||||||
|
|
||||||
if ( isdefined( level.placeable_equipment_destroy_fn[equipment] ) )
|
if (isdefined(level.placeable_equipment_destroy_fn[equipment]))
|
||||||
self [[ level.placeable_equipment_destroy_fn[equipment] ]]();
|
self [[ level.placeable_equipment_destroy_fn[equipment] ]]();
|
||||||
else
|
else
|
||||||
equipment_disappear_fx( origin );
|
equipment_disappear_fx(origin);
|
||||||
|
|
||||||
self equipment_release( equipment );
|
self equipment_release(equipment);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -4,8 +4,8 @@
|
|||||||
|
|
||||||
wait_for_team_death_and_round_end()
|
wait_for_team_death_and_round_end()
|
||||||
{
|
{
|
||||||
level endon( "game_module_ended" );
|
level endon("game_module_ended");
|
||||||
level endon( "end_game" );
|
level endon("end_game");
|
||||||
|
|
||||||
if (level.scr_zm_ui_gametype_obj != "zsnr")
|
if (level.scr_zm_ui_gametype_obj != "zsnr")
|
||||||
{
|
{
|
||||||
@ -16,24 +16,24 @@ wait_for_team_death_and_round_end()
|
|||||||
checking_for_round_tie = 0;
|
checking_for_round_tie = 0;
|
||||||
level.isresetting_grief = 0;
|
level.isresetting_grief = 0;
|
||||||
|
|
||||||
while ( 1 )
|
while (1)
|
||||||
{
|
{
|
||||||
cdc_alive = 0;
|
cdc_alive = 0;
|
||||||
cia_alive = 0;
|
cia_alive = 0;
|
||||||
players = get_players();
|
players = get_players();
|
||||||
i = 0;
|
i = 0;
|
||||||
|
|
||||||
while ( i < players.size )
|
while (i < players.size)
|
||||||
{
|
{
|
||||||
if ( !isDefined( players[ i ]._encounters_team ) )
|
if (!isDefined(players[ i ]._encounters_team))
|
||||||
{
|
{
|
||||||
i++;
|
i++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( players[ i ]._encounters_team == "A" )
|
if (players[ i ]._encounters_team == "A")
|
||||||
{
|
{
|
||||||
if ( is_player_valid( players[ i ] ) )
|
if (is_player_valid(players[ i ]))
|
||||||
{
|
{
|
||||||
cia_alive++;
|
cia_alive++;
|
||||||
}
|
}
|
||||||
@ -42,7 +42,7 @@ wait_for_team_death_and_round_end()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( is_player_valid( players[ i ] ) )
|
if (is_player_valid(players[ i ]))
|
||||||
{
|
{
|
||||||
cdc_alive++;
|
cdc_alive++;
|
||||||
}
|
}
|
||||||
@ -52,20 +52,20 @@ wait_for_team_death_and_round_end()
|
|||||||
|
|
||||||
if (players.size == 1)
|
if (players.size == 1)
|
||||||
{
|
{
|
||||||
if ( !checking_for_round_tie )
|
if (!checking_for_round_tie)
|
||||||
{
|
{
|
||||||
if (cia_alive == 0 && cdc_alive == 0)
|
if (cia_alive == 0 && cdc_alive == 0)
|
||||||
{
|
{
|
||||||
level notify( "stop_round_end_check" );
|
level notify("stop_round_end_check");
|
||||||
level thread check_for_round_end();
|
level thread check_for_round_end();
|
||||||
checking_for_round_tie = 1;
|
checking_for_round_tie = 1;
|
||||||
checking_for_round_end = 1;
|
checking_for_round_end = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( cia_alive > 0 || cdc_alive > 0 )
|
if (cia_alive > 0 || cdc_alive > 0)
|
||||||
{
|
{
|
||||||
level notify( "stop_round_end_check" );
|
level notify("stop_round_end_check");
|
||||||
checking_for_round_end = 0;
|
checking_for_round_end = 0;
|
||||||
checking_for_round_tie = 0;
|
checking_for_round_tie = 0;
|
||||||
}
|
}
|
||||||
@ -74,34 +74,34 @@ wait_for_team_death_and_round_end()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !checking_for_round_tie )
|
if (!checking_for_round_tie)
|
||||||
{
|
{
|
||||||
if (cia_alive == 0 && cdc_alive == 0)
|
if (cia_alive == 0 && cdc_alive == 0)
|
||||||
{
|
{
|
||||||
level notify( "stop_round_end_check" );
|
level notify("stop_round_end_check");
|
||||||
level thread check_for_round_end();
|
level thread check_for_round_end();
|
||||||
checking_for_round_tie = 1;
|
checking_for_round_tie = 1;
|
||||||
checking_for_round_end = 1;
|
checking_for_round_end = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !checking_for_round_end )
|
if (!checking_for_round_end)
|
||||||
{
|
{
|
||||||
if ( cia_alive == 0 )
|
if (cia_alive == 0)
|
||||||
{
|
{
|
||||||
level thread check_for_round_end( "B" );
|
level thread check_for_round_end("B");
|
||||||
checking_for_round_end = 1;
|
checking_for_round_end = 1;
|
||||||
}
|
}
|
||||||
else if ( cdc_alive == 0 )
|
else if (cdc_alive == 0)
|
||||||
{
|
{
|
||||||
level thread check_for_round_end( "A" );
|
level thread check_for_round_end("A");
|
||||||
checking_for_round_end = 1;
|
checking_for_round_end = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( cia_alive > 0 && cdc_alive > 0 )
|
if (cia_alive > 0 && cdc_alive > 0)
|
||||||
{
|
{
|
||||||
level notify( "stop_round_end_check" );
|
level notify("stop_round_end_check");
|
||||||
checking_for_round_end = 0;
|
checking_for_round_end = 0;
|
||||||
checking_for_round_tie = 0;
|
checking_for_round_tie = 0;
|
||||||
}
|
}
|
||||||
@ -112,8 +112,8 @@ wait_for_team_death_and_round_end()
|
|||||||
|
|
||||||
check_for_round_end(winner)
|
check_for_round_end(winner)
|
||||||
{
|
{
|
||||||
level endon( "stop_round_end_check" );
|
level endon("stop_round_end_check");
|
||||||
level endon( "end_game" );
|
level endon("end_game");
|
||||||
|
|
||||||
if (isDefined(winner))
|
if (isDefined(winner))
|
||||||
{
|
{
|
||||||
@ -175,14 +175,14 @@ round_end(winner)
|
|||||||
}
|
}
|
||||||
|
|
||||||
level.isresetting_grief = 1;
|
level.isresetting_grief = 1;
|
||||||
level notify( "end_round_think" );
|
level notify("end_round_think");
|
||||||
level.zombie_vars[ "spectators_respawn" ] = 1;
|
level.zombie_vars[ "spectators_respawn" ] = 1;
|
||||||
level notify( "keep_griefing" );
|
level notify("keep_griefing");
|
||||||
level notify( "restart_round" );
|
level notify("restart_round");
|
||||||
|
|
||||||
level.snr_round_number++;
|
level.snr_round_number++;
|
||||||
|
|
||||||
level thread maps\mp\zombies\_zm_audio_announcer::leaderdialog( "grief_restarted" );
|
level thread maps\mp\zombies\_zm_audio_announcer::leaderdialog("grief_restarted");
|
||||||
|
|
||||||
if (isDefined(level.show_grief_hud_msg_func))
|
if (isDefined(level.show_grief_hud_msg_func))
|
||||||
{
|
{
|
||||||
@ -192,11 +192,11 @@ round_end(winner)
|
|||||||
{
|
{
|
||||||
if (player.team == team)
|
if (player.team == team)
|
||||||
{
|
{
|
||||||
player thread [[level.show_grief_hud_msg_func]]( "You won the round!" );
|
player thread [[level.show_grief_hud_msg_func]]("You won the round!");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player thread [[level.show_grief_hud_msg_func]]( "You lost the round!" );
|
player thread [[level.show_grief_hud_msg_func]]("You lost the round!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -204,15 +204,15 @@ round_end(winner)
|
|||||||
{
|
{
|
||||||
foreach (player in players)
|
foreach (player in players)
|
||||||
{
|
{
|
||||||
player thread [[level.show_grief_hud_msg_func]]( &"ZOMBIE_GRIEF_RESET" );
|
player thread [[level.show_grief_hud_msg_func]](&"ZOMBIE_GRIEF_RESET");
|
||||||
player thread [[level.show_grief_hud_msg_func]]( "", undefined, 30 );
|
player thread [[level.show_grief_hud_msg_func]]("", undefined, 30);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
zombie_goto_round( level.snr_round_number );
|
zombie_goto_round(level.snr_round_number);
|
||||||
level thread maps\mp\zombies\_zm_game_module::reset_grief();
|
level thread maps\mp\zombies\_zm_game_module::reset_grief();
|
||||||
level thread maps\mp\zombies\_zm::round_think( 1 );
|
level thread maps\mp\zombies\_zm::round_think(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
game_won(winner)
|
game_won(winner)
|
||||||
@ -222,32 +222,32 @@ game_won(winner)
|
|||||||
players = get_players();
|
players = get_players();
|
||||||
i = 0;
|
i = 0;
|
||||||
|
|
||||||
while ( i < players.size )
|
while (i < players.size)
|
||||||
{
|
{
|
||||||
players[ i ] freezecontrols( 1 );
|
players[ i ] freezecontrols(1);
|
||||||
|
|
||||||
if ( players[ i ]._encounters_team == winner )
|
if (players[ i ]._encounters_team == winner)
|
||||||
{
|
{
|
||||||
players[ i ] thread maps\mp\zombies\_zm_audio_announcer::leaderdialogonplayer( "grief_won" );
|
players[ i ] thread maps\mp\zombies\_zm_audio_announcer::leaderdialogonplayer("grief_won");
|
||||||
i++;
|
i++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
players[ i ] thread maps\mp\zombies\_zm_audio_announcer::leaderdialogonplayer( "grief_lost" );
|
players[ i ] thread maps\mp\zombies\_zm_audio_announcer::leaderdialogonplayer("grief_lost");
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
level notify( "game_module_ended", winner );
|
level notify("game_module_ended", winner);
|
||||||
level._game_module_game_end_check = undefined;
|
level._game_module_game_end_check = undefined;
|
||||||
maps\mp\gametypes_zm\_zm_gametype::track_encounters_win_stats( level.gamemodulewinningteam );
|
maps\mp\gametypes_zm\_zm_gametype::track_encounters_win_stats(level.gamemodulewinningteam);
|
||||||
level notify( "end_game" );
|
level notify("end_game");
|
||||||
}
|
}
|
||||||
|
|
||||||
zombie_goto_round(target_round)
|
zombie_goto_round(target_round)
|
||||||
{
|
{
|
||||||
level endon( "end_game" );
|
level endon("end_game");
|
||||||
|
|
||||||
if ( target_round < 1 )
|
if (target_round < 1)
|
||||||
{
|
{
|
||||||
target_round = 1;
|
target_round = 1;
|
||||||
}
|
}
|
||||||
@ -255,11 +255,11 @@ zombie_goto_round(target_round)
|
|||||||
level.zombie_total = 0;
|
level.zombie_total = 0;
|
||||||
zombies = get_round_enemy_array();
|
zombies = get_round_enemy_array();
|
||||||
|
|
||||||
if ( isDefined( zombies ) )
|
if (isDefined(zombies))
|
||||||
{
|
{
|
||||||
for ( i = 0; i < zombies.size; i++ )
|
for (i = 0; i < zombies.size; i++)
|
||||||
{
|
{
|
||||||
zombies[ i ] dodamage( zombies[ i ].health + 666, zombies[ i ].origin );
|
zombies[ i ] dodamage(zombies[ i ].health + 666, zombies[ i ].origin);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,28 +2,28 @@
|
|||||||
#include common_scripts\utility;
|
#include common_scripts\utility;
|
||||||
#include maps\mp\zombies\_zm_utility;
|
#include maps\mp\zombies\_zm_utility;
|
||||||
|
|
||||||
onspawnplayer( predictedspawn )
|
onspawnplayer(predictedspawn)
|
||||||
{
|
{
|
||||||
if ( !isDefined( predictedspawn ) )
|
if (!isDefined(predictedspawn))
|
||||||
{
|
{
|
||||||
predictedspawn = 0;
|
predictedspawn = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
pixbeginevent( "ZSURVIVAL:onSpawnPlayer" );
|
pixbeginevent("ZSURVIVAL:onSpawnPlayer");
|
||||||
self.usingobj = undefined;
|
self.usingobj = undefined;
|
||||||
self.is_zombie = 0;
|
self.is_zombie = 0;
|
||||||
|
|
||||||
if ( isDefined( level.custom_spawnplayer ) && is_true( self.player_initialized ) )
|
if (isDefined(level.custom_spawnplayer) && is_true(self.player_initialized))
|
||||||
{
|
{
|
||||||
self [[ level.custom_spawnplayer ]]();
|
self [[ level.custom_spawnplayer ]]();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( level.customspawnlogic ) )
|
if (isDefined(level.customspawnlogic))
|
||||||
{
|
{
|
||||||
self [[ level.customspawnlogic ]]( predictedspawn );
|
self [[ level.customspawnlogic ]](predictedspawn);
|
||||||
|
|
||||||
if ( predictedspawn )
|
if (predictedspawn)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -32,26 +32,26 @@ onspawnplayer( predictedspawn )
|
|||||||
{
|
{
|
||||||
location = level.scr_zm_map_start_location;
|
location = level.scr_zm_map_start_location;
|
||||||
|
|
||||||
if ( ( location == "default" || location == "" ) && isDefined( level.default_start_location ) )
|
if ((location == "default" || location == "") && isDefined(level.default_start_location))
|
||||||
{
|
{
|
||||||
location = level.default_start_location;
|
location = level.default_start_location;
|
||||||
}
|
}
|
||||||
|
|
||||||
match_string = level.scr_zm_ui_gametype + "_" + location;
|
match_string = level.scr_zm_ui_gametype + "_" + location;
|
||||||
spawnpoints = [];
|
spawnpoints = [];
|
||||||
structs = getstructarray( "initial_spawn", "script_noteworthy" );
|
structs = getstructarray("initial_spawn", "script_noteworthy");
|
||||||
|
|
||||||
if ( isdefined( structs ) )
|
if (isdefined(structs))
|
||||||
{
|
{
|
||||||
for ( i = 0; i < structs.size; i++ )
|
for (i = 0; i < structs.size; i++)
|
||||||
{
|
{
|
||||||
if ( isdefined( structs[ i ].script_string ) )
|
if (isdefined(structs[ i ].script_string))
|
||||||
{
|
{
|
||||||
tokens = strtok( structs[ i ].script_string, " " );
|
tokens = strtok(structs[ i ].script_string, " ");
|
||||||
|
|
||||||
foreach ( token in tokens )
|
foreach (token in tokens)
|
||||||
{
|
{
|
||||||
if ( token == match_string )
|
if (token == match_string)
|
||||||
{
|
{
|
||||||
spawnpoints[ spawnpoints.size ] = structs[ i ];
|
spawnpoints[ spawnpoints.size ] = structs[ i ];
|
||||||
}
|
}
|
||||||
@ -60,30 +60,30 @@ onspawnplayer( predictedspawn )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isDefined( spawnpoints ) || spawnpoints.size == 0 )
|
if (!isDefined(spawnpoints) || spawnpoints.size == 0)
|
||||||
{
|
{
|
||||||
spawnpoints = getstructarray( "initial_spawn_points", "targetname" );
|
spawnpoints = getstructarray("initial_spawn_points", "targetname");
|
||||||
}
|
}
|
||||||
|
|
||||||
spawnpoint = maps\mp\zombies\_zm::getfreespawnpoint( spawnpoints, self );
|
spawnpoint = maps\mp\zombies\_zm::getfreespawnpoint(spawnpoints, self);
|
||||||
|
|
||||||
if ( predictedspawn )
|
if (predictedspawn)
|
||||||
{
|
{
|
||||||
self predictspawnpoint( spawnpoint.origin, spawnpoint.angles );
|
self predictspawnpoint(spawnpoint.origin, spawnpoint.angles);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
self spawn( spawnpoint.origin, spawnpoint.angles, "zsurvival" );
|
self spawn(spawnpoint.origin, spawnpoint.angles, "zsurvival");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self.entity_num = self getentitynumber();
|
self.entity_num = self getentitynumber();
|
||||||
self thread maps\mp\zombies\_zm::onplayerspawned();
|
self thread maps\mp\zombies\_zm::onplayerspawned();
|
||||||
self thread maps\mp\zombies\_zm::player_revive_monitor();
|
self thread maps\mp\zombies\_zm::player_revive_monitor();
|
||||||
self freezecontrols( 1 );
|
self freezecontrols(1);
|
||||||
self.spectator_respawn = spawnpoint;
|
self.spectator_respawn = spawnpoint;
|
||||||
self.score = self maps\mp\gametypes_zm\_globallogic_score::getpersstat( "score" );
|
self.score = self maps\mp\gametypes_zm\_globallogic_score::getpersstat("score");
|
||||||
self.pers[ "participation" ] = 0;
|
self.pers[ "participation" ] = 0;
|
||||||
|
|
||||||
self.score_total = self.score;
|
self.score_total = self.score;
|
||||||
@ -93,19 +93,19 @@ onspawnplayer( predictedspawn )
|
|||||||
self.enabletext = 1;
|
self.enabletext = 1;
|
||||||
self thread maps\mp\zombies\_zm_blockers::rebuild_barrier_reward_reset();
|
self thread maps\mp\zombies\_zm_blockers::rebuild_barrier_reward_reset();
|
||||||
|
|
||||||
if ( !is_true( level.host_ended_game ) )
|
if (!is_true(level.host_ended_game))
|
||||||
{
|
{
|
||||||
self freeze_player_controls( 0 );
|
self freeze_player_controls(0);
|
||||||
self enableweapons();
|
self enableweapons();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( level.game_mode_spawn_player_logic ) )
|
if (isDefined(level.game_mode_spawn_player_logic))
|
||||||
{
|
{
|
||||||
spawn_in_spectate = [[ level.game_mode_spawn_player_logic ]]();
|
spawn_in_spectate = [[ level.game_mode_spawn_player_logic ]]();
|
||||||
|
|
||||||
if ( spawn_in_spectate )
|
if (spawn_in_spectate)
|
||||||
{
|
{
|
||||||
self delay_thread( 0.05, maps\mp\zombies\_zm::spawnspectator );
|
self delay_thread(0.05, maps\mp\zombies\_zm::spawnspectator);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,37 +114,37 @@ onspawnplayer( predictedspawn )
|
|||||||
|
|
||||||
onplayerspawned()
|
onplayerspawned()
|
||||||
{
|
{
|
||||||
level endon( "end_game" );
|
level endon("end_game");
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
|
|
||||||
for ( ;; )
|
for (;;)
|
||||||
{
|
{
|
||||||
self waittill_either( "spawned_player", "fake_spawned_player" );
|
self waittill_either("spawned_player", "fake_spawned_player");
|
||||||
|
|
||||||
if ( isDefined( level.match_is_ending ) && level.match_is_ending )
|
if (isDefined(level.match_is_ending) && level.match_is_ending)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self maps\mp\zombies\_zm_laststand::player_is_in_laststand() )
|
if (self maps\mp\zombies\_zm_laststand::player_is_in_laststand())
|
||||||
{
|
{
|
||||||
self thread maps\mp\zombies\_zm_laststand::auto_revive( self );
|
self thread maps\mp\zombies\_zm_laststand::auto_revive(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( level.custom_player_fake_death_cleanup ) )
|
if (isDefined(level.custom_player_fake_death_cleanup))
|
||||||
{
|
{
|
||||||
self [[ level.custom_player_fake_death_cleanup ]]();
|
self [[ level.custom_player_fake_death_cleanup ]]();
|
||||||
}
|
}
|
||||||
|
|
||||||
self setstance( "stand" );
|
self setstance("stand");
|
||||||
self.zmbdialogqueue = [];
|
self.zmbdialogqueue = [];
|
||||||
self.zmbdialogactive = 0;
|
self.zmbdialogactive = 0;
|
||||||
self.zmbdialoggroups = [];
|
self.zmbdialoggroups = [];
|
||||||
self.zmbdialoggroup = "";
|
self.zmbdialoggroup = "";
|
||||||
|
|
||||||
if ( is_encounter() )
|
if (is_encounter())
|
||||||
{
|
{
|
||||||
if ( self.team == "axis" )
|
if (self.team == "axis")
|
||||||
{
|
{
|
||||||
self.characterindex = 0;
|
self.characterindex = 0;
|
||||||
self._encounters_team = "A";
|
self._encounters_team = "A";
|
||||||
@ -160,33 +160,33 @@ onplayerspawned()
|
|||||||
|
|
||||||
self takeallweapons();
|
self takeallweapons();
|
||||||
|
|
||||||
if ( isDefined( level.givecustomcharacters ) )
|
if (isDefined(level.givecustomcharacters))
|
||||||
{
|
{
|
||||||
self [[ level.givecustomcharacters ]]();
|
self [[ level.givecustomcharacters ]]();
|
||||||
}
|
}
|
||||||
|
|
||||||
weapons_restored = 0;
|
weapons_restored = 0;
|
||||||
|
|
||||||
if ( isDefined( level.onplayerspawned_restore_previous_weapons ) )
|
if (isDefined(level.onplayerspawned_restore_previous_weapons))
|
||||||
{
|
{
|
||||||
weapons_restored = self [[ level.onplayerspawned_restore_previous_weapons ]]();
|
weapons_restored = self [[ level.onplayerspawned_restore_previous_weapons ]]();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !is_true( weapons_restored ) )
|
if (!is_true(weapons_restored))
|
||||||
{
|
{
|
||||||
self giveweapon( "knife_zm" );
|
self giveweapon("knife_zm");
|
||||||
self give_start_weapon( 1 );
|
self give_start_weapon(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
weapons_restored = 0;
|
weapons_restored = 0;
|
||||||
|
|
||||||
if ( isDefined( level._team_loadout ) )
|
if (isDefined(level._team_loadout))
|
||||||
{
|
{
|
||||||
self giveweapon( level._team_loadout );
|
self giveweapon(level._team_loadout);
|
||||||
self switchtoweapon( level._team_loadout );
|
self switchtoweapon(level._team_loadout);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( level.gamemode_post_spawn_logic ) )
|
if (isDefined(level.gamemode_post_spawn_logic))
|
||||||
{
|
{
|
||||||
self [[ level.gamemode_post_spawn_logic ]]();
|
self [[ level.gamemode_post_spawn_logic ]]();
|
||||||
}
|
}
|
||||||
@ -195,7 +195,7 @@ onplayerspawned()
|
|||||||
|
|
||||||
hide_gump_loading_for_hotjoiners()
|
hide_gump_loading_for_hotjoiners()
|
||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
|
|
||||||
self.rebuild_barrier_reward = 1;
|
self.rebuild_barrier_reward = 1;
|
||||||
self.is_hotjoining = 1;
|
self.is_hotjoining = 1;
|
||||||
@ -204,7 +204,7 @@ hide_gump_loading_for_hotjoiners()
|
|||||||
|
|
||||||
wait 0.5;
|
wait 0.5;
|
||||||
|
|
||||||
while ( num == self getsnapshotackindex() )
|
while (num == self getsnapshotackindex())
|
||||||
{
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
}
|
}
|
||||||
@ -230,10 +230,10 @@ hide_gump_loading_for_hotjoiners()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( is_true( level.intermission ) || is_true( level.host_ended_game ) )
|
if (is_true(level.intermission) || is_true(level.host_ended_game))
|
||||||
{
|
{
|
||||||
setclientsysstate( "levelNotify", "zi", self );
|
setclientsysstate("levelNotify", "zi", self);
|
||||||
self setclientthirdperson( 0 );
|
self setclientthirdperson(0);
|
||||||
self resetfov();
|
self resetfov();
|
||||||
self.health = 100;
|
self.health = 100;
|
||||||
self thread [[ level.custom_intermission ]]();
|
self thread [[ level.custom_intermission ]]();
|
||||||
@ -242,33 +242,33 @@ hide_gump_loading_for_hotjoiners()
|
|||||||
|
|
||||||
menu_onmenuresponse()
|
menu_onmenuresponse()
|
||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
self waittill( "menuresponse", menu, response );
|
self waittill("menuresponse", menu, response);
|
||||||
|
|
||||||
if ( response == "back" )
|
if (response == "back")
|
||||||
{
|
{
|
||||||
self closemenu();
|
self closemenu();
|
||||||
self closeingamemenu();
|
self closeingamemenu();
|
||||||
|
|
||||||
if ( level.console )
|
if (level.console)
|
||||||
{
|
{
|
||||||
if ( menu == game["menu_changeclass"] || menu == game["menu_changeclass_offline"] || menu == game["menu_team"] || menu == game["menu_controls"] )
|
if (menu == game["menu_changeclass"] || menu == game["menu_changeclass_offline"] || menu == game["menu_team"] || menu == game["menu_controls"])
|
||||||
{
|
{
|
||||||
if ( self.pers["team"] == "allies" )
|
if (self.pers["team"] == "allies")
|
||||||
self openmenu( game["menu_class"] );
|
self openmenu(game["menu_class"]);
|
||||||
|
|
||||||
if ( self.pers["team"] == "axis" )
|
if (self.pers["team"] == "axis")
|
||||||
self openmenu( game["menu_class"] );
|
self openmenu(game["menu_class"]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( menu == game["menu_team"] )
|
if (menu == game["menu_team"])
|
||||||
{
|
{
|
||||||
self closemenu();
|
self closemenu();
|
||||||
self closeingamemenu();
|
self closeingamemenu();
|
||||||
@ -276,118 +276,118 @@ menu_onmenuresponse()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( response == "changeclass_marines" )
|
if (response == "changeclass_marines")
|
||||||
{
|
{
|
||||||
self closemenu();
|
self closemenu();
|
||||||
self closeingamemenu();
|
self closeingamemenu();
|
||||||
self openmenu( game["menu_changeclass_allies"] );
|
self openmenu(game["menu_changeclass_allies"]);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( response == "changeclass_opfor" )
|
if (response == "changeclass_opfor")
|
||||||
{
|
{
|
||||||
self closemenu();
|
self closemenu();
|
||||||
self closeingamemenu();
|
self closeingamemenu();
|
||||||
self openmenu( game["menu_changeclass_axis"] );
|
self openmenu(game["menu_changeclass_axis"]);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( response == "changeclass_wager" )
|
if (response == "changeclass_wager")
|
||||||
{
|
{
|
||||||
self closemenu();
|
self closemenu();
|
||||||
self closeingamemenu();
|
self closeingamemenu();
|
||||||
self openmenu( game["menu_changeclass_wager"] );
|
self openmenu(game["menu_changeclass_wager"]);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( response == "changeclass_custom" )
|
if (response == "changeclass_custom")
|
||||||
{
|
{
|
||||||
self closemenu();
|
self closemenu();
|
||||||
self closeingamemenu();
|
self closeingamemenu();
|
||||||
self openmenu( game["menu_changeclass_custom"] );
|
self openmenu(game["menu_changeclass_custom"]);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( response == "changeclass_barebones" )
|
if (response == "changeclass_barebones")
|
||||||
{
|
{
|
||||||
self closemenu();
|
self closemenu();
|
||||||
self closeingamemenu();
|
self closeingamemenu();
|
||||||
self openmenu( game["menu_changeclass_barebones"] );
|
self openmenu(game["menu_changeclass_barebones"]);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( response == "changeclass_marines_splitscreen" )
|
if (response == "changeclass_marines_splitscreen")
|
||||||
self openmenu( "changeclass_marines_splitscreen" );
|
self openmenu("changeclass_marines_splitscreen");
|
||||||
|
|
||||||
if ( response == "changeclass_opfor_splitscreen" )
|
if (response == "changeclass_opfor_splitscreen")
|
||||||
self openmenu( "changeclass_opfor_splitscreen" );
|
self openmenu("changeclass_opfor_splitscreen");
|
||||||
|
|
||||||
if ( response == "endgame" )
|
if (response == "endgame")
|
||||||
{
|
{
|
||||||
if ( self issplitscreen() )
|
if (self issplitscreen())
|
||||||
{
|
{
|
||||||
level.skipvote = 1;
|
level.skipvote = 1;
|
||||||
|
|
||||||
if ( !( isdefined( level.gameended ) && level.gameended ) )
|
if (!(isdefined(level.gameended) && level.gameended))
|
||||||
{
|
{
|
||||||
self maps\mp\zombies\_zm_laststand::add_weighted_down();
|
self maps\mp\zombies\_zm_laststand::add_weighted_down();
|
||||||
self maps\mp\zombies\_zm_stats::increment_client_stat( "deaths" );
|
self maps\mp\zombies\_zm_stats::increment_client_stat("deaths");
|
||||||
self maps\mp\zombies\_zm_stats::increment_player_stat( "deaths" );
|
self maps\mp\zombies\_zm_stats::increment_player_stat("deaths");
|
||||||
self maps\mp\zombies\_zm_pers_upgrades_functions::pers_upgrade_jugg_player_death_stat();
|
self maps\mp\zombies\_zm_pers_upgrades_functions::pers_upgrade_jugg_player_death_stat();
|
||||||
level.host_ended_game = 1;
|
level.host_ended_game = 1;
|
||||||
maps\mp\zombies\_zm_game_module::freeze_players( 1 );
|
maps\mp\zombies\_zm_game_module::freeze_players(1);
|
||||||
level notify( "end_game" );
|
level notify("end_game");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( response == "restart_level_zm" )
|
if (response == "restart_level_zm")
|
||||||
{
|
{
|
||||||
self maps\mp\zombies\_zm_laststand::add_weighted_down();
|
self maps\mp\zombies\_zm_laststand::add_weighted_down();
|
||||||
self maps\mp\zombies\_zm_stats::increment_client_stat( "deaths" );
|
self maps\mp\zombies\_zm_stats::increment_client_stat("deaths");
|
||||||
self maps\mp\zombies\_zm_stats::increment_player_stat( "deaths" );
|
self maps\mp\zombies\_zm_stats::increment_player_stat("deaths");
|
||||||
self maps\mp\zombies\_zm_pers_upgrades_functions::pers_upgrade_jugg_player_death_stat();
|
self maps\mp\zombies\_zm_pers_upgrades_functions::pers_upgrade_jugg_player_death_stat();
|
||||||
missionfailed();
|
missionfailed();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( response == "killserverpc" )
|
if (response == "killserverpc")
|
||||||
{
|
{
|
||||||
level thread maps\mp\gametypes_zm\_globallogic::killserverpc();
|
level thread maps\mp\gametypes_zm\_globallogic::killserverpc();
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( response == "endround" )
|
if (response == "endround")
|
||||||
{
|
{
|
||||||
if ( !( isdefined( level.gameended ) && level.gameended ) )
|
if (!(isdefined(level.gameended) && level.gameended))
|
||||||
{
|
{
|
||||||
self maps\mp\gametypes_zm\_globallogic::gamehistoryplayerquit();
|
self maps\mp\gametypes_zm\_globallogic::gamehistoryplayerquit();
|
||||||
self maps\mp\zombies\_zm_laststand::add_weighted_down();
|
self maps\mp\zombies\_zm_laststand::add_weighted_down();
|
||||||
self closemenu();
|
self closemenu();
|
||||||
self closeingamemenu();
|
self closeingamemenu();
|
||||||
level.host_ended_game = 1;
|
level.host_ended_game = 1;
|
||||||
maps\mp\zombies\_zm_game_module::freeze_players( 1 );
|
maps\mp\zombies\_zm_game_module::freeze_players(1);
|
||||||
level notify( "end_game" );
|
level notify("end_game");
|
||||||
}
|
}
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( menu == game["menu_team"] && level.allow_teamchange == "1" )
|
if (menu == game["menu_team"] && level.allow_teamchange == "1")
|
||||||
{
|
{
|
||||||
switch ( response )
|
switch (response)
|
||||||
{
|
{
|
||||||
case "allies":
|
case "allies":
|
||||||
self [[ level.allies ]]();
|
self [[ level.allies ]]();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "axis":
|
case "axis":
|
||||||
self [[ level.teammenu ]]( response );
|
self [[ level.teammenu ]](response);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "autoassign":
|
case "autoassign":
|
||||||
self [[ level.autoassign ]]( 1 );
|
self [[ level.autoassign ]](1);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "spectator":
|
case "spectator":
|
||||||
@ -398,39 +398,39 @@ menu_onmenuresponse()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( menu == game["menu_changeclass"] || menu == game["menu_changeclass_offline"] || menu == game["menu_changeclass_wager"] || menu == game["menu_changeclass_custom"] || menu == game["menu_changeclass_barebones"] )
|
if (menu == game["menu_changeclass"] || menu == game["menu_changeclass_offline"] || menu == game["menu_changeclass_wager"] || menu == game["menu_changeclass_custom"] || menu == game["menu_changeclass_barebones"])
|
||||||
{
|
{
|
||||||
self closemenu();
|
self closemenu();
|
||||||
self closeingamemenu();
|
self closeingamemenu();
|
||||||
|
|
||||||
if ( level.rankedmatch && issubstr( response, "custom" ) )
|
if (level.rankedmatch && issubstr(response, "custom"))
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
self.selectedclass = 1;
|
self.selectedclass = 1;
|
||||||
self [[ level.class ]]( response );
|
self [[ level.class ]](response);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
do_team_change()
|
do_team_change()
|
||||||
{
|
{
|
||||||
if ( !level.allow_teamchange )
|
if (!level.allow_teamchange)
|
||||||
{
|
{
|
||||||
teamplayers = countplayers( self.pers["team"] );
|
teamplayers = countplayers(self.pers["team"]);
|
||||||
otherteamplayers = countplayers( getotherteam( self.pers["team"] ) );
|
otherteamplayers = countplayers(getotherteam(self.pers["team"]));
|
||||||
|
|
||||||
if ( teamplayers - 1 <= otherteamplayers )
|
if (teamplayers - 1 <= otherteamplayers)
|
||||||
{
|
{
|
||||||
self iprintln( "Can only change teams if unbalanced." );
|
self iprintln("Can only change teams if unbalanced.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self.playernum = undefined;
|
self.playernum = undefined;
|
||||||
|
|
||||||
level notify( "team_change", self.pers["team"] );
|
level notify("team_change", self.pers["team"]);
|
||||||
|
|
||||||
num = 0;
|
num = 0;
|
||||||
valid_num = false;
|
valid_num = false;
|
||||||
@ -458,9 +458,9 @@ do_team_change()
|
|||||||
|
|
||||||
if (!valid_num)
|
if (!valid_num)
|
||||||
{
|
{
|
||||||
self iprintln( "Waiting for other player to change teams." );
|
self iprintln("Waiting for other player to change teams.");
|
||||||
|
|
||||||
level waittill( "team_change", team );
|
level waittill("team_change", team);
|
||||||
|
|
||||||
if (team == self.pers["team"])
|
if (team == self.pers["team"])
|
||||||
{
|
{
|
||||||
@ -468,9 +468,9 @@ do_team_change()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
set_team( getotherteam( self.pers["team"] ) );
|
set_team(getotherteam(self.pers["team"]));
|
||||||
|
|
||||||
if ( !flag( "initial_blackscreen_passed" ) )
|
if (!flag("initial_blackscreen_passed"))
|
||||||
{
|
{
|
||||||
self [[ level.spawnplayer ]]();
|
self [[ level.spawnplayer ]]();
|
||||||
}
|
}
|
||||||
@ -478,7 +478,7 @@ do_team_change()
|
|||||||
|
|
||||||
set_team(team)
|
set_team(team)
|
||||||
{
|
{
|
||||||
if ( team == "axis" )
|
if (team == "axis")
|
||||||
{
|
{
|
||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.sessionteam = "axis";
|
self.sessionteam = "axis";
|
||||||
|
@ -3,9 +3,9 @@
|
|||||||
#include maps\mp\zombies\_zm_utility;
|
#include maps\mp\zombies\_zm_utility;
|
||||||
#include maps\mp\gametypes_zm\_hud_util;
|
#include maps\mp\gametypes_zm\_hud_util;
|
||||||
|
|
||||||
revive_do_revive( playerbeingrevived, revivergun )
|
revive_do_revive(playerbeingrevived, revivergun)
|
||||||
{
|
{
|
||||||
self thread revive_give_back_weapons_on_player_suicide( playerbeingrevived, revivergun );
|
self thread revive_give_back_weapons_on_player_suicide(playerbeingrevived, revivergun);
|
||||||
|
|
||||||
self thread revive_check_for_weapon_change();
|
self thread revive_check_for_weapon_change();
|
||||||
|
|
||||||
@ -13,7 +13,7 @@ revive_do_revive( playerbeingrevived, revivergun )
|
|||||||
playerbeingrevived_player.revive_hud.y = -160;
|
playerbeingrevived_player.revive_hud.y = -160;
|
||||||
beingrevivedprogressbar_y = level.primaryprogressbary * -1;
|
beingrevivedprogressbar_y = level.primaryprogressbary * -1;
|
||||||
|
|
||||||
if ( isDefined( playerbeingrevived.e_chugabud_player ) )
|
if (isDefined(playerbeingrevived.e_chugabud_player))
|
||||||
{
|
{
|
||||||
playerbeingrevived_player = playerbeingrevived.e_chugabud_player;
|
playerbeingrevived_player = playerbeingrevived.e_chugabud_player;
|
||||||
playerbeingrevived_player.revive_hud.y = -50;
|
playerbeingrevived_player.revive_hud.y = -50;
|
||||||
@ -22,12 +22,12 @@ revive_do_revive( playerbeingrevived, revivergun )
|
|||||||
|
|
||||||
revivetime = 3;
|
revivetime = 3;
|
||||||
|
|
||||||
if ( self hasperk( "specialty_quickrevive" ) )
|
if (self hasperk("specialty_quickrevive"))
|
||||||
{
|
{
|
||||||
revivetime /= 1.5;
|
revivetime /= 1.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self maps\mp\zombies\_zm_pers_upgrades_functions::pers_revive_active() )
|
if (self maps\mp\zombies\_zm_pers_upgrades_functions::pers_revive_active())
|
||||||
{
|
{
|
||||||
revivetime *= 0.5;
|
revivetime *= 0.5;
|
||||||
}
|
}
|
||||||
@ -35,20 +35,20 @@ revive_do_revive( playerbeingrevived, revivergun )
|
|||||||
timer = 0;
|
timer = 0;
|
||||||
revived = 0;
|
revived = 0;
|
||||||
playerbeingrevived.revivetrigger.beingrevived = 1;
|
playerbeingrevived.revivetrigger.beingrevived = 1;
|
||||||
playerbeingrevived.revivetrigger sethintstring( "" );
|
playerbeingrevived.revivetrigger sethintstring("");
|
||||||
|
|
||||||
if ( playerbeingrevived_player != self )
|
if (playerbeingrevived_player != self)
|
||||||
{
|
{
|
||||||
playerbeingrevived_player.revive_hud settext( &"ZOMBIE_PLAYER_IS_REVIVING_YOU", self );
|
playerbeingrevived_player.revive_hud settext(&"ZOMBIE_PLAYER_IS_REVIVING_YOU", self);
|
||||||
playerbeingrevived_player maps\mp\zombies\_zm_laststand::revive_hud_show_n_fade( revivetime );
|
playerbeingrevived_player maps\mp\zombies\_zm_laststand::revive_hud_show_n_fade(revivetime);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isplayer( playerbeingrevived ) )
|
if (isplayer(playerbeingrevived))
|
||||||
{
|
{
|
||||||
playerbeingrevived startrevive( self );
|
playerbeingrevived startrevive(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isDefined( playerbeingrevived_player.beingrevivedprogressbar ) && playerbeingrevived_player != self )
|
if (!isDefined(playerbeingrevived_player.beingrevivedprogressbar) && playerbeingrevived_player != self)
|
||||||
{
|
{
|
||||||
playerbeingrevived_player.beingrevivedprogressbar = playerbeingrevived_player createprimaryprogressbar();
|
playerbeingrevived_player.beingrevivedprogressbar = playerbeingrevived_player createprimaryprogressbar();
|
||||||
playerbeingrevived_player.beingrevivedprogressbar setpoint("CENTER", undefined, level.primaryprogressbarx, beingrevivedprogressbar_y);
|
playerbeingrevived_player.beingrevivedprogressbar setpoint("CENTER", undefined, level.primaryprogressbarx, beingrevivedprogressbar_y);
|
||||||
@ -63,7 +63,7 @@ revive_do_revive( playerbeingrevived, revivergun )
|
|||||||
playerbeingrevived_player.beingrevivedprogressbar thread scripts\zm\_zm_reimagined::destroy_on_intermission();
|
playerbeingrevived_player.beingrevivedprogressbar thread scripts\zm\_zm_reimagined::destroy_on_intermission();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isDefined( self.reviveprogressbar ) )
|
if (!isDefined(self.reviveprogressbar))
|
||||||
{
|
{
|
||||||
self.reviveprogressbar = self createprimaryprogressbar();
|
self.reviveprogressbar = self createprimaryprogressbar();
|
||||||
self.reviveprogressbar.bar.color = (0.5, 0.5, 1);
|
self.reviveprogressbar.bar.color = (0.5, 0.5, 1);
|
||||||
@ -77,26 +77,26 @@ revive_do_revive( playerbeingrevived, revivergun )
|
|||||||
self.reviveprogressbar thread scripts\zm\_zm_reimagined::destroy_on_intermission();
|
self.reviveprogressbar thread scripts\zm\_zm_reimagined::destroy_on_intermission();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isDefined( self.revivetexthud ) )
|
if (!isDefined(self.revivetexthud))
|
||||||
{
|
{
|
||||||
self.revivetexthud = newclienthudelem( self );
|
self.revivetexthud = newclienthudelem(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
self thread laststand_clean_up_on_disconnect( playerbeingrevived_player, revivergun );
|
self thread laststand_clean_up_on_disconnect(playerbeingrevived_player, revivergun);
|
||||||
|
|
||||||
if ( !isDefined( self.is_reviving_any ) )
|
if (!isDefined(self.is_reviving_any))
|
||||||
{
|
{
|
||||||
self.is_reviving_any = 0;
|
self.is_reviving_any = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
self.is_reviving_any++;
|
self.is_reviving_any++;
|
||||||
self thread laststand_clean_up_reviving_any( playerbeingrevived_player );
|
self thread laststand_clean_up_reviving_any(playerbeingrevived_player);
|
||||||
self.reviveprogressbar updatebar( 0.01, 1 / revivetime );
|
self.reviveprogressbar updatebar(0.01, 1 / revivetime);
|
||||||
playerbeingrevived_player.beingrevivedprogressbar updatebar( 0.01, 1 / revivetime );
|
playerbeingrevived_player.beingrevivedprogressbar updatebar(0.01, 1 / revivetime);
|
||||||
|
|
||||||
if ( isDefined( playerbeingrevived_player.beingrevivedprogressbar ) )
|
if (isDefined(playerbeingrevived_player.beingrevivedprogressbar))
|
||||||
{
|
{
|
||||||
playerbeingrevived_player.beingrevivedprogressbar updatebar( 0.01, 1 / revivetime );
|
playerbeingrevived_player.beingrevivedprogressbar updatebar(0.01, 1 / revivetime);
|
||||||
}
|
}
|
||||||
|
|
||||||
self.revivetexthud.alignx = "center";
|
self.revivetexthud.alignx = "center";
|
||||||
@ -105,7 +105,7 @@ revive_do_revive( playerbeingrevived, revivergun )
|
|||||||
self.revivetexthud.vertalign = "bottom";
|
self.revivetexthud.vertalign = "bottom";
|
||||||
self.revivetexthud.y = -113;
|
self.revivetexthud.y = -113;
|
||||||
|
|
||||||
if ( self issplitscreen() )
|
if (self issplitscreen())
|
||||||
{
|
{
|
||||||
self.revivetexthud.y = -347;
|
self.revivetexthud.y = -347;
|
||||||
}
|
}
|
||||||
@ -114,238 +114,238 @@ revive_do_revive( playerbeingrevived, revivergun )
|
|||||||
self.revivetexthud.font = "default";
|
self.revivetexthud.font = "default";
|
||||||
self.revivetexthud.fontscale = 1.8;
|
self.revivetexthud.fontscale = 1.8;
|
||||||
self.revivetexthud.alpha = 1;
|
self.revivetexthud.alpha = 1;
|
||||||
self.revivetexthud.color = ( 1, 1, 1 );
|
self.revivetexthud.color = (1, 1, 1);
|
||||||
self.revivetexthud.hidewheninmenu = 1;
|
self.revivetexthud.hidewheninmenu = 1;
|
||||||
|
|
||||||
if ( self maps\mp\zombies\_zm_pers_upgrades_functions::pers_revive_active() )
|
if (self maps\mp\zombies\_zm_pers_upgrades_functions::pers_revive_active())
|
||||||
{
|
{
|
||||||
self.revivetexthud.color = ( 0.5, 0.5, 1 );
|
self.revivetexthud.color = (0.5, 0.5, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
self.revivetexthud settext( &"ZOMBIE_REVIVING" );
|
self.revivetexthud settext(&"ZOMBIE_REVIVING");
|
||||||
self thread maps\mp\zombies\_zm_laststand::check_for_failed_revive( playerbeingrevived );
|
self thread maps\mp\zombies\_zm_laststand::check_for_failed_revive(playerbeingrevived);
|
||||||
|
|
||||||
while ( self maps\mp\zombies\_zm_laststand::is_reviving( playerbeingrevived ) )
|
while (self maps\mp\zombies\_zm_laststand::is_reviving(playerbeingrevived))
|
||||||
{
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
|
||||||
timer += 0.05;
|
timer += 0.05;
|
||||||
|
|
||||||
if ( self maps\mp\zombies\_zm_laststand::player_is_in_laststand() )
|
if (self maps\mp\zombies\_zm_laststand::player_is_in_laststand())
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if ( isDefined( playerbeingrevived.revivetrigger.auto_revive ) && playerbeingrevived.revivetrigger.auto_revive == 1 )
|
else if (isDefined(playerbeingrevived.revivetrigger.auto_revive) && playerbeingrevived.revivetrigger.auto_revive == 1)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( timer >= revivetime )
|
if (timer >= revivetime)
|
||||||
{
|
{
|
||||||
revived = 1;
|
revived = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( playerbeingrevived_player.beingrevivedprogressbar ) )
|
if (isDefined(playerbeingrevived_player.beingrevivedprogressbar))
|
||||||
{
|
{
|
||||||
if ( !flag( "wait_and_revive" ) )
|
if (!flag("wait_and_revive"))
|
||||||
{
|
{
|
||||||
playerbeingrevived_player.beingrevivedprogressbar destroyelem();
|
playerbeingrevived_player.beingrevivedprogressbar destroyelem();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( playerbeingrevived_player.revive_hud ) )
|
if (isDefined(playerbeingrevived_player.revive_hud))
|
||||||
{
|
{
|
||||||
playerbeingrevived_player.revive_hud.y = -160;
|
playerbeingrevived_player.revive_hud.y = -160;
|
||||||
|
|
||||||
if ( !flag( "wait_and_revive" ) )
|
if (!flag("wait_and_revive"))
|
||||||
{
|
{
|
||||||
playerbeingrevived_player.revive_hud settext("");
|
playerbeingrevived_player.revive_hud settext("");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( self.reviveprogressbar ) )
|
if (isDefined(self.reviveprogressbar))
|
||||||
{
|
{
|
||||||
self.reviveprogressbar destroyelem();
|
self.reviveprogressbar destroyelem();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( self.revivetexthud ) )
|
if (isDefined(self.revivetexthud))
|
||||||
{
|
{
|
||||||
self.revivetexthud destroy();
|
self.revivetexthud destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( playerbeingrevived.revivetrigger.auto_revive ) && playerbeingrevived.revivetrigger.auto_revive == 1 )
|
if (isDefined(playerbeingrevived.revivetrigger.auto_revive) && playerbeingrevived.revivetrigger.auto_revive == 1)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
else if ( !revived )
|
else if (!revived)
|
||||||
{
|
{
|
||||||
if ( isplayer( playerbeingrevived ) )
|
if (isplayer(playerbeingrevived))
|
||||||
{
|
{
|
||||||
playerbeingrevived stoprevive( self );
|
playerbeingrevived stoprevive(self);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
playerbeingrevived.revivetrigger sethintstring( &"ZOMBIE_BUTTON_TO_REVIVE_PLAYER" );
|
playerbeingrevived.revivetrigger sethintstring(&"ZOMBIE_BUTTON_TO_REVIVE_PLAYER");
|
||||||
playerbeingrevived.revivetrigger.beingrevived = 0;
|
playerbeingrevived.revivetrigger.beingrevived = 0;
|
||||||
self notify( "do_revive_ended_normally" );
|
self notify("do_revive_ended_normally");
|
||||||
self.is_reviving_any--;
|
self.is_reviving_any--;
|
||||||
|
|
||||||
if ( !revived )
|
if (!revived)
|
||||||
{
|
{
|
||||||
playerbeingrevived thread maps\mp\zombies\_zm_laststand::checkforbleedout( self );
|
playerbeingrevived thread maps\mp\zombies\_zm_laststand::checkforbleedout(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
return revived;
|
return revived;
|
||||||
}
|
}
|
||||||
|
|
||||||
revive_give_back_weapons_on_player_suicide( playerbeingrevived, revivergun )
|
revive_give_back_weapons_on_player_suicide(playerbeingrevived, revivergun)
|
||||||
{
|
{
|
||||||
self notify( "revive_give_back_weapons_on_player_suicide" );
|
self notify("revive_give_back_weapons_on_player_suicide");
|
||||||
self endon( "revive_give_back_weapons_on_player_suicide" );
|
self endon("revive_give_back_weapons_on_player_suicide");
|
||||||
self endon( "do_revive_ended_normally" );
|
self endon("do_revive_ended_normally");
|
||||||
|
|
||||||
playerbeingrevived waittill( "player_suicide" );
|
playerbeingrevived waittill("player_suicide");
|
||||||
|
|
||||||
self maps\mp\zombies\_zm_laststand::revive_give_back_weapons( revivergun );
|
self maps\mp\zombies\_zm_laststand::revive_give_back_weapons(revivergun);
|
||||||
}
|
}
|
||||||
|
|
||||||
revive_check_for_weapon_change()
|
revive_check_for_weapon_change()
|
||||||
{
|
{
|
||||||
self notify( "revive_check_for_weapon_change" );
|
self notify("revive_check_for_weapon_change");
|
||||||
self endon( "revive_check_for_weapon_change" );
|
self endon("revive_check_for_weapon_change");
|
||||||
self endon( "do_revive_ended_normally" );
|
self endon("do_revive_ended_normally");
|
||||||
|
|
||||||
self.revive_weapon_changed = 0;
|
self.revive_weapon_changed = 0;
|
||||||
|
|
||||||
self waittill_any( "weapon_change", "weapon_change_complete" );
|
self waittill_any("weapon_change", "weapon_change_complete");
|
||||||
|
|
||||||
self.revive_weapon_changed = 1;
|
self.revive_weapon_changed = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
laststand_clean_up_on_disconnect( playerbeingrevived, revivergun )
|
laststand_clean_up_on_disconnect(playerbeingrevived, revivergun)
|
||||||
{
|
{
|
||||||
self endon( "do_revive_ended_normally" );
|
self endon("do_revive_ended_normally");
|
||||||
|
|
||||||
revivetrigger = playerbeingrevived.revivetrigger;
|
revivetrigger = playerbeingrevived.revivetrigger;
|
||||||
|
|
||||||
playerbeingrevived waittill( "disconnect" );
|
playerbeingrevived waittill("disconnect");
|
||||||
|
|
||||||
if ( isDefined( revivetrigger ) )
|
if (isDefined(revivetrigger))
|
||||||
{
|
{
|
||||||
revivetrigger delete();
|
revivetrigger delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
self maps\mp\zombies\_zm_laststand::cleanup_suicide_hud();
|
self maps\mp\zombies\_zm_laststand::cleanup_suicide_hud();
|
||||||
|
|
||||||
if ( isDefined( self.reviveprogressbar ) )
|
if (isDefined(self.reviveprogressbar))
|
||||||
{
|
{
|
||||||
self.reviveprogressbar destroyelem();
|
self.reviveprogressbar destroyelem();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( self.revivetexthud ) )
|
if (isDefined(self.revivetexthud))
|
||||||
{
|
{
|
||||||
self.revivetexthud destroy();
|
self.revivetexthud destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
self maps\mp\zombies\_zm_laststand::revive_give_back_weapons( revivergun );
|
self maps\mp\zombies\_zm_laststand::revive_give_back_weapons(revivergun);
|
||||||
}
|
}
|
||||||
|
|
||||||
laststand_clean_up_reviving_any( playerbeingrevived )
|
laststand_clean_up_reviving_any(playerbeingrevived)
|
||||||
{
|
{
|
||||||
self endon( "do_revive_ended_normally" );
|
self endon("do_revive_ended_normally");
|
||||||
|
|
||||||
playerbeingrevived waittill_any( "disconnect", "zombified", "stop_revive_trigger", "chugabud_effects_cleanup" );
|
playerbeingrevived waittill_any("disconnect", "zombified", "stop_revive_trigger", "chugabud_effects_cleanup");
|
||||||
|
|
||||||
self.is_reviving_any--;
|
self.is_reviving_any--;
|
||||||
|
|
||||||
if ( self.is_reviving_any < 0 )
|
if (self.is_reviving_any < 0)
|
||||||
{
|
{
|
||||||
self.is_reviving_any = 0;
|
self.is_reviving_any = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( playerbeingrevived.beingrevivedprogressbar ) )
|
if (isDefined(playerbeingrevived.beingrevivedprogressbar))
|
||||||
{
|
{
|
||||||
playerbeingrevived.beingrevivedprogressbar destroyelem();
|
playerbeingrevived.beingrevivedprogressbar destroyelem();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( playerbeingrevived.revive_hud ) )
|
if (isDefined(playerbeingrevived.revive_hud))
|
||||||
{
|
{
|
||||||
playerbeingrevived.revive_hud settext("");
|
playerbeingrevived.revive_hud settext("");
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !self.is_reviving_any )
|
if (!self.is_reviving_any)
|
||||||
{
|
{
|
||||||
if ( isDefined( self.reviveprogressbar ) )
|
if (isDefined(self.reviveprogressbar))
|
||||||
{
|
{
|
||||||
self.reviveprogressbar destroyelem();
|
self.reviveprogressbar destroyelem();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( self.revivetexthud ) )
|
if (isDefined(self.revivetexthud))
|
||||||
{
|
{
|
||||||
self.revivetexthud destroy();
|
self.revivetexthud destroy();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
revive_give_back_weapons( gun )
|
revive_give_back_weapons(gun)
|
||||||
{
|
{
|
||||||
revive_tool = level.revive_tool;
|
revive_tool = level.revive_tool;
|
||||||
|
|
||||||
if ( is_true( self.afterlife ) )
|
if (is_true(self.afterlife))
|
||||||
{
|
{
|
||||||
revive_tool = level.afterlife_revive_tool;
|
revive_tool = level.afterlife_revive_tool;
|
||||||
}
|
}
|
||||||
|
|
||||||
cur_wep = self getCurrentWeapon();
|
cur_wep = self getCurrentWeapon();
|
||||||
|
|
||||||
self takeweapon( revive_tool );
|
self takeweapon(revive_tool);
|
||||||
|
|
||||||
if ( self maps\mp\zombies\_zm_laststand::player_is_in_laststand() )
|
if (self maps\mp\zombies\_zm_laststand::player_is_in_laststand())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( cur_wep != revive_tool && is_true( self.revive_weapon_changed ) )
|
if (cur_wep != revive_tool && is_true(self.revive_weapon_changed))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self hasWeapon( "item_meat_zm" ) )
|
if (self hasWeapon("item_meat_zm"))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self hasWeapon( "screecher_arms_zm" ) )
|
if (self hasWeapon("screecher_arms_zm"))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( gun != "none" && gun != "equip_gasmask_zm" && gun != "lower_equip_gasmask_zm" && self hasweapon( gun ) )
|
if (gun != "none" && gun != "equip_gasmask_zm" && gun != "lower_equip_gasmask_zm" && self hasweapon(gun))
|
||||||
{
|
{
|
||||||
self switchtoweapon( gun );
|
self switchtoweapon(gun);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
primaryweapons = self getweaponslistprimaries();
|
primaryweapons = self getweaponslistprimaries();
|
||||||
|
|
||||||
if ( isDefined( primaryweapons ) && primaryweapons.size > 0 )
|
if (isDefined(primaryweapons) && primaryweapons.size > 0)
|
||||||
{
|
{
|
||||||
self switchtoweapon( primaryweapons[ 0 ] );
|
self switchtoweapon(primaryweapons[ 0 ]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
revive_hud_think()
|
revive_hud_think()
|
||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
|
|
||||||
while ( 1 )
|
while (1)
|
||||||
{
|
{
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
|
|
||||||
if ( !maps\mp\zombies\_zm_laststand::player_any_player_in_laststand() )
|
if (!maps\mp\zombies\_zm_laststand::player_any_player_in_laststand())
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -354,15 +354,15 @@ revive_hud_think()
|
|||||||
playertorevive = undefined;
|
playertorevive = undefined;
|
||||||
i = 0;
|
i = 0;
|
||||||
|
|
||||||
while ( i < players.size )
|
while (i < players.size)
|
||||||
{
|
{
|
||||||
if ( !isDefined( players[ i ].revivetrigger ) || !isDefined( players[ i ].revivetrigger.createtime ) )
|
if (!isDefined(players[ i ].revivetrigger) || !isDefined(players[ i ].revivetrigger.createtime))
|
||||||
{
|
{
|
||||||
i++;
|
i++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isDefined( playertorevive ) || playertorevive.revivetrigger.createtime > players[ i ].revivetrigger.createtime )
|
if (!isDefined(playertorevive) || playertorevive.revivetrigger.createtime > players[ i ].revivetrigger.createtime)
|
||||||
{
|
{
|
||||||
playertorevive = players[ i ];
|
playertorevive = players[ i ];
|
||||||
}
|
}
|
||||||
@ -370,43 +370,43 @@ revive_hud_think()
|
|||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( playertorevive ) )
|
if (isDefined(playertorevive))
|
||||||
{
|
{
|
||||||
i = 0;
|
i = 0;
|
||||||
|
|
||||||
while ( i < players.size )
|
while (i < players.size)
|
||||||
{
|
{
|
||||||
if ( players[ i ] maps\mp\zombies\_zm_laststand::player_is_in_laststand() )
|
if (players[ i ] maps\mp\zombies\_zm_laststand::player_is_in_laststand())
|
||||||
{
|
{
|
||||||
i++;
|
i++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( getDvar( "g_gametype" ) == "vs" )
|
if (getDvar("g_gametype") == "vs")
|
||||||
{
|
{
|
||||||
if ( players[ i ].team != playertorevive.team )
|
if (players[ i ].team != playertorevive.team)
|
||||||
{
|
{
|
||||||
i++;
|
i++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( is_encounter() )
|
if (is_encounter())
|
||||||
{
|
{
|
||||||
if ( players[ i ].sessionteam != playertorevive.sessionteam )
|
if (players[ i ].sessionteam != playertorevive.sessionteam)
|
||||||
{
|
{
|
||||||
i++;
|
i++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( is_true( level.hide_revive_message ) )
|
if (is_true(level.hide_revive_message))
|
||||||
{
|
{
|
||||||
i++;
|
i++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
players[ i ] thread maps\mp\zombies\_zm_laststand::faderevivemessageover( playertorevive, 3 );
|
players[ i ] thread maps\mp\zombies\_zm_laststand::faderevivemessageover(playertorevive, 3);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -415,17 +415,17 @@ revive_hud_think()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
auto_revive( reviver, dont_enable_weapons )
|
auto_revive(reviver, dont_enable_weapons)
|
||||||
{
|
{
|
||||||
if ( isdefined( self.revivetrigger ) )
|
if (isdefined(self.revivetrigger))
|
||||||
{
|
{
|
||||||
self.revivetrigger.auto_revive = 1;
|
self.revivetrigger.auto_revive = 1;
|
||||||
|
|
||||||
if ( self.revivetrigger.beingrevived == 1 )
|
if (self.revivetrigger.beingrevived == 1)
|
||||||
{
|
{
|
||||||
while ( true )
|
while (true)
|
||||||
{
|
{
|
||||||
if ( self.revivetrigger.beingrevived == 0 )
|
if (self.revivetrigger.beingrevived == 0)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
wait_network_frame();
|
wait_network_frame();
|
||||||
@ -436,11 +436,11 @@ auto_revive( reviver, dont_enable_weapons )
|
|||||||
}
|
}
|
||||||
|
|
||||||
self reviveplayer();
|
self reviveplayer();
|
||||||
self maps\mp\zombies\_zm_perks::perk_set_max_health_if_jugg( "health_reboot", 1, 0 );
|
self maps\mp\zombies\_zm_perks::perk_set_max_health_if_jugg("health_reboot", 1, 0);
|
||||||
setclientsysstate( "lsm", "0", self );
|
setclientsysstate("lsm", "0", self);
|
||||||
self notify( "stop_revive_trigger" );
|
self notify("stop_revive_trigger");
|
||||||
|
|
||||||
if ( isdefined( self.revivetrigger ) )
|
if (isdefined(self.revivetrigger))
|
||||||
{
|
{
|
||||||
self.revivetrigger delete();
|
self.revivetrigger delete();
|
||||||
self.revivetrigger = undefined;
|
self.revivetrigger = undefined;
|
||||||
@ -448,49 +448,49 @@ auto_revive( reviver, dont_enable_weapons )
|
|||||||
|
|
||||||
self cleanup_suicide_hud();
|
self cleanup_suicide_hud();
|
||||||
|
|
||||||
if ( !isdefined( dont_enable_weapons ) || dont_enable_weapons == 0 )
|
if (!isdefined(dont_enable_weapons) || dont_enable_weapons == 0)
|
||||||
self laststand_enable_player_weapons();
|
self laststand_enable_player_weapons();
|
||||||
|
|
||||||
self allowjump( 1 );
|
self allowjump(1);
|
||||||
self.ignoreme = 0;
|
self.ignoreme = 0;
|
||||||
self.laststand = undefined;
|
self.laststand = undefined;
|
||||||
|
|
||||||
valid_reviver = 1;
|
valid_reviver = 1;
|
||||||
|
|
||||||
if ( is_gametype_active( "zgrief" ) && reviver == self )
|
if (is_gametype_active("zgrief") && reviver == self)
|
||||||
{
|
{
|
||||||
valid_reviver = 0;
|
valid_reviver = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( valid_reviver )
|
if (valid_reviver)
|
||||||
{
|
{
|
||||||
reviver.revives++;
|
reviver.revives++;
|
||||||
reviver maps\mp\zombies\_zm_stats::increment_client_stat( "revives" );
|
reviver maps\mp\zombies\_zm_stats::increment_client_stat("revives");
|
||||||
reviver maps\mp\zombies\_zm_stats::increment_player_stat( "revives" );
|
reviver maps\mp\zombies\_zm_stats::increment_player_stat("revives");
|
||||||
self recordplayerrevivezombies( reviver );
|
self recordplayerrevivezombies(reviver);
|
||||||
maps\mp\_demo::bookmark( "zm_player_revived", gettime(), self, reviver );
|
maps\mp\_demo::bookmark("zm_player_revived", gettime(), self, reviver);
|
||||||
}
|
}
|
||||||
|
|
||||||
self notify( "player_revived", reviver );
|
self notify("player_revived", reviver);
|
||||||
}
|
}
|
||||||
|
|
||||||
playerlaststand( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration )
|
playerlaststand(einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration)
|
||||||
{
|
{
|
||||||
self notify( "entering_last_stand" );
|
self notify("entering_last_stand");
|
||||||
|
|
||||||
if ( isdefined( level._game_module_player_laststand_callback ) )
|
if (isdefined(level._game_module_player_laststand_callback))
|
||||||
self [[ level._game_module_player_laststand_callback ]]( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration );
|
self [[ level._game_module_player_laststand_callback ]](einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration);
|
||||||
|
|
||||||
if ( self player_is_in_laststand() )
|
if (self player_is_in_laststand())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( isdefined( self.in_zombify_call ) && self.in_zombify_call )
|
if (isdefined(self.in_zombify_call) && self.in_zombify_call)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
self thread player_last_stand_stats( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration );
|
self thread player_last_stand_stats(einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration);
|
||||||
|
|
||||||
if ( isdefined( level.playerlaststand_func ) )
|
if (isdefined(level.playerlaststand_func))
|
||||||
[[ level.playerlaststand_func ]]( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration );
|
[[ level.playerlaststand_func ]](einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration);
|
||||||
|
|
||||||
self.health = 1;
|
self.health = 1;
|
||||||
self.laststand = 1;
|
self.laststand = 1;
|
||||||
@ -498,17 +498,17 @@ playerlaststand( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, sh
|
|||||||
self thread maps\mp\gametypes_zm\_gameobjects::onplayerlaststand();
|
self thread maps\mp\gametypes_zm\_gameobjects::onplayerlaststand();
|
||||||
self thread maps\mp\zombies\_zm_buildables::onplayerlaststand();
|
self thread maps\mp\zombies\_zm_buildables::onplayerlaststand();
|
||||||
|
|
||||||
if ( !( isdefined( self.no_revive_trigger ) && self.no_revive_trigger ) )
|
if (!(isdefined(self.no_revive_trigger) && self.no_revive_trigger))
|
||||||
self revive_trigger_spawn();
|
self revive_trigger_spawn();
|
||||||
else
|
else
|
||||||
self undolaststand();
|
self undolaststand();
|
||||||
|
|
||||||
if ( isdefined( self.is_zombie ) && self.is_zombie )
|
if (isdefined(self.is_zombie) && self.is_zombie)
|
||||||
{
|
{
|
||||||
self takeallweapons();
|
self takeallweapons();
|
||||||
|
|
||||||
if ( isdefined( attacker ) && isplayer( attacker ) && attacker != self )
|
if (isdefined(attacker) && isplayer(attacker) && attacker != self)
|
||||||
attacker notify( "killed_a_zombie_player", einflictor, self, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration );
|
attacker notify("killed_a_zombie_player", einflictor, self, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -516,24 +516,24 @@ playerlaststand( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, sh
|
|||||||
self laststand_give_pistol();
|
self laststand_give_pistol();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( level.playersuicideallowed ) && level.playersuicideallowed && get_players().size > 1 )
|
if (isdefined(level.playersuicideallowed) && level.playersuicideallowed && get_players().size > 1)
|
||||||
{
|
{
|
||||||
if ( !isdefined( level.canplayersuicide ) || self [[ level.canplayersuicide ]]() )
|
if (!isdefined(level.canplayersuicide) || self [[ level.canplayersuicide ]]())
|
||||||
self thread suicide_trigger_spawn();
|
self thread suicide_trigger_spawn();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( level.laststandgetupallowed )
|
if (level.laststandgetupallowed)
|
||||||
self thread laststand_getup();
|
self thread laststand_getup();
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
bleedout_time = getdvarfloat( "player_lastStandBleedoutTime" );
|
bleedout_time = getdvarfloat("player_lastStandBleedoutTime");
|
||||||
self thread laststand_bleedout( bleedout_time );
|
self thread laststand_bleedout(bleedout_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( "zcleansed" != level.gametype )
|
if ("zcleansed" != level.gametype)
|
||||||
maps\mp\_demo::bookmark( "zm_player_downed", gettime(), self );
|
maps\mp\_demo::bookmark("zm_player_downed", gettime(), self);
|
||||||
|
|
||||||
self notify( "player_downed" );
|
self notify("player_downed");
|
||||||
self thread refire_player_downed();
|
self thread refire_player_downed();
|
||||||
self thread cleanup_laststand_on_disconnect();
|
self thread cleanup_laststand_on_disconnect();
|
||||||
}
|
}
|
||||||
@ -545,7 +545,7 @@ revive_hud_create()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
self.revive_hud = newclienthudelem( self );
|
self.revive_hud = newclienthudelem(self);
|
||||||
self.revive_hud.alignx = "center";
|
self.revive_hud.alignx = "center";
|
||||||
self.revive_hud.aligny = "middle";
|
self.revive_hud.aligny = "middle";
|
||||||
self.revive_hud.horzalign = "center";
|
self.revive_hud.horzalign = "center";
|
||||||
@ -554,8 +554,8 @@ revive_hud_create()
|
|||||||
self.revive_hud.font = "default";
|
self.revive_hud.font = "default";
|
||||||
self.revive_hud.fontscale = 1.5;
|
self.revive_hud.fontscale = 1.5;
|
||||||
self.revive_hud.alpha = 0;
|
self.revive_hud.alpha = 0;
|
||||||
self.revive_hud.color = ( 1, 1, 1 );
|
self.revive_hud.color = (1, 1, 1);
|
||||||
self.revive_hud.hidewheninmenu = 1;
|
self.revive_hud.hidewheninmenu = 1;
|
||||||
self.revive_hud settext( "" );
|
self.revive_hud settext("");
|
||||||
self.revive_hud.y = -160;
|
self.revive_hud.y = -160;
|
||||||
}
|
}
|
File diff suppressed because it is too large
Load Diff
@ -4,17 +4,17 @@
|
|||||||
#include maps\mp\zombies\_zm_utility;
|
#include maps\mp\zombies\_zm_utility;
|
||||||
#include maps\mp\zombies\_zm_weapons;
|
#include maps\mp\zombies\_zm_weapons;
|
||||||
|
|
||||||
change_melee_weapon( weapon_name, current_weapon )
|
change_melee_weapon(weapon_name, current_weapon)
|
||||||
{
|
{
|
||||||
current_melee_weapon = self get_player_melee_weapon();
|
current_melee_weapon = self get_player_melee_weapon();
|
||||||
|
|
||||||
if ( isDefined( current_melee_weapon ) && current_melee_weapon != weapon_name )
|
if (isDefined(current_melee_weapon) && current_melee_weapon != weapon_name)
|
||||||
{
|
{
|
||||||
self takeweapon( current_melee_weapon );
|
self takeweapon(current_melee_weapon);
|
||||||
unacquire_weapon_toggle( current_melee_weapon );
|
unacquire_weapon_toggle(current_melee_weapon);
|
||||||
}
|
}
|
||||||
|
|
||||||
self set_player_melee_weapon( weapon_name );
|
self set_player_melee_weapon(weapon_name);
|
||||||
had_ballistic = 0;
|
had_ballistic = 0;
|
||||||
had_ballistic_upgraded = 0;
|
had_ballistic_upgraded = 0;
|
||||||
ballistic_was_primary = 0;
|
ballistic_was_primary = 0;
|
||||||
@ -24,27 +24,27 @@ change_melee_weapon( weapon_name, current_weapon )
|
|||||||
primaryweapons = self getweaponslistprimaries();
|
primaryweapons = self getweaponslistprimaries();
|
||||||
i = 0;
|
i = 0;
|
||||||
|
|
||||||
while ( i < primaryweapons.size )
|
while (i < primaryweapons.size)
|
||||||
{
|
{
|
||||||
primary_weapon = primaryweapons[ i ];
|
primary_weapon = primaryweapons[ i ];
|
||||||
|
|
||||||
if ( issubstr( primary_weapon, "knife_ballistic_" ) )
|
if (issubstr(primary_weapon, "knife_ballistic_"))
|
||||||
{
|
{
|
||||||
had_ballistic = 1;
|
had_ballistic = 1;
|
||||||
|
|
||||||
if ( primary_weapon == current_weapon )
|
if (primary_weapon == current_weapon)
|
||||||
{
|
{
|
||||||
ballistic_was_primary = 1;
|
ballistic_was_primary = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
old_ballistic = primary_weapon;
|
old_ballistic = primary_weapon;
|
||||||
ballistic_ammo_clip = self getWeaponAmmoClip( primary_weapon );
|
ballistic_ammo_clip = self getWeaponAmmoClip(primary_weapon);
|
||||||
ballistic_ammo_stock = self getWeaponAmmoStock( primary_weapon );
|
ballistic_ammo_stock = self getWeaponAmmoStock(primary_weapon);
|
||||||
self notify( "zmb_lost_knife" );
|
self notify("zmb_lost_knife");
|
||||||
self takeweapon( primary_weapon );
|
self takeweapon(primary_weapon);
|
||||||
unacquire_weapon_toggle( primary_weapon );
|
unacquire_weapon_toggle(primary_weapon);
|
||||||
|
|
||||||
if ( issubstr( primary_weapon, "upgraded" ) )
|
if (issubstr(primary_weapon, "upgraded"))
|
||||||
{
|
{
|
||||||
had_ballistic_upgraded = 1;
|
had_ballistic_upgraded = 1;
|
||||||
}
|
}
|
||||||
@ -53,114 +53,114 @@ change_melee_weapon( weapon_name, current_weapon )
|
|||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( had_ballistic )
|
if (had_ballistic)
|
||||||
{
|
{
|
||||||
if ( had_ballistic_upgraded )
|
if (had_ballistic_upgraded)
|
||||||
{
|
{
|
||||||
new_ballistic = level.ballistic_upgraded_weapon_name[ weapon_name ];
|
new_ballistic = level.ballistic_upgraded_weapon_name[ weapon_name ];
|
||||||
|
|
||||||
if ( ballistic_was_primary )
|
if (ballistic_was_primary)
|
||||||
{
|
{
|
||||||
current_weapon = new_ballistic;
|
current_weapon = new_ballistic;
|
||||||
}
|
}
|
||||||
|
|
||||||
self giveweapon( new_ballistic, 0, self maps\mp\zombies\_zm_weapons::get_pack_a_punch_weapon_options( new_ballistic ) );
|
self giveweapon(new_ballistic, 0, self maps\mp\zombies\_zm_weapons::get_pack_a_punch_weapon_options(new_ballistic));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
new_ballistic = level.ballistic_weapon_name[ weapon_name ];
|
new_ballistic = level.ballistic_weapon_name[ weapon_name ];
|
||||||
|
|
||||||
if ( ballistic_was_primary )
|
if (ballistic_was_primary)
|
||||||
{
|
{
|
||||||
current_weapon = new_ballistic;
|
current_weapon = new_ballistic;
|
||||||
}
|
}
|
||||||
|
|
||||||
self giveweapon( new_ballistic, 0 );
|
self giveweapon(new_ballistic, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
self giveMaxAmmo( new_ballistic );
|
self giveMaxAmmo(new_ballistic);
|
||||||
self seteverhadweaponall( 1 );
|
self seteverhadweaponall(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
return current_weapon;
|
return current_weapon;
|
||||||
}
|
}
|
||||||
|
|
||||||
give_melee_weapon( vo_dialog_id, flourish_weapon_name, weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name, flourish_fn, trigger )
|
give_melee_weapon(vo_dialog_id, flourish_weapon_name, weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name, flourish_fn, trigger)
|
||||||
{
|
{
|
||||||
if ( isdefined( flourish_fn ) )
|
if (isdefined(flourish_fn))
|
||||||
self thread [[ flourish_fn ]]();
|
self thread [[ flourish_fn ]]();
|
||||||
|
|
||||||
self thread do_melee_weapon_change( weapon_name );
|
self thread do_melee_weapon_change(weapon_name);
|
||||||
|
|
||||||
self.pre_temp_weapon = self do_melee_weapon_flourish_begin( flourish_weapon_name );
|
self.pre_temp_weapon = self do_melee_weapon_flourish_begin(flourish_weapon_name);
|
||||||
self maps\mp\zombies\_zm_audio::create_and_play_dialog( "weapon_pickup", vo_dialog_id );
|
self maps\mp\zombies\_zm_audio::create_and_play_dialog("weapon_pickup", vo_dialog_id);
|
||||||
self waittill_any( "fake_death", "death", "player_downed", "weapon_change_complete" );
|
self waittill_any("fake_death", "death", "player_downed", "weapon_change_complete");
|
||||||
self do_melee_weapon_flourish_end( self.pre_temp_weapon, flourish_weapon_name, weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name );
|
self do_melee_weapon_flourish_end(self.pre_temp_weapon, flourish_weapon_name, weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name);
|
||||||
|
|
||||||
if ( self maps\mp\zombies\_zm_laststand::player_is_in_laststand() || isdefined( self.intermission ) && self.intermission )
|
if (self maps\mp\zombies\_zm_laststand::player_is_in_laststand() || isdefined(self.intermission) && self.intermission)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
self.pre_temp_weapon = undefined;
|
self.pre_temp_weapon = undefined;
|
||||||
|
|
||||||
if ( !( isdefined( level._allow_melee_weapon_switching ) && level._allow_melee_weapon_switching ) )
|
if (!(isdefined(level._allow_melee_weapon_switching) && level._allow_melee_weapon_switching))
|
||||||
{
|
{
|
||||||
if ( isdefined( trigger ) )
|
if (isdefined(trigger))
|
||||||
trigger setinvisibletoplayer( self );
|
trigger setinvisibletoplayer(self);
|
||||||
|
|
||||||
self trigger_hide_all();
|
self trigger_hide_all();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
do_melee_weapon_change( weapon_name )
|
do_melee_weapon_change(weapon_name)
|
||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
self endon( "fake_death" );
|
self endon("fake_death");
|
||||||
self endon( "player_downed" );
|
self endon("player_downed");
|
||||||
|
|
||||||
self waittill_any( "weapon_change", "weapon_change_complete" );
|
self waittill_any("weapon_change", "weapon_change_complete");
|
||||||
|
|
||||||
self giveweapon( weapon_name );
|
self giveweapon(weapon_name);
|
||||||
self.pre_temp_weapon = change_melee_weapon( weapon_name, self.pre_temp_weapon );
|
self.pre_temp_weapon = change_melee_weapon(weapon_name, self.pre_temp_weapon);
|
||||||
}
|
}
|
||||||
|
|
||||||
do_melee_weapon_flourish_end( gun, flourish_weapon_name, weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name )
|
do_melee_weapon_flourish_end(gun, flourish_weapon_name, weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name)
|
||||||
{
|
{
|
||||||
assert( !is_zombie_perk_bottle( gun ) );
|
assert(!is_zombie_perk_bottle(gun));
|
||||||
assert( gun != level.revive_tool );
|
assert(gun != level.revive_tool);
|
||||||
self enable_player_move_states();
|
self enable_player_move_states();
|
||||||
|
|
||||||
self takeweapon( flourish_weapon_name );
|
self takeweapon(flourish_weapon_name);
|
||||||
|
|
||||||
if ( self maps\mp\zombies\_zm_laststand::player_is_in_laststand() || isdefined( self.intermission ) && self.intermission )
|
if (self maps\mp\zombies\_zm_laststand::player_is_in_laststand() || isdefined(self.intermission) && self.intermission)
|
||||||
{
|
{
|
||||||
self.lastactiveweapon = self.pre_temp_weapon;
|
self.lastactiveweapon = self.pre_temp_weapon;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self is_multiple_drinking() )
|
if (self is_multiple_drinking())
|
||||||
{
|
{
|
||||||
self decrement_is_drinking();
|
self decrement_is_drinking();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if ( is_melee_weapon( gun ) )
|
else if (is_melee_weapon(gun))
|
||||||
{
|
{
|
||||||
self switchtoweapon( weapon_name );
|
self switchtoweapon(weapon_name);
|
||||||
self decrement_is_drinking();
|
self decrement_is_drinking();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if ( gun != "none" && !is_placeable_mine( gun ) && !is_equipment( gun ) )
|
else if (gun != "none" && !is_placeable_mine(gun) && !is_equipment(gun))
|
||||||
self switchtoweapon( gun );
|
self switchtoweapon(gun);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
primaryweapons = self getweaponslistprimaries();
|
primaryweapons = self getweaponslistprimaries();
|
||||||
|
|
||||||
if ( isdefined( primaryweapons ) && primaryweapons.size > 0 )
|
if (isdefined(primaryweapons) && primaryweapons.size > 0)
|
||||||
self switchtoweapon( primaryweapons[0] );
|
self switchtoweapon(primaryweapons[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
self waittill( "weapon_change_complete" );
|
self waittill("weapon_change_complete");
|
||||||
|
|
||||||
if ( !self maps\mp\zombies\_zm_laststand::player_is_in_laststand() && !( isdefined( self.intermission ) && self.intermission ) )
|
if (!self maps\mp\zombies\_zm_laststand::player_is_in_laststand() && !(isdefined(self.intermission) && self.intermission))
|
||||||
self decrement_is_drinking();
|
self decrement_is_drinking();
|
||||||
}
|
}
|
@ -10,33 +10,33 @@
|
|||||||
|
|
||||||
electric_cherry_laststand()
|
electric_cherry_laststand()
|
||||||
{
|
{
|
||||||
visionsetlaststand( "zombie_last_stand", 1 );
|
visionsetlaststand("zombie_last_stand", 1);
|
||||||
|
|
||||||
if ( isdefined( self ) )
|
if (isdefined(self))
|
||||||
{
|
{
|
||||||
playfx( level._effect["electric_cherry_explode"], self.origin );
|
playfx(level._effect["electric_cherry_explode"], self.origin);
|
||||||
self playsound( "zmb_cherry_explode" );
|
self playsound("zmb_cherry_explode");
|
||||||
self notify( "electric_cherry_start" );
|
self notify("electric_cherry_start");
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
a_zombies = get_round_enemy_array();
|
a_zombies = get_round_enemy_array();
|
||||||
a_zombies = get_array_of_closest( self.origin, a_zombies, undefined, undefined, 500 );
|
a_zombies = get_array_of_closest(self.origin, a_zombies, undefined, undefined, 500);
|
||||||
|
|
||||||
for ( i = 0; i < a_zombies.size; i++ )
|
for (i = 0; i < a_zombies.size; i++)
|
||||||
{
|
{
|
||||||
if ( isalive( self ) )
|
if (isalive(self))
|
||||||
{
|
{
|
||||||
a_zombies[i] thread electric_cherry_death_fx();
|
a_zombies[i] thread electric_cherry_death_fx();
|
||||||
|
|
||||||
if ( isdefined( self.cherry_kills ) )
|
if (isdefined(self.cherry_kills))
|
||||||
self.cherry_kills++;
|
self.cherry_kills++;
|
||||||
|
|
||||||
self maps\mp\zombies\_zm_score::add_to_player_score( 40 );
|
self maps\mp\zombies\_zm_score::add_to_player_score(40);
|
||||||
|
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
a_zombies[i] dodamage( a_zombies[i].health + 1000, self.origin, self, self, "none" );
|
a_zombies[i] dodamage(a_zombies[i].health + 1000, self.origin, self, self, "none");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self notify( "electric_cherry_end" );
|
self notify("electric_cherry_end");
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -11,13 +11,13 @@
|
|||||||
|
|
||||||
machine_selector()
|
machine_selector()
|
||||||
{
|
{
|
||||||
while ( true )
|
while (true)
|
||||||
{
|
{
|
||||||
level waittill( "random_perk_moving" );
|
level waittill("random_perk_moving");
|
||||||
|
|
||||||
machines = getentarray( "random_perk_machine", "targetname" );
|
machines = getentarray("random_perk_machine", "targetname");
|
||||||
|
|
||||||
if ( machines.size == 1 )
|
if (machines.size == 1)
|
||||||
{
|
{
|
||||||
new_machine = machines[0];
|
new_machine = machines[0];
|
||||||
new_machine thread machine_think();
|
new_machine thread machine_think();
|
||||||
@ -25,49 +25,49 @@ machine_selector()
|
|||||||
}
|
}
|
||||||
|
|
||||||
do
|
do
|
||||||
new_machine = machines[randomint( machines.size )];
|
new_machine = machines[randomint(machines.size)];
|
||||||
|
|
||||||
while ( new_machine == level.random_perk_start_machine );
|
while (new_machine == level.random_perk_start_machine);
|
||||||
|
|
||||||
level.random_perk_start_machine = new_machine;
|
level.random_perk_start_machine = new_machine;
|
||||||
new_machine thread machine_think();
|
new_machine thread machine_think();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
trigger_visible_to_player( player )
|
trigger_visible_to_player(player)
|
||||||
{
|
{
|
||||||
self setinvisibletoplayer( player );
|
self setinvisibletoplayer(player);
|
||||||
visible = 1;
|
visible = 1;
|
||||||
|
|
||||||
if ( isdefined( self.stub.trigger_target.machine_user ) )
|
if (isdefined(self.stub.trigger_target.machine_user))
|
||||||
{
|
{
|
||||||
if ( player != self.stub.trigger_target.machine_user )
|
if (player != self.stub.trigger_target.machine_user)
|
||||||
visible = 0;
|
visible = 0;
|
||||||
}
|
}
|
||||||
else if ( !player can_buy_perk() )
|
else if (!player can_buy_perk())
|
||||||
visible = 0;
|
visible = 0;
|
||||||
|
|
||||||
if ( !visible )
|
if (!visible)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
self setvisibletoplayer( player );
|
self setvisibletoplayer(player);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
can_buy_perk()
|
can_buy_perk()
|
||||||
{
|
{
|
||||||
if ( isdefined( self.is_drinking ) && self.is_drinking > 0 )
|
if (isdefined(self.is_drinking) && self.is_drinking > 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
current_weapon = self getcurrentweapon();
|
current_weapon = self getcurrentweapon();
|
||||||
|
|
||||||
if ( is_equipment_that_blocks_purchase( current_weapon ) )
|
if (is_equipment_that_blocks_purchase(current_weapon))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if ( self in_revive_trigger() )
|
if (self in_revive_trigger())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if ( current_weapon == "none" )
|
if (current_weapon == "none")
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
#include maps\mp\zombies\_zm_score;
|
#include maps\mp\zombies\_zm_score;
|
||||||
#include maps\mp\zombies\_zm_ai_basic;
|
#include maps\mp\zombies\_zm_ai_basic;
|
||||||
|
|
||||||
_is_player_in_zombie_stink( a_points )
|
_is_player_in_zombie_stink(a_points)
|
||||||
{
|
{
|
||||||
velocity = self getVelocity() * (1, 1, 0);
|
velocity = self getVelocity() * (1, 1, 0);
|
||||||
speed = length(velocity);
|
speed = length(velocity);
|
||||||
@ -24,9 +24,9 @@ _is_player_in_zombie_stink( a_points )
|
|||||||
|
|
||||||
b_is_in_stink = 0;
|
b_is_in_stink = 0;
|
||||||
|
|
||||||
for ( i = 0; i < a_points.size; i++ )
|
for (i = 0; i < a_points.size; i++)
|
||||||
{
|
{
|
||||||
if ( distancesquared( a_points[i].origin, self.origin ) < 4900 )
|
if (distancesquared(a_points[i].origin, self.origin) < 4900)
|
||||||
b_is_in_stink = 1;
|
b_is_in_stink = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -2,7 +2,7 @@
|
|||||||
#include common_scripts\utility;
|
#include common_scripts\utility;
|
||||||
#include maps\mp\zombies\_zm_utility;
|
#include maps\mp\zombies\_zm_utility;
|
||||||
|
|
||||||
check_pers_upgrade( pers_upgrade )
|
check_pers_upgrade(pers_upgrade)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
@ -4,25 +4,25 @@
|
|||||||
|
|
||||||
playerhealthregen()
|
playerhealthregen()
|
||||||
{
|
{
|
||||||
self notify( "playerHealthRegen" );
|
self notify("playerHealthRegen");
|
||||||
self endon( "playerHealthRegen" );
|
self endon("playerHealthRegen");
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
|
|
||||||
if ( !isDefined( self.flag ) )
|
if (!isDefined(self.flag))
|
||||||
{
|
{
|
||||||
self.flag = [];
|
self.flag = [];
|
||||||
self.flags_lock = [];
|
self.flags_lock = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isDefined( self.flag[ "player_has_red_flashing_overlay" ] ) )
|
if (!isDefined(self.flag[ "player_has_red_flashing_overlay" ]))
|
||||||
{
|
{
|
||||||
self player_flag_init( "player_has_red_flashing_overlay" );
|
self player_flag_init("player_has_red_flashing_overlay");
|
||||||
self player_flag_init( "player_is_invulnerable" );
|
self player_flag_init("player_is_invulnerable");
|
||||||
}
|
}
|
||||||
|
|
||||||
self player_flag_clear( "player_has_red_flashing_overlay" );
|
self player_flag_clear("player_has_red_flashing_overlay");
|
||||||
self player_flag_clear( "player_is_invulnerable" );
|
self player_flag_clear("player_is_invulnerable");
|
||||||
self thread maps\mp\zombies\_zm_playerhealth::healthoverlay();
|
self thread maps\mp\zombies\_zm_playerhealth::healthoverlay();
|
||||||
|
|
||||||
level.playerhealth_regularregendelay = 2000;
|
level.playerhealth_regularregendelay = 2000;
|
||||||
@ -39,21 +39,21 @@ playerhealthregen()
|
|||||||
|
|
||||||
self thread maps\mp\zombies\_zm_playerhealth::playerhurtcheck();
|
self thread maps\mp\zombies\_zm_playerhealth::playerhurtcheck();
|
||||||
|
|
||||||
if ( !isDefined( self.veryhurt ) )
|
if (!isDefined(self.veryhurt))
|
||||||
{
|
{
|
||||||
self.veryhurt = 0;
|
self.veryhurt = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
self.bolthit = 0;
|
self.bolthit = 0;
|
||||||
|
|
||||||
if ( getDvar( "scr_playerInvulTimeScale" ) == "" )
|
if (getDvar("scr_playerInvulTimeScale") == "")
|
||||||
{
|
{
|
||||||
setdvar( "scr_playerInvulTimeScale", 1 );
|
setdvar("scr_playerInvulTimeScale", 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
playerinvultimescale = getDvarFloat( "scr_playerInvulTimeScale" );
|
playerinvultimescale = getDvarFloat("scr_playerInvulTimeScale");
|
||||||
|
|
||||||
for ( ;; )
|
for (;;)
|
||||||
{
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
waittillframeend;
|
waittillframeend;
|
||||||
@ -70,51 +70,51 @@ playerhealthregen()
|
|||||||
longregendelay *= 0.75;
|
longregendelay *= 0.75;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self.health > 50 )
|
if (self.health > 50)
|
||||||
{
|
{
|
||||||
if ( self player_flag( "player_has_red_flashing_overlay" ) )
|
if (self player_flag("player_has_red_flashing_overlay"))
|
||||||
{
|
{
|
||||||
player_flag_clear( "player_has_red_flashing_overlay" );
|
player_flag_clear("player_has_red_flashing_overlay");
|
||||||
}
|
}
|
||||||
|
|
||||||
lastinvulratio = 1;
|
lastinvulratio = 1;
|
||||||
playerjustgotredflashing = 0;
|
playerjustgotredflashing = 0;
|
||||||
veryhurt = 0;
|
veryhurt = 0;
|
||||||
|
|
||||||
if ( self.health == self.maxhealth )
|
if (self.health == self.maxhealth)
|
||||||
{
|
{
|
||||||
oldratio = 1;
|
oldratio = 1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( self.health <= 0 )
|
else if (self.health <= 0)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
wasveryhurt = veryhurt;
|
wasveryhurt = veryhurt;
|
||||||
|
|
||||||
if ( self.health <= 50 )
|
if (self.health <= 50)
|
||||||
{
|
{
|
||||||
veryhurt = 1;
|
veryhurt = 1;
|
||||||
|
|
||||||
if ( !wasveryhurt )
|
if (!wasveryhurt)
|
||||||
{
|
{
|
||||||
hurttime = getTime();
|
hurttime = getTime();
|
||||||
self player_flag_set( "player_has_red_flashing_overlay" );
|
self player_flag_set("player_has_red_flashing_overlay");
|
||||||
playerjustgotredflashing = 1;
|
playerjustgotredflashing = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self.hurtagain )
|
if (self.hurtagain)
|
||||||
{
|
{
|
||||||
hurttime = getTime();
|
hurttime = getTime();
|
||||||
self.hurtagain = 0;
|
self.hurtagain = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( health_ratio >= oldratio )
|
if (health_ratio >= oldratio)
|
||||||
{
|
{
|
||||||
if ( ( getTime() - hurttime ) < regularregendelay )
|
if ((getTime() - hurttime) < regularregendelay)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -123,9 +123,9 @@ playerhealthregen()
|
|||||||
self.veryhurt = veryhurt;
|
self.veryhurt = veryhurt;
|
||||||
newhealth = health_ratio;
|
newhealth = health_ratio;
|
||||||
|
|
||||||
if ( veryhurt )
|
if (veryhurt)
|
||||||
{
|
{
|
||||||
if ( ( getTime() - hurttime ) >= longregendelay )
|
if ((getTime() - hurttime) >= longregendelay)
|
||||||
{
|
{
|
||||||
newhealth += regenrate;
|
newhealth += regenrate;
|
||||||
}
|
}
|
||||||
@ -136,56 +136,56 @@ playerhealthregen()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( newhealth > 1 )
|
if (newhealth > 1)
|
||||||
{
|
{
|
||||||
newhealth = 1;
|
newhealth = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( newhealth <= 0 )
|
if (newhealth <= 0)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
self setnormalhealth( newhealth );
|
self setnormalhealth(newhealth);
|
||||||
oldratio = self.health / self.maxhealth;
|
oldratio = self.health / self.maxhealth;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
invulworthyhealthdrop = ( lastinvulratio - health_ratio ) > level.worthydamageratio;
|
invulworthyhealthdrop = (lastinvulratio - health_ratio) > level.worthydamageratio;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self.health <= 1 )
|
if (self.health <= 1)
|
||||||
{
|
{
|
||||||
self setnormalhealth( 1 / self.maxhealth );
|
self setnormalhealth(1 / self.maxhealth);
|
||||||
invulworthyhealthdrop = 1;
|
invulworthyhealthdrop = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
oldratio = self.health / self.maxhealth;
|
oldratio = self.health / self.maxhealth;
|
||||||
self notify( "hit_again" );
|
self notify("hit_again");
|
||||||
hurttime = getTime();
|
hurttime = getTime();
|
||||||
|
|
||||||
if ( !invulworthyhealthdrop || playerinvultimescale <= 0 )
|
if (!invulworthyhealthdrop || playerinvultimescale <= 0)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( self player_flag( "player_is_invulnerable" ) )
|
if (self player_flag("player_is_invulnerable"))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
self player_flag_set( "player_is_invulnerable" );
|
self player_flag_set("player_is_invulnerable");
|
||||||
level notify( "player_becoming_invulnerable" );
|
level notify("player_becoming_invulnerable");
|
||||||
|
|
||||||
if ( playerjustgotredflashing )
|
if (playerjustgotredflashing)
|
||||||
{
|
{
|
||||||
invultime = level.invultime_onshield;
|
invultime = level.invultime_onshield;
|
||||||
playerjustgotredflashing = 0;
|
playerjustgotredflashing = 0;
|
||||||
}
|
}
|
||||||
else if ( veryhurt )
|
else if (veryhurt)
|
||||||
{
|
{
|
||||||
invultime = level.invultime_postshield;
|
invultime = level.invultime_postshield;
|
||||||
}
|
}
|
||||||
@ -196,7 +196,7 @@ playerhealthregen()
|
|||||||
|
|
||||||
invultime *= playerinvultimescale;
|
invultime *= playerinvultimescale;
|
||||||
lastinvulratio = self.health / self.maxhealth;
|
lastinvulratio = self.health / self.maxhealth;
|
||||||
self thread maps\mp\zombies\_zm_playerhealth::playerinvul( invultime );
|
self thread maps\mp\zombies\_zm_playerhealth::playerinvul(invultime);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,66 +5,66 @@
|
|||||||
|
|
||||||
standard_powered_items()
|
standard_powered_items()
|
||||||
{
|
{
|
||||||
flag_wait( "start_zombie_round_logic" );
|
flag_wait("start_zombie_round_logic");
|
||||||
vending_triggers = getentarray( "zombie_vending", "targetname" );
|
vending_triggers = getentarray("zombie_vending", "targetname");
|
||||||
i = 0;
|
i = 0;
|
||||||
|
|
||||||
while ( i < vending_triggers.size)
|
while (i < vending_triggers.size)
|
||||||
{
|
{
|
||||||
if ( vending_triggers[ i ].script_noteworthy == "specialty_weapupgrade" )
|
if (vending_triggers[ i ].script_noteworthy == "specialty_weapupgrade")
|
||||||
{
|
{
|
||||||
i++;
|
i++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
powered_on = maps\mp\zombies\_zm_perks::get_perk_machine_start_state( vending_triggers[ i ].script_noteworthy );
|
powered_on = maps\mp\zombies\_zm_perks::get_perk_machine_start_state(vending_triggers[ i ].script_noteworthy);
|
||||||
add_powered_item( ::perk_power_on, ::perk_power_off, ::perk_range, ::cost_low_if_local, 0, powered_on, vending_triggers[ i ] );
|
add_powered_item(::perk_power_on, ::perk_power_off, ::perk_range, ::cost_low_if_local, 0, powered_on, vending_triggers[ i ]);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
pack_a_punch = getentarray( "specialty_weapupgrade", "script_noteworthy" );
|
pack_a_punch = getentarray("specialty_weapupgrade", "script_noteworthy");
|
||||||
|
|
||||||
foreach ( trigger in pack_a_punch )
|
foreach (trigger in pack_a_punch)
|
||||||
{
|
{
|
||||||
powered_on = maps\mp\zombies\_zm_perks::get_perk_machine_start_state( trigger.script_noteworthy );
|
powered_on = maps\mp\zombies\_zm_perks::get_perk_machine_start_state(trigger.script_noteworthy);
|
||||||
trigger.powered = add_powered_item( ::pap_power_on, ::pap_power_off, ::pap_range, ::cost_low_if_local, 0, powered_on, trigger );
|
trigger.powered = add_powered_item(::pap_power_on, ::pap_power_off, ::pap_range, ::cost_low_if_local, 0, powered_on, trigger);
|
||||||
}
|
}
|
||||||
|
|
||||||
zombie_doors = getentarray( "zombie_door", "targetname" );
|
zombie_doors = getentarray("zombie_door", "targetname");
|
||||||
|
|
||||||
foreach ( door in zombie_doors )
|
foreach (door in zombie_doors)
|
||||||
{
|
{
|
||||||
if ( isDefined( door.script_noteworthy ) && door.script_noteworthy == "electric_door" )
|
if (isDefined(door.script_noteworthy) && door.script_noteworthy == "electric_door")
|
||||||
{
|
{
|
||||||
add_powered_item( ::door_power_on, ::door_power_off, ::door_range, ::cost_door, 0, 0, door );
|
add_powered_item(::door_power_on, ::door_power_off, ::door_range, ::cost_door, 0, 0, door);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( door.script_noteworthy ) && door.script_noteworthy == "local_electric_door" )
|
if (isDefined(door.script_noteworthy) && door.script_noteworthy == "local_electric_door")
|
||||||
{
|
{
|
||||||
power_sources = 0;
|
power_sources = 0;
|
||||||
|
|
||||||
if ( !is_true( level.power_local_doors_globally ) )
|
if (!is_true(level.power_local_doors_globally))
|
||||||
{
|
{
|
||||||
power_sources = 1;
|
power_sources = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
add_powered_item( ::door_local_power_on, ::door_local_power_off, ::door_range, ::cost_door, power_sources, 0, door );
|
add_powered_item(::door_local_power_on, ::door_local_power_off, ::door_range, ::cost_door, power_sources, 0, door);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
thread watch_global_power();
|
thread watch_global_power();
|
||||||
}
|
}
|
||||||
|
|
||||||
perk_power_off( origin, radius )
|
perk_power_off(origin, radius)
|
||||||
{
|
{
|
||||||
self.target notify( "death" );
|
self.target notify("death");
|
||||||
self.target thread maps\mp\zombies\_zm_perks::vending_trigger_think();
|
self.target thread maps\mp\zombies\_zm_perks::vending_trigger_think();
|
||||||
|
|
||||||
if ( isDefined( self.target.perk_hum ) )
|
if (isDefined(self.target.perk_hum))
|
||||||
{
|
{
|
||||||
self.target.perk_hum delete();
|
self.target.perk_hum delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
maps\mp\zombies\_zm_perks::perk_pause( self.target.script_noteworthy );
|
maps\mp\zombies\_zm_perks::perk_pause(self.target.script_noteworthy);
|
||||||
level notify( self.target maps\mp\zombies\_zm_perks::getvendingmachinenotify() + "_off" );
|
level notify(self.target maps\mp\zombies\_zm_perks::getvendingmachinenotify() + "_off");
|
||||||
}
|
}
|
@ -5,12 +5,12 @@
|
|||||||
#include maps\mp\zombies\_zm_utility;
|
#include maps\mp\zombies\_zm_utility;
|
||||||
#include maps\mp\_visionset_mgr;
|
#include maps\mp\_visionset_mgr;
|
||||||
|
|
||||||
zombie_blood_powerup( m_powerup, e_player )
|
zombie_blood_powerup(m_powerup, e_player)
|
||||||
{
|
{
|
||||||
e_player notify( "zombie_blood" );
|
e_player notify("zombie_blood");
|
||||||
e_player endon( "zombie_blood" );
|
e_player endon("zombie_blood");
|
||||||
e_player endon( "disconnect" );
|
e_player endon("disconnect");
|
||||||
e_player thread powerup_vo( "zombie_blood" );
|
e_player thread powerup_vo("zombie_blood");
|
||||||
e_player._show_solo_hud = 1;
|
e_player._show_solo_hud = 1;
|
||||||
|
|
||||||
if (is_true(e_player.zombie_vars["zombie_powerup_zombie_blood_on"]))
|
if (is_true(e_player.zombie_vars["zombie_powerup_zombie_blood_on"]))
|
||||||
@ -23,17 +23,17 @@ zombie_blood_powerup( m_powerup, e_player )
|
|||||||
}
|
}
|
||||||
|
|
||||||
e_player.zombie_vars["zombie_powerup_zombie_blood_on"] = 1;
|
e_player.zombie_vars["zombie_powerup_zombie_blood_on"] = 1;
|
||||||
level notify( "player_zombie_blood", e_player );
|
level notify("player_zombie_blood", e_player);
|
||||||
maps\mp\_visionset_mgr::vsmgr_activate( "visionset", "zm_powerup_zombie_blood_visionset", e_player );
|
maps\mp\_visionset_mgr::vsmgr_activate("visionset", "zm_powerup_zombie_blood_visionset", e_player);
|
||||||
maps\mp\_visionset_mgr::vsmgr_activate( "overlay", "zm_powerup_zombie_blood_overlay", e_player );
|
maps\mp\_visionset_mgr::vsmgr_activate("overlay", "zm_powerup_zombie_blood_overlay", e_player);
|
||||||
e_player setclientfield( "player_zombie_blood_fx", 1 );
|
e_player setclientfield("player_zombie_blood_fx", 1);
|
||||||
__new = [];
|
__new = [];
|
||||||
|
|
||||||
foreach ( __key, __value in level.a_zombie_blood_entities )
|
foreach (__key, __value in level.a_zombie_blood_entities)
|
||||||
{
|
{
|
||||||
if ( isdefined( __value ) )
|
if (isdefined(__value))
|
||||||
{
|
{
|
||||||
if ( isstring( __key ) )
|
if (isstring(__key))
|
||||||
{
|
{
|
||||||
__new[__key] = __value;
|
__new[__key] = __value;
|
||||||
continue;
|
continue;
|
||||||
@ -45,69 +45,69 @@ zombie_blood_powerup( m_powerup, e_player )
|
|||||||
|
|
||||||
level.a_zombie_blood_entities = __new;
|
level.a_zombie_blood_entities = __new;
|
||||||
|
|
||||||
foreach ( e_zombie_blood in level.a_zombie_blood_entities )
|
foreach (e_zombie_blood in level.a_zombie_blood_entities)
|
||||||
{
|
{
|
||||||
if ( isdefined( e_zombie_blood.e_unique_player ) )
|
if (isdefined(e_zombie_blood.e_unique_player))
|
||||||
{
|
{
|
||||||
if ( e_zombie_blood.e_unique_player == e_player )
|
if (e_zombie_blood.e_unique_player == e_player)
|
||||||
e_zombie_blood setvisibletoplayer( e_player );
|
e_zombie_blood setvisibletoplayer(e_player);
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
e_zombie_blood setvisibletoplayer( e_player );
|
e_zombie_blood setvisibletoplayer(e_player);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isdefined( e_player.m_fx ) )
|
if (!isdefined(e_player.m_fx))
|
||||||
{
|
{
|
||||||
v_origin = e_player gettagorigin( "J_Eyeball_LE" );
|
v_origin = e_player gettagorigin("J_Eyeball_LE");
|
||||||
v_angles = e_player gettagangles( "J_Eyeball_LE" );
|
v_angles = e_player gettagangles("J_Eyeball_LE");
|
||||||
m_fx = spawn( "script_model", v_origin );
|
m_fx = spawn("script_model", v_origin);
|
||||||
m_fx setmodel( "tag_origin" );
|
m_fx setmodel("tag_origin");
|
||||||
m_fx.angles = v_angles;
|
m_fx.angles = v_angles;
|
||||||
m_fx linkto( e_player, "J_Eyeball_LE", ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
m_fx linkto(e_player, "J_Eyeball_LE", (0, 0, 0), (0, 0, 0));
|
||||||
m_fx thread fx_disconnect_watch( e_player );
|
m_fx thread fx_disconnect_watch(e_player);
|
||||||
playfxontag( level._effect["zombie_blood"], m_fx, "tag_origin" );
|
playfxontag(level._effect["zombie_blood"], m_fx, "tag_origin");
|
||||||
e_player.m_fx = m_fx;
|
e_player.m_fx = m_fx;
|
||||||
e_player.m_fx playloopsound( "zmb_zombieblood_3rd_loop", 1 );
|
e_player.m_fx playloopsound("zmb_zombieblood_3rd_loop", 1);
|
||||||
|
|
||||||
if ( isdefined( level.str_zombie_blood_model ) )
|
if (isdefined(level.str_zombie_blood_model))
|
||||||
{
|
{
|
||||||
e_player.hero_model = e_player.model;
|
e_player.hero_model = e_player.model;
|
||||||
e_player setmodel( level.str_zombie_blood_model );
|
e_player setmodel(level.str_zombie_blood_model);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
e_player thread watch_zombie_blood_early_exit();
|
e_player thread watch_zombie_blood_early_exit();
|
||||||
|
|
||||||
while ( e_player.zombie_vars["zombie_powerup_zombie_blood_time"] >= 0 )
|
while (e_player.zombie_vars["zombie_powerup_zombie_blood_time"] >= 0)
|
||||||
{
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
e_player.zombie_vars["zombie_powerup_zombie_blood_time"] -= 0.05;
|
e_player.zombie_vars["zombie_powerup_zombie_blood_time"] -= 0.05;
|
||||||
}
|
}
|
||||||
|
|
||||||
e_player notify( "zombie_blood_over" );
|
e_player notify("zombie_blood_over");
|
||||||
|
|
||||||
if ( isdefined( e_player.characterindex ) )
|
if (isdefined(e_player.characterindex))
|
||||||
e_player playsound( "vox_plr_" + e_player.characterindex + "_exert_grunt_" + randomintrange( 0, 3 ) );
|
e_player playsound("vox_plr_" + e_player.characterindex + "_exert_grunt_" + randomintrange(0, 3));
|
||||||
|
|
||||||
e_player.m_fx delete();
|
e_player.m_fx delete();
|
||||||
maps\mp\_visionset_mgr::vsmgr_deactivate( "visionset", "zm_powerup_zombie_blood_visionset", e_player );
|
maps\mp\_visionset_mgr::vsmgr_deactivate("visionset", "zm_powerup_zombie_blood_visionset", e_player);
|
||||||
maps\mp\_visionset_mgr::vsmgr_deactivate( "overlay", "zm_powerup_zombie_blood_overlay", e_player );
|
maps\mp\_visionset_mgr::vsmgr_deactivate("overlay", "zm_powerup_zombie_blood_overlay", e_player);
|
||||||
e_player.zombie_vars["zombie_powerup_zombie_blood_on"] = 0;
|
e_player.zombie_vars["zombie_powerup_zombie_blood_on"] = 0;
|
||||||
e_player.zombie_vars["zombie_powerup_zombie_blood_time"] = 30;
|
e_player.zombie_vars["zombie_powerup_zombie_blood_time"] = 30;
|
||||||
e_player._show_solo_hud = 0;
|
e_player._show_solo_hud = 0;
|
||||||
e_player setclientfield( "player_zombie_blood_fx", 0 );
|
e_player setclientfield("player_zombie_blood_fx", 0);
|
||||||
|
|
||||||
e_player.early_exit = undefined;
|
e_player.early_exit = undefined;
|
||||||
|
|
||||||
__new = [];
|
__new = [];
|
||||||
|
|
||||||
foreach ( __key, __value in level.a_zombie_blood_entities )
|
foreach (__key, __value in level.a_zombie_blood_entities)
|
||||||
{
|
{
|
||||||
if ( isdefined( __value ) )
|
if (isdefined(__value))
|
||||||
{
|
{
|
||||||
if ( isstring( __key ) )
|
if (isstring(__key))
|
||||||
{
|
{
|
||||||
__new[__key] = __value;
|
__new[__key] = __value;
|
||||||
continue;
|
continue;
|
||||||
@ -119,12 +119,12 @@ zombie_blood_powerup( m_powerup, e_player )
|
|||||||
|
|
||||||
level.a_zombie_blood_entities = __new;
|
level.a_zombie_blood_entities = __new;
|
||||||
|
|
||||||
foreach ( e_zombie_blood in level.a_zombie_blood_entities )
|
foreach (e_zombie_blood in level.a_zombie_blood_entities)
|
||||||
e_zombie_blood setinvisibletoplayer( e_player );
|
e_zombie_blood setinvisibletoplayer(e_player);
|
||||||
|
|
||||||
if ( isdefined( e_player.hero_model ) )
|
if (isdefined(e_player.hero_model))
|
||||||
{
|
{
|
||||||
e_player setmodel( e_player.hero_model );
|
e_player setmodel(e_player.hero_model);
|
||||||
e_player.hero_model = undefined;
|
e_player.hero_model = undefined;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,23 +2,23 @@
|
|||||||
#include common_scripts\utility;
|
#include common_scripts\utility;
|
||||||
#include maps\mp\zombies\_zm_utility;
|
#include maps\mp\zombies\_zm_utility;
|
||||||
|
|
||||||
powerup_drop( drop_point )
|
powerup_drop(drop_point)
|
||||||
{
|
{
|
||||||
if ( level.powerup_drop_count >= level.zombie_vars["zombie_powerup_drop_max_per_round"] )
|
if (level.powerup_drop_count >= level.zombie_vars["zombie_powerup_drop_max_per_round"])
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isdefined( level.zombie_include_powerups ) || level.zombie_include_powerups.size == 0 )
|
if (!isdefined(level.zombie_include_powerups) || level.zombie_include_powerups.size == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
rand_drop = randomint( 100 );
|
rand_drop = randomint(100);
|
||||||
|
|
||||||
powerup_chance = 2;
|
powerup_chance = 2;
|
||||||
|
|
||||||
if ( rand_drop >= powerup_chance )
|
if (rand_drop >= powerup_chance)
|
||||||
{
|
{
|
||||||
if ( !level.zombie_vars["zombie_drop_item"] )
|
if (!level.zombie_vars["zombie_drop_item"])
|
||||||
return;
|
return;
|
||||||
|
|
||||||
debug = "score";
|
debug = "score";
|
||||||
@ -26,29 +26,29 @@ powerup_drop( drop_point )
|
|||||||
else
|
else
|
||||||
debug = "random";
|
debug = "random";
|
||||||
|
|
||||||
playable_area = getentarray( "player_volume", "script_noteworthy" );
|
playable_area = getentarray("player_volume", "script_noteworthy");
|
||||||
level.powerup_drop_count++;
|
level.powerup_drop_count++;
|
||||||
powerup = maps\mp\zombies\_zm_net::network_safe_spawn( "powerup", 1, "script_model", drop_point + vectorscale( ( 0, 0, 1 ), 40.0 ) );
|
powerup = maps\mp\zombies\_zm_net::network_safe_spawn("powerup", 1, "script_model", drop_point + vectorscale((0, 0, 1), 40.0));
|
||||||
valid_drop = 0;
|
valid_drop = 0;
|
||||||
|
|
||||||
for ( i = 0; i < playable_area.size; i++ )
|
for (i = 0; i < playable_area.size; i++)
|
||||||
{
|
{
|
||||||
if ( powerup istouching( playable_area[i] ) )
|
if (powerup istouching(playable_area[i]))
|
||||||
valid_drop = 1;
|
valid_drop = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( valid_drop && level.rare_powerups_active )
|
if (valid_drop && level.rare_powerups_active)
|
||||||
{
|
{
|
||||||
pos = ( drop_point[0], drop_point[1], drop_point[2] + 42 );
|
pos = (drop_point[0], drop_point[1], drop_point[2] + 42);
|
||||||
|
|
||||||
if ( check_for_rare_drop_override( pos ) )
|
if (check_for_rare_drop_override(pos))
|
||||||
{
|
{
|
||||||
level.zombie_vars["zombie_drop_item"] = 0;
|
level.zombie_vars["zombie_drop_item"] = 0;
|
||||||
valid_drop = 0;
|
valid_drop = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !valid_drop )
|
if (!valid_drop)
|
||||||
{
|
{
|
||||||
level.powerup_drop_count--;
|
level.powerup_drop_count--;
|
||||||
powerup delete();
|
powerup delete();
|
||||||
@ -56,14 +56,14 @@ powerup_drop( drop_point )
|
|||||||
}
|
}
|
||||||
|
|
||||||
powerup powerup_setup();
|
powerup powerup_setup();
|
||||||
print_powerup_drop( powerup.powerup_name, debug );
|
print_powerup_drop(powerup.powerup_name, debug);
|
||||||
powerup thread powerup_timeout();
|
powerup thread powerup_timeout();
|
||||||
powerup thread powerup_wobble();
|
powerup thread powerup_wobble();
|
||||||
powerup thread powerup_grab();
|
powerup thread powerup_grab();
|
||||||
powerup thread powerup_move();
|
powerup thread powerup_move();
|
||||||
powerup thread powerup_emp();
|
powerup thread powerup_emp();
|
||||||
level.zombie_vars["zombie_drop_item"] = 0;
|
level.zombie_vars["zombie_drop_item"] = 0;
|
||||||
level notify( "powerup_dropped", powerup );
|
level notify("powerup_dropped", powerup);
|
||||||
}
|
}
|
||||||
|
|
||||||
get_next_powerup()
|
get_next_powerup()
|
||||||
@ -71,7 +71,7 @@ get_next_powerup()
|
|||||||
powerup = level.zombie_powerup_array[level.zombie_powerup_index];
|
powerup = level.zombie_powerup_array[level.zombie_powerup_index];
|
||||||
level.zombie_powerup_index++;
|
level.zombie_powerup_index++;
|
||||||
|
|
||||||
if ( level.zombie_powerup_index >= level.zombie_powerup_array.size )
|
if (level.zombie_powerup_index >= level.zombie_powerup_array.size)
|
||||||
{
|
{
|
||||||
level.zombie_powerup_index = 0;
|
level.zombie_powerup_index = 0;
|
||||||
randomize_powerups();
|
randomize_powerups();
|
||||||
@ -83,227 +83,227 @@ get_next_powerup()
|
|||||||
|
|
||||||
play_fx_on_powerup_dropped()
|
play_fx_on_powerup_dropped()
|
||||||
{
|
{
|
||||||
level waittill( "powerup_dropped", powerup );
|
level waittill("powerup_dropped", powerup);
|
||||||
|
|
||||||
if ( powerup.solo )
|
if (powerup.solo)
|
||||||
{
|
{
|
||||||
playfx( level._effect["powerup_grabbed_solo"], powerup.origin );
|
playfx(level._effect["powerup_grabbed_solo"], powerup.origin);
|
||||||
playfx( level._effect["powerup_grabbed_wave_solo"], powerup.origin );
|
playfx(level._effect["powerup_grabbed_wave_solo"], powerup.origin);
|
||||||
}
|
}
|
||||||
else if ( powerup.caution )
|
else if (powerup.caution)
|
||||||
{
|
{
|
||||||
playfx( level._effect["powerup_grabbed_caution"], powerup.origin );
|
playfx(level._effect["powerup_grabbed_caution"], powerup.origin);
|
||||||
playfx( level._effect["powerup_grabbed_wave_caution"], powerup.origin );
|
playfx(level._effect["powerup_grabbed_wave_caution"], powerup.origin);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
playfx( level._effect["powerup_grabbed"], powerup.origin );
|
playfx(level._effect["powerup_grabbed"], powerup.origin);
|
||||||
playfx( level._effect["powerup_grabbed_wave"], powerup.origin );
|
playfx(level._effect["powerup_grabbed_wave"], powerup.origin);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
powerup_grab( powerup_team )
|
powerup_grab(powerup_team)
|
||||||
{
|
{
|
||||||
if ( isdefined( self ) && self.zombie_grabbable )
|
if (isdefined(self) && self.zombie_grabbable)
|
||||||
{
|
{
|
||||||
self thread powerup_zombie_grab( powerup_team );
|
self thread powerup_zombie_grab(powerup_team);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
self endon( "powerup_timedout" );
|
self endon("powerup_timedout");
|
||||||
self endon( "powerup_grabbed" );
|
self endon("powerup_grabbed");
|
||||||
range_squared = 4096;
|
range_squared = 4096;
|
||||||
|
|
||||||
while ( isdefined( self ) )
|
while (isdefined(self))
|
||||||
{
|
{
|
||||||
players = array_randomize(get_players());
|
players = array_randomize(get_players());
|
||||||
|
|
||||||
for ( i = 0; i < players.size; i++ )
|
for (i = 0; i < players.size; i++)
|
||||||
{
|
{
|
||||||
if ( ( self.powerup_name == "minigun" || self.powerup_name == "tesla" || self.powerup_name == "random_weapon" || self.powerup_name == "meat_stink" ) && ( players[i] maps\mp\zombies\_zm_laststand::player_is_in_laststand() || players[i] usebuttonpressed() && players[i] in_revive_trigger() ) )
|
if ((self.powerup_name == "minigun" || self.powerup_name == "tesla" || self.powerup_name == "random_weapon" || self.powerup_name == "meat_stink") && (players[i] maps\mp\zombies\_zm_laststand::player_is_in_laststand() || players[i] usebuttonpressed() && players[i] in_revive_trigger()))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( isdefined( self.can_pick_up_in_last_stand ) && !self.can_pick_up_in_last_stand && players[i] maps\mp\zombies\_zm_laststand::player_is_in_laststand() )
|
if (isdefined(self.can_pick_up_in_last_stand) && !self.can_pick_up_in_last_stand && players[i] maps\mp\zombies\_zm_laststand::player_is_in_laststand())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( players[i].sessionstate != "playing" )
|
if (players[i].sessionstate != "playing")
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
ignore_range = 0;
|
ignore_range = 0;
|
||||||
|
|
||||||
if ( isdefined( players[i].ignore_range_powerup ) && players[i].ignore_range_powerup == self )
|
if (isdefined(players[i].ignore_range_powerup) && players[i].ignore_range_powerup == self)
|
||||||
{
|
{
|
||||||
players[i].ignore_range_powerup = undefined;
|
players[i].ignore_range_powerup = undefined;
|
||||||
ignore_range = 1;
|
ignore_range = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( distancesquared( players[i] getCentroid(), self.origin ) < range_squared || ignore_range )
|
if (distancesquared(players[i] getCentroid(), self.origin) < range_squared || ignore_range)
|
||||||
{
|
{
|
||||||
if ( isdefined( level._powerup_grab_check ) )
|
if (isdefined(level._powerup_grab_check))
|
||||||
{
|
{
|
||||||
if ( !self [[ level._powerup_grab_check ]]( players[i] ) )
|
if (!self [[ level._powerup_grab_check ]](players[i]))
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
self.power_up_grab_player = players[i];
|
self.power_up_grab_player = players[i];
|
||||||
|
|
||||||
if ( isdefined( level.zombie_powerup_grab_func ) )
|
if (isdefined(level.zombie_powerup_grab_func))
|
||||||
level thread [[ level.zombie_powerup_grab_func ]]();
|
level thread [[ level.zombie_powerup_grab_func ]]();
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
switch ( self.powerup_name )
|
switch (self.powerup_name)
|
||||||
{
|
{
|
||||||
case "nuke":
|
case "nuke":
|
||||||
level thread nuke_powerup( self, players[i].team );
|
level thread nuke_powerup(self, players[i].team);
|
||||||
players[i] thread powerup_vo( "nuke" );
|
players[i] thread powerup_vo("nuke");
|
||||||
zombies = getaiarray( level.zombie_team );
|
zombies = getaiarray(level.zombie_team);
|
||||||
players[i].zombie_nuked = arraysort( zombies, self.origin );
|
players[i].zombie_nuked = arraysort(zombies, self.origin);
|
||||||
players[i] notify( "nuke_triggered" );
|
players[i] notify("nuke_triggered");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "full_ammo":
|
case "full_ammo":
|
||||||
level thread full_ammo_powerup( self, players[i] );
|
level thread full_ammo_powerup(self, players[i]);
|
||||||
players[i] thread powerup_vo( "full_ammo" );
|
players[i] thread powerup_vo("full_ammo");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "double_points":
|
case "double_points":
|
||||||
level thread double_points_powerup( self, players[i] );
|
level thread double_points_powerup(self, players[i]);
|
||||||
players[i] thread powerup_vo( "double_points" );
|
players[i] thread powerup_vo("double_points");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "insta_kill":
|
case "insta_kill":
|
||||||
level thread insta_kill_powerup( self, players[i] );
|
level thread insta_kill_powerup(self, players[i]);
|
||||||
players[i] thread powerup_vo( "insta_kill" );
|
players[i] thread powerup_vo("insta_kill");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "carpenter":
|
case "carpenter":
|
||||||
if ( is_classic() )
|
if (is_classic())
|
||||||
players[i] thread maps\mp\zombies\_zm_pers_upgrades::persistent_carpenter_ability_check();
|
players[i] thread maps\mp\zombies\_zm_pers_upgrades::persistent_carpenter_ability_check();
|
||||||
|
|
||||||
if ( isdefined( level.use_new_carpenter_func ) )
|
if (isdefined(level.use_new_carpenter_func))
|
||||||
level thread [[ level.use_new_carpenter_func ]]( self.origin );
|
level thread [[ level.use_new_carpenter_func ]](self.origin);
|
||||||
else
|
else
|
||||||
level thread start_carpenter( self.origin );
|
level thread start_carpenter(self.origin);
|
||||||
|
|
||||||
players[i] thread powerup_vo( "carpenter" );
|
players[i] thread powerup_vo("carpenter");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "fire_sale":
|
case "fire_sale":
|
||||||
level thread start_fire_sale( self );
|
level thread start_fire_sale(self);
|
||||||
players[i] thread powerup_vo( "firesale" );
|
players[i] thread powerup_vo("firesale");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "bonfire_sale":
|
case "bonfire_sale":
|
||||||
level thread start_bonfire_sale( self );
|
level thread start_bonfire_sale(self);
|
||||||
players[i] thread powerup_vo( "firesale" );
|
players[i] thread powerup_vo("firesale");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "minigun":
|
case "minigun":
|
||||||
level thread minigun_weapon_powerup( players[i] );
|
level thread minigun_weapon_powerup(players[i]);
|
||||||
players[i] thread powerup_vo( "minigun" );
|
players[i] thread powerup_vo("minigun");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "free_perk":
|
case "free_perk":
|
||||||
level thread free_perk_powerup( self );
|
level thread free_perk_powerup(self);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "tesla":
|
case "tesla":
|
||||||
level thread tesla_weapon_powerup( players[i] );
|
level thread tesla_weapon_powerup(players[i]);
|
||||||
players[i] thread powerup_vo( "tesla" );
|
players[i] thread powerup_vo("tesla");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "random_weapon":
|
case "random_weapon":
|
||||||
if ( !level random_weapon_powerup( self, players[i] ) )
|
if (!level random_weapon_powerup(self, players[i]))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "bonus_points_player":
|
case "bonus_points_player":
|
||||||
level thread bonus_points_player_powerup( self, players[i] );
|
level thread bonus_points_player_powerup(self, players[i]);
|
||||||
players[i] thread powerup_vo( "bonus_points_solo" );
|
players[i] thread powerup_vo("bonus_points_solo");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "bonus_points_team":
|
case "bonus_points_team":
|
||||||
level thread bonus_points_team_powerup( self );
|
level thread bonus_points_team_powerup(self);
|
||||||
players[i] thread powerup_vo( "bonus_points_team" );
|
players[i] thread powerup_vo("bonus_points_team");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "teller_withdrawl":
|
case "teller_withdrawl":
|
||||||
level thread teller_withdrawl( self, players[i] );
|
level thread teller_withdrawl(self, players[i]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if ( isdefined( level._zombiemode_powerup_grab ) )
|
if (isdefined(level._zombiemode_powerup_grab))
|
||||||
level thread [[ level._zombiemode_powerup_grab ]]( self, players[i] );
|
level thread [[ level._zombiemode_powerup_grab ]](self, players[i]);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
maps\mp\_demo::bookmark( "zm_player_powerup_grabbed", gettime(), players[i] );
|
maps\mp\_demo::bookmark("zm_player_powerup_grabbed", gettime(), players[i]);
|
||||||
|
|
||||||
if ( should_award_stat( self.powerup_name ) )
|
if (should_award_stat(self.powerup_name))
|
||||||
{
|
{
|
||||||
players[i] maps\mp\zombies\_zm_stats::increment_client_stat( "drops" );
|
players[i] maps\mp\zombies\_zm_stats::increment_client_stat("drops");
|
||||||
players[i] maps\mp\zombies\_zm_stats::increment_player_stat( "drops" );
|
players[i] maps\mp\zombies\_zm_stats::increment_player_stat("drops");
|
||||||
players[i] maps\mp\zombies\_zm_stats::increment_client_stat( self.powerup_name + "_pickedup" );
|
players[i] maps\mp\zombies\_zm_stats::increment_client_stat(self.powerup_name + "_pickedup");
|
||||||
players[i] maps\mp\zombies\_zm_stats::increment_player_stat( self.powerup_name + "_pickedup" );
|
players[i] maps\mp\zombies\_zm_stats::increment_player_stat(self.powerup_name + "_pickedup");
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self.solo )
|
if (self.solo)
|
||||||
{
|
{
|
||||||
playfx( level._effect["powerup_grabbed_solo"], self.origin );
|
playfx(level._effect["powerup_grabbed_solo"], self.origin);
|
||||||
playfx( level._effect["powerup_grabbed_wave_solo"], self.origin );
|
playfx(level._effect["powerup_grabbed_wave_solo"], self.origin);
|
||||||
}
|
}
|
||||||
else if ( self.caution )
|
else if (self.caution)
|
||||||
{
|
{
|
||||||
playfx( level._effect["powerup_grabbed_caution"], self.origin );
|
playfx(level._effect["powerup_grabbed_caution"], self.origin);
|
||||||
playfx( level._effect["powerup_grabbed_wave_caution"], self.origin );
|
playfx(level._effect["powerup_grabbed_wave_caution"], self.origin);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
playfx( level._effect["powerup_grabbed"], self.origin );
|
playfx(level._effect["powerup_grabbed"], self.origin);
|
||||||
playfx( level._effect["powerup_grabbed_wave"], self.origin );
|
playfx(level._effect["powerup_grabbed_wave"], self.origin);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( self.stolen ) && self.stolen )
|
if (isdefined(self.stolen) && self.stolen)
|
||||||
level notify( "monkey_see_monkey_dont_achieved" );
|
level notify("monkey_see_monkey_dont_achieved");
|
||||||
|
|
||||||
if ( isdefined( self.grabbed_level_notify ) )
|
if (isdefined(self.grabbed_level_notify))
|
||||||
level notify( self.grabbed_level_notify );
|
level notify(self.grabbed_level_notify);
|
||||||
|
|
||||||
self.claimed = 1;
|
self.claimed = 1;
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
playsoundatposition( "zmb_powerup_grabbed", self.origin );
|
playsoundatposition("zmb_powerup_grabbed", self.origin);
|
||||||
self stoploopsound();
|
self stoploopsound();
|
||||||
self hide();
|
self hide();
|
||||||
|
|
||||||
if ( self.powerup_name != "fire_sale" )
|
if (self.powerup_name != "fire_sale")
|
||||||
{
|
{
|
||||||
if ( isdefined( self.power_up_grab_player ) )
|
if (isdefined(self.power_up_grab_player))
|
||||||
{
|
{
|
||||||
if ( isdefined( level.powerup_intro_vox ) )
|
if (isdefined(level.powerup_intro_vox))
|
||||||
{
|
{
|
||||||
level thread [[ level.powerup_intro_vox ]]( self );
|
level thread [[ level.powerup_intro_vox ]](self);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if ( isdefined( level.powerup_vo_available ) )
|
else if (isdefined(level.powerup_vo_available))
|
||||||
{
|
{
|
||||||
can_say_vo = [[ level.powerup_vo_available ]]();
|
can_say_vo = [[ level.powerup_vo_available ]]();
|
||||||
|
|
||||||
if ( !can_say_vo )
|
if (!can_say_vo)
|
||||||
{
|
{
|
||||||
self powerup_delete();
|
self powerup_delete();
|
||||||
self notify( "powerup_grabbed" );
|
self notify("powerup_grabbed");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
level thread maps\mp\zombies\_zm_audio_announcer::leaderdialog( self.powerup_name, self.power_up_grab_player.pers["team"] );
|
level thread maps\mp\zombies\_zm_audio_announcer::leaderdialog(self.powerup_name, self.power_up_grab_player.pers["team"]);
|
||||||
self powerup_delete();
|
self powerup_delete();
|
||||||
self notify( "powerup_grabbed" );
|
self notify("powerup_grabbed");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -311,7 +311,7 @@ powerup_grab( powerup_team )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
full_ammo_powerup( drop_item, player )
|
full_ammo_powerup(drop_item, player)
|
||||||
{
|
{
|
||||||
clip_only = 0;
|
clip_only = 0;
|
||||||
|
|
||||||
@ -321,53 +321,53 @@ full_ammo_powerup( drop_item, player )
|
|||||||
drop_item.hint = &"Clip Ammo!";
|
drop_item.hint = &"Clip Ammo!";
|
||||||
}
|
}
|
||||||
|
|
||||||
players = get_players( player.team );
|
players = get_players(player.team);
|
||||||
|
|
||||||
if ( isdefined( level._get_game_module_players ) )
|
if (isdefined(level._get_game_module_players))
|
||||||
{
|
{
|
||||||
players = [[ level._get_game_module_players ]]( player );
|
players = [[ level._get_game_module_players ]](player);
|
||||||
}
|
}
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
|
|
||||||
while ( i < players.size )
|
while (i < players.size)
|
||||||
{
|
{
|
||||||
if ( players[ i ] maps\mp\zombies\_zm_laststand::player_is_in_laststand() )
|
if (players[ i ] maps\mp\zombies\_zm_laststand::player_is_in_laststand())
|
||||||
{
|
{
|
||||||
i++;
|
i++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
primary_weapons = players[ i ] getweaponslist( 1 );
|
primary_weapons = players[ i ] getweaponslist(1);
|
||||||
|
|
||||||
players[ i ] notify( "zmb_max_ammo" );
|
players[ i ] notify("zmb_max_ammo");
|
||||||
players[ i ] notify( "zmb_lost_knife" );
|
players[ i ] notify("zmb_lost_knife");
|
||||||
players[ i ] notify( "zmb_disable_claymore_prompt" );
|
players[ i ] notify("zmb_disable_claymore_prompt");
|
||||||
players[ i ] notify( "zmb_disable_spikemore_prompt" );
|
players[ i ] notify("zmb_disable_spikemore_prompt");
|
||||||
|
|
||||||
x = 0;
|
x = 0;
|
||||||
|
|
||||||
while ( x < primary_weapons.size )
|
while (x < primary_weapons.size)
|
||||||
{
|
{
|
||||||
if ( level.headshots_only && is_lethal_grenade(primary_weapons[ x ] ) )
|
if (level.headshots_only && is_lethal_grenade(primary_weapons[ x ]))
|
||||||
{
|
{
|
||||||
x++;
|
x++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( level.zombie_include_equipment ) && isdefined( level.zombie_include_equipment[ primary_weapons[ x ] ] ) )
|
if (isdefined(level.zombie_include_equipment) && isdefined(level.zombie_include_equipment[ primary_weapons[ x ] ]))
|
||||||
{
|
{
|
||||||
x++;
|
x++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( level.zombie_weapons_no_max_ammo ) && isdefined( level.zombie_weapons_no_max_ammo[ primary_weapons[ x ] ] ) )
|
if (isdefined(level.zombie_weapons_no_max_ammo) && isdefined(level.zombie_weapons_no_max_ammo[ primary_weapons[ x ] ]))
|
||||||
{
|
{
|
||||||
x++;
|
x++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( players[ i ] hasweapon( primary_weapons[ x ] ) )
|
if (players[ i ] hasweapon(primary_weapons[ x ]))
|
||||||
{
|
{
|
||||||
if (clip_only)
|
if (clip_only)
|
||||||
{
|
{
|
||||||
@ -405,45 +405,45 @@ full_ammo_powerup( drop_item, player )
|
|||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
level thread full_ammo_on_hud( drop_item, player.team );
|
level thread full_ammo_on_hud(drop_item, player.team);
|
||||||
|
|
||||||
if (level.scr_zm_ui_gametype == "zgrief")
|
if (level.scr_zm_ui_gametype == "zgrief")
|
||||||
{
|
{
|
||||||
level thread empty_clip_powerup( drop_item, player );
|
level thread empty_clip_powerup(drop_item, player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
full_ammo_on_hud( drop_item, player_team )
|
full_ammo_on_hud(drop_item, player_team)
|
||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
hudelem = maps\mp\gametypes_zm\_hud_util::createserverfontstring( "objective", 2, player_team );
|
hudelem = maps\mp\gametypes_zm\_hud_util::createserverfontstring("objective", 2, player_team);
|
||||||
hudelem maps\mp\gametypes_zm\_hud_util::setpoint( "TOP", undefined, 0, level.zombie_vars["zombie_timer_offset"] - level.zombie_vars["zombie_timer_offset_interval"] * 2 );
|
hudelem maps\mp\gametypes_zm\_hud_util::setpoint("TOP", undefined, 0, level.zombie_vars["zombie_timer_offset"] - level.zombie_vars["zombie_timer_offset_interval"] * 2);
|
||||||
hudelem.sort = 0.5;
|
hudelem.sort = 0.5;
|
||||||
hudelem.alpha = 0;
|
hudelem.alpha = 0;
|
||||||
hudelem fadeovertime( 0.5 );
|
hudelem fadeovertime(0.5);
|
||||||
hudelem.alpha = 1;
|
hudelem.alpha = 1;
|
||||||
|
|
||||||
if ( isdefined( drop_item ) )
|
if (isdefined(drop_item))
|
||||||
hudelem.label = drop_item.hint;
|
hudelem.label = drop_item.hint;
|
||||||
|
|
||||||
hudelem thread full_ammo_move_hud( player_team );
|
hudelem thread full_ammo_move_hud(player_team);
|
||||||
}
|
}
|
||||||
|
|
||||||
full_ammo_move_hud( player_team )
|
full_ammo_move_hud(player_team)
|
||||||
{
|
{
|
||||||
players = get_players( player_team );
|
players = get_players(player_team);
|
||||||
players[0] playsoundtoteam( "zmb_full_ammo", player_team );
|
players[0] playsoundtoteam("zmb_full_ammo", player_team);
|
||||||
wait 0.5;
|
wait 0.5;
|
||||||
move_fade_time = 1.5;
|
move_fade_time = 1.5;
|
||||||
self fadeovertime( move_fade_time );
|
self fadeovertime(move_fade_time);
|
||||||
self moveovertime( move_fade_time );
|
self moveovertime(move_fade_time);
|
||||||
self.y = 270;
|
self.y = 270;
|
||||||
self.alpha = 0;
|
self.alpha = 0;
|
||||||
wait( move_fade_time );
|
wait(move_fade_time);
|
||||||
self destroyelem();
|
self destroyelem();
|
||||||
}
|
}
|
||||||
|
|
||||||
empty_clip_powerup( drop_item, player )
|
empty_clip_powerup(drop_item, player)
|
||||||
{
|
{
|
||||||
team = getOtherTeam(player.team);
|
team = getOtherTeam(player.team);
|
||||||
|
|
||||||
@ -452,7 +452,7 @@ empty_clip_powerup( drop_item, player )
|
|||||||
|
|
||||||
while (i < players.size)
|
while (i < players.size)
|
||||||
{
|
{
|
||||||
if ( players[ i ] maps\mp\zombies\_zm_laststand::player_is_in_laststand() )
|
if (players[ i ] maps\mp\zombies\_zm_laststand::player_is_in_laststand())
|
||||||
{
|
{
|
||||||
i++;
|
i++;
|
||||||
continue;
|
continue;
|
||||||
@ -481,61 +481,61 @@ empty_clip_powerup( drop_item, player )
|
|||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
level thread empty_clip_on_hud( drop_item, team );
|
level thread empty_clip_on_hud(drop_item, team);
|
||||||
}
|
}
|
||||||
|
|
||||||
empty_clip_on_hud( drop_item, team )
|
empty_clip_on_hud(drop_item, team)
|
||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
hudelem = maps\mp\gametypes_zm\_hud_util::createserverfontstring( "objective", 2, team );
|
hudelem = maps\mp\gametypes_zm\_hud_util::createserverfontstring("objective", 2, team);
|
||||||
hudelem maps\mp\gametypes_zm\_hud_util::setpoint( "TOP", undefined, 0, level.zombie_vars[ "zombie_timer_offset" ] - ( level.zombie_vars[ "zombie_timer_offset_interval" ] * 2 ) );
|
hudelem maps\mp\gametypes_zm\_hud_util::setpoint("TOP", undefined, 0, level.zombie_vars[ "zombie_timer_offset" ] - (level.zombie_vars[ "zombie_timer_offset_interval" ] * 2));
|
||||||
hudelem.sort = 0.5;
|
hudelem.sort = 0.5;
|
||||||
hudelem.color = (0.21, 0, 0);
|
hudelem.color = (0.21, 0, 0);
|
||||||
hudelem.alpha = 0;
|
hudelem.alpha = 0;
|
||||||
hudelem fadeovertime( 0.5 );
|
hudelem fadeovertime(0.5);
|
||||||
hudelem.alpha = 1;
|
hudelem.alpha = 1;
|
||||||
hudelem.label = &"Clip Empty!";
|
hudelem.label = &"Clip Empty!";
|
||||||
hudelem thread empty_clip_move_hud( team );
|
hudelem thread empty_clip_move_hud(team);
|
||||||
}
|
}
|
||||||
|
|
||||||
empty_clip_move_hud( team )
|
empty_clip_move_hud(team)
|
||||||
{
|
{
|
||||||
wait 0.5;
|
wait 0.5;
|
||||||
move_fade_time = 1.5;
|
move_fade_time = 1.5;
|
||||||
self fadeovertime( move_fade_time );
|
self fadeovertime(move_fade_time);
|
||||||
self moveovertime( move_fade_time );
|
self moveovertime(move_fade_time);
|
||||||
self.y = 270;
|
self.y = 270;
|
||||||
self.alpha = 0;
|
self.alpha = 0;
|
||||||
wait move_fade_time;
|
wait move_fade_time;
|
||||||
self destroy();
|
self destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
nuke_powerup( drop_item, player_team )
|
nuke_powerup(drop_item, player_team)
|
||||||
{
|
{
|
||||||
location = drop_item.origin;
|
location = drop_item.origin;
|
||||||
player = drop_item.power_up_grab_player;
|
player = drop_item.power_up_grab_player;
|
||||||
playfx( drop_item.fx, location );
|
playfx(drop_item.fx, location);
|
||||||
level thread maps\mp\zombies\_zm_powerups::nuke_flash( player_team );
|
level thread maps\mp\zombies\_zm_powerups::nuke_flash(player_team);
|
||||||
wait 0.5;
|
wait 0.5;
|
||||||
zombies = getaiarray( level.zombie_team );
|
zombies = getaiarray(level.zombie_team);
|
||||||
zombies = arraysort( zombies, location );
|
zombies = arraysort(zombies, location);
|
||||||
zombies_nuked = [];
|
zombies_nuked = [];
|
||||||
|
|
||||||
for ( i = 0; i < zombies.size; i++ )
|
for (i = 0; i < zombies.size; i++)
|
||||||
{
|
{
|
||||||
if ( isdefined( zombies[i].ignore_nuke ) && zombies[i].ignore_nuke )
|
if (isdefined(zombies[i].ignore_nuke) && zombies[i].ignore_nuke)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( isdefined( zombies[i].marked_for_death ) && zombies[i].marked_for_death )
|
if (isdefined(zombies[i].marked_for_death) && zombies[i].marked_for_death)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( isdefined( zombies[i].nuke_damage_func ) )
|
if (isdefined(zombies[i].nuke_damage_func))
|
||||||
{
|
{
|
||||||
zombies[i] thread [[ zombies[i].nuke_damage_func ]]();
|
zombies[i] thread [[ zombies[i].nuke_damage_func ]]();
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( is_magic_bullet_shield_enabled( zombies[i] ) )
|
if (is_magic_bullet_shield_enabled(zombies[i]))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
zombies[i].marked_for_death = 1;
|
zombies[i].marked_for_death = 1;
|
||||||
@ -543,33 +543,33 @@ nuke_powerup( drop_item, player_team )
|
|||||||
zombies_nuked[zombies_nuked.size] = zombies[i];
|
zombies_nuked[zombies_nuked.size] = zombies[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( i = 0; i < zombies_nuked.size; i++ )
|
for (i = 0; i < zombies_nuked.size; i++)
|
||||||
{
|
{
|
||||||
if ( !isdefined( zombies_nuked[i] ) )
|
if (!isdefined(zombies_nuked[i]))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( is_magic_bullet_shield_enabled( zombies_nuked[i] ) )
|
if (is_magic_bullet_shield_enabled(zombies_nuked[i]))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( i < 5 && !zombies_nuked[i].isdog )
|
if (i < 5 && !zombies_nuked[i].isdog)
|
||||||
zombies_nuked[i] thread maps\mp\animscripts\zm_death::flame_death_fx();
|
zombies_nuked[i] thread maps\mp\animscripts\zm_death::flame_death_fx();
|
||||||
|
|
||||||
if ( !zombies_nuked[i].isdog )
|
if (!zombies_nuked[i].isdog)
|
||||||
{
|
{
|
||||||
if ( !( isdefined( zombies_nuked[i].no_gib ) && zombies_nuked[i].no_gib ) )
|
if (!(isdefined(zombies_nuked[i].no_gib) && zombies_nuked[i].no_gib))
|
||||||
zombies_nuked[i] maps\mp\zombies\_zm_spawner::zombie_head_gib();
|
zombies_nuked[i] maps\mp\zombies\_zm_spawner::zombie_head_gib();
|
||||||
|
|
||||||
zombies_nuked[i] playsound( "evt_nuked" );
|
zombies_nuked[i] playsound("evt_nuked");
|
||||||
}
|
}
|
||||||
|
|
||||||
zombies_nuked[i] dodamage( zombies_nuked[i].health + 666, zombies_nuked[i].origin );
|
zombies_nuked[i] dodamage(zombies_nuked[i].health + 666, zombies_nuked[i].origin);
|
||||||
}
|
}
|
||||||
|
|
||||||
players = get_players( player_team );
|
players = get_players(player_team);
|
||||||
|
|
||||||
for ( i = 0; i < players.size; i++ )
|
for (i = 0; i < players.size; i++)
|
||||||
{
|
{
|
||||||
players[ i ] maps\mp\zombies\_zm_score::player_add_points( "nuke_powerup", 400 );
|
players[ i ] maps\mp\zombies\_zm_score::player_add_points("nuke_powerup", 400);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (level.scr_zm_ui_gametype == "zgrief")
|
if (level.scr_zm_ui_gametype == "zgrief")
|
||||||
@ -612,15 +612,15 @@ nuke_powerup( drop_item, player_team )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
insta_kill_powerup( drop_item, player )
|
insta_kill_powerup(drop_item, player)
|
||||||
{
|
{
|
||||||
if ( isDefined( level.insta_kill_powerup_override ) )
|
if (isDefined(level.insta_kill_powerup_override))
|
||||||
{
|
{
|
||||||
level thread [[ level.insta_kill_powerup_override ]]( drop_item, player );
|
level thread [[ level.insta_kill_powerup_override ]](drop_item, player);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( is_classic() )
|
if (is_classic())
|
||||||
{
|
{
|
||||||
player thread maps\mp\zombies\_zm_pers_upgrades_functions::pers_upgrade_insta_kill_upgrade_check();
|
player thread maps\mp\zombies\_zm_pers_upgrades_functions::pers_upgrade_insta_kill_upgrade_check();
|
||||||
}
|
}
|
||||||
@ -632,24 +632,24 @@ insta_kill_powerup( drop_item, player )
|
|||||||
if (level.scr_zm_ui_gametype == "zgrief")
|
if (level.scr_zm_ui_gametype == "zgrief")
|
||||||
{
|
{
|
||||||
time = 15;
|
time = 15;
|
||||||
level thread half_damage_powerup( drop_item, player );
|
level thread half_damage_powerup(drop_item, player);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( level.zombie_vars[ team ][ "zombie_powerup_insta_kill_on" ] )
|
if (level.zombie_vars[ team ][ "zombie_powerup_insta_kill_on" ])
|
||||||
{
|
{
|
||||||
level.zombie_vars[ team ][ "zombie_powerup_insta_kill_time" ] += time;
|
level.zombie_vars[ team ][ "zombie_powerup_insta_kill_time" ] += time;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
temp_enta = spawn( "script_origin", ( 0, 0, 0 ) );
|
temp_enta = spawn("script_origin", (0, 0, 0));
|
||||||
temp_enta playloopsound( "zmb_insta_kill_loop" );
|
temp_enta playloopsound("zmb_insta_kill_loop");
|
||||||
|
|
||||||
level.zombie_vars[ team ][ "zombie_half_damage" ] = 0;
|
level.zombie_vars[ team ][ "zombie_half_damage" ] = 0;
|
||||||
level.zombie_vars[ team ][ "zombie_insta_kill" ] = !is_true(level.zombie_vars[ team ][ "zombie_powerup_half_damage_on" ]);
|
level.zombie_vars[ team ][ "zombie_insta_kill" ] = !is_true(level.zombie_vars[ team ][ "zombie_powerup_half_damage_on" ]);
|
||||||
|
|
||||||
level.zombie_vars[ team ][ "zombie_powerup_insta_kill_on" ] = 1;
|
level.zombie_vars[ team ][ "zombie_powerup_insta_kill_on" ] = 1;
|
||||||
|
|
||||||
while ( level.zombie_vars[ team ][ "zombie_powerup_insta_kill_time" ] >= 0 )
|
while (level.zombie_vars[ team ][ "zombie_powerup_insta_kill_time" ] >= 0)
|
||||||
{
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
level.zombie_vars[ team ][ "zombie_powerup_insta_kill_time" ] -= 0.05;
|
level.zombie_vars[ team ][ "zombie_powerup_insta_kill_time" ] -= 0.05;
|
||||||
@ -661,31 +661,31 @@ insta_kill_powerup( drop_item, player )
|
|||||||
level.zombie_vars[ team ][ "zombie_powerup_insta_kill_on" ] = 0;
|
level.zombie_vars[ team ][ "zombie_powerup_insta_kill_on" ] = 0;
|
||||||
level.zombie_vars[ team ][ "zombie_powerup_insta_kill_time" ] = time;
|
level.zombie_vars[ team ][ "zombie_powerup_insta_kill_time" ] = time;
|
||||||
|
|
||||||
get_players()[ 0 ] playsoundtoteam( "zmb_insta_kill", team );
|
get_players()[ 0 ] playsoundtoteam("zmb_insta_kill", team);
|
||||||
temp_enta stoploopsound( 2 );
|
temp_enta stoploopsound(2);
|
||||||
temp_enta delete();
|
temp_enta delete();
|
||||||
|
|
||||||
players = get_players( team );
|
players = get_players(team);
|
||||||
i = 0;
|
i = 0;
|
||||||
|
|
||||||
while ( i < players.size )
|
while (i < players.size)
|
||||||
{
|
{
|
||||||
if ( isDefined( players[ i ] ) )
|
if (isDefined(players[ i ]))
|
||||||
{
|
{
|
||||||
players[ i ] notify( "insta_kill_over" );
|
players[ i ] notify("insta_kill_over");
|
||||||
}
|
}
|
||||||
|
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
half_damage_powerup( drop_item, player )
|
half_damage_powerup(drop_item, player)
|
||||||
{
|
{
|
||||||
team = getOtherTeam(player.team);
|
team = getOtherTeam(player.team);
|
||||||
|
|
||||||
time = 15;
|
time = 15;
|
||||||
|
|
||||||
if ( level.zombie_vars[ team ][ "zombie_powerup_half_damage_on" ] )
|
if (level.zombie_vars[ team ][ "zombie_powerup_half_damage_on" ])
|
||||||
{
|
{
|
||||||
level.zombie_vars[ team ][ "zombie_powerup_half_damage_time" ] += time;
|
level.zombie_vars[ team ][ "zombie_powerup_half_damage_time" ] += time;
|
||||||
return;
|
return;
|
||||||
@ -696,7 +696,7 @@ half_damage_powerup( drop_item, player )
|
|||||||
|
|
||||||
level.zombie_vars[ team ][ "zombie_powerup_half_damage_on" ] = 1;
|
level.zombie_vars[ team ][ "zombie_powerup_half_damage_on" ] = 1;
|
||||||
|
|
||||||
while ( level.zombie_vars[ team ][ "zombie_powerup_half_damage_time" ] >= 0 )
|
while (level.zombie_vars[ team ][ "zombie_powerup_half_damage_time" ] >= 0)
|
||||||
{
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
level.zombie_vars[ team ][ "zombie_powerup_half_damage_time" ] -= 0.05;
|
level.zombie_vars[ team ][ "zombie_powerup_half_damage_time" ] -= 0.05;
|
||||||
@ -709,7 +709,7 @@ half_damage_powerup( drop_item, player )
|
|||||||
level.zombie_vars[ team ][ "zombie_powerup_half_damage_time" ] = time;
|
level.zombie_vars[ team ][ "zombie_powerup_half_damage_time" ] = time;
|
||||||
}
|
}
|
||||||
|
|
||||||
double_points_powerup( drop_item, player )
|
double_points_powerup(drop_item, player)
|
||||||
{
|
{
|
||||||
team = player.team;
|
team = player.team;
|
||||||
|
|
||||||
@ -718,25 +718,25 @@ double_points_powerup( drop_item, player )
|
|||||||
if (level.scr_zm_ui_gametype == "zgrief")
|
if (level.scr_zm_ui_gametype == "zgrief")
|
||||||
{
|
{
|
||||||
time = 15;
|
time = 15;
|
||||||
level thread half_points_powerup( drop_item, player );
|
level thread half_points_powerup(drop_item, player);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( level.zombie_vars[ team ][ "zombie_powerup_point_doubler_on" ] )
|
if (level.zombie_vars[ team ][ "zombie_powerup_point_doubler_on" ])
|
||||||
{
|
{
|
||||||
level.zombie_vars[ team ][ "zombie_powerup_point_doubler_time" ] += time;
|
level.zombie_vars[ team ][ "zombie_powerup_point_doubler_time" ] += time;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( is_true( level.pers_upgrade_double_points ) )
|
if (is_true(level.pers_upgrade_double_points))
|
||||||
{
|
{
|
||||||
player thread maps\mp\zombies\_zm_pers_upgrades_functions::pers_upgrade_double_points_pickup_start();
|
player thread maps\mp\zombies\_zm_pers_upgrades_functions::pers_upgrade_double_points_pickup_start();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( level.current_game_module ) && level.current_game_module == 2 )
|
if (isDefined(level.current_game_module) && level.current_game_module == 2)
|
||||||
{
|
{
|
||||||
if ( isDefined( player._race_team ) )
|
if (isDefined(player._race_team))
|
||||||
{
|
{
|
||||||
if ( player._race_team == 1 )
|
if (player._race_team == 1)
|
||||||
{
|
{
|
||||||
level._race_team_double_points = 1;
|
level._race_team_double_points = 1;
|
||||||
}
|
}
|
||||||
@ -747,20 +747,20 @@ double_points_powerup( drop_item, player )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
players = get_players( team );
|
players = get_players(team);
|
||||||
|
|
||||||
for ( i = 0; i < players.size; i++ )
|
for (i = 0; i < players.size; i++)
|
||||||
{
|
{
|
||||||
players[ i ] setclientfield( "score_cf_double_points_active", 1 );
|
players[ i ] setclientfield("score_cf_double_points_active", 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
temp_ent = spawn( "script_origin", ( 0, 0, 0 ) );
|
temp_ent = spawn("script_origin", (0, 0, 0));
|
||||||
temp_ent playloopsound( "zmb_double_point_loop" );
|
temp_ent playloopsound("zmb_double_point_loop");
|
||||||
|
|
||||||
level.zombie_vars[ team ][ "zombie_point_scalar" ] *= 2;
|
level.zombie_vars[ team ][ "zombie_point_scalar" ] *= 2;
|
||||||
level.zombie_vars[ team ][ "zombie_powerup_point_doubler_on" ] = 1;
|
level.zombie_vars[ team ][ "zombie_powerup_point_doubler_on" ] = 1;
|
||||||
|
|
||||||
while ( level.zombie_vars[ team ][ "zombie_powerup_point_doubler_time" ] >= 0 )
|
while (level.zombie_vars[ team ][ "zombie_powerup_point_doubler_time" ] >= 0)
|
||||||
{
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
level.zombie_vars[ team ][ "zombie_powerup_point_doubler_time" ] -= 0.05;
|
level.zombie_vars[ team ][ "zombie_powerup_point_doubler_time" ] -= 0.05;
|
||||||
@ -770,27 +770,27 @@ double_points_powerup( drop_item, player )
|
|||||||
level.zombie_vars[ team ][ "zombie_powerup_point_doubler_on" ] = 0;
|
level.zombie_vars[ team ][ "zombie_powerup_point_doubler_on" ] = 0;
|
||||||
level.zombie_vars[ team ][ "zombie_powerup_point_doubler_time" ] = time;
|
level.zombie_vars[ team ][ "zombie_powerup_point_doubler_time" ] = time;
|
||||||
|
|
||||||
temp_ent stoploopsound( 2 );
|
temp_ent stoploopsound(2);
|
||||||
temp_ent delete();
|
temp_ent delete();
|
||||||
|
|
||||||
players = get_players( team );
|
players = get_players(team);
|
||||||
|
|
||||||
for ( i = 0; i < players.size; i++ )
|
for (i = 0; i < players.size; i++)
|
||||||
{
|
{
|
||||||
players[ i ] playsound( "zmb_points_loop_off" );
|
players[ i ] playsound("zmb_points_loop_off");
|
||||||
players[ i ] setclientfield( "score_cf_double_points_active", 0 );
|
players[ i ] setclientfield("score_cf_double_points_active", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
level._race_team_double_points = undefined;
|
level._race_team_double_points = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
half_points_powerup( drop_item, player )
|
half_points_powerup(drop_item, player)
|
||||||
{
|
{
|
||||||
team = getOtherTeam(player.team);
|
team = getOtherTeam(player.team);
|
||||||
|
|
||||||
time = 15;
|
time = 15;
|
||||||
|
|
||||||
if ( level.zombie_vars[ team ][ "zombie_powerup_point_halfer_on" ] )
|
if (level.zombie_vars[ team ][ "zombie_powerup_point_halfer_on" ])
|
||||||
{
|
{
|
||||||
level.zombie_vars[ team ][ "zombie_powerup_point_halfer_time" ] += time;
|
level.zombie_vars[ team ][ "zombie_powerup_point_halfer_time" ] += time;
|
||||||
return;
|
return;
|
||||||
@ -799,7 +799,7 @@ half_points_powerup( drop_item, player )
|
|||||||
level.zombie_vars[ team ][ "zombie_point_scalar" ] /= 2;
|
level.zombie_vars[ team ][ "zombie_point_scalar" ] /= 2;
|
||||||
level.zombie_vars[ team ][ "zombie_powerup_point_halfer_on" ] = 1;
|
level.zombie_vars[ team ][ "zombie_powerup_point_halfer_on" ] = 1;
|
||||||
|
|
||||||
while ( level.zombie_vars[ team ][ "zombie_powerup_point_halfer_time" ] >= 0 )
|
while (level.zombie_vars[ team ][ "zombie_powerup_point_halfer_time" ] >= 0)
|
||||||
{
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
level.zombie_vars[ team ][ "zombie_powerup_point_halfer_time" ] -= 0.05;
|
level.zombie_vars[ team ][ "zombie_powerup_point_halfer_time" ] -= 0.05;
|
||||||
@ -810,24 +810,24 @@ half_points_powerup( drop_item, player )
|
|||||||
level.zombie_vars[ team ][ "zombie_powerup_point_halfer_time" ] = time;
|
level.zombie_vars[ team ][ "zombie_powerup_point_halfer_time" ] = time;
|
||||||
}
|
}
|
||||||
|
|
||||||
start_fire_sale( item )
|
start_fire_sale(item)
|
||||||
{
|
{
|
||||||
level thread maps\mp\zombies\_zm_audio_announcer::leaderdialog( "fire_sale", getotherteam( item.power_up_grab_player.pers["team"] ) );
|
level thread maps\mp\zombies\_zm_audio_announcer::leaderdialog("fire_sale", getotherteam(item.power_up_grab_player.pers["team"]));
|
||||||
|
|
||||||
if ( level.zombie_vars["zombie_powerup_fire_sale_time"] > 0 && is_true( level.zombie_vars["zombie_powerup_fire_sale_on"] ) )
|
if (level.zombie_vars["zombie_powerup_fire_sale_time"] > 0 && is_true(level.zombie_vars["zombie_powerup_fire_sale_on"]))
|
||||||
{
|
{
|
||||||
level.zombie_vars["zombie_powerup_fire_sale_time"] += 30;
|
level.zombie_vars["zombie_powerup_fire_sale_time"] += 30;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
level notify( "powerup fire sale" );
|
level notify("powerup fire sale");
|
||||||
level endon( "powerup fire sale" );
|
level endon("powerup fire sale");
|
||||||
level.zombie_vars["zombie_powerup_fire_sale_on"] = 1;
|
level.zombie_vars["zombie_powerup_fire_sale_on"] = 1;
|
||||||
level thread toggle_fire_sale_on();
|
level thread toggle_fire_sale_on();
|
||||||
|
|
||||||
for ( level.zombie_vars["zombie_powerup_fire_sale_time"] = 30; level.zombie_vars["zombie_powerup_fire_sale_time"] > 0; level.zombie_vars["zombie_powerup_fire_sale_time"] -= 0.05 )
|
for (level.zombie_vars["zombie_powerup_fire_sale_time"] = 30; level.zombie_vars["zombie_powerup_fire_sale_time"] > 0; level.zombie_vars["zombie_powerup_fire_sale_time"] -= 0.05)
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
|
||||||
level.zombie_vars["zombie_powerup_fire_sale_on"] = 0;
|
level.zombie_vars["zombie_powerup_fire_sale_on"] = 0;
|
||||||
level notify( "fire_sale_off" );
|
level notify("fire_sale_off");
|
||||||
}
|
}
|
@ -7,32 +7,32 @@
|
|||||||
#include maps\mp\zombies\_zm_equipment;
|
#include maps\mp\zombies\_zm_equipment;
|
||||||
#include maps\mp\zombies\_zm_weapons;
|
#include maps\mp\zombies\_zm_weapons;
|
||||||
|
|
||||||
doriotshielddeploy( origin, angles )
|
doriotshielddeploy(origin, angles)
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
self endon( "start_riotshield_deploy" );
|
self endon("start_riotshield_deploy");
|
||||||
self notify( "deployed_riotshield" );
|
self notify("deployed_riotshield");
|
||||||
self maps\mp\zombies\_zm_buildables::track_placed_buildables( level.riotshield_name );
|
self maps\mp\zombies\_zm_buildables::track_placed_buildables(level.riotshield_name);
|
||||||
|
|
||||||
if ( isdefined( self.current_equipment ) && self.current_equipment == level.riotshield_name )
|
if (isdefined(self.current_equipment) && self.current_equipment == level.riotshield_name)
|
||||||
self maps\mp\zombies\_zm_equipment::equipment_to_deployed( level.riotshield_name );
|
self maps\mp\zombies\_zm_equipment::equipment_to_deployed(level.riotshield_name);
|
||||||
|
|
||||||
zoffset = level.riotshield_placement_zoffset;
|
zoffset = level.riotshield_placement_zoffset;
|
||||||
shield_ent = self spawnriotshieldcover( origin + ( 0, 0, zoffset ), angles );
|
shield_ent = self spawnriotshieldcover(origin + (0, 0, zoffset), angles);
|
||||||
item_ent = deployriotshield( self, shield_ent );
|
item_ent = deployriotshield(self, shield_ent);
|
||||||
primaries = self getweaponslistprimaries();
|
primaries = self getweaponslistprimaries();
|
||||||
|
|
||||||
self maps\mp\zombies\_zm_weapons::switch_back_primary_weapon(self.riotshield_prev_wep);
|
self maps\mp\zombies\_zm_weapons::switch_back_primary_weapon(self.riotshield_prev_wep);
|
||||||
|
|
||||||
if ( isdefined( level.equipment_planted ) )
|
if (isdefined(level.equipment_planted))
|
||||||
self [[ level.equipment_planted ]]( shield_ent, level.riotshield_name, self );
|
self [[ level.equipment_planted ]](shield_ent, level.riotshield_name, self);
|
||||||
|
|
||||||
if ( isdefined( level.equipment_safe_to_drop ) )
|
if (isdefined(level.equipment_safe_to_drop))
|
||||||
{
|
{
|
||||||
if ( !self [[ level.equipment_safe_to_drop ]]( shield_ent ) )
|
if (!self [[ level.equipment_safe_to_drop ]](shield_ent))
|
||||||
{
|
{
|
||||||
self notify( "destroy_riotshield" );
|
self notify("destroy_riotshield");
|
||||||
shield_ent delete();
|
shield_ent delete();
|
||||||
item_ent delete();
|
item_ent delete();
|
||||||
return;
|
return;
|
||||||
@ -42,25 +42,25 @@ doriotshielddeploy( origin, angles )
|
|||||||
self.riotshieldretrievetrigger = item_ent;
|
self.riotshieldretrievetrigger = item_ent;
|
||||||
self.riotshieldentity = shield_ent;
|
self.riotshieldentity = shield_ent;
|
||||||
self thread watchdeployedriotshieldents();
|
self thread watchdeployedriotshieldents();
|
||||||
self thread deleteshieldondamage( self.riotshieldentity );
|
self thread deleteshieldondamage(self.riotshieldentity);
|
||||||
self thread deleteshieldmodelonweaponpickup( self.riotshieldretrievetrigger );
|
self thread deleteshieldmodelonweaponpickup(self.riotshieldretrievetrigger);
|
||||||
self thread deleteriotshieldonplayerdeath();
|
self thread deleteriotshieldonplayerdeath();
|
||||||
self thread watchshieldtriggervisibility( self.riotshieldretrievetrigger );
|
self thread watchshieldtriggervisibility(self.riotshieldretrievetrigger);
|
||||||
self.riotshieldentity thread watchdeployedriotshielddamage();
|
self.riotshieldentity thread watchdeployedriotshielddamage();
|
||||||
return shield_ent;
|
return shield_ent;
|
||||||
}
|
}
|
||||||
|
|
||||||
trackriotshield()
|
trackriotshield()
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
self.hasriotshield = self hasweapon( level.riotshield_name );
|
self.hasriotshield = self hasweapon(level.riotshield_name);
|
||||||
self.hasriotshieldequipped = self getcurrentweapon() == level.riotshield_name;
|
self.hasriotshieldequipped = self getcurrentweapon() == level.riotshield_name;
|
||||||
self.shield_placement = 0;
|
self.shield_placement = 0;
|
||||||
|
|
||||||
if ( self.hasriotshield )
|
if (self.hasriotshield)
|
||||||
{
|
{
|
||||||
if ( self.hasriotshieldequipped )
|
if (self.hasriotshieldequipped)
|
||||||
{
|
{
|
||||||
self.shield_placement = 1;
|
self.shield_placement = 1;
|
||||||
self updateriotshieldmodel();
|
self updateriotshieldmodel();
|
||||||
@ -74,7 +74,7 @@ trackriotshield()
|
|||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
self waittill( "weapon_change", newweapon );
|
self waittill("weapon_change", newweapon);
|
||||||
|
|
||||||
foreach (wep in self getWeaponsListPrimaries())
|
foreach (wep in self getWeaponsListPrimaries())
|
||||||
{
|
{
|
||||||
@ -85,13 +85,13 @@ trackriotshield()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( newweapon == level.riotshield_name )
|
if (newweapon == level.riotshield_name)
|
||||||
{
|
{
|
||||||
if ( self.hasriotshieldequipped )
|
if (self.hasriotshieldequipped)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( isdefined( self.riotshieldentity ) )
|
if (isdefined(self.riotshieldentity))
|
||||||
self notify( "destroy_riotshield" );
|
self notify("destroy_riotshield");
|
||||||
|
|
||||||
self.shield_placement = 1;
|
self.shield_placement = 1;
|
||||||
self updateriotshieldmodel();
|
self updateriotshieldmodel();
|
||||||
@ -101,22 +101,22 @@ trackriotshield()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self ismantling() && newweapon == "none" )
|
if (self ismantling() && newweapon == "none")
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( self.hasriotshieldequipped )
|
if (self.hasriotshieldequipped)
|
||||||
{
|
{
|
||||||
assert( self.hasriotshield );
|
assert(self.hasriotshield);
|
||||||
self.hasriotshield = self hasweapon( level.riotshield_name );
|
self.hasriotshield = self hasweapon(level.riotshield_name);
|
||||||
|
|
||||||
if ( isdefined( self.riotshield_hidden ) && self.riotshield_hidden )
|
if (isdefined(self.riotshield_hidden) && self.riotshield_hidden)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
else if ( self.hasriotshield )
|
else if (self.hasriotshield)
|
||||||
self.shield_placement = 2;
|
self.shield_placement = 2;
|
||||||
else if ( isdefined( self.shield_ent ) )
|
else if (isdefined(self.shield_ent))
|
||||||
assert( self.shield_placement == 3 );
|
assert(self.shield_placement == 3);
|
||||||
else
|
else
|
||||||
self.shield_placement = 0;
|
self.shield_placement = 0;
|
||||||
|
|
||||||
@ -125,9 +125,9 @@ trackriotshield()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self.hasriotshield )
|
if (self.hasriotshield)
|
||||||
{
|
{
|
||||||
if ( !self hasweapon( level.riotshield_name ) )
|
if (!self hasweapon(level.riotshield_name))
|
||||||
{
|
{
|
||||||
self.shield_placement = 0;
|
self.shield_placement = 0;
|
||||||
self updateriotshieldmodel();
|
self updateriotshieldmodel();
|
||||||
@ -137,7 +137,7 @@ trackriotshield()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self hasweapon( level.riotshield_name ) )
|
if (self hasweapon(level.riotshield_name))
|
||||||
{
|
{
|
||||||
self.shield_placement = 2;
|
self.shield_placement = 2;
|
||||||
self updateriotshieldmodel();
|
self updateriotshieldmodel();
|
||||||
|
@ -7,32 +7,32 @@
|
|||||||
#include maps\mp\zombies\_zm_equipment;
|
#include maps\mp\zombies\_zm_equipment;
|
||||||
#include maps\mp\zombies\_zm_weapons;
|
#include maps\mp\zombies\_zm_weapons;
|
||||||
|
|
||||||
doriotshielddeploy( origin, angles )
|
doriotshielddeploy(origin, angles)
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
self endon( "start_riotshield_deploy" );
|
self endon("start_riotshield_deploy");
|
||||||
self notify( "deployed_riotshield" );
|
self notify("deployed_riotshield");
|
||||||
self maps\mp\zombies\_zm_buildables::track_placed_buildables( level.riotshield_name );
|
self maps\mp\zombies\_zm_buildables::track_placed_buildables(level.riotshield_name);
|
||||||
|
|
||||||
if ( isdefined( self.current_equipment ) && self.current_equipment == level.riotshield_name )
|
if (isdefined(self.current_equipment) && self.current_equipment == level.riotshield_name)
|
||||||
self maps\mp\zombies\_zm_equipment::equipment_to_deployed( level.riotshield_name );
|
self maps\mp\zombies\_zm_equipment::equipment_to_deployed(level.riotshield_name);
|
||||||
|
|
||||||
zoffset = level.riotshield_placement_zoffset;
|
zoffset = level.riotshield_placement_zoffset;
|
||||||
shield_ent = self spawnriotshieldcover( origin + ( 0, 0, zoffset ), angles );
|
shield_ent = self spawnriotshieldcover(origin + (0, 0, zoffset), angles);
|
||||||
item_ent = deployriotshield( self, shield_ent );
|
item_ent = deployriotshield(self, shield_ent);
|
||||||
primaries = self getweaponslistprimaries();
|
primaries = self getweaponslistprimaries();
|
||||||
|
|
||||||
self maps\mp\zombies\_zm_weapons::switch_back_primary_weapon(self.riotshield_prev_wep);
|
self maps\mp\zombies\_zm_weapons::switch_back_primary_weapon(self.riotshield_prev_wep);
|
||||||
|
|
||||||
if ( isdefined( level.equipment_planted ) )
|
if (isdefined(level.equipment_planted))
|
||||||
self [[ level.equipment_planted ]]( shield_ent, level.riotshield_name, self );
|
self [[ level.equipment_planted ]](shield_ent, level.riotshield_name, self);
|
||||||
|
|
||||||
if ( isdefined( level.equipment_safe_to_drop ) )
|
if (isdefined(level.equipment_safe_to_drop))
|
||||||
{
|
{
|
||||||
if ( !self [[ level.equipment_safe_to_drop ]]( shield_ent ) )
|
if (!self [[ level.equipment_safe_to_drop ]](shield_ent))
|
||||||
{
|
{
|
||||||
self notify( "destroy_riotshield" );
|
self notify("destroy_riotshield");
|
||||||
shield_ent delete();
|
shield_ent delete();
|
||||||
item_ent delete();
|
item_ent delete();
|
||||||
return;
|
return;
|
||||||
@ -42,25 +42,25 @@ doriotshielddeploy( origin, angles )
|
|||||||
self.riotshieldretrievetrigger = item_ent;
|
self.riotshieldretrievetrigger = item_ent;
|
||||||
self.riotshieldentity = shield_ent;
|
self.riotshieldentity = shield_ent;
|
||||||
self thread watchdeployedriotshieldents();
|
self thread watchdeployedriotshieldents();
|
||||||
self thread deleteshieldondamage( self.riotshieldentity );
|
self thread deleteshieldondamage(self.riotshieldentity);
|
||||||
self thread deleteshieldmodelonweaponpickup( self.riotshieldretrievetrigger );
|
self thread deleteshieldmodelonweaponpickup(self.riotshieldretrievetrigger);
|
||||||
self thread deleteriotshieldonplayerdeath();
|
self thread deleteriotshieldonplayerdeath();
|
||||||
self thread watchshieldtriggervisibility( self.riotshieldretrievetrigger );
|
self thread watchshieldtriggervisibility(self.riotshieldretrievetrigger);
|
||||||
self.riotshieldentity thread watchdeployedriotshielddamage();
|
self.riotshieldentity thread watchdeployedriotshielddamage();
|
||||||
return shield_ent;
|
return shield_ent;
|
||||||
}
|
}
|
||||||
|
|
||||||
trackriotshield()
|
trackriotshield()
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
self.hasriotshield = self hasweapon( level.riotshield_name );
|
self.hasriotshield = self hasweapon(level.riotshield_name);
|
||||||
self.hasriotshieldequipped = self getcurrentweapon() == level.riotshield_name;
|
self.hasriotshieldequipped = self getcurrentweapon() == level.riotshield_name;
|
||||||
self.shield_placement = 0;
|
self.shield_placement = 0;
|
||||||
|
|
||||||
if ( self.hasriotshield )
|
if (self.hasriotshield)
|
||||||
{
|
{
|
||||||
if ( self.hasriotshieldequipped )
|
if (self.hasriotshieldequipped)
|
||||||
{
|
{
|
||||||
self.shield_placement = 1;
|
self.shield_placement = 1;
|
||||||
self updateriotshieldmodel();
|
self updateriotshieldmodel();
|
||||||
@ -74,7 +74,7 @@ trackriotshield()
|
|||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
self waittill( "weapon_change", newweapon );
|
self waittill("weapon_change", newweapon);
|
||||||
|
|
||||||
foreach (wep in self getWeaponsListPrimaries())
|
foreach (wep in self getWeaponsListPrimaries())
|
||||||
{
|
{
|
||||||
@ -85,13 +85,13 @@ trackriotshield()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( newweapon == level.riotshield_name )
|
if (newweapon == level.riotshield_name)
|
||||||
{
|
{
|
||||||
if ( self.hasriotshieldequipped )
|
if (self.hasriotshieldequipped)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( isdefined( self.riotshieldentity ) )
|
if (isdefined(self.riotshieldentity))
|
||||||
self notify( "destroy_riotshield" );
|
self notify("destroy_riotshield");
|
||||||
|
|
||||||
self.shield_placement = 1;
|
self.shield_placement = 1;
|
||||||
self updateriotshieldmodel();
|
self updateriotshieldmodel();
|
||||||
@ -101,22 +101,22 @@ trackriotshield()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self ismantling() && newweapon == "none" )
|
if (self ismantling() && newweapon == "none")
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( self.hasriotshieldequipped )
|
if (self.hasriotshieldequipped)
|
||||||
{
|
{
|
||||||
assert( self.hasriotshield );
|
assert(self.hasriotshield);
|
||||||
self.hasriotshield = self hasweapon( level.riotshield_name );
|
self.hasriotshield = self hasweapon(level.riotshield_name);
|
||||||
|
|
||||||
if ( isdefined( self.riotshield_hidden ) && self.riotshield_hidden )
|
if (isdefined(self.riotshield_hidden) && self.riotshield_hidden)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
else if ( self.hasriotshield )
|
else if (self.hasriotshield)
|
||||||
self.shield_placement = 2;
|
self.shield_placement = 2;
|
||||||
else if ( isdefined( self.shield_ent ) )
|
else if (isdefined(self.shield_ent))
|
||||||
assert( self.shield_placement == 3 );
|
assert(self.shield_placement == 3);
|
||||||
else
|
else
|
||||||
self.shield_placement = 0;
|
self.shield_placement = 0;
|
||||||
|
|
||||||
@ -125,9 +125,9 @@ trackriotshield()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self.hasriotshield )
|
if (self.hasriotshield)
|
||||||
{
|
{
|
||||||
if ( !self hasweapon( level.riotshield_name ) )
|
if (!self hasweapon(level.riotshield_name))
|
||||||
{
|
{
|
||||||
self.shield_placement = 0;
|
self.shield_placement = 0;
|
||||||
self updateriotshieldmodel();
|
self updateriotshieldmodel();
|
||||||
@ -137,7 +137,7 @@ trackriotshield()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self hasweapon( level.riotshield_name ) )
|
if (self hasweapon(level.riotshield_name))
|
||||||
{
|
{
|
||||||
self.shield_placement = 2;
|
self.shield_placement = 2;
|
||||||
self updateriotshieldmodel();
|
self updateriotshieldmodel();
|
||||||
|
@ -7,32 +7,32 @@
|
|||||||
#include maps\mp\zombies\_zm_equipment;
|
#include maps\mp\zombies\_zm_equipment;
|
||||||
#include maps\mp\zombies\_zm_weapons;
|
#include maps\mp\zombies\_zm_weapons;
|
||||||
|
|
||||||
doriotshielddeploy( origin, angles )
|
doriotshielddeploy(origin, angles)
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
self endon( "start_riotshield_deploy" );
|
self endon("start_riotshield_deploy");
|
||||||
self notify( "deployed_riotshield" );
|
self notify("deployed_riotshield");
|
||||||
self maps\mp\zombies\_zm_buildables::track_placed_buildables( level.riotshield_name );
|
self maps\mp\zombies\_zm_buildables::track_placed_buildables(level.riotshield_name);
|
||||||
|
|
||||||
if ( isdefined( self.current_equipment ) && self.current_equipment == level.riotshield_name )
|
if (isdefined(self.current_equipment) && self.current_equipment == level.riotshield_name)
|
||||||
self maps\mp\zombies\_zm_equipment::equipment_to_deployed( level.riotshield_name );
|
self maps\mp\zombies\_zm_equipment::equipment_to_deployed(level.riotshield_name);
|
||||||
|
|
||||||
zoffset = level.riotshield_placement_zoffset;
|
zoffset = level.riotshield_placement_zoffset;
|
||||||
shield_ent = self spawnriotshieldcover( origin + ( 0, 0, zoffset ), angles );
|
shield_ent = self spawnriotshieldcover(origin + (0, 0, zoffset), angles);
|
||||||
item_ent = deployriotshield( self, shield_ent );
|
item_ent = deployriotshield(self, shield_ent);
|
||||||
primaries = self getweaponslistprimaries();
|
primaries = self getweaponslistprimaries();
|
||||||
|
|
||||||
self maps\mp\zombies\_zm_weapons::switch_back_primary_weapon(self.riotshield_prev_wep);
|
self maps\mp\zombies\_zm_weapons::switch_back_primary_weapon(self.riotshield_prev_wep);
|
||||||
|
|
||||||
if ( isdefined( level.equipment_planted ) )
|
if (isdefined(level.equipment_planted))
|
||||||
self [[ level.equipment_planted ]]( shield_ent, level.riotshield_name, self );
|
self [[ level.equipment_planted ]](shield_ent, level.riotshield_name, self);
|
||||||
|
|
||||||
if ( isdefined( level.equipment_safe_to_drop ) )
|
if (isdefined(level.equipment_safe_to_drop))
|
||||||
{
|
{
|
||||||
if ( !self [[ level.equipment_safe_to_drop ]]( shield_ent ) )
|
if (!self [[ level.equipment_safe_to_drop ]](shield_ent))
|
||||||
{
|
{
|
||||||
self notify( "destroy_riotshield" );
|
self notify("destroy_riotshield");
|
||||||
shield_ent delete();
|
shield_ent delete();
|
||||||
item_ent delete();
|
item_ent delete();
|
||||||
return;
|
return;
|
||||||
@ -42,25 +42,25 @@ doriotshielddeploy( origin, angles )
|
|||||||
self.riotshieldretrievetrigger = item_ent;
|
self.riotshieldretrievetrigger = item_ent;
|
||||||
self.riotshieldentity = shield_ent;
|
self.riotshieldentity = shield_ent;
|
||||||
self thread watchdeployedriotshieldents();
|
self thread watchdeployedriotshieldents();
|
||||||
self thread deleteshieldondamage( self.riotshieldentity );
|
self thread deleteshieldondamage(self.riotshieldentity);
|
||||||
self thread deleteshieldmodelonweaponpickup( self.riotshieldretrievetrigger );
|
self thread deleteshieldmodelonweaponpickup(self.riotshieldretrievetrigger);
|
||||||
self thread deleteriotshieldonplayerdeath();
|
self thread deleteriotshieldonplayerdeath();
|
||||||
self thread watchshieldtriggervisibility( self.riotshieldretrievetrigger );
|
self thread watchshieldtriggervisibility(self.riotshieldretrievetrigger);
|
||||||
self.riotshieldentity thread watchdeployedriotshielddamage();
|
self.riotshieldentity thread watchdeployedriotshielddamage();
|
||||||
return shield_ent;
|
return shield_ent;
|
||||||
}
|
}
|
||||||
|
|
||||||
trackriotshield()
|
trackriotshield()
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
self.hasriotshield = self hasweapon( level.riotshield_name );
|
self.hasriotshield = self hasweapon(level.riotshield_name);
|
||||||
self.hasriotshieldequipped = self getcurrentweapon() == level.riotshield_name;
|
self.hasriotshieldequipped = self getcurrentweapon() == level.riotshield_name;
|
||||||
self.shield_placement = 0;
|
self.shield_placement = 0;
|
||||||
|
|
||||||
if ( self.hasriotshield )
|
if (self.hasriotshield)
|
||||||
{
|
{
|
||||||
if ( self.hasriotshieldequipped )
|
if (self.hasriotshieldequipped)
|
||||||
{
|
{
|
||||||
self.shield_placement = 1;
|
self.shield_placement = 1;
|
||||||
self updateriotshieldmodel();
|
self updateriotshieldmodel();
|
||||||
@ -74,7 +74,7 @@ trackriotshield()
|
|||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
self waittill( "weapon_change", newweapon );
|
self waittill("weapon_change", newweapon);
|
||||||
|
|
||||||
foreach (wep in self getWeaponsListPrimaries())
|
foreach (wep in self getWeaponsListPrimaries())
|
||||||
{
|
{
|
||||||
@ -85,13 +85,13 @@ trackriotshield()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( newweapon == level.riotshield_name )
|
if (newweapon == level.riotshield_name)
|
||||||
{
|
{
|
||||||
if ( self.hasriotshieldequipped )
|
if (self.hasriotshieldequipped)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( isdefined( self.riotshieldentity ) )
|
if (isdefined(self.riotshieldentity))
|
||||||
self notify( "destroy_riotshield" );
|
self notify("destroy_riotshield");
|
||||||
|
|
||||||
self.shield_placement = 1;
|
self.shield_placement = 1;
|
||||||
self updateriotshieldmodel();
|
self updateriotshieldmodel();
|
||||||
@ -101,22 +101,22 @@ trackriotshield()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self ismantling() && newweapon == "none" )
|
if (self ismantling() && newweapon == "none")
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( self.hasriotshieldequipped )
|
if (self.hasriotshieldequipped)
|
||||||
{
|
{
|
||||||
assert( self.hasriotshield );
|
assert(self.hasriotshield);
|
||||||
self.hasriotshield = self hasweapon( level.riotshield_name );
|
self.hasriotshield = self hasweapon(level.riotshield_name);
|
||||||
|
|
||||||
if ( isdefined( self.riotshield_hidden ) && self.riotshield_hidden )
|
if (isdefined(self.riotshield_hidden) && self.riotshield_hidden)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
else if ( self.hasriotshield )
|
else if (self.hasriotshield)
|
||||||
self.shield_placement = 2;
|
self.shield_placement = 2;
|
||||||
else if ( isdefined( self.shield_ent ) )
|
else if (isdefined(self.shield_ent))
|
||||||
assert( self.shield_placement == 3 );
|
assert(self.shield_placement == 3);
|
||||||
else
|
else
|
||||||
self.shield_placement = 0;
|
self.shield_placement = 0;
|
||||||
|
|
||||||
@ -125,9 +125,9 @@ trackriotshield()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self.hasriotshield )
|
if (self.hasriotshield)
|
||||||
{
|
{
|
||||||
if ( !self hasweapon( level.riotshield_name ) )
|
if (!self hasweapon(level.riotshield_name))
|
||||||
{
|
{
|
||||||
self.shield_placement = 0;
|
self.shield_placement = 0;
|
||||||
self updateriotshieldmodel();
|
self updateriotshieldmodel();
|
||||||
@ -137,7 +137,7 @@ trackriotshield()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self hasweapon( level.riotshield_name ) )
|
if (self hasweapon(level.riotshield_name))
|
||||||
{
|
{
|
||||||
self.shield_placement = 2;
|
self.shield_placement = 2;
|
||||||
self updateriotshieldmodel();
|
self updateriotshieldmodel();
|
||||||
|
@ -3,14 +3,14 @@
|
|||||||
#include common_scripts\utility;
|
#include common_scripts\utility;
|
||||||
#include maps\mp\zombies\_zm_utility;
|
#include maps\mp\zombies\_zm_utility;
|
||||||
|
|
||||||
add_to_player_score( points, add_to_total )
|
add_to_player_score(points, add_to_total)
|
||||||
{
|
{
|
||||||
if ( !isDefined( add_to_total ) )
|
if (!isDefined(add_to_total))
|
||||||
{
|
{
|
||||||
add_to_total = 1;
|
add_to_total = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isDefined( points ) || level.intermission )
|
if (!isDefined(points) || level.intermission)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -19,17 +19,17 @@ add_to_player_score( points, add_to_total )
|
|||||||
self.score += points;
|
self.score += points;
|
||||||
self.pers[ "score" ] = self.score;
|
self.pers[ "score" ] = self.score;
|
||||||
|
|
||||||
if ( add_to_total )
|
if (add_to_total)
|
||||||
{
|
{
|
||||||
self.score_total += points;
|
self.score_total += points;
|
||||||
}
|
}
|
||||||
|
|
||||||
self incrementplayerstat( "score", points );
|
self incrementplayerstat("score", points);
|
||||||
}
|
}
|
||||||
|
|
||||||
minus_to_player_score( points )
|
minus_to_player_score(points)
|
||||||
{
|
{
|
||||||
if ( !isDefined( points ) || level.intermission )
|
if (!isDefined(points) || level.intermission)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -39,35 +39,35 @@ minus_to_player_score( points )
|
|||||||
self.pers[ "score" ] = self.score;
|
self.pers[ "score" ] = self.score;
|
||||||
}
|
}
|
||||||
|
|
||||||
player_add_points_kill_bonus( mod, hit_location )
|
player_add_points_kill_bonus(mod, hit_location)
|
||||||
{
|
{
|
||||||
if ( mod == "MOD_MELEE" )
|
if (mod == "MOD_MELEE")
|
||||||
{
|
{
|
||||||
self score_cf_increment_info( "death_melee" );
|
self score_cf_increment_info("death_melee");
|
||||||
return level.zombie_vars["zombie_score_bonus_melee"];
|
return level.zombie_vars["zombie_score_bonus_melee"];
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( mod == "MOD_BURNED" )
|
if (mod == "MOD_BURNED")
|
||||||
{
|
{
|
||||||
self score_cf_increment_info( "death_torso" );
|
self score_cf_increment_info("death_torso");
|
||||||
return level.zombie_vars["zombie_score_bonus_burn"];
|
return level.zombie_vars["zombie_score_bonus_burn"];
|
||||||
}
|
}
|
||||||
|
|
||||||
score = 0;
|
score = 0;
|
||||||
|
|
||||||
if ( isdefined( hit_location ) )
|
if (isdefined(hit_location))
|
||||||
{
|
{
|
||||||
switch ( hit_location )
|
switch (hit_location)
|
||||||
{
|
{
|
||||||
case "helmet":
|
case "helmet":
|
||||||
case "head":
|
case "head":
|
||||||
case "neck":
|
case "neck":
|
||||||
self score_cf_increment_info( "death_head" );
|
self score_cf_increment_info("death_head");
|
||||||
score = level.zombie_vars["zombie_score_bonus_head"];
|
score = level.zombie_vars["zombie_score_bonus_head"];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
self score_cf_increment_info( "death_normal" );
|
self score_cf_increment_info("death_normal");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,26 +3,26 @@
|
|||||||
#include common_scripts\utility;
|
#include common_scripts\utility;
|
||||||
#include maps\mp\zombies\_zm_utility;
|
#include maps\mp\zombies\_zm_utility;
|
||||||
|
|
||||||
zombie_damage( mod, hit_location, hit_origin, player, amount, team )
|
zombie_damage(mod, hit_location, hit_origin, player, amount, team)
|
||||||
{
|
{
|
||||||
if ( is_magic_bullet_shield_enabled( self ) )
|
if (is_magic_bullet_shield_enabled(self))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
player.use_weapon_type = mod;
|
player.use_weapon_type = mod;
|
||||||
|
|
||||||
if ( isDefined( self.marked_for_death ) )
|
if (isDefined(self.marked_for_death))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isDefined( player ) )
|
if (!isDefined(player))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( hit_origin ) )
|
if (isDefined(hit_origin))
|
||||||
{
|
{
|
||||||
self.damagehit_origin = hit_origin;
|
self.damagehit_origin = hit_origin;
|
||||||
}
|
}
|
||||||
@ -31,18 +31,18 @@ zombie_damage( mod, hit_location, hit_origin, player, amount, team )
|
|||||||
self.damagehit_origin = player getweaponmuzzlepoint();
|
self.damagehit_origin = player getweaponmuzzlepoint();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self maps\mp\zombies\_zm_spawner::check_zombie_damage_callbacks( mod, hit_location, hit_origin, player, amount ) )
|
if (self maps\mp\zombies\_zm_spawner::check_zombie_damage_callbacks(mod, hit_location, hit_origin, player, amount))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if ( self maps\mp\zombies\_zm_spawner::zombie_flame_damage( mod, player ) )
|
else if (self maps\mp\zombies\_zm_spawner::zombie_flame_damage(mod, player))
|
||||||
{
|
{
|
||||||
if ( self maps\mp\zombies\_zm_spawner::zombie_give_flame_damage_points() )
|
if (self maps\mp\zombies\_zm_spawner::zombie_give_flame_damage_points())
|
||||||
{
|
{
|
||||||
player maps\mp\zombies\_zm_score::player_add_points( "damage", mod, hit_location, self.isdog, team );
|
player maps\mp\zombies\_zm_score::player_add_points("damage", mod, hit_location, self.isdog, team);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( maps\mp\zombies\_zm_spawner::player_using_hi_score_weapon( player ) )
|
else if (maps\mp\zombies\_zm_spawner::player_using_hi_score_weapon(player))
|
||||||
{
|
{
|
||||||
damage_type = "damage";
|
damage_type = "damage";
|
||||||
}
|
}
|
||||||
@ -51,17 +51,17 @@ zombie_damage( mod, hit_location, hit_origin, player, amount, team )
|
|||||||
damage_type = "damage_light";
|
damage_type = "damage_light";
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !is_true( self.no_damage_points ) )
|
if (!is_true(self.no_damage_points))
|
||||||
{
|
{
|
||||||
player maps\mp\zombies\_zm_score::player_add_points( damage_type, mod, hit_location, self.isdog, team, self.damageweapon );
|
player maps\mp\zombies\_zm_score::player_add_points(damage_type, mod, hit_location, self.isdog, team, self.damageweapon);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( self.zombie_damage_fx_func ) )
|
if (isDefined(self.zombie_damage_fx_func))
|
||||||
{
|
{
|
||||||
self [[ self.zombie_damage_fx_func ]]( mod, hit_location, hit_origin, player );
|
self [[ self.zombie_damage_fx_func ]](mod, hit_location, hit_origin, player);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( is_placeable_mine( self.damageweapon ) )
|
if (is_placeable_mine(self.damageweapon))
|
||||||
{
|
{
|
||||||
damage = level.round_number * 100;
|
damage = level.round_number * 100;
|
||||||
|
|
||||||
@ -77,20 +77,20 @@ zombie_damage( mod, hit_location, hit_origin, player, amount, team )
|
|||||||
damage = max_damage;
|
damage = max_damage;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( self.zombie_damage_claymore_func ) )
|
if (isDefined(self.zombie_damage_claymore_func))
|
||||||
{
|
{
|
||||||
self [[ self.zombie_damage_claymore_func ]]( mod, hit_location, hit_origin, player );
|
self [[ self.zombie_damage_claymore_func ]](mod, hit_location, hit_origin, player);
|
||||||
}
|
}
|
||||||
else if ( isDefined( player ) && isalive( player ) )
|
else if (isDefined(player) && isalive(player))
|
||||||
{
|
{
|
||||||
self dodamage( damage, self.origin, player, self, hit_location, mod, 0, self.damageweapon );
|
self dodamage(damage, self.origin, player, self, hit_location, mod, 0, self.damageweapon);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
self dodamage( damage, self.origin, undefined, self, hit_location, mod, 0, self.damageweapon );
|
self dodamage(damage, self.origin, undefined, self, hit_location, mod, 0, self.damageweapon);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( mod == "MOD_GRENADE" || mod == "MOD_GRENADE_SPLASH" )
|
else if (mod == "MOD_GRENADE" || mod == "MOD_GRENADE_SPLASH")
|
||||||
{
|
{
|
||||||
damage = level.round_number * 25;
|
damage = level.round_number * 25;
|
||||||
|
|
||||||
@ -106,18 +106,18 @@ zombie_damage( mod, hit_location, hit_origin, player, amount, team )
|
|||||||
damage = max_damage;
|
damage = max_damage;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( player ) && isalive( player ) )
|
if (isDefined(player) && isalive(player))
|
||||||
{
|
{
|
||||||
player.grenade_multiattack_count++;
|
player.grenade_multiattack_count++;
|
||||||
player.grenade_multiattack_ent = self;
|
player.grenade_multiattack_ent = self;
|
||||||
self dodamage( damage, self.origin, player, self, hit_location, "MOD_GRENADE_SPLASH", 0, self.damageweapon );
|
self dodamage(damage, self.origin, player, self, hit_location, "MOD_GRENADE_SPLASH", 0, self.damageweapon);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
self dodamage( damage, self.origin, undefined, self, hit_location, "MOD_GRENADE_SPLASH", 0, self.damageweapon );
|
self dodamage(damage, self.origin, undefined, self, hit_location, "MOD_GRENADE_SPLASH", 0, self.damageweapon);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( mod == "MOD_PROJECTILE" || mod == "MOD_PROJECTILE_SPLASH" || mod == "MOD_EXPLOSIVE" )
|
else if (mod == "MOD_PROJECTILE" || mod == "MOD_PROJECTILE_SPLASH" || mod == "MOD_EXPLOSIVE")
|
||||||
{
|
{
|
||||||
damage = level.round_number * 50;
|
damage = level.round_number * 50;
|
||||||
|
|
||||||
@ -133,76 +133,76 @@ zombie_damage( mod, hit_location, hit_origin, player, amount, team )
|
|||||||
damage = max_damage;
|
damage = max_damage;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( player ) && isalive( player ) )
|
if (isDefined(player) && isalive(player))
|
||||||
{
|
{
|
||||||
self dodamage( damage, self.origin, player, self, hit_location, "MOD_PROJECTILE_SPLASH", 0, self.damageweapon );
|
self dodamage(damage, self.origin, player, self, hit_location, "MOD_PROJECTILE_SPLASH", 0, self.damageweapon);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
self dodamage( damage, self.origin, undefined, self, hit_location, "MOD_PROJECTILE_SPLASH", 0, self.damageweapon );
|
self dodamage(damage, self.origin, undefined, self, hit_location, "MOD_PROJECTILE_SPLASH", 0, self.damageweapon);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( self.a.gib_ref ) && self.a.gib_ref == "no_legs" && isalive( self ) )
|
if (isDefined(self.a.gib_ref) && self.a.gib_ref == "no_legs" && isalive(self))
|
||||||
{
|
{
|
||||||
if ( isDefined( player ) )
|
if (isDefined(player))
|
||||||
{
|
{
|
||||||
rand = randomintrange( 0, 100 );
|
rand = randomintrange(0, 100);
|
||||||
|
|
||||||
if ( rand < 10 )
|
if (rand < 10)
|
||||||
{
|
{
|
||||||
player maps\mp\zombies\_zm_audio::create_and_play_dialog( "general", "crawl_spawn" );
|
player maps\mp\zombies\_zm_audio::create_and_play_dialog("general", "crawl_spawn");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( isDefined( self.a.gib_ref ) )
|
else if (isDefined(self.a.gib_ref))
|
||||||
{
|
{
|
||||||
if ( self.a.gib_ref == "right_arm" || self.a.gib_ref == "left_arm" )
|
if (self.a.gib_ref == "right_arm" || self.a.gib_ref == "left_arm")
|
||||||
{
|
{
|
||||||
if ( self.has_legs && isalive( self ) )
|
if (self.has_legs && isalive(self))
|
||||||
{
|
{
|
||||||
if ( isDefined( player ) )
|
if (isDefined(player))
|
||||||
{
|
{
|
||||||
rand = randomintrange( 0, 100 );
|
rand = randomintrange(0, 100);
|
||||||
|
|
||||||
if ( rand < 7 )
|
if (rand < 7)
|
||||||
{
|
{
|
||||||
player maps\mp\zombies\_zm_audio::create_and_play_dialog( "general", "shoot_arm" );
|
player maps\mp\zombies\_zm_audio::create_and_play_dialog("general", "shoot_arm");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self thread maps\mp\zombies\_zm_powerups::check_for_instakill( player, mod, hit_location );
|
self thread maps\mp\zombies\_zm_powerups::check_for_instakill(player, mod, hit_location);
|
||||||
}
|
}
|
||||||
|
|
||||||
zombie_gib_on_damage()
|
zombie_gib_on_damage()
|
||||||
{
|
{
|
||||||
while ( true )
|
while (true)
|
||||||
{
|
{
|
||||||
self waittill( "damage", amount, attacker, direction_vec, point, type, tagname, modelname, partname, weaponname );
|
self waittill("damage", amount, attacker, direction_vec, point, type, tagname, modelname, partname, weaponname);
|
||||||
|
|
||||||
if ( !isdefined( self ) )
|
if (!isdefined(self))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( !self zombie_should_gib( amount, attacker, type ) )
|
if (!self zombie_should_gib(amount, attacker, type))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( self head_should_gib( attacker, type, point ) && type != "MOD_BURNED" )
|
if (self head_should_gib(attacker, type, point) && type != "MOD_BURNED")
|
||||||
{
|
{
|
||||||
self zombie_head_gib( attacker, type );
|
self zombie_head_gib(attacker, type);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !self.gibbed )
|
if (!self.gibbed)
|
||||||
{
|
{
|
||||||
if ( self maps\mp\animscripts\zm_utility::damagelocationisany( "head", "helmet", "neck" ) )
|
if (self maps\mp\animscripts\zm_utility::damagelocationisany("head", "helmet", "neck"))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
refs = [];
|
refs = [];
|
||||||
|
|
||||||
switch ( self.damagelocation )
|
switch (self.damagelocation)
|
||||||
{
|
{
|
||||||
case "torso_upper":
|
case "torso_upper":
|
||||||
case "torso_lower":
|
case "torso_lower":
|
||||||
@ -225,7 +225,7 @@ zombie_gib_on_damage()
|
|||||||
case "right_leg_upper":
|
case "right_leg_upper":
|
||||||
case "right_leg_lower":
|
case "right_leg_lower":
|
||||||
case "right_foot":
|
case "right_foot":
|
||||||
if ( self.health <= 0 )
|
if (self.health <= 0)
|
||||||
{
|
{
|
||||||
refs[refs.size] = "right_leg";
|
refs[refs.size] = "right_leg";
|
||||||
refs[refs.size] = "right_leg";
|
refs[refs.size] = "right_leg";
|
||||||
@ -238,7 +238,7 @@ zombie_gib_on_damage()
|
|||||||
case "left_leg_upper":
|
case "left_leg_upper":
|
||||||
case "left_leg_lower":
|
case "left_leg_lower":
|
||||||
case "left_foot":
|
case "left_foot":
|
||||||
if ( self.health <= 0 )
|
if (self.health <= 0)
|
||||||
{
|
{
|
||||||
refs[refs.size] = "left_leg";
|
refs[refs.size] = "left_leg";
|
||||||
refs[refs.size] = "left_leg";
|
refs[refs.size] = "left_leg";
|
||||||
@ -249,11 +249,11 @@ zombie_gib_on_damage()
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if ( self.damagelocation == "none" )
|
if (self.damagelocation == "none")
|
||||||
{
|
{
|
||||||
if ( type == "MOD_GRENADE" || type == "MOD_GRENADE_SPLASH" || type == "MOD_PROJECTILE" || type == "MOD_PROJECTILE_SPLASH" )
|
if (type == "MOD_GRENADE" || type == "MOD_GRENADE_SPLASH" || type == "MOD_PROJECTILE" || type == "MOD_PROJECTILE_SPLASH")
|
||||||
{
|
{
|
||||||
refs = self derive_damage_refs( point );
|
refs = self derive_damage_refs(point);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -269,19 +269,19 @@ zombie_gib_on_damage()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( level.custom_derive_damage_refs ) )
|
if (isdefined(level.custom_derive_damage_refs))
|
||||||
refs = self [[ level.custom_derive_damage_refs ]]( refs, point, weaponname );
|
refs = self [[ level.custom_derive_damage_refs ]](refs, point, weaponname);
|
||||||
|
|
||||||
if ( refs.size )
|
if (refs.size)
|
||||||
{
|
{
|
||||||
self.a.gib_ref = maps\mp\animscripts\zm_death::get_random( refs );
|
self.a.gib_ref = maps\mp\animscripts\zm_death::get_random(refs);
|
||||||
|
|
||||||
if ( ( self.a.gib_ref == "no_legs" || self.a.gib_ref == "right_leg" || self.a.gib_ref == "left_leg" ) && self.health > 0 )
|
if ((self.a.gib_ref == "no_legs" || self.a.gib_ref == "right_leg" || self.a.gib_ref == "left_leg") && self.health > 0)
|
||||||
{
|
{
|
||||||
self.has_legs = 0;
|
self.has_legs = 0;
|
||||||
self allowedstances( "crouch" );
|
self allowedstances("crouch");
|
||||||
self setphysparams( 15, 0, 24 );
|
self setphysparams(15, 0, 24);
|
||||||
self allowpitchangle( 1 );
|
self allowpitchangle(1);
|
||||||
self setpitchorient();
|
self setpitchorient();
|
||||||
health = self.health;
|
health = self.health;
|
||||||
health *= 0.1;
|
health *= 0.1;
|
||||||
@ -292,16 +292,16 @@ zombie_gib_on_damage()
|
|||||||
self thread bleedout_watcher();
|
self thread bleedout_watcher();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( self.crawl_anim_override ) )
|
if (isdefined(self.crawl_anim_override))
|
||||||
self [[ self.crawl_anim_override ]]();
|
self [[ self.crawl_anim_override ]]();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self.health > 0 )
|
if (self.health > 0)
|
||||||
{
|
{
|
||||||
self thread maps\mp\animscripts\zm_death::do_gib();
|
self thread maps\mp\animscripts\zm_death::do_gib();
|
||||||
|
|
||||||
if ( isdefined( level.gib_on_damage ) )
|
if (isdefined(level.gib_on_damage))
|
||||||
self thread [[ level.gib_on_damage ]]();
|
self thread [[ level.gib_on_damage ]]();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -349,30 +349,30 @@ melee_watcher()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
head_should_gib( attacker, type, point )
|
head_should_gib(attacker, type, point)
|
||||||
{
|
{
|
||||||
if ( !is_mature() )
|
if (!is_mature())
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self.head_gibbed )
|
if (self.head_gibbed)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isDefined( attacker ) || !isplayer( attacker ) )
|
if (!isDefined(attacker) || !isplayer(attacker))
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
weapon = attacker getcurrentweapon();
|
weapon = attacker getcurrentweapon();
|
||||||
|
|
||||||
if ( type != "MOD_RIFLE_BULLET" && type != "MOD_PISTOL_BULLET" )
|
if (type != "MOD_RIFLE_BULLET" && type != "MOD_PISTOL_BULLET")
|
||||||
{
|
{
|
||||||
if ( type == "MOD_GRENADE" || type == "MOD_GRENADE_SPLASH" )
|
if (type == "MOD_GRENADE" || type == "MOD_GRENADE_SPLASH")
|
||||||
{
|
{
|
||||||
if ( ( distance( point, self gettagorigin( "j_head" ) ) > 55 ) || ( self.health > 0 ) )
|
if ((distance(point, self gettagorigin("j_head")) > 55) || (self.health > 0))
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -381,9 +381,9 @@ head_should_gib( attacker, type, point )
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( type == "MOD_PROJECTILE" )
|
else if (type == "MOD_PROJECTILE")
|
||||||
{
|
{
|
||||||
if ( ( distance( point, self gettagorigin( "j_head" ) ) > 10 ) || ( self.health > 0 ) )
|
if ((distance(point, self gettagorigin("j_head")) > 10) || (self.health > 0))
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -392,25 +392,25 @@ head_should_gib( attacker, type, point )
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( weaponclass( weapon ) != "spread" )
|
else if (weaponclass(weapon) != "spread")
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !self maps\mp\animscripts\zm_utility::damagelocationisany( "head", "helmet", "neck" ) )
|
if (!self maps\mp\animscripts\zm_utility::damagelocationisany("head", "helmet", "neck"))
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( weapon == "none" || weapon == level.start_weapon || weaponisgasweapon( self.weapon ) )
|
if (weapon == "none" || weapon == level.start_weapon || weaponisgasweapon(self.weapon))
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
self zombie_hat_gib( attacker, type );
|
self zombie_hat_gib(attacker, type);
|
||||||
|
|
||||||
if ( self.health > 0 )
|
if (self.health > 0)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -418,12 +418,12 @@ head_should_gib( attacker, type, point )
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
zombie_can_drop_powerups( zombie )
|
zombie_can_drop_powerups(zombie)
|
||||||
{
|
{
|
||||||
if ( !flag( "zombie_drop_powerups" ) )
|
if (!flag("zombie_drop_powerups"))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if ( isdefined( zombie.no_powerups ) && zombie.no_powerups )
|
if (isdefined(zombie.no_powerups) && zombie.no_powerups)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -433,11 +433,11 @@ zombie_complete_emerging_into_playable_area()
|
|||||||
{
|
{
|
||||||
if (self.animname == "zombie" && is_true(self.has_legs))
|
if (self.animname == "zombie" && is_true(self.has_legs))
|
||||||
{
|
{
|
||||||
self setphysparams( 15, 0, 60 );
|
self setphysparams(15, 0, 60);
|
||||||
}
|
}
|
||||||
|
|
||||||
self.completed_emerging_into_playable_area = 1;
|
self.completed_emerging_into_playable_area = 1;
|
||||||
self notify( "completed_emerging_into_playable_area" );
|
self notify("completed_emerging_into_playable_area");
|
||||||
self.no_powerups = 0;
|
self.no_powerups = 0;
|
||||||
self thread zombie_free_cam_allowed();
|
self thread zombie_free_cam_allowed();
|
||||||
}
|
}
|
@ -4,25 +4,25 @@
|
|||||||
|
|
||||||
navcomputer_waitfor_navcard()
|
navcomputer_waitfor_navcard()
|
||||||
{
|
{
|
||||||
trig_pos = getstruct( "sq_common_key", "targetname" );
|
trig_pos = getstruct("sq_common_key", "targetname");
|
||||||
navcomputer_use_trig = spawn( "trigger_radius_use", trig_pos.origin, 0, 48, 48 );
|
navcomputer_use_trig = spawn("trigger_radius_use", trig_pos.origin, 0, 48, 48);
|
||||||
navcomputer_use_trig.cost = 100000;
|
navcomputer_use_trig.cost = 100000;
|
||||||
navcomputer_use_trig setcursorhint( "HINT_NOICON" );
|
navcomputer_use_trig setcursorhint("HINT_NOICON");
|
||||||
navcomputer_use_trig sethintstring( &"ZOMBIE_NAVCARD_USE", " [Cost: " + navcomputer_use_trig.cost + "]" );
|
navcomputer_use_trig sethintstring(&"ZOMBIE_NAVCARD_USE", " [Cost: " + navcomputer_use_trig.cost + "]");
|
||||||
navcomputer_use_trig triggerignoreteam();
|
navcomputer_use_trig triggerignoreteam();
|
||||||
|
|
||||||
while ( true )
|
while (true)
|
||||||
{
|
{
|
||||||
navcomputer_use_trig waittill( "trigger", who );
|
navcomputer_use_trig waittill("trigger", who);
|
||||||
|
|
||||||
if ( isplayer( who ) && is_player_valid( who ) )
|
if (isplayer(who) && is_player_valid(who))
|
||||||
{
|
{
|
||||||
if ( who.score >= navcomputer_use_trig.cost )
|
if (who.score >= navcomputer_use_trig.cost)
|
||||||
{
|
{
|
||||||
who maps\mp\zombies\_zm_score::minus_to_player_score( navcomputer_use_trig.cost );
|
who maps\mp\zombies\_zm_score::minus_to_player_score(navcomputer_use_trig.cost);
|
||||||
|
|
||||||
navcomputer_use_trig sethintstring( &"ZOMBIE_NAVCARD_SUCCESS" );
|
navcomputer_use_trig sethintstring(&"ZOMBIE_NAVCARD_SUCCESS");
|
||||||
navcomputer_use_trig playsound( "zmb_sq_navcard_success" );
|
navcomputer_use_trig playsound("zmb_sq_navcard_success");
|
||||||
|
|
||||||
players = get_players();
|
players = get_players();
|
||||||
|
|
||||||
@ -31,13 +31,13 @@ navcomputer_waitfor_navcard()
|
|||||||
player freezecontrols(1);
|
player freezecontrols(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
level notify( "end_game" );
|
level notify("end_game");
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
navcomputer_use_trig playsound( "zmb_sq_navcard_fail" );
|
navcomputer_use_trig playsound("zmb_sq_navcard_fail");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -47,32 +47,32 @@ sq_give_player_all_perks()
|
|||||||
{
|
{
|
||||||
perks = [];
|
perks = [];
|
||||||
|
|
||||||
if ( isDefined( level._random_perk_machine_perk_list ) )
|
if (isDefined(level._random_perk_machine_perk_list))
|
||||||
{
|
{
|
||||||
perks = array_randomize( level._random_perk_machine_perk_list );
|
perks = array_randomize(level._random_perk_machine_perk_list);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
machines = array_randomize( getentarray( "zombie_vending", "targetname" ) );
|
machines = array_randomize(getentarray("zombie_vending", "targetname"));
|
||||||
|
|
||||||
for ( i = 0; i < machines.size; i++ )
|
for (i = 0; i < machines.size; i++)
|
||||||
{
|
{
|
||||||
if ( machines[i].script_noteworthy == "specialty_weapupgrade" )
|
if (machines[i].script_noteworthy == "specialty_weapupgrade")
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
perks[perks.size] = machines[i].script_noteworthy;
|
perks[perks.size] = machines[i].script_noteworthy;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ( perk in perks )
|
foreach (perk in perks)
|
||||||
{
|
{
|
||||||
if ( isdefined( self.perk_purchased ) && self.perk_purchased == perk )
|
if (isdefined(self.perk_purchased) && self.perk_purchased == perk)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( self hasperk( perk ) || self maps\mp\zombies\_zm_perks::has_perk_paused( perk ) )
|
if (self hasperk(perk) || self maps\mp\zombies\_zm_perks::has_perk_paused(perk))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
self maps\mp\zombies\_zm_perks::give_perk( perk, 0 );
|
self maps\mp\zombies\_zm_perks::give_perk(perk, 0);
|
||||||
wait 0.25;
|
wait 0.25;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -87,7 +87,7 @@ sq_complete_time_hud()
|
|||||||
hud.y += 100;
|
hud.y += 100;
|
||||||
hud.fontscale = 1.4;
|
hud.fontscale = 1.4;
|
||||||
hud.alpha = 0;
|
hud.alpha = 0;
|
||||||
hud.color = ( 1, 1, 1 );
|
hud.color = (1, 1, 1);
|
||||||
hud.hidewheninmenu = 1;
|
hud.hidewheninmenu = 1;
|
||||||
hud.foreground = 1;
|
hud.foreground = 1;
|
||||||
hud.label = &"Quest Complete! Time: ";
|
hud.label = &"Quest Complete! Time: ";
|
||||||
|
@ -7,13 +7,13 @@
|
|||||||
#include maps\mp\zombies\_zm_weapons;
|
#include maps\mp\zombies\_zm_weapons;
|
||||||
#include maps\mp\gametypes_zm\_globallogic;
|
#include maps\mp\gametypes_zm\_globallogic;
|
||||||
|
|
||||||
set_global_stat( stat_name, value )
|
set_global_stat(stat_name, value)
|
||||||
{
|
{
|
||||||
if ( is_true( level.zm_disable_recording_stats ) )
|
if (is_true(level.zm_disable_recording_stats))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( issubstr( tolower( stat_name ), "sq_" ) || issubstr( tolower( stat_name ), "navcard_" ) )
|
if (issubstr(tolower(stat_name), "sq_") || issubstr(tolower(stat_name), "navcard_"))
|
||||||
value = 0;
|
value = 0;
|
||||||
|
|
||||||
self setdstat( "PlayerStatsList", stat_name, "StatValue", value );
|
self setdstat("PlayerStatsList", stat_name, "StatValue", value);
|
||||||
}
|
}
|
@ -4,26 +4,26 @@
|
|||||||
|
|
||||||
player_elec_damage()
|
player_elec_damage()
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
|
|
||||||
if ( !isDefined( self.is_burning ) && is_player_valid( self ) )
|
if (!isDefined(self.is_burning) && is_player_valid(self))
|
||||||
{
|
{
|
||||||
self.is_burning = 1;
|
self.is_burning = 1;
|
||||||
shocktime = 1.25;
|
shocktime = 1.25;
|
||||||
|
|
||||||
if ( is_true( level.trap_electric_visionset_registered ) )
|
if (is_true(level.trap_electric_visionset_registered))
|
||||||
{
|
{
|
||||||
maps\mp\_visionset_mgr::vsmgr_activate( "overlay", "zm_trap_electric", self, shocktime, shocktime );
|
maps\mp\_visionset_mgr::vsmgr_activate("overlay", "zm_trap_electric", self, shocktime, shocktime);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
self setelectrified( shocktime );
|
self setelectrified(shocktime);
|
||||||
}
|
}
|
||||||
|
|
||||||
self shellshock( "electrocution", shocktime );
|
self shellshock("electrocution", shocktime);
|
||||||
self playsound( "zmb_zombie_arc" );
|
self playsound("zmb_zombie_arc");
|
||||||
radiusdamage( self.origin + (0, 0, 5), 10, 25, 25 );
|
radiusdamage(self.origin + (0, 0, 5), 10, 25, 25);
|
||||||
|
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
|
|
||||||
|
@ -4,9 +4,9 @@
|
|||||||
|
|
||||||
init_player_offhand_weapons()
|
init_player_offhand_weapons()
|
||||||
{
|
{
|
||||||
if ( !is_true( self.init_player_offhand_weapons_override ) )
|
if (!is_true(self.init_player_offhand_weapons_override))
|
||||||
{
|
{
|
||||||
if ( is_gametype_active( "zgrief" ) && is_true( self.player_initialized ) )
|
if (is_gametype_active("zgrief") && is_true(self.player_initialized))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -19,14 +19,14 @@ init_player_offhand_weapons()
|
|||||||
init_player_equipment();
|
init_player_equipment();
|
||||||
}
|
}
|
||||||
|
|
||||||
is_headshot( sweapon, shitloc, smeansofdeath )
|
is_headshot(sweapon, shitloc, smeansofdeath)
|
||||||
{
|
{
|
||||||
if ( smeansofdeath == "MOD_MELEE" || smeansofdeath == "MOD_BAYONET" || smeansofdeath == "MOD_IMPACT" || smeansofdeath == "MOD_UNKNOWN" || smeansofdeath == "MOD_IMPACT" )
|
if (smeansofdeath == "MOD_MELEE" || smeansofdeath == "MOD_BAYONET" || smeansofdeath == "MOD_IMPACT" || smeansofdeath == "MOD_UNKNOWN" || smeansofdeath == "MOD_IMPACT")
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( shitloc == "head" || shitloc == "helmet" || sHitLoc == "neck" )
|
if (shitloc == "head" || shitloc == "helmet" || sHitLoc == "neck")
|
||||||
{
|
{
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -36,72 +36,72 @@ is_headshot( sweapon, shitloc, smeansofdeath )
|
|||||||
|
|
||||||
shock_onpain()
|
shock_onpain()
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
self notify( "stop_shock_onpain" );
|
self notify("stop_shock_onpain");
|
||||||
self endon( "stop_shock_onpain" );
|
self endon("stop_shock_onpain");
|
||||||
|
|
||||||
if ( getdvar( "blurpain" ) == "" )
|
if (getdvar("blurpain") == "")
|
||||||
setdvar( "blurpain", "on" );
|
setdvar("blurpain", "on");
|
||||||
|
|
||||||
while ( true )
|
while (true)
|
||||||
{
|
{
|
||||||
oldhealth = self.health;
|
oldhealth = self.health;
|
||||||
|
|
||||||
self waittill( "damage", damage, attacker, direction_vec, point, mod );
|
self waittill("damage", damage, attacker, direction_vec, point, mod);
|
||||||
|
|
||||||
if ( isdefined( level.shock_onpain ) && !level.shock_onpain )
|
if (isdefined(level.shock_onpain) && !level.shock_onpain)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( isdefined( self.shock_onpain ) && !self.shock_onpain )
|
if (isdefined(self.shock_onpain) && !self.shock_onpain)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( self.health < 1 )
|
if (self.health < 1)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( mod == "MOD_PROJECTILE" || mod == "MOD_PROJECTILE_SPLASH" || mod == "MOD_GRENADE_SPLASH" || mod == "MOD_GRENADE" || mod == "MOD_EXPLOSIVE" )
|
if (mod == "MOD_PROJECTILE" || mod == "MOD_PROJECTILE_SPLASH" || mod == "MOD_GRENADE_SPLASH" || mod == "MOD_GRENADE" || mod == "MOD_EXPLOSIVE")
|
||||||
{
|
{
|
||||||
if ( is_true( self.is_burning ) )
|
if (is_true(self.is_burning))
|
||||||
{
|
{
|
||||||
self shock_onexplosion( damage, "lava", "lava_small" );
|
self shock_onexplosion(damage, "lava", "lava_small");
|
||||||
}
|
}
|
||||||
else if ( mod == "MOD_EXPLOSIVE" )
|
else if (mod == "MOD_EXPLOSIVE")
|
||||||
{
|
{
|
||||||
self shock_onexplosion( damage );
|
self shock_onexplosion(damage);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
self shellshock( "pain", 0.5 );
|
self shellshock("pain", 0.5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( getdvar( "blurpain" ) == "on" )
|
else if (getdvar("blurpain") == "on")
|
||||||
{
|
{
|
||||||
self shellshock( "pain", 0.5 );
|
self shellshock("pain", 0.5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
create_zombie_point_of_interest_attractor_positions( num_attract_dists, diff_per_dist, attractor_width )
|
create_zombie_point_of_interest_attractor_positions(num_attract_dists, diff_per_dist, attractor_width)
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
forward = ( 0, 1, 0 );
|
forward = (0, 1, 0);
|
||||||
|
|
||||||
if ( !isDefined( self.num_poi_attracts ) || isDefined( self.script_noteworthy ) && self.script_noteworthy != "zombie_poi" )
|
if (!isDefined(self.num_poi_attracts) || isDefined(self.script_noteworthy) && self.script_noteworthy != "zombie_poi")
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isDefined( num_attract_dists ) )
|
if (!isDefined(num_attract_dists))
|
||||||
{
|
{
|
||||||
num_attract_dists = 4;
|
num_attract_dists = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isDefined( diff_per_dist ) )
|
if (!isDefined(diff_per_dist))
|
||||||
{
|
{
|
||||||
diff_per_dist = 45;
|
diff_per_dist = 45;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isDefined( attractor_width ) )
|
if (!isDefined(attractor_width))
|
||||||
{
|
{
|
||||||
attractor_width = 45;
|
attractor_width = 45;
|
||||||
}
|
}
|
||||||
@ -110,23 +110,23 @@ create_zombie_point_of_interest_attractor_positions( num_attract_dists, diff_per
|
|||||||
self.num_attract_dists = num_attract_dists;
|
self.num_attract_dists = num_attract_dists;
|
||||||
self.last_index = [];
|
self.last_index = [];
|
||||||
|
|
||||||
for ( i = 0; i < num_attract_dists; i++ )
|
for (i = 0; i < num_attract_dists; i++)
|
||||||
{
|
{
|
||||||
self.last_index[ i ] = -1;
|
self.last_index[ i ] = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
self.attract_dists = [];
|
self.attract_dists = [];
|
||||||
|
|
||||||
for ( i = 0; i < self.num_attract_dists; i++ )
|
for (i = 0; i < self.num_attract_dists; i++)
|
||||||
{
|
{
|
||||||
self.attract_dists[ i ] = diff_per_dist * ( i + 1 );
|
self.attract_dists[ i ] = diff_per_dist * (i + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
max_positions = [];
|
max_positions = [];
|
||||||
|
|
||||||
for ( i = 0; i < self.num_attract_dists; i++ )
|
for (i = 0; i < self.num_attract_dists; i++)
|
||||||
{
|
{
|
||||||
max_positions[ i ] = int( ( 6.28 * self.attract_dists[ i ] ) / attractor_width );
|
max_positions[ i ] = int((6.28 * self.attract_dists[ i ]) / attractor_width);
|
||||||
}
|
}
|
||||||
|
|
||||||
num_attracts_per_dist = self.num_poi_attracts / self.num_attract_dists;
|
num_attracts_per_dist = self.num_poi_attracts / self.num_attract_dists;
|
||||||
@ -135,9 +135,9 @@ create_zombie_point_of_interest_attractor_positions( num_attract_dists, diff_per
|
|||||||
actual_num_positions = [];
|
actual_num_positions = [];
|
||||||
i = 0;
|
i = 0;
|
||||||
|
|
||||||
while ( i < self.num_attract_dists )
|
while (i < self.num_attract_dists)
|
||||||
{
|
{
|
||||||
if ( num_attracts_per_dist > ( max_positions[ i ] + diff ) )
|
if (num_attracts_per_dist > (max_positions[ i ] + diff))
|
||||||
{
|
{
|
||||||
actual_num_positions[ i ] = max_positions[ i ];
|
actual_num_positions[ i ] = max_positions[ i ];
|
||||||
diff += num_attracts_per_dist - max_positions[ i ];
|
diff += num_attracts_per_dist - max_positions[ i ];
|
||||||
@ -155,42 +155,42 @@ create_zombie_point_of_interest_attractor_positions( num_attract_dists, diff_per
|
|||||||
angle_offset = 0;
|
angle_offset = 0;
|
||||||
prev_last_index = -1;
|
prev_last_index = -1;
|
||||||
|
|
||||||
for ( j = 0; j < 4; j++)
|
for (j = 0; j < 4; j++)
|
||||||
{
|
{
|
||||||
if ( ( actual_num_positions[ j ] + failed ) < max_positions[ j ] )
|
if ((actual_num_positions[ j ] + failed) < max_positions[ j ])
|
||||||
{
|
{
|
||||||
actual_num_positions[ j ] += failed;
|
actual_num_positions[ j ] += failed;
|
||||||
failed = 0;
|
failed = 0;
|
||||||
}
|
}
|
||||||
else if ( actual_num_positions[ j ] < max_positions[ j ] )
|
else if (actual_num_positions[ j ] < max_positions[ j ])
|
||||||
{
|
{
|
||||||
actual_num_positions[ j ] = max_positions[ j ];
|
actual_num_positions[ j ] = max_positions[ j ];
|
||||||
failed = max_positions[ j ] - actual_num_positions[ j ];
|
failed = max_positions[ j ] - actual_num_positions[ j ];
|
||||||
}
|
}
|
||||||
|
|
||||||
failed += self generated_radius_attract_positions( forward, angle_offset, actual_num_positions[ j ], self.attract_dists[ j ] );
|
failed += self generated_radius_attract_positions(forward, angle_offset, actual_num_positions[ j ], self.attract_dists[ j ]);
|
||||||
angle_offset += 15;
|
angle_offset += 15;
|
||||||
self.last_index[ j ] = int( ( actual_num_positions[ j ] - failed ) + prev_last_index );
|
self.last_index[ j ] = int((actual_num_positions[ j ] - failed) + prev_last_index);
|
||||||
prev_last_index = self.last_index[ j ];
|
prev_last_index = self.last_index[ j ];
|
||||||
|
|
||||||
self notify( "attractor_positions_generated" );
|
self notify("attractor_positions_generated");
|
||||||
level notify( "attractor_positions_generated" );
|
level notify("attractor_positions_generated");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
check_point_in_life_brush( origin )
|
check_point_in_life_brush(origin)
|
||||||
{
|
{
|
||||||
life_brushes = getentarray( "life_brush", "script_noteworthy" );
|
life_brushes = getentarray("life_brush", "script_noteworthy");
|
||||||
|
|
||||||
if ( !isdefined( life_brushes ) )
|
if (!isdefined(life_brushes))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
check_model = spawn( "script_model", origin + vectorscale( ( 0, 0, 1 ), 40.0 ) );
|
check_model = spawn("script_model", origin + vectorscale((0, 0, 1), 40.0));
|
||||||
valid_point = 0;
|
valid_point = 0;
|
||||||
|
|
||||||
for ( i = 0; i < life_brushes.size; i++ )
|
for (i = 0; i < life_brushes.size; i++)
|
||||||
{
|
{
|
||||||
if ( check_model istouching( life_brushes[i] ) )
|
if (check_model istouching(life_brushes[i]))
|
||||||
{
|
{
|
||||||
valid_point = 1;
|
valid_point = 1;
|
||||||
break;
|
break;
|
||||||
@ -201,19 +201,19 @@ check_point_in_life_brush( origin )
|
|||||||
return valid_point;
|
return valid_point;
|
||||||
}
|
}
|
||||||
|
|
||||||
check_point_in_kill_brush( origin )
|
check_point_in_kill_brush(origin)
|
||||||
{
|
{
|
||||||
kill_brushes = getentarray( "kill_brush", "script_noteworthy" );
|
kill_brushes = getentarray("kill_brush", "script_noteworthy");
|
||||||
|
|
||||||
if ( !isdefined( kill_brushes ) )
|
if (!isdefined(kill_brushes))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
check_model = spawn( "script_model", origin + vectorscale( ( 0, 0, 1 ), 40.0 ) );
|
check_model = spawn("script_model", origin + vectorscale((0, 0, 1), 40.0));
|
||||||
valid_point = 0;
|
valid_point = 0;
|
||||||
|
|
||||||
for ( i = 0; i < kill_brushes.size; i++ )
|
for (i = 0; i < kill_brushes.size; i++)
|
||||||
{
|
{
|
||||||
if ( check_model istouching( kill_brushes[i] ) )
|
if (check_model istouching(kill_brushes[i]))
|
||||||
{
|
{
|
||||||
valid_point = 1;
|
valid_point = 1;
|
||||||
break;
|
break;
|
||||||
@ -224,17 +224,17 @@ check_point_in_kill_brush( origin )
|
|||||||
return valid_point;
|
return valid_point;
|
||||||
}
|
}
|
||||||
|
|
||||||
get_current_zone( return_zone )
|
get_current_zone(return_zone)
|
||||||
{
|
{
|
||||||
flag_wait( "zones_initialized" );
|
flag_wait("zones_initialized");
|
||||||
|
|
||||||
if ( isDefined( self.prev_zone ) )
|
if (isDefined(self.prev_zone))
|
||||||
{
|
{
|
||||||
for ( i = 0; i < self.prev_zone.volumes.size; i++ )
|
for (i = 0; i < self.prev_zone.volumes.size; i++)
|
||||||
{
|
{
|
||||||
if ( self istouching( self.prev_zone.volumes[i] ) )
|
if (self istouching(self.prev_zone.volumes[i]))
|
||||||
{
|
{
|
||||||
if ( isdefined( return_zone ) && return_zone )
|
if (isdefined(return_zone) && return_zone)
|
||||||
{
|
{
|
||||||
return self.prev_zone;
|
return self.prev_zone;
|
||||||
}
|
}
|
||||||
@ -244,19 +244,19 @@ get_current_zone( return_zone )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( z = 0; z < level.zone_keys.size; z++ )
|
for (z = 0; z < level.zone_keys.size; z++)
|
||||||
{
|
{
|
||||||
zone_name = level.zone_keys[z];
|
zone_name = level.zone_keys[z];
|
||||||
zone = level.zones[zone_name];
|
zone = level.zones[zone_name];
|
||||||
|
|
||||||
for ( i = 0; i < zone.volumes.size; i++ )
|
for (i = 0; i < zone.volumes.size; i++)
|
||||||
{
|
{
|
||||||
if ( self istouching( zone.volumes[i] ) )
|
if (self istouching(zone.volumes[i]))
|
||||||
{
|
{
|
||||||
self.prev_zone = zone;
|
self.prev_zone = zone;
|
||||||
self.prev_zone_name = zone_name;
|
self.prev_zone_name = zone_name;
|
||||||
|
|
||||||
if ( isdefined( return_zone ) && return_zone )
|
if (isdefined(return_zone) && return_zone)
|
||||||
{
|
{
|
||||||
return zone;
|
return zone;
|
||||||
}
|
}
|
||||||
@ -272,14 +272,14 @@ get_current_zone( return_zone )
|
|||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
is_temporary_zombie_weapon( str_weapon )
|
is_temporary_zombie_weapon(str_weapon)
|
||||||
{
|
{
|
||||||
if ( isdefined( level.machine_assets["packapunch"] ) && isdefined( level.machine_assets["packapunch"].weapon ) && str_weapon == level.machine_assets["packapunch"].weapon )
|
if (isdefined(level.machine_assets["packapunch"]) && isdefined(level.machine_assets["packapunch"].weapon) && str_weapon == level.machine_assets["packapunch"].weapon)
|
||||||
{
|
{
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return is_zombie_perk_bottle( str_weapon ) || str_weapon == level.revive_tool || str_weapon == "zombie_builder_zm" || str_weapon == "chalk_draw_zm" || str_weapon == "no_hands_zm" || issubstr( str_weapon, "_flourish" );
|
return is_zombie_perk_bottle(str_weapon) || str_weapon == level.revive_tool || str_weapon == "zombie_builder_zm" || str_weapon == "chalk_draw_zm" || str_weapon == "no_hands_zm" || issubstr(str_weapon, "_flourish");
|
||||||
}
|
}
|
||||||
|
|
||||||
wait_network_frame()
|
wait_network_frame()
|
||||||
|
@ -3,124 +3,124 @@
|
|||||||
#include common_scripts\utility;
|
#include common_scripts\utility;
|
||||||
#include maps\mp\zombies\_zm_utility;
|
#include maps\mp\zombies\_zm_utility;
|
||||||
|
|
||||||
on_spawn( watcher, player )
|
on_spawn(watcher, player)
|
||||||
{
|
{
|
||||||
player endon( "death" );
|
player endon("death");
|
||||||
player endon( "disconnect" );
|
player endon("disconnect");
|
||||||
player endon( "zmb_lost_knife" );
|
player endon("zmb_lost_knife");
|
||||||
level endon( "game_ended" );
|
level endon("game_ended");
|
||||||
|
|
||||||
is_upgraded = player maps\mp\zombies\_zm_melee_weapon::has_upgraded_ballistic_knife();
|
is_upgraded = player maps\mp\zombies\_zm_melee_weapon::has_upgraded_ballistic_knife();
|
||||||
|
|
||||||
self waittill( "stationary", endpos, normal, angles, attacker, prey, bone );
|
self waittill("stationary", endpos, normal, angles, attacker, prey, bone);
|
||||||
|
|
||||||
if ( is_upgraded && isDefined( prey ) && isplayer( prey ) && prey.team == player.team && prey maps\mp\zombies\_zm_laststand::player_is_in_laststand() )
|
if (is_upgraded && isDefined(prey) && isplayer(prey) && prey.team == player.team && prey maps\mp\zombies\_zm_laststand::player_is_in_laststand())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( endpos ) )
|
if (isDefined(endpos))
|
||||||
{
|
{
|
||||||
retrievable_model = spawn( "script_model", endpos );
|
retrievable_model = spawn("script_model", endpos);
|
||||||
retrievable_model setmodel( "t5_weapon_ballistic_knife_blade_retrieve" );
|
retrievable_model setmodel("t5_weapon_ballistic_knife_blade_retrieve");
|
||||||
retrievable_model setowner( player );
|
retrievable_model setowner(player);
|
||||||
retrievable_model.owner = player;
|
retrievable_model.owner = player;
|
||||||
retrievable_model.angles = angles;
|
retrievable_model.angles = angles;
|
||||||
retrievable_model.name = watcher.weapon;
|
retrievable_model.name = watcher.weapon;
|
||||||
isfriendly = 0;
|
isfriendly = 0;
|
||||||
|
|
||||||
if ( isDefined( prey ) )
|
if (isDefined(prey))
|
||||||
{
|
{
|
||||||
if ( isplayer( prey ) )
|
if (isplayer(prey))
|
||||||
{
|
{
|
||||||
isfriendly = 1;
|
isfriendly = 1;
|
||||||
}
|
}
|
||||||
else if ( isai( prey ) && player.team == prey.team )
|
else if (isai(prey) && player.team == prey.team)
|
||||||
{
|
{
|
||||||
isfriendly = 1;
|
isfriendly = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isfriendly )
|
if (isfriendly)
|
||||||
{
|
{
|
||||||
retrievable_model physicslaunch( normal, ( randomint( 10 ), randomint( 10 ), randomint( 10 ) ) );
|
retrievable_model physicslaunch(normal, (randomint(10), randomint(10), randomint(10)));
|
||||||
normal = ( 0, 0, 1 );
|
normal = (0, 0, 1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
retrievable_model linkto( prey, bone );
|
retrievable_model linkto(prey, bone);
|
||||||
retrievable_model thread force_drop_knives_to_ground_on_death( player, prey );
|
retrievable_model thread force_drop_knives_to_ground_on_death(player, prey);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
watcher.objectarray[ watcher.objectarray.size ] = retrievable_model;
|
watcher.objectarray[ watcher.objectarray.size ] = retrievable_model;
|
||||||
retrievable_model thread drop_knives_to_ground( player );
|
retrievable_model thread drop_knives_to_ground(player);
|
||||||
|
|
||||||
if ( isfriendly )
|
if (isfriendly)
|
||||||
{
|
{
|
||||||
player notify( "ballistic_knife_stationary", retrievable_model, normal );
|
player notify("ballistic_knife_stationary", retrievable_model, normal);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player notify( "ballistic_knife_stationary", retrievable_model, normal, prey );
|
player notify("ballistic_knife_stationary", retrievable_model, normal, prey);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
watch_use_trigger( trigger, model, callback, weapon, playersoundonuse, npcsoundonuse )
|
watch_use_trigger(trigger, model, callback, weapon, playersoundonuse, npcsoundonuse)
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
self endon( "delete" );
|
self endon("delete");
|
||||||
level endon( "game_ended" );
|
level endon("game_ended");
|
||||||
autorecover = is_true( level.ballistic_knife_autorecover );
|
autorecover = is_true(level.ballistic_knife_autorecover);
|
||||||
|
|
||||||
while ( 1 )
|
while (1)
|
||||||
{
|
{
|
||||||
trigger waittill( "trigger", player );
|
trigger waittill("trigger", player);
|
||||||
|
|
||||||
if ( !isalive( player ) )
|
if (!isalive(player))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( trigger.triggerteam ) && player.team != trigger.triggerteam )
|
if (isDefined(trigger.triggerteam) && player.team != trigger.triggerteam)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( trigger.claimedby ) && player != trigger.claimedby )
|
if (isDefined(trigger.claimedby) && player != trigger.claimedby)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( trigger.owner ) && player != trigger.owner )
|
if (isDefined(trigger.owner) && player != trigger.owner)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( player getcurrentweapon() == weapon && player getweaponammostock( weapon ) >= weaponmaxammo( weapon ) )
|
if (player getcurrentweapon() == weapon && player getweaponammostock(weapon) >= weaponmaxammo(weapon))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !autorecover && !is_true( trigger.force_pickup ) )
|
if (!autorecover && !is_true(trigger.force_pickup))
|
||||||
{
|
{
|
||||||
if ( player.throwinggrenade || player meleebuttonpressed() )
|
if (player.throwinggrenade || player meleebuttonpressed())
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( playersoundonuse ) )
|
if (isDefined(playersoundonuse))
|
||||||
{
|
{
|
||||||
player playlocalsound( playersoundonuse );
|
player playlocalsound(playersoundonuse);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( npcsoundonuse ) )
|
if (isDefined(npcsoundonuse))
|
||||||
{
|
{
|
||||||
player playsound( npcsoundonuse );
|
player playsound(npcsoundonuse);
|
||||||
}
|
}
|
||||||
|
|
||||||
player thread [[ callback ]]( weapon, model, trigger );
|
player thread [[ callback ]](weapon, model, trigger);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -9,18 +9,18 @@
|
|||||||
|
|
||||||
#using_animtree("zombie_beacon");
|
#using_animtree("zombie_beacon");
|
||||||
|
|
||||||
player_throw_beacon( grenade, num_attractors, max_attract_dist, attract_dist_diff )
|
player_throw_beacon(grenade, num_attractors, max_attract_dist, attract_dist_diff)
|
||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
self endon( "starting_beacon_watch" );
|
self endon("starting_beacon_watch");
|
||||||
|
|
||||||
if ( isdefined( grenade ) )
|
if (isdefined(grenade))
|
||||||
{
|
{
|
||||||
grenade endon( "death" );
|
grenade endon("death");
|
||||||
|
|
||||||
if ( self maps\mp\zombies\_zm_laststand::player_is_in_laststand() )
|
if (self maps\mp\zombies\_zm_laststand::player_is_in_laststand())
|
||||||
{
|
{
|
||||||
if ( isdefined( grenade.damagearea ) )
|
if (isdefined(grenade.damagearea))
|
||||||
grenade.damagearea delete();
|
grenade.damagearea delete();
|
||||||
|
|
||||||
grenade delete();
|
grenade delete();
|
||||||
@ -28,44 +28,44 @@ player_throw_beacon( grenade, num_attractors, max_attract_dist, attract_dist_dif
|
|||||||
}
|
}
|
||||||
|
|
||||||
grenade hide();
|
grenade hide();
|
||||||
model = spawn( "script_model", grenade.origin );
|
model = spawn("script_model", grenade.origin);
|
||||||
model endon( "weapon_beacon_timeout" );
|
model endon("weapon_beacon_timeout");
|
||||||
model setmodel( "t6_wpn_zmb_homing_beacon_world" );
|
model setmodel("t6_wpn_zmb_homing_beacon_world");
|
||||||
model useanimtree( #animtree );
|
model useanimtree(#animtree);
|
||||||
model linkto( grenade );
|
model linkto(grenade);
|
||||||
model.angles = grenade.angles;
|
model.angles = grenade.angles;
|
||||||
model thread beacon_cleanup( grenade );
|
model thread beacon_cleanup(grenade);
|
||||||
model.owner = self;
|
model.owner = self;
|
||||||
clone = undefined;
|
clone = undefined;
|
||||||
|
|
||||||
if ( isdefined( level.beacon_dual_view ) && level.beacon_dual_view )
|
if (isdefined(level.beacon_dual_view) && level.beacon_dual_view)
|
||||||
{
|
{
|
||||||
model setvisibletoallexceptteam( level.zombie_team );
|
model setvisibletoallexceptteam(level.zombie_team);
|
||||||
clone = maps\mp\zombies\_zm_clone::spawn_player_clone( self, vectorscale( ( 0, 0, -1 ), 999.0 ), level.beacon_clone_weapon, undefined );
|
clone = maps\mp\zombies\_zm_clone::spawn_player_clone(self, vectorscale((0, 0, -1), 999.0), level.beacon_clone_weapon, undefined);
|
||||||
model.simulacrum = clone;
|
model.simulacrum = clone;
|
||||||
clone maps\mp\zombies\_zm_clone::clone_animate( "idle" );
|
clone maps\mp\zombies\_zm_clone::clone_animate("idle");
|
||||||
clone thread clone_player_angles( self );
|
clone thread clone_player_angles(self);
|
||||||
clone notsolid();
|
clone notsolid();
|
||||||
clone ghost();
|
clone ghost();
|
||||||
}
|
}
|
||||||
|
|
||||||
grenade thread watch_for_dud( model, clone );
|
grenade thread watch_for_dud(model, clone);
|
||||||
info = spawnstruct();
|
info = spawnstruct();
|
||||||
info.sound_attractors = [];
|
info.sound_attractors = [];
|
||||||
grenade thread monitor_zombie_groans( info );
|
grenade thread monitor_zombie_groans(info);
|
||||||
|
|
||||||
grenade waittill( "stationary" );
|
grenade waittill("stationary");
|
||||||
|
|
||||||
if ( isdefined( level.grenade_planted ) )
|
if (isdefined(level.grenade_planted))
|
||||||
self thread [[ level.grenade_planted ]]( grenade, model );
|
self thread [[ level.grenade_planted ]](grenade, model);
|
||||||
|
|
||||||
if ( isdefined( grenade ) )
|
if (isdefined(grenade))
|
||||||
{
|
{
|
||||||
if ( isdefined( model ) )
|
if (isdefined(model))
|
||||||
{
|
{
|
||||||
model thread weapon_beacon_anims();
|
model thread weapon_beacon_anims();
|
||||||
|
|
||||||
if ( !( isdefined( grenade.backlinked ) && grenade.backlinked ) )
|
if (!(isdefined(grenade.backlinked) && grenade.backlinked))
|
||||||
{
|
{
|
||||||
model unlink();
|
model unlink();
|
||||||
model.origin = grenade.origin;
|
model.origin = grenade.origin;
|
||||||
@ -73,138 +73,138 @@ player_throw_beacon( grenade, num_attractors, max_attract_dist, attract_dist_dif
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( clone ) )
|
if (isdefined(clone))
|
||||||
{
|
{
|
||||||
clone forceteleport( grenade.origin, grenade.angles );
|
clone forceteleport(grenade.origin, grenade.angles);
|
||||||
clone thread hide_owner( self );
|
clone thread hide_owner(self);
|
||||||
grenade thread proximity_detonate( self );
|
grenade thread proximity_detonate(self);
|
||||||
clone show();
|
clone show();
|
||||||
clone setinvisibletoall();
|
clone setinvisibletoall();
|
||||||
clone setvisibletoteam( level.zombie_team );
|
clone setvisibletoteam(level.zombie_team);
|
||||||
}
|
}
|
||||||
|
|
||||||
grenade resetmissiledetonationtime();
|
grenade resetmissiledetonationtime();
|
||||||
model setclientfield( "play_beacon_fx", 1 );
|
model setclientfield("play_beacon_fx", 1);
|
||||||
valid_poi = check_point_in_enabled_zone( grenade.origin, undefined, undefined );
|
valid_poi = check_point_in_enabled_zone(grenade.origin, undefined, undefined);
|
||||||
|
|
||||||
if ( isdefined( level.check_valid_poi ) )
|
if (isdefined(level.check_valid_poi))
|
||||||
valid_poi = grenade [[ level.check_valid_poi ]]( valid_poi );
|
valid_poi = grenade [[ level.check_valid_poi ]](valid_poi);
|
||||||
|
|
||||||
if ( valid_poi )
|
if (valid_poi)
|
||||||
{
|
{
|
||||||
grenade create_zombie_point_of_interest( max_attract_dist, num_attractors, 10000 );
|
grenade create_zombie_point_of_interest(max_attract_dist, num_attractors, 10000);
|
||||||
grenade.attract_to_origin = 1;
|
grenade.attract_to_origin = 1;
|
||||||
grenade thread create_zombie_point_of_interest_attractor_positions( 4, attract_dist_diff );
|
grenade thread create_zombie_point_of_interest_attractor_positions(4, attract_dist_diff);
|
||||||
grenade thread wait_for_attractor_positions_complete();
|
grenade thread wait_for_attractor_positions_complete();
|
||||||
grenade thread do_beacon_sound( model, info );
|
grenade thread do_beacon_sound(model, info);
|
||||||
model thread wait_and_explode( grenade );
|
model thread wait_and_explode(grenade);
|
||||||
model.time_thrown = gettime();
|
model.time_thrown = gettime();
|
||||||
|
|
||||||
while ( isdefined( level.weapon_beacon_busy ) && level.weapon_beacon_busy )
|
while (isdefined(level.weapon_beacon_busy) && level.weapon_beacon_busy)
|
||||||
{
|
{
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( flag( "three_robot_round" ) && flag( "fire_link_enabled" ) )
|
if (flag("three_robot_round") && flag("fire_link_enabled"))
|
||||||
model thread start_artillery_launch_ee( grenade );
|
model thread start_artillery_launch_ee(grenade);
|
||||||
else
|
else
|
||||||
model thread start_artillery_launch_normal( grenade );
|
model thread start_artillery_launch_normal(grenade);
|
||||||
|
|
||||||
level.beacons[level.beacons.size] = grenade;
|
level.beacons[level.beacons.size] = grenade;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
grenade.script_noteworthy = undefined;
|
grenade.script_noteworthy = undefined;
|
||||||
self thread grenade_stolen_by_sam( grenade, model, clone );
|
self thread grenade_stolen_by_sam(grenade, model, clone);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
grenade.script_noteworthy = undefined;
|
grenade.script_noteworthy = undefined;
|
||||||
self thread grenade_stolen_by_sam( grenade, model, clone );
|
self thread grenade_stolen_by_sam(grenade, model, clone);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
grenade_stolen_by_sam( ent_grenade, ent_model, ent_actor )
|
grenade_stolen_by_sam(ent_grenade, ent_model, ent_actor)
|
||||||
{
|
{
|
||||||
if ( !isdefined( ent_model ) )
|
if (!isdefined(ent_model))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
direction = ent_model.origin;
|
direction = ent_model.origin;
|
||||||
direction = ( direction[1], direction[0], 0 );
|
direction = (direction[1], direction[0], 0);
|
||||||
|
|
||||||
if ( direction[1] < 0 || direction[0] > 0 && direction[1] > 0 )
|
if (direction[1] < 0 || direction[0] > 0 && direction[1] > 0)
|
||||||
direction = ( direction[0], direction[1] * -1, 0 );
|
direction = (direction[0], direction[1] * -1, 0);
|
||||||
else if ( direction[0] < 0 )
|
else if (direction[0] < 0)
|
||||||
direction = ( direction[0] * -1, direction[1], 0 );
|
direction = (direction[0] * -1, direction[1], 0);
|
||||||
|
|
||||||
self playlocalsound( level.zmb_laugh_alias );
|
self playlocalsound(level.zmb_laugh_alias);
|
||||||
|
|
||||||
playfxontag( level._effect["grenade_samantha_steal"], ent_model, "tag_origin" );
|
playfxontag(level._effect["grenade_samantha_steal"], ent_model, "tag_origin");
|
||||||
ent_model movez( 60, 1.0, 0.25, 0.25 );
|
ent_model movez(60, 1.0, 0.25, 0.25);
|
||||||
ent_model vibrate( direction, 1.5, 2.5, 1.0 );
|
ent_model vibrate(direction, 1.5, 2.5, 1.0);
|
||||||
|
|
||||||
ent_model waittill( "movedone" );
|
ent_model waittill("movedone");
|
||||||
|
|
||||||
if ( isdefined( self.damagearea ) )
|
if (isdefined(self.damagearea))
|
||||||
self.damagearea delete();
|
self.damagearea delete();
|
||||||
|
|
||||||
ent_model delete();
|
ent_model delete();
|
||||||
|
|
||||||
if ( isdefined( ent_actor ) )
|
if (isdefined(ent_actor))
|
||||||
ent_actor delete();
|
ent_actor delete();
|
||||||
|
|
||||||
if ( isdefined( ent_grenade ) )
|
if (isdefined(ent_grenade))
|
||||||
{
|
{
|
||||||
if ( isdefined( ent_grenade.damagearea ) )
|
if (isdefined(ent_grenade.damagearea))
|
||||||
ent_grenade.damagearea delete();
|
ent_grenade.damagearea delete();
|
||||||
|
|
||||||
ent_grenade delete();
|
ent_grenade delete();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
wait_and_do_weapon_beacon_damage( index )
|
wait_and_do_weapon_beacon_damage(index)
|
||||||
{
|
{
|
||||||
wait 3.0;
|
wait 3.0;
|
||||||
v_damage_origin = self.a_v_land_spots[index];
|
v_damage_origin = self.a_v_land_spots[index];
|
||||||
level.n_weap_beacon_zombie_thrown_count = 0;
|
level.n_weap_beacon_zombie_thrown_count = 0;
|
||||||
a_zombies_to_kill = [];
|
a_zombies_to_kill = [];
|
||||||
a_zombies = getaispeciesarray( "axis", "all" );
|
a_zombies = getaispeciesarray("axis", "all");
|
||||||
|
|
||||||
foreach ( zombie in a_zombies )
|
foreach (zombie in a_zombies)
|
||||||
{
|
{
|
||||||
n_distance = distance( zombie.origin, v_damage_origin );
|
n_distance = distance(zombie.origin, v_damage_origin);
|
||||||
|
|
||||||
if ( n_distance <= 200 )
|
if (n_distance <= 200)
|
||||||
{
|
{
|
||||||
a_zombies_to_kill[a_zombies_to_kill.size] = zombie;
|
a_zombies_to_kill[a_zombies_to_kill.size] = zombie;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( index == 0 )
|
if (index == 0)
|
||||||
{
|
{
|
||||||
radiusdamage( self.origin + vectorscale( ( 0, 0, 1 ), 12.0 ), 10, 1, 1, self.owner, "MOD_GRENADE_SPLASH", "beacon_zm" );
|
radiusdamage(self.origin + vectorscale((0, 0, 1), 12.0), 10, 1, 1, self.owner, "MOD_GRENADE_SPLASH", "beacon_zm");
|
||||||
self ghost();
|
self ghost();
|
||||||
self stopanimscripted( 0 );
|
self stopanimscripted(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
level thread weap_beacon_zombie_death( self, a_zombies_to_kill );
|
level thread weap_beacon_zombie_death(self, a_zombies_to_kill);
|
||||||
self thread weap_beacon_rumble();
|
self thread weap_beacon_rumble();
|
||||||
}
|
}
|
||||||
|
|
||||||
weap_beacon_zombie_death( model, a_zombies_to_kill )
|
weap_beacon_zombie_death(model, a_zombies_to_kill)
|
||||||
{
|
{
|
||||||
for ( i = 0; i < a_zombies_to_kill.size; i++ )
|
for (i = 0; i < a_zombies_to_kill.size; i++)
|
||||||
{
|
{
|
||||||
zombie = a_zombies_to_kill[i];
|
zombie = a_zombies_to_kill[i];
|
||||||
|
|
||||||
if ( !isdefined( zombie ) || !isalive( zombie ) )
|
if (!isdefined(zombie) || !isalive(zombie))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
zombie thread set_beacon_damage();
|
zombie thread set_beacon_damage();
|
||||||
zombie dodamage( zombie.health, zombie.origin, model.owner, model.owner, "none", "MOD_GRENADE_SPLASH", 0, "beacon_zm" );
|
zombie dodamage(zombie.health, zombie.origin, model.owner, model.owner, "none", "MOD_GRENADE_SPLASH", 0, "beacon_zm");
|
||||||
zombie thread weapon_beacon_launch_ragdoll();
|
zombie thread weapon_beacon_launch_ragdoll();
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -9,21 +9,21 @@
|
|||||||
|
|
||||||
wait_for_blundersplat_fired()
|
wait_for_blundersplat_fired()
|
||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
|
|
||||||
self waittill( "spawned_player" );
|
self waittill("spawned_player");
|
||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
self waittill( "weapon_fired", str_weapon );
|
self waittill("weapon_fired", str_weapon);
|
||||||
|
|
||||||
if ( str_weapon == "blundersplat_zm" )
|
if (str_weapon == "blundersplat_zm")
|
||||||
{
|
{
|
||||||
_titus_locate_target( 1, 0 );
|
_titus_locate_target(1, 0);
|
||||||
wait_network_frame();
|
wait_network_frame();
|
||||||
_titus_locate_target( 1, 1 );
|
_titus_locate_target(1, 1);
|
||||||
wait_network_frame();
|
wait_network_frame();
|
||||||
_titus_locate_target( 1, 2 );
|
_titus_locate_target(1, 2);
|
||||||
wait_network_frame();
|
wait_network_frame();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -31,35 +31,35 @@ wait_for_blundersplat_fired()
|
|||||||
|
|
||||||
wait_for_blundersplat_upgraded_fired()
|
wait_for_blundersplat_upgraded_fired()
|
||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
|
|
||||||
self waittill( "spawned_player" );
|
self waittill("spawned_player");
|
||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
self waittill( "weapon_fired", str_weapon );
|
self waittill("weapon_fired", str_weapon);
|
||||||
|
|
||||||
if ( str_weapon == "blundersplat_upgraded_zm" )
|
if (str_weapon == "blundersplat_upgraded_zm")
|
||||||
{
|
{
|
||||||
_titus_locate_target( 0, 0 );
|
_titus_locate_target(0, 0);
|
||||||
wait_network_frame();
|
wait_network_frame();
|
||||||
_titus_locate_target( 0, 1 );
|
_titus_locate_target(0, 1);
|
||||||
wait_network_frame();
|
wait_network_frame();
|
||||||
_titus_locate_target( 0, 2 );
|
_titus_locate_target(0, 2);
|
||||||
wait_network_frame();
|
wait_network_frame();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_titus_locate_target( is_not_upgraded = 1, count )
|
_titus_locate_target(is_not_upgraded = 1, count)
|
||||||
{
|
{
|
||||||
fire_angles = self getplayerangles();
|
fire_angles = self getplayerangles();
|
||||||
fire_origin = self getplayercamerapos();
|
fire_origin = self getplayercamerapos();
|
||||||
|
|
||||||
if ( is_not_upgraded )
|
if (is_not_upgraded)
|
||||||
n_fuse_timer = randomfloatrange( 1.0, 2.5 );
|
n_fuse_timer = randomfloatrange(1.0, 2.5);
|
||||||
else
|
else
|
||||||
n_fuse_timer = randomfloatrange( 3.0, 4.0 );
|
n_fuse_timer = randomfloatrange(3.0, 4.0);
|
||||||
|
|
||||||
n_spread = 5;
|
n_spread = 5;
|
||||||
|
|
||||||
@ -81,46 +81,46 @@ _titus_locate_target( is_not_upgraded = 1, count )
|
|||||||
fire_angles -= (0, n_spread, 0);
|
fire_angles -= (0, n_spread, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
vec = anglestoforward( fire_angles );
|
vec = anglestoforward(fire_angles);
|
||||||
trace_end = fire_origin + vec * 20000;
|
trace_end = fire_origin + vec * 20000;
|
||||||
trace = bullettrace( fire_origin, trace_end, 1, self );
|
trace = bullettrace(fire_origin, trace_end, 1, self);
|
||||||
offsetpos = trace["position"];
|
offsetpos = trace["position"];
|
||||||
e_dart = magicbullet( "blundersplat_bullet_zm", fire_origin, offsetpos, self );
|
e_dart = magicbullet("blundersplat_bullet_zm", fire_origin, offsetpos, self);
|
||||||
e_dart thread _titus_reset_grenade_fuse( n_fuse_timer );
|
e_dart thread _titus_reset_grenade_fuse(n_fuse_timer);
|
||||||
}
|
}
|
||||||
|
|
||||||
_titus_reset_grenade_fuse( n_fuse_timer = randomfloatrange( 1, 1.5 ), is_not_upgraded = 1 )
|
_titus_reset_grenade_fuse(n_fuse_timer = randomfloatrange(1, 1.5), is_not_upgraded = 1)
|
||||||
{
|
{
|
||||||
self waittill( "death" );
|
self waittill("death");
|
||||||
|
|
||||||
a_grenades = getentarray( "grenade", "classname" );
|
a_grenades = getentarray("grenade", "classname");
|
||||||
|
|
||||||
foreach ( e_grenade in a_grenades )
|
foreach (e_grenade in a_grenades)
|
||||||
{
|
{
|
||||||
if ( isdefined( e_grenade.model ) && e_grenade.model == "t6_wpn_zmb_projectile_blundergat" && !isdefined( e_grenade.fuse_reset ) )
|
if (isdefined(e_grenade.model) && e_grenade.model == "t6_wpn_zmb_projectile_blundergat" && !isdefined(e_grenade.fuse_reset))
|
||||||
{
|
{
|
||||||
e_grenade.fuse_reset = 1;
|
e_grenade.fuse_reset = 1;
|
||||||
e_grenade.fuse_time = n_fuse_timer;
|
e_grenade.fuse_time = n_fuse_timer;
|
||||||
e_grenade resetmissiledetonationtime( n_fuse_timer );
|
e_grenade resetmissiledetonationtime(n_fuse_timer);
|
||||||
|
|
||||||
if ( is_not_upgraded )
|
if (is_not_upgraded)
|
||||||
e_grenade create_zombie_point_of_interest( 250, 15, 10000 );
|
e_grenade create_zombie_point_of_interest(250, 15, 10000);
|
||||||
else
|
else
|
||||||
e_grenade create_zombie_point_of_interest( 500, 30, 10000 );
|
e_grenade create_zombie_point_of_interest(500, 30, 10000);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_titus_target_animate_and_die( n_fuse_timer, inflictor )
|
_titus_target_animate_and_die(n_fuse_timer, inflictor)
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
self endon( "titus_target_timeout" );
|
self endon("titus_target_timeout");
|
||||||
self thread _titus_target_timeout( n_fuse_timer );
|
self thread _titus_target_timeout(n_fuse_timer);
|
||||||
self thread _titus_check_for_target_death( inflictor );
|
self thread _titus_check_for_target_death(inflictor);
|
||||||
self thread _blundersplat_target_acid_stun_anim();
|
self thread _blundersplat_target_acid_stun_anim();
|
||||||
wait( n_fuse_timer );
|
wait(n_fuse_timer);
|
||||||
self notify( "killed_by_a_blundersplat", inflictor );
|
self notify("killed_by_a_blundersplat", inflictor);
|
||||||
self dodamage( self.health + 1000, self.origin, inflictor );
|
self dodamage(self.health + 1000, self.origin, inflictor);
|
||||||
}
|
}
|
@ -6,77 +6,77 @@
|
|||||||
buy_claymores()
|
buy_claymores()
|
||||||
{
|
{
|
||||||
self.zombie_cost = 1000;
|
self.zombie_cost = 1000;
|
||||||
self sethintstring( &"ZOMBIE_CLAYMORE_PURCHASE" );
|
self sethintstring(&"ZOMBIE_CLAYMORE_PURCHASE");
|
||||||
self setcursorhint( "HINT_WEAPON", "claymore_zm" );
|
self setcursorhint("HINT_WEAPON", "claymore_zm");
|
||||||
self endon( "kill_trigger" );
|
self endon("kill_trigger");
|
||||||
|
|
||||||
if ( !isDefined( self.stub ) )
|
if (!isDefined(self.stub))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( self.stub ) && !isDefined( self.stub.claymores_triggered ) )
|
if (isDefined(self.stub) && !isDefined(self.stub.claymores_triggered))
|
||||||
{
|
{
|
||||||
self.stub.claymores_triggered = 0;
|
self.stub.claymores_triggered = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
self.claymores_triggered = self.stub.claymores_triggered;
|
self.claymores_triggered = self.stub.claymores_triggered;
|
||||||
|
|
||||||
while ( 1 )
|
while (1)
|
||||||
{
|
{
|
||||||
self waittill( "trigger", who );
|
self waittill("trigger", who);
|
||||||
|
|
||||||
while ( who in_revive_trigger() )
|
while (who in_revive_trigger())
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
while ( who has_powerup_weapon() )
|
while (who has_powerup_weapon())
|
||||||
{
|
{
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( is_player_valid( who ) )
|
if (is_player_valid(who))
|
||||||
{
|
{
|
||||||
if ( who.score >= self.zombie_cost )
|
if (who.score >= self.zombie_cost)
|
||||||
{
|
{
|
||||||
if ( !who is_player_placeable_mine( "claymore_zm" ) || who getWeaponAmmoStock( "claymore_zm" ) < 2 )
|
if (!who is_player_placeable_mine("claymore_zm") || who getWeaponAmmoStock("claymore_zm") < 2)
|
||||||
{
|
{
|
||||||
play_sound_at_pos( "purchase", self.origin );
|
play_sound_at_pos("purchase", self.origin);
|
||||||
who maps\mp\zombies\_zm_score::minus_to_player_score( self.zombie_cost );
|
who maps\mp\zombies\_zm_score::minus_to_player_score(self.zombie_cost);
|
||||||
|
|
||||||
if ( !who is_player_placeable_mine( "claymore_zm" ) )
|
if (!who is_player_placeable_mine("claymore_zm"))
|
||||||
{
|
{
|
||||||
who thread show_claymore_hint( "claymore_purchased" );
|
who thread show_claymore_hint("claymore_purchased");
|
||||||
}
|
}
|
||||||
|
|
||||||
who thread claymore_setup();
|
who thread claymore_setup();
|
||||||
who thread maps\mp\zombies\_zm_audio::create_and_play_dialog( "weapon_pickup", "grenade" );
|
who thread maps\mp\zombies\_zm_audio::create_and_play_dialog("weapon_pickup", "grenade");
|
||||||
|
|
||||||
if ( isDefined( self.stub ) )
|
if (isDefined(self.stub))
|
||||||
{
|
{
|
||||||
self.claymores_triggered = self.stub.claymores_triggered;
|
self.claymores_triggered = self.stub.claymores_triggered;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self.claymores_triggered == 0 )
|
if (self.claymores_triggered == 0)
|
||||||
{
|
{
|
||||||
model = getent( self.target, "targetname" );
|
model = getent(self.target, "targetname");
|
||||||
|
|
||||||
if ( isDefined( model ) )
|
if (isDefined(model))
|
||||||
{
|
{
|
||||||
model thread maps\mp\zombies\_zm_weapons::weapon_show( who );
|
model thread maps\mp\zombies\_zm_weapons::weapon_show(who);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( isDefined( self.clientfieldname ) )
|
if (isDefined(self.clientfieldname))
|
||||||
{
|
{
|
||||||
level setclientfield( self.clientfieldname, 1 );
|
level setclientfield(self.clientfieldname, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self.claymores_triggered = 1;
|
self.claymores_triggered = 1;
|
||||||
|
|
||||||
if ( isDefined( self.stub ) )
|
if (isDefined(self.stub))
|
||||||
{
|
{
|
||||||
self.stub.claymores_triggered = 1;
|
self.stub.claymores_triggered = 1;
|
||||||
}
|
}
|
||||||
@ -85,80 +85,80 @@ buy_claymores()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
who play_sound_on_ent( "no_purchase" );
|
who play_sound_on_ent("no_purchase");
|
||||||
who maps\mp\zombies\_zm_audio::create_and_play_dialog( "general", "no_money_weapon" );
|
who maps\mp\zombies\_zm_audio::create_and_play_dialog("general", "no_money_weapon");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
claymore_unitrigger_update_prompt( player )
|
claymore_unitrigger_update_prompt(player)
|
||||||
{
|
{
|
||||||
self sethintstring( &"ZOMBIE_CLAYMORE_PURCHASE" );
|
self sethintstring(&"ZOMBIE_CLAYMORE_PURCHASE");
|
||||||
self setcursorhint( "HINT_WEAPON", "claymore_zm" );
|
self setcursorhint("HINT_WEAPON", "claymore_zm");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
claymore_detonation()
|
claymore_detonation()
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
self waittill_not_moving();
|
self waittill_not_moving();
|
||||||
detonateradius = 96;
|
detonateradius = 96;
|
||||||
damagearea = spawn( "trigger_radius", self.origin + ( 0, 0, 0 - detonateradius ), 4, detonateradius, detonateradius * 2 );
|
damagearea = spawn("trigger_radius", self.origin + (0, 0, 0 - detonateradius), 4, detonateradius, detonateradius * 2);
|
||||||
damagearea setexcludeteamfortrigger( self.team );
|
damagearea setexcludeteamfortrigger(self.team);
|
||||||
damagearea enablelinkto();
|
damagearea enablelinkto();
|
||||||
damagearea linkto( self );
|
damagearea linkto(self);
|
||||||
|
|
||||||
if ( is_true( self.isonbus ) )
|
if (is_true(self.isonbus))
|
||||||
{
|
{
|
||||||
damagearea setmovingplatformenabled( 1 );
|
damagearea setmovingplatformenabled(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
self.damagearea = damagearea;
|
self.damagearea = damagearea;
|
||||||
self thread delete_claymores_on_death( self.owner, damagearea );
|
self thread delete_claymores_on_death(self.owner, damagearea);
|
||||||
self.owner.claymores[ self.owner.claymores.size ] = self;
|
self.owner.claymores[ self.owner.claymores.size ] = self;
|
||||||
|
|
||||||
while ( 1 )
|
while (1)
|
||||||
{
|
{
|
||||||
damagearea waittill( "trigger", ent );
|
damagearea waittill("trigger", ent);
|
||||||
|
|
||||||
if ( isDefined( self.owner ) && ent == self.owner )
|
if (isDefined(self.owner) && ent == self.owner)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( ent.pers ) && isDefined( ent.pers[ "team" ] ) && ent.pers[ "team" ] == self.team )
|
if (isDefined(ent.pers) && isDefined(ent.pers[ "team" ]) && ent.pers[ "team" ] == self.team)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( ent.pers ) && isDefined( ent.pers[ "team" ] ) && ent.pers[ "team" ] == getOtherTeam( self.team ) )
|
if (isDefined(ent.pers) && isDefined(ent.pers[ "team" ]) && ent.pers[ "team" ] == getOtherTeam(self.team))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( ent.ignore_claymore ) && ent.ignore_claymore )
|
if (isDefined(ent.ignore_claymore) && ent.ignore_claymore)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !ent shouldaffectweaponobject( self ) )
|
if (!ent shouldaffectweaponobject(self))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ent damageconetrace( self.origin, self ) > 0 )
|
if (ent damageconetrace(self.origin, self) > 0)
|
||||||
{
|
{
|
||||||
self playsound( "wpn_claymore_alert" );
|
self playsound("wpn_claymore_alert");
|
||||||
wait 0.4;
|
wait 0.4;
|
||||||
|
|
||||||
if ( isDefined( self.owner ) )
|
if (isDefined(self.owner))
|
||||||
{
|
{
|
||||||
self detonate( self.owner );
|
self detonate(self.owner);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
self detonate( undefined );
|
self detonate(undefined);
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@ -168,12 +168,12 @@ claymore_detonation()
|
|||||||
|
|
||||||
claymore_setup()
|
claymore_setup()
|
||||||
{
|
{
|
||||||
if ( !isdefined( self.claymores ) )
|
if (!isdefined(self.claymores))
|
||||||
self.claymores = [];
|
self.claymores = [];
|
||||||
|
|
||||||
self thread claymore_watch();
|
self thread claymore_watch();
|
||||||
self giveweapon( "claymore_zm" );
|
self giveweapon("claymore_zm");
|
||||||
self set_player_placeable_mine( "claymore_zm" );
|
self set_player_placeable_mine("claymore_zm");
|
||||||
self setactionslot( 4, "weapon", "claymore_zm" );
|
self setactionslot(4, "weapon", "claymore_zm");
|
||||||
self setweaponammostock( "claymore_zm", 2 );
|
self setweaponammostock("claymore_zm", 2);
|
||||||
}
|
}
|
@ -9,43 +9,43 @@
|
|||||||
|
|
||||||
player_handle_cymbal_monkey()
|
player_handle_cymbal_monkey()
|
||||||
{
|
{
|
||||||
self notify( "starting_monkey_watch" );
|
self notify("starting_monkey_watch");
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
self endon( "starting_monkey_watch" );
|
self endon("starting_monkey_watch");
|
||||||
attract_dist_diff = level.monkey_attract_dist_diff;
|
attract_dist_diff = level.monkey_attract_dist_diff;
|
||||||
|
|
||||||
if ( !isdefined( attract_dist_diff ) )
|
if (!isdefined(attract_dist_diff))
|
||||||
attract_dist_diff = 45;
|
attract_dist_diff = 45;
|
||||||
|
|
||||||
num_attractors = level.num_monkey_attractors;
|
num_attractors = level.num_monkey_attractors;
|
||||||
|
|
||||||
if ( !isdefined( num_attractors ) )
|
if (!isdefined(num_attractors))
|
||||||
num_attractors = 96;
|
num_attractors = 96;
|
||||||
|
|
||||||
max_attract_dist = level.monkey_attract_dist;
|
max_attract_dist = level.monkey_attract_dist;
|
||||||
|
|
||||||
if ( !isdefined( max_attract_dist ) )
|
if (!isdefined(max_attract_dist))
|
||||||
max_attract_dist = 1536;
|
max_attract_dist = 1536;
|
||||||
|
|
||||||
while ( true )
|
while (true)
|
||||||
{
|
{
|
||||||
grenade = get_thrown_monkey();
|
grenade = get_thrown_monkey();
|
||||||
self thread player_throw_cymbal_monkey( grenade, num_attractors, max_attract_dist, attract_dist_diff );
|
self thread player_throw_cymbal_monkey(grenade, num_attractors, max_attract_dist, attract_dist_diff);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
player_throw_cymbal_monkey( grenade, num_attractors, max_attract_dist, attract_dist_diff )
|
player_throw_cymbal_monkey(grenade, num_attractors, max_attract_dist, attract_dist_diff)
|
||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
self endon( "starting_monkey_watch" );
|
self endon("starting_monkey_watch");
|
||||||
|
|
||||||
if ( isdefined( grenade ) )
|
if (isdefined(grenade))
|
||||||
{
|
{
|
||||||
grenade endon( "death" );
|
grenade endon("death");
|
||||||
|
|
||||||
if ( self maps\mp\zombies\_zm_laststand::player_is_in_laststand() )
|
if (self maps\mp\zombies\_zm_laststand::player_is_in_laststand())
|
||||||
{
|
{
|
||||||
if ( isdefined( grenade.damagearea ) )
|
if (isdefined(grenade.damagearea))
|
||||||
grenade.damagearea delete();
|
grenade.damagearea delete();
|
||||||
|
|
||||||
grenade delete();
|
grenade delete();
|
||||||
@ -53,43 +53,43 @@ player_throw_cymbal_monkey( grenade, num_attractors, max_attract_dist, attract_d
|
|||||||
}
|
}
|
||||||
|
|
||||||
grenade hide();
|
grenade hide();
|
||||||
model = spawn( "script_model", grenade.origin );
|
model = spawn("script_model", grenade.origin);
|
||||||
model setmodel( level.cymbal_monkey_model );
|
model setmodel(level.cymbal_monkey_model);
|
||||||
model useanimtree( #animtree );
|
model useanimtree(#animtree);
|
||||||
model linkto( grenade );
|
model linkto(grenade);
|
||||||
model.angles = grenade.angles;
|
model.angles = grenade.angles;
|
||||||
model thread monkey_cleanup( grenade );
|
model thread monkey_cleanup(grenade);
|
||||||
clone = undefined;
|
clone = undefined;
|
||||||
|
|
||||||
if ( isdefined( level.cymbal_monkey_dual_view ) && level.cymbal_monkey_dual_view )
|
if (isdefined(level.cymbal_monkey_dual_view) && level.cymbal_monkey_dual_view)
|
||||||
{
|
{
|
||||||
model setvisibletoallexceptteam( level.zombie_team );
|
model setvisibletoallexceptteam(level.zombie_team);
|
||||||
clone = maps\mp\zombies\_zm_clone::spawn_player_clone( self, vectorscale( ( 0, 0, -1 ), 999.0 ), level.cymbal_monkey_clone_weapon, undefined );
|
clone = maps\mp\zombies\_zm_clone::spawn_player_clone(self, vectorscale((0, 0, -1), 999.0), level.cymbal_monkey_clone_weapon, undefined);
|
||||||
model.simulacrum = clone;
|
model.simulacrum = clone;
|
||||||
clone maps\mp\zombies\_zm_clone::clone_animate( "idle" );
|
clone maps\mp\zombies\_zm_clone::clone_animate("idle");
|
||||||
clone thread clone_player_angles( self );
|
clone thread clone_player_angles(self);
|
||||||
clone notsolid();
|
clone notsolid();
|
||||||
clone ghost();
|
clone ghost();
|
||||||
}
|
}
|
||||||
|
|
||||||
grenade thread watch_for_dud( model, clone );
|
grenade thread watch_for_dud(model, clone);
|
||||||
grenade thread watch_for_emp( model, clone );
|
grenade thread watch_for_emp(model, clone);
|
||||||
info = spawnstruct();
|
info = spawnstruct();
|
||||||
info.sound_attractors = [];
|
info.sound_attractors = [];
|
||||||
grenade thread monitor_zombie_groans( info );
|
grenade thread monitor_zombie_groans(info);
|
||||||
|
|
||||||
grenade waittill( "stationary" );
|
grenade waittill("stationary");
|
||||||
|
|
||||||
if ( isdefined( level.grenade_planted ) )
|
if (isdefined(level.grenade_planted))
|
||||||
self thread [[ level.grenade_planted ]]( grenade, model );
|
self thread [[ level.grenade_planted ]](grenade, model);
|
||||||
|
|
||||||
if ( isdefined( grenade ) )
|
if (isdefined(grenade))
|
||||||
{
|
{
|
||||||
if ( isdefined( model ) )
|
if (isdefined(model))
|
||||||
{
|
{
|
||||||
model setanim( %o_monkey_bomb );
|
model setanim(%o_monkey_bomb);
|
||||||
|
|
||||||
if ( !( isdefined( grenade.backlinked ) && grenade.backlinked ) )
|
if (!(isdefined(grenade.backlinked) && grenade.backlinked))
|
||||||
{
|
{
|
||||||
model unlink();
|
model unlink();
|
||||||
model.origin = grenade.origin;
|
model.origin = grenade.origin;
|
||||||
@ -97,78 +97,78 @@ player_throw_cymbal_monkey( grenade, num_attractors, max_attract_dist, attract_d
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( clone ) )
|
if (isdefined(clone))
|
||||||
{
|
{
|
||||||
clone forceteleport( grenade.origin, grenade.angles );
|
clone forceteleport(grenade.origin, grenade.angles);
|
||||||
clone thread hide_owner( self );
|
clone thread hide_owner(self);
|
||||||
grenade thread proximity_detonate( self );
|
grenade thread proximity_detonate(self);
|
||||||
clone show();
|
clone show();
|
||||||
clone setinvisibletoall();
|
clone setinvisibletoall();
|
||||||
clone setvisibletoteam( level.zombie_team );
|
clone setvisibletoteam(level.zombie_team);
|
||||||
}
|
}
|
||||||
|
|
||||||
grenade resetmissiledetonationtime();
|
grenade resetmissiledetonationtime();
|
||||||
playfxontag( level._effect["monkey_glow"], model, "origin_animate_jnt" );
|
playfxontag(level._effect["monkey_glow"], model, "origin_animate_jnt");
|
||||||
valid_poi = check_point_in_enabled_zone( grenade.origin, undefined, undefined );
|
valid_poi = check_point_in_enabled_zone(grenade.origin, undefined, undefined);
|
||||||
|
|
||||||
if ( isdefined( level.check_valid_poi ) )
|
if (isdefined(level.check_valid_poi))
|
||||||
valid_poi = grenade [[ level.check_valid_poi ]]( valid_poi );
|
valid_poi = grenade [[ level.check_valid_poi ]](valid_poi);
|
||||||
|
|
||||||
if ( valid_poi )
|
if (valid_poi)
|
||||||
{
|
{
|
||||||
grenade create_zombie_point_of_interest( max_attract_dist, num_attractors, 10000 );
|
grenade create_zombie_point_of_interest(max_attract_dist, num_attractors, 10000);
|
||||||
grenade.attract_to_origin = 1;
|
grenade.attract_to_origin = 1;
|
||||||
grenade thread create_zombie_point_of_interest_attractor_positions( 4, attract_dist_diff );
|
grenade thread create_zombie_point_of_interest_attractor_positions(4, attract_dist_diff);
|
||||||
grenade thread wait_for_attractor_positions_complete();
|
grenade thread wait_for_attractor_positions_complete();
|
||||||
grenade thread do_monkey_sound( model, info );
|
grenade thread do_monkey_sound(model, info);
|
||||||
level.cymbal_monkeys[level.cymbal_monkeys.size] = grenade;
|
level.cymbal_monkeys[level.cymbal_monkeys.size] = grenade;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
grenade.script_noteworthy = undefined;
|
grenade.script_noteworthy = undefined;
|
||||||
self thread grenade_stolen_by_sam( grenade, model, clone );
|
self thread grenade_stolen_by_sam(grenade, model, clone);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
grenade.script_noteworthy = undefined;
|
grenade.script_noteworthy = undefined;
|
||||||
self thread grenade_stolen_by_sam( grenade, model, clone );
|
self thread grenade_stolen_by_sam(grenade, model, clone);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
grenade_stolen_by_sam( ent_grenade, ent_model, ent_actor )
|
grenade_stolen_by_sam(ent_grenade, ent_model, ent_actor)
|
||||||
{
|
{
|
||||||
if ( !isdefined( ent_model ) )
|
if (!isdefined(ent_model))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
direction = ent_model.origin;
|
direction = ent_model.origin;
|
||||||
direction = ( direction[1], direction[0], 0 );
|
direction = (direction[1], direction[0], 0);
|
||||||
|
|
||||||
if ( direction[1] < 0 || direction[0] > 0 && direction[1] > 0 )
|
if (direction[1] < 0 || direction[0] > 0 && direction[1] > 0)
|
||||||
direction = ( direction[0], direction[1] * -1, 0 );
|
direction = (direction[0], direction[1] * -1, 0);
|
||||||
else if ( direction[0] < 0 )
|
else if (direction[0] < 0)
|
||||||
direction = ( direction[0] * -1, direction[1], 0 );
|
direction = (direction[0] * -1, direction[1], 0);
|
||||||
|
|
||||||
self playlocalsound( level.zmb_laugh_alias );
|
self playlocalsound(level.zmb_laugh_alias);
|
||||||
|
|
||||||
playfxontag( level._effect["grenade_samantha_steal"], ent_model, "tag_origin" );
|
playfxontag(level._effect["grenade_samantha_steal"], ent_model, "tag_origin");
|
||||||
ent_model movez( 60, 1.0, 0.25, 0.25 );
|
ent_model movez(60, 1.0, 0.25, 0.25);
|
||||||
ent_model vibrate( direction, 1.5, 2.5, 1.0 );
|
ent_model vibrate(direction, 1.5, 2.5, 1.0);
|
||||||
|
|
||||||
ent_model waittill( "movedone" );
|
ent_model waittill("movedone");
|
||||||
|
|
||||||
if ( isdefined( self.damagearea ) )
|
if (isdefined(self.damagearea))
|
||||||
self.damagearea delete();
|
self.damagearea delete();
|
||||||
|
|
||||||
ent_model delete();
|
ent_model delete();
|
||||||
|
|
||||||
if ( isdefined( ent_actor ) )
|
if (isdefined(ent_actor))
|
||||||
ent_actor delete();
|
ent_actor delete();
|
||||||
|
|
||||||
if ( isdefined( ent_grenade ) )
|
if (isdefined(ent_grenade))
|
||||||
{
|
{
|
||||||
if ( isdefined( ent_grenade.damagearea ) )
|
if (isdefined(ent_grenade.damagearea))
|
||||||
ent_grenade.damagearea delete();
|
ent_grenade.damagearea delete();
|
||||||
|
|
||||||
ent_grenade delete();
|
ent_grenade delete();
|
||||||
|
@ -7,56 +7,56 @@ emp_detonate(grenade)
|
|||||||
{
|
{
|
||||||
grenade_owner = undefined;
|
grenade_owner = undefined;
|
||||||
|
|
||||||
if ( isDefined( grenade.owner ) )
|
if (isDefined(grenade.owner))
|
||||||
{
|
{
|
||||||
grenade_owner = grenade.owner;
|
grenade_owner = grenade.owner;
|
||||||
}
|
}
|
||||||
|
|
||||||
grenade waittill( "explode", grenade_origin );
|
grenade waittill("explode", grenade_origin);
|
||||||
|
|
||||||
emp_radius = level.zombie_vars[ "emp_perk_off_range" ];
|
emp_radius = level.zombie_vars[ "emp_perk_off_range" ];
|
||||||
emp_time = level.zombie_vars[ "emp_perk_off_time" ];
|
emp_time = level.zombie_vars[ "emp_perk_off_time" ];
|
||||||
origin = grenade_origin;
|
origin = grenade_origin;
|
||||||
|
|
||||||
if ( !isDefined( origin ) )
|
if (!isDefined(origin))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
level notify( "emp_detonate", origin, emp_radius );
|
level notify("emp_detonate", origin, emp_radius);
|
||||||
self thread emp_detonate_zombies( grenade_origin, grenade_owner );
|
self thread emp_detonate_zombies(grenade_origin, grenade_owner);
|
||||||
|
|
||||||
if ( isDefined( level.custom_emp_detonate ) )
|
if (isDefined(level.custom_emp_detonate))
|
||||||
{
|
{
|
||||||
thread [[ level.custom_emp_detonate ]]( grenade_origin );
|
thread [[ level.custom_emp_detonate ]](grenade_origin);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( grenade_owner ) )
|
if (isDefined(grenade_owner))
|
||||||
{
|
{
|
||||||
grenade_owner thread destroyequipment( origin, emp_radius );
|
grenade_owner thread destroyequipment(origin, emp_radius);
|
||||||
}
|
}
|
||||||
|
|
||||||
emp_players( origin, emp_radius, grenade_owner );
|
emp_players(origin, emp_radius, grenade_owner);
|
||||||
disabled_list = maps\mp\zombies\_zm_power::change_power_in_radius( -1, origin, emp_radius );
|
disabled_list = maps\mp\zombies\_zm_power::change_power_in_radius(-1, origin, emp_radius);
|
||||||
|
|
||||||
wait emp_time;
|
wait emp_time;
|
||||||
|
|
||||||
maps\mp\zombies\_zm_power::revert_power_to_list( 1, origin, emp_radius, disabled_list );
|
maps\mp\zombies\_zm_power::revert_power_to_list(1, origin, emp_radius, disabled_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
emp_detonate_zombies( grenade_origin, grenade_owner )
|
emp_detonate_zombies(grenade_origin, grenade_owner)
|
||||||
{
|
{
|
||||||
zombies = get_array_of_closest( grenade_origin, getaispeciesarray( level.zombie_team, "all" ), undefined, undefined, level.zombie_vars["emp_stun_range"] );
|
zombies = get_array_of_closest(grenade_origin, getaispeciesarray(level.zombie_team, "all"), undefined, undefined, level.zombie_vars["emp_stun_range"]);
|
||||||
|
|
||||||
if ( !isdefined( zombies ) )
|
if (!isdefined(zombies))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for ( i = 0; i < zombies.size; i++ )
|
for (i = 0; i < zombies.size; i++)
|
||||||
{
|
{
|
||||||
if ( !isdefined( zombies[i] ) || isdefined( zombies[i].ignore_inert ) && zombies[i].ignore_inert )
|
if (!isdefined(zombies[i]) || isdefined(zombies[i].ignore_inert) && zombies[i].ignore_inert)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( is_true( zombies[i].in_the_ground ) )
|
if (is_true(zombies[i].in_the_ground))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
zombies[i].becoming_inert = 1;
|
zombies[i].becoming_inert = 1;
|
||||||
@ -64,12 +64,12 @@ emp_detonate_zombies( grenade_origin, grenade_owner )
|
|||||||
|
|
||||||
stunned = 0;
|
stunned = 0;
|
||||||
|
|
||||||
for ( i = 0; i < zombies.size; i++ )
|
for (i = 0; i < zombies.size; i++)
|
||||||
{
|
{
|
||||||
if ( !isdefined( zombies[i] ) || isdefined( zombies[i].ignore_inert ) && zombies[i].ignore_inert )
|
if (!isdefined(zombies[i]) || isdefined(zombies[i].ignore_inert) && zombies[i].ignore_inert)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( is_true( zombies[i].in_the_ground ) )
|
if (is_true(zombies[i].in_the_ground))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
stunned++;
|
stunned++;
|
||||||
@ -77,67 +77,67 @@ emp_detonate_zombies( grenade_origin, grenade_owner )
|
|||||||
wait 0.05;
|
wait 0.05;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( stunned >= 10 && isdefined( grenade_owner ) )
|
if (stunned >= 10 && isdefined(grenade_owner))
|
||||||
grenade_owner notify( "the_lights_of_their_eyes" );
|
grenade_owner notify("the_lights_of_their_eyes");
|
||||||
}
|
}
|
||||||
|
|
||||||
destroyequipment( origin, radius )
|
destroyequipment(origin, radius)
|
||||||
{
|
{
|
||||||
grenades = getentarray( "grenade", "classname" );
|
grenades = getentarray("grenade", "classname");
|
||||||
rsquared = radius * radius;
|
rsquared = radius * radius;
|
||||||
|
|
||||||
for ( i = 0; i < grenades.size; i++ )
|
for (i = 0; i < grenades.size; i++)
|
||||||
{
|
{
|
||||||
item = grenades[i];
|
item = grenades[i];
|
||||||
|
|
||||||
if ( distancesquared( origin, item.origin ) > rsquared )
|
if (distancesquared(origin, item.origin) > rsquared)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( !isdefined( item.name ) )
|
if (!isdefined(item.name))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( !is_offhand_weapon( item.name ) )
|
if (!is_offhand_weapon(item.name))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
watcher = item.owner getwatcherforweapon( item.name );
|
watcher = item.owner getwatcherforweapon(item.name);
|
||||||
|
|
||||||
if ( !isdefined( watcher ) )
|
if (!isdefined(watcher))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
watcher thread waitanddetonate( item, 0.0, self, "emp_grenade_zm" );
|
watcher thread waitanddetonate(item, 0.0, self, "emp_grenade_zm");
|
||||||
}
|
}
|
||||||
|
|
||||||
equipment = maps\mp\zombies\_zm_equipment::get_destructible_equipment_list();
|
equipment = maps\mp\zombies\_zm_equipment::get_destructible_equipment_list();
|
||||||
|
|
||||||
for ( i = 0; i < equipment.size; i++ )
|
for (i = 0; i < equipment.size; i++)
|
||||||
{
|
{
|
||||||
item = equipment[i];
|
item = equipment[i];
|
||||||
|
|
||||||
if ( !isdefined( item ) )
|
if (!isdefined(item))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( distancesquared( origin, item.origin ) > rsquared )
|
if (distancesquared(origin, item.origin) > rsquared)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
waitanddamage( item, 1505 );
|
waitanddamage(item, 1505);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
waitanddamage( object, damage )
|
waitanddamage(object, damage)
|
||||||
{
|
{
|
||||||
object endon( "death" );
|
object endon("death");
|
||||||
object endon( "hacked" );
|
object endon("hacked");
|
||||||
object.stun_fx = 1;
|
object.stun_fx = 1;
|
||||||
|
|
||||||
if ( isdefined( level._equipment_emp_destroy_fx ) )
|
if (isdefined(level._equipment_emp_destroy_fx))
|
||||||
playfx( level._equipment_emp_destroy_fx, object.origin + vectorscale( ( 0, 0, 1 ), 5.0 ), ( 0, randomfloat( 360 ), 0 ) );
|
playfx(level._equipment_emp_destroy_fx, object.origin + vectorscale((0, 0, 1), 5.0), (0, randomfloat(360), 0));
|
||||||
|
|
||||||
delay = 1.1;
|
delay = 1.1;
|
||||||
|
|
||||||
if ( delay )
|
if (delay)
|
||||||
wait( delay );
|
wait(delay);
|
||||||
|
|
||||||
object thread scripts\zm\replaced\_zm_equipment::item_damage( damage );
|
object thread scripts\zm\replaced\_zm_equipment::item_damage(damage);
|
||||||
}
|
}
|
||||||
|
|
||||||
emp_players(origin, radius, owner)
|
emp_players(origin, radius, owner)
|
||||||
@ -152,7 +152,7 @@ emp_players(origin, radius, owner)
|
|||||||
if (is_player_valid(player) || player maps\mp\zombies\_zm_laststand::player_is_in_laststand())
|
if (is_player_valid(player) || player maps\mp\zombies\_zm_laststand::player_is_in_laststand())
|
||||||
{
|
{
|
||||||
time = 30;
|
time = 30;
|
||||||
player shellshock( "frag_grenade_mp", 2 );
|
player shellshock("frag_grenade_mp", 2);
|
||||||
player thread player_perk_pause_and_unpause_all_perks(time);
|
player thread player_perk_pause_and_unpause_all_perks(time);
|
||||||
player thread player_emp_fx(time);
|
player thread player_emp_fx(time);
|
||||||
}
|
}
|
||||||
@ -171,7 +171,7 @@ player_emp_fx(time)
|
|||||||
|
|
||||||
for (i = 0; i < time; i += wait_time)
|
for (i = 0; i < time; i += wait_time)
|
||||||
{
|
{
|
||||||
playfxontag( level._effect[ "elec_torso" ], self, "J_SpineLower" );
|
playfxontag(level._effect[ "elec_torso" ], self, "J_SpineLower");
|
||||||
|
|
||||||
wait wait_time;
|
wait wait_time;
|
||||||
}
|
}
|
||||||
@ -209,11 +209,11 @@ player_perk_pause_all_perks_acquired(time)
|
|||||||
|
|
||||||
player_perk_pause_all_perks()
|
player_perk_pause_all_perks()
|
||||||
{
|
{
|
||||||
vending_triggers = getentarray( "zombie_vending", "targetname" );
|
vending_triggers = getentarray("zombie_vending", "targetname");
|
||||||
|
|
||||||
foreach ( trigger in vending_triggers )
|
foreach (trigger in vending_triggers)
|
||||||
{
|
{
|
||||||
self player_perk_pause( trigger.script_noteworthy );
|
self player_perk_pause(trigger.script_noteworthy);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -221,59 +221,59 @@ player_perk_unpause_all_perks()
|
|||||||
{
|
{
|
||||||
self notify("player_perk_pause_timeout");
|
self notify("player_perk_pause_timeout");
|
||||||
|
|
||||||
vending_triggers = getentarray( "zombie_vending", "targetname" );
|
vending_triggers = getentarray("zombie_vending", "targetname");
|
||||||
|
|
||||||
foreach ( trigger in vending_triggers )
|
foreach (trigger in vending_triggers)
|
||||||
{
|
{
|
||||||
self player_perk_unpause( trigger.script_noteworthy );
|
self player_perk_unpause(trigger.script_noteworthy);
|
||||||
}
|
}
|
||||||
|
|
||||||
self.disabled_perks = [];
|
self.disabled_perks = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
player_perk_pause( perk )
|
player_perk_pause(perk)
|
||||||
{
|
{
|
||||||
if ( perk == "Pack_A_Punch" || perk == "specialty_weapupgrade" )
|
if (perk == "Pack_A_Punch" || perk == "specialty_weapupgrade")
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isDefined( self.disabled_perks ) )
|
if (!isDefined(self.disabled_perks))
|
||||||
{
|
{
|
||||||
self.disabled_perks = [];
|
self.disabled_perks = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !is_true( self.disabled_perks[ perk ] ) && self hasperk( perk ) )
|
if (!is_true(self.disabled_perks[ perk ]) && self hasperk(perk))
|
||||||
{
|
{
|
||||||
self.disabled_perks[ perk ] = 1;
|
self.disabled_perks[ perk ] = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self.disabled_perks[ perk ] )
|
if (self.disabled_perks[ perk ])
|
||||||
{
|
{
|
||||||
self unsetperk( perk );
|
self unsetperk(perk);
|
||||||
self maps\mp\zombies\_zm_perks::set_perk_clientfield( perk, 2 );
|
self maps\mp\zombies\_zm_perks::set_perk_clientfield(perk, 2);
|
||||||
|
|
||||||
if ( perk == "specialty_armorvest" || perk == "specialty_armorvest_upgrade" )
|
if (perk == "specialty_armorvest" || perk == "specialty_armorvest_upgrade")
|
||||||
{
|
{
|
||||||
self setmaxhealth( self.premaxhealth );
|
self setmaxhealth(self.premaxhealth);
|
||||||
|
|
||||||
if ( self.health > self.maxhealth )
|
if (self.health > self.maxhealth)
|
||||||
{
|
{
|
||||||
self.health = self.maxhealth;
|
self.health = self.maxhealth;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( perk == "specialty_additionalprimaryweapon" || perk == "specialty_additionalprimaryweapon_upgrade" )
|
if (perk == "specialty_additionalprimaryweapon" || perk == "specialty_additionalprimaryweapon_upgrade")
|
||||||
{
|
{
|
||||||
self maps\mp\zombies\_zm::take_additionalprimaryweapon();
|
self maps\mp\zombies\_zm::take_additionalprimaryweapon();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( issubstr( perk, "specialty_scavenger" ) )
|
if (issubstr(perk, "specialty_scavenger"))
|
||||||
{
|
{
|
||||||
self.hasperkspecialtytombstone = 0;
|
self.hasperkspecialtytombstone = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( level._custom_perks[ perk ] ) && isDefined( level._custom_perks[ perk ].player_thread_take ) )
|
if (isDefined(level._custom_perks[ perk ]) && isDefined(level._custom_perks[ perk ].player_thread_take))
|
||||||
{
|
{
|
||||||
self thread [[ level._custom_perks[ perk ].player_thread_take ]]();
|
self thread [[ level._custom_perks[ perk ].player_thread_take ]]();
|
||||||
}
|
}
|
||||||
@ -282,32 +282,32 @@ player_perk_pause( perk )
|
|||||||
self notify("perk_lost");
|
self notify("perk_lost");
|
||||||
}
|
}
|
||||||
|
|
||||||
player_perk_unpause( perk )
|
player_perk_unpause(perk)
|
||||||
{
|
{
|
||||||
if ( !isDefined( perk ) )
|
if (!isDefined(perk))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( perk == "Pack_A_Punch" )
|
if (perk == "Pack_A_Punch")
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( self.disabled_perks ) && is_true( self.disabled_perks[ perk ] ) )
|
if (isDefined(self.disabled_perks) && is_true(self.disabled_perks[ perk ]))
|
||||||
{
|
{
|
||||||
self.disabled_perks[ perk ] = undefined;
|
self.disabled_perks[ perk ] = undefined;
|
||||||
self maps\mp\zombies\_zm_perks::set_perk_clientfield( perk, 1 );
|
self maps\mp\zombies\_zm_perks::set_perk_clientfield(perk, 1);
|
||||||
self setperk( perk );
|
self setperk(perk);
|
||||||
|
|
||||||
if ( issubstr( perk, "specialty_scavenger" ) )
|
if (issubstr(perk, "specialty_scavenger"))
|
||||||
{
|
{
|
||||||
self.hasperkspecialtytombstone = 1;
|
self.hasperkspecialtytombstone = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
self maps\mp\zombies\_zm_perks::perk_set_max_health_if_jugg( perk, 0, 0 );
|
self maps\mp\zombies\_zm_perks::perk_set_max_health_if_jugg(perk, 0, 0);
|
||||||
|
|
||||||
if ( isDefined( level._custom_perks[ perk ] ) && isDefined( level._custom_perks[ perk ].player_thread_give ) )
|
if (isDefined(level._custom_perks[ perk ]) && isDefined(level._custom_perks[ perk ].player_thread_give))
|
||||||
{
|
{
|
||||||
self thread [[ level._custom_perks[ perk ].player_thread_give ]]();
|
self thread [[ level._custom_perks[ perk ].player_thread_give ]]();
|
||||||
}
|
}
|
||||||
|
@ -5,22 +5,22 @@
|
|||||||
|
|
||||||
watch_overheat()
|
watch_overheat()
|
||||||
{
|
{
|
||||||
self endon( "death_or_disconnect" );
|
self endon("death_or_disconnect");
|
||||||
self endon( "weapon_change" );
|
self endon("weapon_change");
|
||||||
|
|
||||||
while ( true )
|
while (true)
|
||||||
{
|
{
|
||||||
if ( self getcurrentweapon() == "jetgun_zm" )
|
if (self getcurrentweapon() == "jetgun_zm")
|
||||||
{
|
{
|
||||||
overheating = self isweaponoverheating( 0 );
|
overheating = self isweaponoverheating(0);
|
||||||
heat = self isweaponoverheating( 1 );
|
heat = self isweaponoverheating(1);
|
||||||
self.jetgun_overheating = overheating;
|
self.jetgun_overheating = overheating;
|
||||||
self.jetgun_heatval = heat;
|
self.jetgun_heatval = heat;
|
||||||
|
|
||||||
if ( overheating )
|
if (overheating)
|
||||||
self notify( "jetgun_overheated" );
|
self notify("jetgun_overheated");
|
||||||
|
|
||||||
if ( heat > 75 )
|
if (heat > 75)
|
||||||
self thread play_overheat_fx();
|
self thread play_overheat_fx();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -30,40 +30,40 @@ watch_overheat()
|
|||||||
|
|
||||||
jetgun_firing()
|
jetgun_firing()
|
||||||
{
|
{
|
||||||
if ( !isdefined( self.jetsound_ent ) )
|
if (!isdefined(self.jetsound_ent))
|
||||||
{
|
{
|
||||||
self.jetsound_ent = spawn( "script_origin", self.origin );
|
self.jetsound_ent = spawn("script_origin", self.origin);
|
||||||
self.jetsound_ent linkto( self, "tag_origin" );
|
self.jetsound_ent linkto(self, "tag_origin");
|
||||||
}
|
}
|
||||||
|
|
||||||
jetgun_fired = 0;
|
jetgun_fired = 0;
|
||||||
|
|
||||||
if ( self is_jetgun_firing() && jetgun_fired == 0 )
|
if (self is_jetgun_firing() && jetgun_fired == 0)
|
||||||
{
|
{
|
||||||
self.jetsound_ent playloopsound( "wpn_jetgun_effect_plr_loop", 0.8 );
|
self.jetsound_ent playloopsound("wpn_jetgun_effect_plr_loop", 0.8);
|
||||||
self.jetsound_ent playsound( "wpn_jetgun_effect_plr_start" );
|
self.jetsound_ent playsound("wpn_jetgun_effect_plr_start");
|
||||||
self notify( "jgun_snd" );
|
self notify("jgun_snd");
|
||||||
}
|
}
|
||||||
|
|
||||||
while ( self is_jetgun_firing() )
|
while (self is_jetgun_firing())
|
||||||
{
|
{
|
||||||
jetgun_fired = 1;
|
jetgun_fired = 1;
|
||||||
self thread jetgun_fired();
|
self thread jetgun_fired();
|
||||||
view_pos = self gettagorigin( "tag_flash" );
|
view_pos = self gettagorigin("tag_flash");
|
||||||
view_angles = self gettagangles( "tag_flash" );
|
view_angles = self gettagangles("tag_flash");
|
||||||
|
|
||||||
if ( self get_jetgun_engine_direction() < 0 )
|
if (self get_jetgun_engine_direction() < 0)
|
||||||
playfx( level._effect["jetgun_smoke_cloud"], view_pos - self getplayerviewheight(), anglestoforward( view_angles ), anglestoup( view_angles ) );
|
playfx(level._effect["jetgun_smoke_cloud"], view_pos - self getplayerviewheight(), anglestoforward(view_angles), anglestoup(view_angles));
|
||||||
else
|
else
|
||||||
playfx( level._effect["jetgun_smoke_cloud"], view_pos - self getplayerviewheight(), anglestoforward( view_angles ) * -1, anglestoup( view_angles ) );
|
playfx(level._effect["jetgun_smoke_cloud"], view_pos - self getplayerviewheight(), anglestoforward(view_angles) * -1, anglestoup(view_angles));
|
||||||
|
|
||||||
wait 0.25;
|
wait 0.25;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( jetgun_fired == 1 )
|
if (jetgun_fired == 1)
|
||||||
{
|
{
|
||||||
self.jetsound_ent stoploopsound( 0.5 );
|
self.jetsound_ent stoploopsound(0.5);
|
||||||
self.jetsound_ent playsound( "wpn_jetgun_effect_plr_end" );
|
self.jetsound_ent playsound("wpn_jetgun_effect_plr_end");
|
||||||
self thread sound_ent_cleanup();
|
self thread sound_ent_cleanup();
|
||||||
jetgun_fired = 0;
|
jetgun_fired = 0;
|
||||||
}
|
}
|
||||||
@ -71,10 +71,10 @@ jetgun_firing()
|
|||||||
|
|
||||||
sound_ent_cleanup()
|
sound_ent_cleanup()
|
||||||
{
|
{
|
||||||
self endon( "jgun_snd" );
|
self endon("jgun_snd");
|
||||||
wait 4;
|
wait 4;
|
||||||
|
|
||||||
if ( isdefined( self.jetsound_ent ) )
|
if (isdefined(self.jetsound_ent))
|
||||||
{
|
{
|
||||||
self.jetsound_ent delete();
|
self.jetsound_ent delete();
|
||||||
}
|
}
|
||||||
@ -87,152 +87,152 @@ is_jetgun_firing()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return abs( self get_jetgun_engine_direction() ) > 0.2;
|
return abs(self get_jetgun_engine_direction()) > 0.2;
|
||||||
}
|
}
|
||||||
|
|
||||||
jetgun_check_enemies_in_range( zombie, view_pos, drag_range_squared, gib_range_squared, grind_range_squared, cylinder_radius_squared, forward_view_angles, end_pos, invert )
|
jetgun_check_enemies_in_range(zombie, view_pos, drag_range_squared, gib_range_squared, grind_range_squared, cylinder_radius_squared, forward_view_angles, end_pos, invert)
|
||||||
{
|
{
|
||||||
if ( !isDefined( zombie ) )
|
if (!isDefined(zombie))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( zombie enemy_killed_by_jetgun() )
|
if (zombie enemy_killed_by_jetgun())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( zombie.is_avogadro ) && zombie.is_avogadro )
|
if (isDefined(zombie.is_avogadro) && zombie.is_avogadro)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( zombie.isdog ) && zombie.isdog )
|
if (isDefined(zombie.isdog) && zombie.isdog)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( zombie.isscreecher ) && zombie.isscreecher )
|
if (isDefined(zombie.isscreecher) && zombie.isscreecher)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( self.animname ) && self.animname == "quad_zombie" )
|
if (isDefined(self.animname) && self.animname == "quad_zombie")
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
test_origin = zombie getcentroid();
|
test_origin = zombie getcentroid();
|
||||||
test_range_squared = distancesquared( view_pos, test_origin );
|
test_range_squared = distancesquared(view_pos, test_origin);
|
||||||
|
|
||||||
if ( test_range_squared > drag_range_squared )
|
if (test_range_squared > drag_range_squared)
|
||||||
{
|
{
|
||||||
zombie jetgun_debug_print( "range", ( 1, 0, 1 ) );
|
zombie jetgun_debug_print("range", (1, 0, 1));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
normal = vectornormalize( test_origin - view_pos );
|
normal = vectornormalize(test_origin - view_pos);
|
||||||
dot = vectordot( forward_view_angles, normal );
|
dot = vectordot(forward_view_angles, normal);
|
||||||
|
|
||||||
if ( abs( dot ) < 0.7 )
|
if (abs(dot) < 0.7)
|
||||||
{
|
{
|
||||||
zombie jetgun_debug_print( "dot", ( 1, 0, 1 ) );
|
zombie jetgun_debug_print("dot", (1, 0, 1));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
radial_origin = pointonsegmentnearesttopoint( view_pos, end_pos, test_origin );
|
radial_origin = pointonsegmentnearesttopoint(view_pos, end_pos, test_origin);
|
||||||
|
|
||||||
if ( distancesquared( test_origin, radial_origin ) > cylinder_radius_squared )
|
if (distancesquared(test_origin, radial_origin) > cylinder_radius_squared)
|
||||||
{
|
{
|
||||||
zombie jetgun_debug_print( "cylinder", ( 1, 0, 1 ) );
|
zombie jetgun_debug_print("cylinder", (1, 0, 1));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( zombie damageconetrace( view_pos, self ) == 0 )
|
if (zombie damageconetrace(view_pos, self) == 0)
|
||||||
{
|
{
|
||||||
zombie jetgun_debug_print( "cone", ( 1, 0, 1 ) );
|
zombie jetgun_debug_print("cone", (1, 0, 1));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( test_range_squared < grind_range_squared )
|
if (test_range_squared < grind_range_squared)
|
||||||
{
|
{
|
||||||
level.jetgun_fling_enemies[ level.jetgun_fling_enemies.size ] = zombie;
|
level.jetgun_fling_enemies[ level.jetgun_fling_enemies.size ] = zombie;
|
||||||
level.jetgun_grind_enemies[ level.jetgun_grind_enemies.size ] = dot < 0;
|
level.jetgun_grind_enemies[ level.jetgun_grind_enemies.size ] = dot < 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( !isDefined( zombie.ai_state ) || zombie.ai_state != "find_flesh" && zombie.ai_state != "zombieMoveOnBus" )
|
if (!isDefined(zombie.ai_state) || zombie.ai_state != "find_flesh" && zombie.ai_state != "zombieMoveOnBus")
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( zombie.in_the_ground ) && zombie.in_the_ground )
|
if (isDefined(zombie.in_the_ground) && zombie.in_the_ground)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( test_range_squared < drag_range_squared && dot > 0 )
|
if (test_range_squared < drag_range_squared && dot > 0)
|
||||||
{
|
{
|
||||||
level.jetgun_drag_enemies[ level.jetgun_drag_enemies.size ] = zombie;
|
level.jetgun_drag_enemies[ level.jetgun_drag_enemies.size ] = zombie;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
jetgun_grind_zombie( player )
|
jetgun_grind_zombie(player)
|
||||||
{
|
{
|
||||||
player endon( "death" );
|
player endon("death");
|
||||||
player endon( "disconnect" );
|
player endon("disconnect");
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
|
|
||||||
if ( !isDefined( self.jetgun_grind ) )
|
if (!isDefined(self.jetgun_grind))
|
||||||
{
|
{
|
||||||
self.jetgun_grind = 1;
|
self.jetgun_grind = 1;
|
||||||
self notify( "grinding" );
|
self notify("grinding");
|
||||||
|
|
||||||
if ( is_mature() )
|
if (is_mature())
|
||||||
{
|
{
|
||||||
if ( isDefined( level._effect[ "zombie_guts_explosion" ] ) )
|
if (isDefined(level._effect[ "zombie_guts_explosion" ]))
|
||||||
{
|
{
|
||||||
playfx( level._effect[ "zombie_guts_explosion" ], self gettagorigin( "J_SpineLower" ) );
|
playfx(level._effect[ "zombie_guts_explosion" ], self gettagorigin("J_SpineLower"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self.nodeathragdoll = 1;
|
self.nodeathragdoll = 1;
|
||||||
self.handle_death_notetracks = ::jetgun_handle_death_notetracks;
|
self.handle_death_notetracks = ::jetgun_handle_death_notetracks;
|
||||||
player maps\mp\zombies\_zm_score::add_to_player_score(50 * maps\mp\zombies\_zm_score::get_points_multiplier(player));
|
player maps\mp\zombies\_zm_score::add_to_player_score(50 * maps\mp\zombies\_zm_score::get_points_multiplier(player));
|
||||||
self dodamage( self.health + 666, player.origin, player );
|
self dodamage(self.health + 666, player.origin, player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
handle_overheated_jetgun()
|
handle_overheated_jetgun()
|
||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
|
|
||||||
while ( 1 )
|
while (1)
|
||||||
{
|
{
|
||||||
self waittill( "jetgun_overheated" );
|
self waittill("jetgun_overheated");
|
||||||
|
|
||||||
if ( self getcurrentweapon() == "jetgun_zm" )
|
if (self getcurrentweapon() == "jetgun_zm")
|
||||||
{
|
{
|
||||||
weapon_org = self gettagorigin( "tag_weapon" );
|
weapon_org = self gettagorigin("tag_weapon");
|
||||||
|
|
||||||
if ( isDefined( level.explode_overheated_jetgun ) && level.explode_overheated_jetgun )
|
if (isDefined(level.explode_overheated_jetgun) && level.explode_overheated_jetgun)
|
||||||
{
|
{
|
||||||
self thread maps\mp\zombies\_zm_equipment::equipment_release( "jetgun_zm" );
|
self thread maps\mp\zombies\_zm_equipment::equipment_release("jetgun_zm");
|
||||||
pcount = get_players().size;
|
pcount = get_players().size;
|
||||||
pickup_time = 360 / pcount;
|
pickup_time = 360 / pcount;
|
||||||
maps\mp\zombies\_zm_buildables::player_explode_buildable( "jetgun_zm", weapon_org, 250, 1, pickup_time );
|
maps\mp\zombies\_zm_buildables::player_explode_buildable("jetgun_zm", weapon_org, 250, 1, pickup_time);
|
||||||
}
|
}
|
||||||
else if ( isDefined( level.unbuild_overheated_jetgun ) && level.unbuild_overheated_jetgun )
|
else if (isDefined(level.unbuild_overheated_jetgun) && level.unbuild_overheated_jetgun)
|
||||||
{
|
{
|
||||||
self thread maps\mp\zombies\_zm_equipment::equipment_release( "jetgun_zm" );
|
self thread maps\mp\zombies\_zm_equipment::equipment_release("jetgun_zm");
|
||||||
maps\mp\zombies\_zm_buildables::unbuild_buildable( "jetgun_zm", 1 );
|
maps\mp\zombies\_zm_buildables::unbuild_buildable("jetgun_zm", 1);
|
||||||
self dodamage( 50, weapon_org );
|
self dodamage(50, weapon_org);
|
||||||
}
|
}
|
||||||
else if ( isDefined( level.take_overheated_jetgun ) && level.take_overheated_jetgun )
|
else if (isDefined(level.take_overheated_jetgun) && level.take_overheated_jetgun)
|
||||||
{
|
{
|
||||||
self thread maps\mp\zombies\_zm_equipment::equipment_release( "jetgun_zm" );
|
self thread maps\mp\zombies\_zm_equipment::equipment_release("jetgun_zm");
|
||||||
self dodamage( 50, weapon_org );
|
self dodamage(50, weapon_org);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -241,7 +241,7 @@ handle_overheated_jetgun()
|
|||||||
|
|
||||||
self.jetgun_overheating = undefined;
|
self.jetgun_overheating = undefined;
|
||||||
self.jetgun_heatval = undefined;
|
self.jetgun_heatval = undefined;
|
||||||
self playsound( "wpn_jetgun_explo" );
|
self playsound("wpn_jetgun_explo");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,49 +13,49 @@
|
|||||||
|
|
||||||
monitor_melee_swipe()
|
monitor_melee_swipe()
|
||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
self notify( "stop_monitor_melee_swipe" );
|
self notify("stop_monitor_melee_swipe");
|
||||||
self endon( "stop_monitor_melee_swipe" );
|
self endon("stop_monitor_melee_swipe");
|
||||||
self endon( "bled_out" );
|
self endon("bled_out");
|
||||||
self endon( "gr_head_forced_bleed_out" );
|
self endon("gr_head_forced_bleed_out");
|
||||||
|
|
||||||
while ( true )
|
while (true)
|
||||||
{
|
{
|
||||||
while ( !self ismeleeing() )
|
while (!self ismeleeing())
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
|
||||||
if ( self getcurrentweapon() == level.riotshield_name )
|
if (self getcurrentweapon() == level.riotshield_name)
|
||||||
{
|
{
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
range_mod = 1;
|
range_mod = 1;
|
||||||
self setclientfield( "oneinchpunch_impact", 1 );
|
self setclientfield("oneinchpunch_impact", 1);
|
||||||
wait_network_frame();
|
wait_network_frame();
|
||||||
self setclientfield( "oneinchpunch_impact", 0 );
|
self setclientfield("oneinchpunch_impact", 0);
|
||||||
v_punch_effect_fwd = anglestoforward( self getplayerangles() );
|
v_punch_effect_fwd = anglestoforward(self getplayerangles());
|
||||||
v_punch_yaw = get2dyaw( ( 0, 0, 0 ), v_punch_effect_fwd );
|
v_punch_yaw = get2dyaw((0, 0, 0), v_punch_effect_fwd);
|
||||||
|
|
||||||
if ( isdefined( self.b_punch_upgraded ) && self.b_punch_upgraded && isdefined( self.str_punch_element ) && self.str_punch_element == "air" )
|
if (isdefined(self.b_punch_upgraded) && self.b_punch_upgraded && isdefined(self.str_punch_element) && self.str_punch_element == "air")
|
||||||
range_mod *= 2;
|
range_mod *= 2;
|
||||||
|
|
||||||
a_zombies = getaispeciesarray( level.zombie_team, "all" );
|
a_zombies = getaispeciesarray(level.zombie_team, "all");
|
||||||
a_zombies = get_array_of_closest( self.origin, a_zombies, undefined, undefined, 100 );
|
a_zombies = get_array_of_closest(self.origin, a_zombies, undefined, undefined, 100);
|
||||||
|
|
||||||
foreach ( zombie in a_zombies )
|
foreach (zombie in a_zombies)
|
||||||
{
|
{
|
||||||
if ( self is_player_facing( zombie, v_punch_yaw ) && distancesquared( self.origin, zombie.origin ) <= 4096 * range_mod )
|
if (self is_player_facing(zombie, v_punch_yaw) && distancesquared(self.origin, zombie.origin) <= 4096 * range_mod)
|
||||||
{
|
{
|
||||||
self thread zombie_punch_damage( zombie, 1 );
|
self thread zombie_punch_damage(zombie, 1);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self is_player_facing( zombie, v_punch_yaw ) )
|
if (self is_player_facing(zombie, v_punch_yaw))
|
||||||
self thread zombie_punch_damage( zombie, 0.5 );
|
self thread zombie_punch_damage(zombie, 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
while ( self ismeleeing() )
|
while (self ismeleeing())
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
@ -16,15 +16,15 @@
|
|||||||
init()
|
init()
|
||||||
{
|
{
|
||||||
maps\mp\zombies\_zm_riotshield::init();
|
maps\mp\zombies\_zm_riotshield::init();
|
||||||
set_zombie_var( "riotshield_cylinder_radius", 360 );
|
set_zombie_var("riotshield_cylinder_radius", 360);
|
||||||
set_zombie_var( "riotshield_fling_range", 90 );
|
set_zombie_var("riotshield_fling_range", 90);
|
||||||
set_zombie_var( "riotshield_gib_range", 90 );
|
set_zombie_var("riotshield_gib_range", 90);
|
||||||
set_zombie_var( "riotshield_gib_damage", 75 );
|
set_zombie_var("riotshield_gib_damage", 75);
|
||||||
set_zombie_var( "riotshield_knockdown_range", 90 );
|
set_zombie_var("riotshield_knockdown_range", 90);
|
||||||
set_zombie_var( "riotshield_knockdown_damage", 15 );
|
set_zombie_var("riotshield_knockdown_damage", 15);
|
||||||
set_zombie_var( "riotshield_hit_points", 2250 );
|
set_zombie_var("riotshield_hit_points", 2250);
|
||||||
set_zombie_var( "riotshield_fling_damage_shield", 100 );
|
set_zombie_var("riotshield_fling_damage_shield", 100);
|
||||||
set_zombie_var( "riotshield_knockdown_damage_shield", 15 );
|
set_zombie_var("riotshield_knockdown_damage_shield", 15);
|
||||||
level.riotshield_network_choke_count = 0;
|
level.riotshield_network_choke_count = 0;
|
||||||
level.riotshield_gib_refs = [];
|
level.riotshield_gib_refs = [];
|
||||||
level.riotshield_gib_refs[level.riotshield_gib_refs.size] = "guts";
|
level.riotshield_gib_refs[level.riotshield_gib_refs.size] = "guts";
|
||||||
@ -34,10 +34,10 @@ init()
|
|||||||
level.deployed_riotshield_damage_callback = ::deployed_damage_shield;
|
level.deployed_riotshield_damage_callback = ::deployed_damage_shield;
|
||||||
level.transferriotshield = ::transferriotshield;
|
level.transferriotshield = ::transferriotshield;
|
||||||
level.cantransferriotshield = ::cantransferriotshield;
|
level.cantransferriotshield = ::cantransferriotshield;
|
||||||
maps\mp\zombies\_zm_spawner::register_zombie_damage_callback( ::riotshield_zombie_damage_response );
|
maps\mp\zombies\_zm_spawner::register_zombie_damage_callback(::riotshield_zombie_damage_response);
|
||||||
maps\mp\zombies\_zm_equipment::register_equipment( "riotshield_zm", &"ZOMBIE_EQUIP_RIOTSHIELD_PICKUP_HINT_STRING", &"ZOMBIE_EQUIP_RIOTSHIELD_HOWTO", "riotshield_zm_icon", "riotshield", ::riotshield_activation_watcher_thread, undefined, ::dropshield, ::pickupshield );
|
maps\mp\zombies\_zm_equipment::register_equipment("riotshield_zm", &"ZOMBIE_EQUIP_RIOTSHIELD_PICKUP_HINT_STRING", &"ZOMBIE_EQUIP_RIOTSHIELD_HOWTO", "riotshield_zm_icon", "riotshield", ::riotshield_activation_watcher_thread, undefined, ::dropshield, ::pickupshield);
|
||||||
maps\mp\gametypes_zm\_weaponobjects::createretrievablehint( "riotshield", &"ZOMBIE_EQUIP_RIOTSHIELD_PICKUP_HINT_STRING" );
|
maps\mp\gametypes_zm\_weaponobjects::createretrievablehint("riotshield", &"ZOMBIE_EQUIP_RIOTSHIELD_PICKUP_HINT_STRING");
|
||||||
onplayerconnect_callback( ::onplayerconnect );
|
onplayerconnect_callback(::onplayerconnect);
|
||||||
}
|
}
|
||||||
|
|
||||||
onplayerconnect()
|
onplayerconnect()
|
||||||
@ -50,30 +50,30 @@ onplayerconnect()
|
|||||||
self thread player_watch_laststand();
|
self thread player_watch_laststand();
|
||||||
}
|
}
|
||||||
|
|
||||||
player_damage_shield( idamage, bheld )
|
player_damage_shield(idamage, bheld)
|
||||||
{
|
{
|
||||||
damagemax = level.zombie_vars["riotshield_hit_points"];
|
damagemax = level.zombie_vars["riotshield_hit_points"];
|
||||||
|
|
||||||
if ( !isdefined( self.shielddamagetaken ) )
|
if (!isdefined(self.shielddamagetaken))
|
||||||
self.shielddamagetaken = 0;
|
self.shielddamagetaken = 0;
|
||||||
|
|
||||||
self.shielddamagetaken += idamage;
|
self.shielddamagetaken += idamage;
|
||||||
|
|
||||||
if ( self.shielddamagetaken >= damagemax )
|
if (self.shielddamagetaken >= damagemax)
|
||||||
{
|
{
|
||||||
if ( bheld || !isdefined( self.shield_ent ) )
|
if (bheld || !isdefined(self.shield_ent))
|
||||||
{
|
{
|
||||||
self playrumbleonentity( "damage_heavy" );
|
self playrumbleonentity("damage_heavy");
|
||||||
earthquake( 1.0, 0.75, self.origin, 100 );
|
earthquake(1.0, 0.75, self.origin, 100);
|
||||||
self playsound( "wpn_riotshield_zm_destroy" );
|
self playsound("wpn_riotshield_zm_destroy");
|
||||||
self thread player_take_riotshield();
|
self thread player_take_riotshield();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
shield_origin = self.shield_ent.origin;
|
shield_origin = self.shield_ent.origin;
|
||||||
playsoundatposition( "fly_riotshield_zm_impact_zombies", shield_origin );
|
playsoundatposition("fly_riotshield_zm_impact_zombies", shield_origin);
|
||||||
|
|
||||||
if ( is_true( self.shield_ent.destroy_begun ) )
|
if (is_true(self.shield_ent.destroy_begun))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
self.shield_ent.destroy_begun = 1;
|
self.shield_ent.destroy_begun = 1;
|
||||||
@ -82,28 +82,28 @@ player_damage_shield( idamage, bheld )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( bheld || !isdefined( self.shield_ent ) )
|
if (bheld || !isdefined(self.shield_ent))
|
||||||
{
|
{
|
||||||
self playrumbleonentity( "damage_light" );
|
self playrumbleonentity("damage_light");
|
||||||
earthquake( 0.5, 0.5, self.origin, 100 );
|
earthquake(0.5, 0.5, self.origin, 100);
|
||||||
self playsound( "fly_riotshield_zm_impact_zombies" );
|
self playsound("fly_riotshield_zm_impact_zombies");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
shield_origin = self.shield_ent.origin;
|
shield_origin = self.shield_ent.origin;
|
||||||
playsoundatposition( "fly_riotshield_zm_impact_zombies", shield_origin );
|
playsoundatposition("fly_riotshield_zm_impact_zombies", shield_origin);
|
||||||
}
|
}
|
||||||
|
|
||||||
self player_set_shield_health( self.shielddamagetaken, damagemax );
|
self player_set_shield_health(self.shielddamagetaken, damagemax);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
player_wait_and_take_riotshield()
|
player_wait_and_take_riotshield()
|
||||||
{
|
{
|
||||||
shield_origin = self.shield_ent.origin;
|
shield_origin = self.shield_ent.origin;
|
||||||
level thread maps\mp\zombies\_zm_equipment::equipment_disappear_fx( shield_origin, level._riotshield_dissapear_fx );
|
level thread maps\mp\zombies\_zm_equipment::equipment_disappear_fx(shield_origin, level._riotshield_dissapear_fx);
|
||||||
wait 1;
|
wait 1;
|
||||||
playsoundatposition( "wpn_riotshield_zm_destroy", shield_origin );
|
playsoundatposition("wpn_riotshield_zm_destroy", shield_origin);
|
||||||
self thread player_take_riotshield();
|
self thread player_take_riotshield();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -111,16 +111,16 @@ watchriotshieldmelee()
|
|||||||
{
|
{
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
self waittill( "weapon_melee", weapon );
|
self waittill("weapon_melee", weapon);
|
||||||
|
|
||||||
if ( weapon == level.riotshield_name )
|
if (weapon == level.riotshield_name)
|
||||||
self riotshield_melee();
|
self riotshield_melee();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
riotshield_melee()
|
riotshield_melee()
|
||||||
{
|
{
|
||||||
if ( !isdefined( level.riotshield_knockdown_enemies ) )
|
if (!isdefined(level.riotshield_knockdown_enemies))
|
||||||
{
|
{
|
||||||
level.riotshield_knockdown_enemies = [];
|
level.riotshield_knockdown_enemies = [];
|
||||||
level.riotshield_knockdown_gib = [];
|
level.riotshield_knockdown_gib = [];
|
||||||
@ -132,21 +132,21 @@ riotshield_melee()
|
|||||||
shield_damage = 0;
|
shield_damage = 0;
|
||||||
level.riotshield_network_choke_count = 0;
|
level.riotshield_network_choke_count = 0;
|
||||||
|
|
||||||
for ( i = 0; i < level.riotshield_fling_enemies.size; i++ )
|
for (i = 0; i < level.riotshield_fling_enemies.size; i++)
|
||||||
{
|
{
|
||||||
riotshield_network_choke();
|
riotshield_network_choke();
|
||||||
|
|
||||||
if ( isdefined( level.riotshield_fling_enemies[i] ) )
|
if (isdefined(level.riotshield_fling_enemies[i]))
|
||||||
{
|
{
|
||||||
level.riotshield_fling_enemies[i] thread riotshield_fling_zombie( self, level.riotshield_fling_vecs[i], i );
|
level.riotshield_fling_enemies[i] thread riotshield_fling_zombie(self, level.riotshield_fling_vecs[i], i);
|
||||||
shield_damage += level.zombie_vars["riotshield_fling_damage_shield"];
|
shield_damage += level.zombie_vars["riotshield_fling_damage_shield"];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( i = 0; i < level.riotshield_knockdown_enemies.size; i++ )
|
for (i = 0; i < level.riotshield_knockdown_enemies.size; i++)
|
||||||
{
|
{
|
||||||
riotshield_network_choke();
|
riotshield_network_choke();
|
||||||
level.riotshield_knockdown_enemies[i] thread riotshield_knockdown_zombie( self, level.riotshield_knockdown_gib[i] );
|
level.riotshield_knockdown_enemies[i] thread riotshield_knockdown_zombie(self, level.riotshield_knockdown_gib[i]);
|
||||||
shield_damage += level.zombie_vars["riotshield_knockdown_damage_shield"];
|
shield_damage += level.zombie_vars["riotshield_knockdown_damage_shield"];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -155,77 +155,77 @@ riotshield_melee()
|
|||||||
level.riotshield_fling_enemies = [];
|
level.riotshield_fling_enemies = [];
|
||||||
level.riotshield_fling_vecs = [];
|
level.riotshield_fling_vecs = [];
|
||||||
|
|
||||||
if ( shield_damage )
|
if (shield_damage)
|
||||||
self player_damage_shield( shield_damage, 0 );
|
self player_damage_shield(shield_damage, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
riotshield_fling_zombie( player, fling_vec, index )
|
riotshield_fling_zombie(player, fling_vec, index)
|
||||||
{
|
{
|
||||||
if ( !isdefined( self ) || !isalive( self ) )
|
if (!isdefined(self) || !isalive(self))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( isdefined( self.ignore_riotshield ) && self.ignore_riotshield )
|
if (isdefined(self.ignore_riotshield) && self.ignore_riotshield)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( isdefined( self.riotshield_fling_func ) )
|
if (isdefined(self.riotshield_fling_func))
|
||||||
{
|
{
|
||||||
self [[ self.riotshield_fling_func ]]( player );
|
self [[ self.riotshield_fling_func ]](player);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
damage = 2500;
|
damage = 2500;
|
||||||
self dodamage( damage, player.origin, player, player, 0, "MOD_MELEE", 0, level.riotshield_name );
|
self dodamage(damage, player.origin, player, player, 0, "MOD_MELEE", 0, level.riotshield_name);
|
||||||
|
|
||||||
if ( self.health < 1 )
|
if (self.health < 1)
|
||||||
{
|
{
|
||||||
self.riotshield_death = 1;
|
self.riotshield_death = 1;
|
||||||
player maps\mp\zombies\_zm_score::player_add_points( "death", "MOD_MELEE" );
|
player maps\mp\zombies\_zm_score::player_add_points("death", "MOD_MELEE");
|
||||||
self startragdoll();
|
self startragdoll();
|
||||||
self launchragdoll( fling_vec );
|
self launchragdoll(fling_vec);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player maps\mp\zombies\_zm_score::player_add_points( "damage_light" );
|
player maps\mp\zombies\_zm_score::player_add_points("damage_light");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
zombie_knockdown( player, gib )
|
zombie_knockdown(player, gib)
|
||||||
{
|
{
|
||||||
if ( isdefined( level.override_riotshield_damage_func ) )
|
if (isdefined(level.override_riotshield_damage_func))
|
||||||
self [[ level.override_riotshield_damage_func ]]( player, gib );
|
self [[ level.override_riotshield_damage_func ]](player, gib);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( gib )
|
if (gib)
|
||||||
{
|
{
|
||||||
self.a.gib_ref = random( level.riotshield_gib_refs );
|
self.a.gib_ref = random(level.riotshield_gib_refs);
|
||||||
self thread maps\mp\animscripts\zm_death::do_gib();
|
self thread maps\mp\animscripts\zm_death::do_gib();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
riotshield_knockdown_zombie( player, gib )
|
riotshield_knockdown_zombie(player, gib)
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
playsoundatposition( "vox_riotshield_forcehit", self.origin );
|
playsoundatposition("vox_riotshield_forcehit", self.origin);
|
||||||
playsoundatposition( "wpn_riotshield_proj_impact", self.origin );
|
playsoundatposition("wpn_riotshield_proj_impact", self.origin);
|
||||||
|
|
||||||
if ( !isdefined( self ) || !isalive( self ) )
|
if (!isdefined(self) || !isalive(self))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( isdefined( self.riotshield_knockdown_func ) )
|
if (isdefined(self.riotshield_knockdown_func))
|
||||||
self [[ self.riotshield_knockdown_func ]]( player, gib );
|
self [[ self.riotshield_knockdown_func ]](player, gib);
|
||||||
else
|
else
|
||||||
self zombie_knockdown( player, gib );
|
self zombie_knockdown(player, gib);
|
||||||
|
|
||||||
self dodamage( level.zombie_vars["riotshield_knockdown_damage"], player.origin, player, player, 0, "MOD_MELEE", 0, level.riotshield_name );
|
self dodamage(level.zombie_vars["riotshield_knockdown_damage"], player.origin, player, player, 0, "MOD_MELEE", 0, level.riotshield_name);
|
||||||
self playsound( "fly_riotshield_forcehit" );
|
self playsound("fly_riotshield_forcehit");
|
||||||
|
|
||||||
if ( self.health < 1 )
|
if (self.health < 1)
|
||||||
{
|
{
|
||||||
player maps\mp\zombies\_zm_score::player_add_points( "death", "MOD_MELEE" );
|
player maps\mp\zombies\_zm_score::player_add_points("death", "MOD_MELEE");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player maps\mp\zombies\_zm_score::player_add_points( "damage_light" );
|
player maps\mp\zombies\_zm_score::player_add_points("damage_light");
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -16,15 +16,15 @@
|
|||||||
init()
|
init()
|
||||||
{
|
{
|
||||||
maps\mp\zombies\_zm_riotshield_prison::init();
|
maps\mp\zombies\_zm_riotshield_prison::init();
|
||||||
set_zombie_var( "riotshield_cylinder_radius", 360 );
|
set_zombie_var("riotshield_cylinder_radius", 360);
|
||||||
set_zombie_var( "riotshield_fling_range", 90 );
|
set_zombie_var("riotshield_fling_range", 90);
|
||||||
set_zombie_var( "riotshield_gib_range", 90 );
|
set_zombie_var("riotshield_gib_range", 90);
|
||||||
set_zombie_var( "riotshield_gib_damage", 75 );
|
set_zombie_var("riotshield_gib_damage", 75);
|
||||||
set_zombie_var( "riotshield_knockdown_range", 90 );
|
set_zombie_var("riotshield_knockdown_range", 90);
|
||||||
set_zombie_var( "riotshield_knockdown_damage", 15 );
|
set_zombie_var("riotshield_knockdown_damage", 15);
|
||||||
set_zombie_var( "riotshield_hit_points", 1500 );
|
set_zombie_var("riotshield_hit_points", 1500);
|
||||||
set_zombie_var( "riotshield_fling_damage_shield", 100 );
|
set_zombie_var("riotshield_fling_damage_shield", 100);
|
||||||
set_zombie_var( "riotshield_knockdown_damage_shield", 15 );
|
set_zombie_var("riotshield_knockdown_damage_shield", 15);
|
||||||
level.riotshield_network_choke_count = 0;
|
level.riotshield_network_choke_count = 0;
|
||||||
level.riotshield_gib_refs = [];
|
level.riotshield_gib_refs = [];
|
||||||
level.riotshield_gib_refs[level.riotshield_gib_refs.size] = "guts";
|
level.riotshield_gib_refs[level.riotshield_gib_refs.size] = "guts";
|
||||||
@ -34,10 +34,10 @@ init()
|
|||||||
level.deployed_riotshield_damage_callback = ::deployed_damage_shield;
|
level.deployed_riotshield_damage_callback = ::deployed_damage_shield;
|
||||||
level.transferriotshield = ::transferriotshield;
|
level.transferriotshield = ::transferriotshield;
|
||||||
level.cantransferriotshield = ::cantransferriotshield;
|
level.cantransferriotshield = ::cantransferriotshield;
|
||||||
maps\mp\zombies\_zm_spawner::register_zombie_damage_callback( ::riotshield_zombie_damage_response );
|
maps\mp\zombies\_zm_spawner::register_zombie_damage_callback(::riotshield_zombie_damage_response);
|
||||||
maps\mp\zombies\_zm_equipment::register_equipment( "alcatraz_shield_zm", &"ZOMBIE_EQUIP_RIOTSHIELD_PICKUP_HINT_STRING", &"ZOMBIE_EQUIP_RIOTSHIELD_HOWTO", "riotshield_zm_icon", "riotshield", ::riotshield_activation_watcher_thread, undefined, ::dropshield, ::pickupshield );
|
maps\mp\zombies\_zm_equipment::register_equipment("alcatraz_shield_zm", &"ZOMBIE_EQUIP_RIOTSHIELD_PICKUP_HINT_STRING", &"ZOMBIE_EQUIP_RIOTSHIELD_HOWTO", "riotshield_zm_icon", "riotshield", ::riotshield_activation_watcher_thread, undefined, ::dropshield, ::pickupshield);
|
||||||
maps\mp\gametypes_zm\_weaponobjects::createretrievablehint( "riotshield", &"ZOMBIE_EQUIP_RIOTSHIELD_PICKUP_HINT_STRING" );
|
maps\mp\gametypes_zm\_weaponobjects::createretrievablehint("riotshield", &"ZOMBIE_EQUIP_RIOTSHIELD_PICKUP_HINT_STRING");
|
||||||
onplayerconnect_callback( ::onplayerconnect );
|
onplayerconnect_callback(::onplayerconnect);
|
||||||
}
|
}
|
||||||
|
|
||||||
onplayerconnect()
|
onplayerconnect()
|
||||||
@ -50,30 +50,30 @@ onplayerconnect()
|
|||||||
self thread player_watch_laststand();
|
self thread player_watch_laststand();
|
||||||
}
|
}
|
||||||
|
|
||||||
player_damage_shield( idamage, bheld )
|
player_damage_shield(idamage, bheld)
|
||||||
{
|
{
|
||||||
damagemax = level.zombie_vars["riotshield_hit_points"];
|
damagemax = level.zombie_vars["riotshield_hit_points"];
|
||||||
|
|
||||||
if ( !isdefined( self.shielddamagetaken ) )
|
if (!isdefined(self.shielddamagetaken))
|
||||||
self.shielddamagetaken = 0;
|
self.shielddamagetaken = 0;
|
||||||
|
|
||||||
self.shielddamagetaken += idamage;
|
self.shielddamagetaken += idamage;
|
||||||
|
|
||||||
if ( self.shielddamagetaken >= damagemax )
|
if (self.shielddamagetaken >= damagemax)
|
||||||
{
|
{
|
||||||
if ( bheld || !isdefined( self.shield_ent ) )
|
if (bheld || !isdefined(self.shield_ent))
|
||||||
{
|
{
|
||||||
self playrumbleonentity( "damage_heavy" );
|
self playrumbleonentity("damage_heavy");
|
||||||
earthquake( 1.0, 0.75, self.origin, 100 );
|
earthquake(1.0, 0.75, self.origin, 100);
|
||||||
self playsound( "wpn_riotshield_zm_destroy" );
|
self playsound("wpn_riotshield_zm_destroy");
|
||||||
self thread player_take_riotshield();
|
self thread player_take_riotshield();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
shield_origin = self.shield_ent.origin;
|
shield_origin = self.shield_ent.origin;
|
||||||
playsoundatposition( "fly_riotshield_zm_impact_zombies", shield_origin );
|
playsoundatposition("fly_riotshield_zm_impact_zombies", shield_origin);
|
||||||
|
|
||||||
if ( is_true( self.shield_ent.destroy_begun ) )
|
if (is_true(self.shield_ent.destroy_begun))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
self.shield_ent.destroy_begun = 1;
|
self.shield_ent.destroy_begun = 1;
|
||||||
@ -82,28 +82,28 @@ player_damage_shield( idamage, bheld )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( bheld || !isdefined( self.shield_ent ) )
|
if (bheld || !isdefined(self.shield_ent))
|
||||||
{
|
{
|
||||||
self playrumbleonentity( "damage_light" );
|
self playrumbleonentity("damage_light");
|
||||||
earthquake( 0.5, 0.5, self.origin, 100 );
|
earthquake(0.5, 0.5, self.origin, 100);
|
||||||
self playsound( "fly_riotshield_zm_impact_zombies" );
|
self playsound("fly_riotshield_zm_impact_zombies");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
shield_origin = self.shield_ent.origin;
|
shield_origin = self.shield_ent.origin;
|
||||||
playsoundatposition( "fly_riotshield_zm_impact_zombies", shield_origin );
|
playsoundatposition("fly_riotshield_zm_impact_zombies", shield_origin);
|
||||||
}
|
}
|
||||||
|
|
||||||
self player_set_shield_health( self.shielddamagetaken, damagemax );
|
self player_set_shield_health(self.shielddamagetaken, damagemax);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
player_wait_and_take_riotshield()
|
player_wait_and_take_riotshield()
|
||||||
{
|
{
|
||||||
shield_origin = self.shield_ent.origin;
|
shield_origin = self.shield_ent.origin;
|
||||||
level thread maps\mp\zombies\_zm_equipment::equipment_disappear_fx( shield_origin, level._riotshield_dissapear_fx );
|
level thread maps\mp\zombies\_zm_equipment::equipment_disappear_fx(shield_origin, level._riotshield_dissapear_fx);
|
||||||
wait 1;
|
wait 1;
|
||||||
playsoundatposition( "wpn_riotshield_zm_destroy", shield_origin );
|
playsoundatposition("wpn_riotshield_zm_destroy", shield_origin);
|
||||||
self thread player_take_riotshield();
|
self thread player_take_riotshield();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -111,16 +111,16 @@ watchriotshieldmelee()
|
|||||||
{
|
{
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
self waittill( "weapon_melee", weapon );
|
self waittill("weapon_melee", weapon);
|
||||||
|
|
||||||
if ( weapon == level.riotshield_name )
|
if (weapon == level.riotshield_name)
|
||||||
self riotshield_melee();
|
self riotshield_melee();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
riotshield_melee()
|
riotshield_melee()
|
||||||
{
|
{
|
||||||
if ( !isdefined( level.riotshield_knockdown_enemies ) )
|
if (!isdefined(level.riotshield_knockdown_enemies))
|
||||||
{
|
{
|
||||||
level.riotshield_knockdown_enemies = [];
|
level.riotshield_knockdown_enemies = [];
|
||||||
level.riotshield_knockdown_gib = [];
|
level.riotshield_knockdown_gib = [];
|
||||||
@ -132,21 +132,21 @@ riotshield_melee()
|
|||||||
shield_damage = 0;
|
shield_damage = 0;
|
||||||
level.riotshield_network_choke_count = 0;
|
level.riotshield_network_choke_count = 0;
|
||||||
|
|
||||||
for ( i = 0; i < level.riotshield_fling_enemies.size; i++ )
|
for (i = 0; i < level.riotshield_fling_enemies.size; i++)
|
||||||
{
|
{
|
||||||
riotshield_network_choke();
|
riotshield_network_choke();
|
||||||
|
|
||||||
if ( isdefined( level.riotshield_fling_enemies[i] ) )
|
if (isdefined(level.riotshield_fling_enemies[i]))
|
||||||
{
|
{
|
||||||
level.riotshield_fling_enemies[i] thread riotshield_fling_zombie( self, level.riotshield_fling_vecs[i], i );
|
level.riotshield_fling_enemies[i] thread riotshield_fling_zombie(self, level.riotshield_fling_vecs[i], i);
|
||||||
shield_damage += level.zombie_vars["riotshield_fling_damage_shield"];
|
shield_damage += level.zombie_vars["riotshield_fling_damage_shield"];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( i = 0; i < level.riotshield_knockdown_enemies.size; i++ )
|
for (i = 0; i < level.riotshield_knockdown_enemies.size; i++)
|
||||||
{
|
{
|
||||||
riotshield_network_choke();
|
riotshield_network_choke();
|
||||||
level.riotshield_knockdown_enemies[i] thread riotshield_knockdown_zombie( self, level.riotshield_knockdown_gib[i] );
|
level.riotshield_knockdown_enemies[i] thread riotshield_knockdown_zombie(self, level.riotshield_knockdown_gib[i]);
|
||||||
shield_damage += level.zombie_vars["riotshield_knockdown_damage_shield"];
|
shield_damage += level.zombie_vars["riotshield_knockdown_damage_shield"];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -155,77 +155,77 @@ riotshield_melee()
|
|||||||
level.riotshield_fling_enemies = [];
|
level.riotshield_fling_enemies = [];
|
||||||
level.riotshield_fling_vecs = [];
|
level.riotshield_fling_vecs = [];
|
||||||
|
|
||||||
if ( shield_damage )
|
if (shield_damage)
|
||||||
self player_damage_shield( shield_damage, 0 );
|
self player_damage_shield(shield_damage, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
riotshield_fling_zombie( player, fling_vec, index )
|
riotshield_fling_zombie(player, fling_vec, index)
|
||||||
{
|
{
|
||||||
if ( !isdefined( self ) || !isalive( self ) )
|
if (!isdefined(self) || !isalive(self))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( isdefined( self.ignore_riotshield ) && self.ignore_riotshield )
|
if (isdefined(self.ignore_riotshield) && self.ignore_riotshield)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( isdefined( self.riotshield_fling_func ) )
|
if (isdefined(self.riotshield_fling_func))
|
||||||
{
|
{
|
||||||
self [[ self.riotshield_fling_func ]]( player );
|
self [[ self.riotshield_fling_func ]](player);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
damage = 2500;
|
damage = 2500;
|
||||||
self dodamage( damage, player.origin, player, player, 0, "MOD_MELEE", 0, level.riotshield_name );
|
self dodamage(damage, player.origin, player, player, 0, "MOD_MELEE", 0, level.riotshield_name);
|
||||||
|
|
||||||
if ( self.health < 1 )
|
if (self.health < 1)
|
||||||
{
|
{
|
||||||
self.riotshield_death = 1;
|
self.riotshield_death = 1;
|
||||||
player maps\mp\zombies\_zm_score::player_add_points( "death", "MOD_MELEE" );
|
player maps\mp\zombies\_zm_score::player_add_points("death", "MOD_MELEE");
|
||||||
self startragdoll();
|
self startragdoll();
|
||||||
self launchragdoll( fling_vec );
|
self launchragdoll(fling_vec);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player maps\mp\zombies\_zm_score::player_add_points( "damage_light" );
|
player maps\mp\zombies\_zm_score::player_add_points("damage_light");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
zombie_knockdown( player, gib )
|
zombie_knockdown(player, gib)
|
||||||
{
|
{
|
||||||
if ( isdefined( level.override_riotshield_damage_func ) )
|
if (isdefined(level.override_riotshield_damage_func))
|
||||||
self [[ level.override_riotshield_damage_func ]]( player, gib );
|
self [[ level.override_riotshield_damage_func ]](player, gib);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( gib )
|
if (gib)
|
||||||
{
|
{
|
||||||
self.a.gib_ref = random( level.riotshield_gib_refs );
|
self.a.gib_ref = random(level.riotshield_gib_refs);
|
||||||
self thread maps\mp\animscripts\zm_death::do_gib();
|
self thread maps\mp\animscripts\zm_death::do_gib();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
riotshield_knockdown_zombie( player, gib )
|
riotshield_knockdown_zombie(player, gib)
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
playsoundatposition( "vox_riotshield_forcehit", self.origin );
|
playsoundatposition("vox_riotshield_forcehit", self.origin);
|
||||||
playsoundatposition( "wpn_riotshield_proj_impact", self.origin );
|
playsoundatposition("wpn_riotshield_proj_impact", self.origin);
|
||||||
|
|
||||||
if ( !isdefined( self ) || !isalive( self ) )
|
if (!isdefined(self) || !isalive(self))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( isdefined( self.riotshield_knockdown_func ) )
|
if (isdefined(self.riotshield_knockdown_func))
|
||||||
self [[ self.riotshield_knockdown_func ]]( player, gib );
|
self [[ self.riotshield_knockdown_func ]](player, gib);
|
||||||
else
|
else
|
||||||
self zombie_knockdown( player, gib );
|
self zombie_knockdown(player, gib);
|
||||||
|
|
||||||
self dodamage( level.zombie_vars["riotshield_knockdown_damage"], player.origin, player, player, 0, "MOD_MELEE", 0, level.riotshield_name );
|
self dodamage(level.zombie_vars["riotshield_knockdown_damage"], player.origin, player, player, 0, "MOD_MELEE", 0, level.riotshield_name);
|
||||||
self playsound( "fly_riotshield_forcehit" );
|
self playsound("fly_riotshield_forcehit");
|
||||||
|
|
||||||
if ( self.health < 1 )
|
if (self.health < 1)
|
||||||
{
|
{
|
||||||
player maps\mp\zombies\_zm_score::player_add_points( "death", "MOD_MELEE" );
|
player maps\mp\zombies\_zm_score::player_add_points("death", "MOD_MELEE");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player maps\mp\zombies\_zm_score::player_add_points( "damage_light" );
|
player maps\mp\zombies\_zm_score::player_add_points("damage_light");
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -17,15 +17,15 @@
|
|||||||
init()
|
init()
|
||||||
{
|
{
|
||||||
maps\mp\zombies\_zm_riotshield_tomb::init();
|
maps\mp\zombies\_zm_riotshield_tomb::init();
|
||||||
set_zombie_var( "riotshield_cylinder_radius", 360 );
|
set_zombie_var("riotshield_cylinder_radius", 360);
|
||||||
set_zombie_var( "riotshield_fling_range", 90 );
|
set_zombie_var("riotshield_fling_range", 90);
|
||||||
set_zombie_var( "riotshield_gib_range", 90 );
|
set_zombie_var("riotshield_gib_range", 90);
|
||||||
set_zombie_var( "riotshield_gib_damage", 75 );
|
set_zombie_var("riotshield_gib_damage", 75);
|
||||||
set_zombie_var( "riotshield_knockdown_range", 90 );
|
set_zombie_var("riotshield_knockdown_range", 90);
|
||||||
set_zombie_var( "riotshield_knockdown_damage", 15 );
|
set_zombie_var("riotshield_knockdown_damage", 15);
|
||||||
set_zombie_var( "riotshield_hit_points", 1500 );
|
set_zombie_var("riotshield_hit_points", 1500);
|
||||||
set_zombie_var( "riotshield_fling_damage_shield", 100 );
|
set_zombie_var("riotshield_fling_damage_shield", 100);
|
||||||
set_zombie_var( "riotshield_knockdown_damage_shield", 15 );
|
set_zombie_var("riotshield_knockdown_damage_shield", 15);
|
||||||
level.riotshield_network_choke_count = 0;
|
level.riotshield_network_choke_count = 0;
|
||||||
level.riotshield_gib_refs = [];
|
level.riotshield_gib_refs = [];
|
||||||
level.riotshield_gib_refs[level.riotshield_gib_refs.size] = "guts";
|
level.riotshield_gib_refs[level.riotshield_gib_refs.size] = "guts";
|
||||||
@ -35,10 +35,10 @@ init()
|
|||||||
level.deployed_riotshield_damage_callback = ::deployed_damage_shield;
|
level.deployed_riotshield_damage_callback = ::deployed_damage_shield;
|
||||||
level.transferriotshield = ::transferriotshield;
|
level.transferriotshield = ::transferriotshield;
|
||||||
level.cantransferriotshield = ::cantransferriotshield;
|
level.cantransferriotshield = ::cantransferriotshield;
|
||||||
maps\mp\zombies\_zm_spawner::register_zombie_damage_callback( ::riotshield_zombie_damage_response );
|
maps\mp\zombies\_zm_spawner::register_zombie_damage_callback(::riotshield_zombie_damage_response);
|
||||||
maps\mp\zombies\_zm_equipment::register_equipment( "tomb_shield_zm", &"ZOMBIE_EQUIP_RIOTSHIELD_PICKUP_HINT_STRING", &"ZOMBIE_EQUIP_RIOTSHIELD_HOWTO", "riotshield_zm_icon", "riotshield", ::riotshield_activation_watcher_thread, undefined, ::dropshield, ::pickupshield );
|
maps\mp\zombies\_zm_equipment::register_equipment("tomb_shield_zm", &"ZOMBIE_EQUIP_RIOTSHIELD_PICKUP_HINT_STRING", &"ZOMBIE_EQUIP_RIOTSHIELD_HOWTO", "riotshield_zm_icon", "riotshield", ::riotshield_activation_watcher_thread, undefined, ::dropshield, ::pickupshield);
|
||||||
maps\mp\gametypes_zm\_weaponobjects::createretrievablehint( "riotshield", &"ZOMBIE_EQUIP_RIOTSHIELD_PICKUP_HINT_STRING" );
|
maps\mp\gametypes_zm\_weaponobjects::createretrievablehint("riotshield", &"ZOMBIE_EQUIP_RIOTSHIELD_PICKUP_HINT_STRING");
|
||||||
onplayerconnect_callback( ::onplayerconnect );
|
onplayerconnect_callback(::onplayerconnect);
|
||||||
}
|
}
|
||||||
|
|
||||||
onplayerconnect()
|
onplayerconnect()
|
||||||
@ -51,30 +51,30 @@ onplayerconnect()
|
|||||||
self thread player_watch_laststand();
|
self thread player_watch_laststand();
|
||||||
}
|
}
|
||||||
|
|
||||||
player_damage_shield( idamage, bheld )
|
player_damage_shield(idamage, bheld)
|
||||||
{
|
{
|
||||||
damagemax = level.zombie_vars["riotshield_hit_points"];
|
damagemax = level.zombie_vars["riotshield_hit_points"];
|
||||||
|
|
||||||
if ( !isdefined( self.shielddamagetaken ) )
|
if (!isdefined(self.shielddamagetaken))
|
||||||
self.shielddamagetaken = 0;
|
self.shielddamagetaken = 0;
|
||||||
|
|
||||||
self.shielddamagetaken += idamage;
|
self.shielddamagetaken += idamage;
|
||||||
|
|
||||||
if ( self.shielddamagetaken >= damagemax )
|
if (self.shielddamagetaken >= damagemax)
|
||||||
{
|
{
|
||||||
if ( bheld || !isdefined( self.shield_ent ) )
|
if (bheld || !isdefined(self.shield_ent))
|
||||||
{
|
{
|
||||||
self playrumbleonentity( "damage_heavy" );
|
self playrumbleonentity("damage_heavy");
|
||||||
earthquake( 1.0, 0.75, self.origin, 100 );
|
earthquake(1.0, 0.75, self.origin, 100);
|
||||||
self playsound( "wpn_riotshield_zm_destroy" );
|
self playsound("wpn_riotshield_zm_destroy");
|
||||||
self thread player_take_riotshield();
|
self thread player_take_riotshield();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
shield_origin = self.shield_ent.origin;
|
shield_origin = self.shield_ent.origin;
|
||||||
playsoundatposition( "fly_riotshield_zm_impact_zombies", shield_origin );
|
playsoundatposition("fly_riotshield_zm_impact_zombies", shield_origin);
|
||||||
|
|
||||||
if ( is_true( self.shield_ent.destroy_begun ) )
|
if (is_true(self.shield_ent.destroy_begun))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
self.shield_ent.destroy_begun = 1;
|
self.shield_ent.destroy_begun = 1;
|
||||||
@ -83,28 +83,28 @@ player_damage_shield( idamage, bheld )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( bheld || !isdefined( self.shield_ent ) )
|
if (bheld || !isdefined(self.shield_ent))
|
||||||
{
|
{
|
||||||
self playrumbleonentity( "damage_light" );
|
self playrumbleonentity("damage_light");
|
||||||
earthquake( 0.5, 0.5, self.origin, 100 );
|
earthquake(0.5, 0.5, self.origin, 100);
|
||||||
self playsound( "fly_riotshield_zm_impact_zombies" );
|
self playsound("fly_riotshield_zm_impact_zombies");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
shield_origin = self.shield_ent.origin;
|
shield_origin = self.shield_ent.origin;
|
||||||
playsoundatposition( "fly_riotshield_zm_impact_zombies", shield_origin );
|
playsoundatposition("fly_riotshield_zm_impact_zombies", shield_origin);
|
||||||
}
|
}
|
||||||
|
|
||||||
self player_set_shield_health( self.shielddamagetaken, damagemax );
|
self player_set_shield_health(self.shielddamagetaken, damagemax);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
player_wait_and_take_riotshield()
|
player_wait_and_take_riotshield()
|
||||||
{
|
{
|
||||||
shield_origin = self.shield_ent.origin;
|
shield_origin = self.shield_ent.origin;
|
||||||
level thread maps\mp\zombies\_zm_equipment::equipment_disappear_fx( shield_origin, level._riotshield_dissapear_fx );
|
level thread maps\mp\zombies\_zm_equipment::equipment_disappear_fx(shield_origin, level._riotshield_dissapear_fx);
|
||||||
wait 1;
|
wait 1;
|
||||||
playsoundatposition( "wpn_riotshield_zm_destroy", shield_origin );
|
playsoundatposition("wpn_riotshield_zm_destroy", shield_origin);
|
||||||
self thread player_take_riotshield();
|
self thread player_take_riotshield();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -112,16 +112,16 @@ watchriotshieldmelee()
|
|||||||
{
|
{
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
self waittill( "weapon_melee", weapon );
|
self waittill("weapon_melee", weapon);
|
||||||
|
|
||||||
if ( weapon == level.riotshield_name )
|
if (weapon == level.riotshield_name)
|
||||||
self riotshield_melee();
|
self riotshield_melee();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
riotshield_melee()
|
riotshield_melee()
|
||||||
{
|
{
|
||||||
if ( !isdefined( level.riotshield_knockdown_enemies ) )
|
if (!isdefined(level.riotshield_knockdown_enemies))
|
||||||
{
|
{
|
||||||
level.riotshield_knockdown_enemies = [];
|
level.riotshield_knockdown_enemies = [];
|
||||||
level.riotshield_knockdown_gib = [];
|
level.riotshield_knockdown_gib = [];
|
||||||
@ -133,21 +133,21 @@ riotshield_melee()
|
|||||||
shield_damage = 0;
|
shield_damage = 0;
|
||||||
level.riotshield_network_choke_count = 0;
|
level.riotshield_network_choke_count = 0;
|
||||||
|
|
||||||
for ( i = 0; i < level.riotshield_fling_enemies.size; i++ )
|
for (i = 0; i < level.riotshield_fling_enemies.size; i++)
|
||||||
{
|
{
|
||||||
riotshield_network_choke();
|
riotshield_network_choke();
|
||||||
|
|
||||||
if ( isdefined( level.riotshield_fling_enemies[i] ) )
|
if (isdefined(level.riotshield_fling_enemies[i]))
|
||||||
{
|
{
|
||||||
level.riotshield_fling_enemies[i] thread riotshield_fling_zombie( self, level.riotshield_fling_vecs[i], i );
|
level.riotshield_fling_enemies[i] thread riotshield_fling_zombie(self, level.riotshield_fling_vecs[i], i);
|
||||||
shield_damage += level.zombie_vars["riotshield_fling_damage_shield"];
|
shield_damage += level.zombie_vars["riotshield_fling_damage_shield"];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( i = 0; i < level.riotshield_knockdown_enemies.size; i++ )
|
for (i = 0; i < level.riotshield_knockdown_enemies.size; i++)
|
||||||
{
|
{
|
||||||
riotshield_network_choke();
|
riotshield_network_choke();
|
||||||
level.riotshield_knockdown_enemies[i] thread riotshield_knockdown_zombie( self, level.riotshield_knockdown_gib[i] );
|
level.riotshield_knockdown_enemies[i] thread riotshield_knockdown_zombie(self, level.riotshield_knockdown_gib[i]);
|
||||||
shield_damage += level.zombie_vars["riotshield_knockdown_damage_shield"];
|
shield_damage += level.zombie_vars["riotshield_knockdown_damage_shield"];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -156,77 +156,77 @@ riotshield_melee()
|
|||||||
level.riotshield_fling_enemies = [];
|
level.riotshield_fling_enemies = [];
|
||||||
level.riotshield_fling_vecs = [];
|
level.riotshield_fling_vecs = [];
|
||||||
|
|
||||||
if ( shield_damage )
|
if (shield_damage)
|
||||||
self player_damage_shield( shield_damage, 0 );
|
self player_damage_shield(shield_damage, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
riotshield_fling_zombie( player, fling_vec, index )
|
riotshield_fling_zombie(player, fling_vec, index)
|
||||||
{
|
{
|
||||||
if ( !isdefined( self ) || !isalive( self ) )
|
if (!isdefined(self) || !isalive(self))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( isdefined( self.ignore_riotshield ) && self.ignore_riotshield )
|
if (isdefined(self.ignore_riotshield) && self.ignore_riotshield)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( isdefined( self.riotshield_fling_func ) )
|
if (isdefined(self.riotshield_fling_func))
|
||||||
{
|
{
|
||||||
self [[ self.riotshield_fling_func ]]( player );
|
self [[ self.riotshield_fling_func ]](player);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
damage = 2500;
|
damage = 2500;
|
||||||
self dodamage( damage, player.origin, player, player, 0, "MOD_MELEE", 0, level.riotshield_name );
|
self dodamage(damage, player.origin, player, player, 0, "MOD_MELEE", 0, level.riotshield_name);
|
||||||
|
|
||||||
if ( self.health < 1 )
|
if (self.health < 1)
|
||||||
{
|
{
|
||||||
self.riotshield_death = 1;
|
self.riotshield_death = 1;
|
||||||
player maps\mp\zombies\_zm_score::player_add_points( "death", "MOD_MELEE" );
|
player maps\mp\zombies\_zm_score::player_add_points("death", "MOD_MELEE");
|
||||||
self startragdoll();
|
self startragdoll();
|
||||||
self launchragdoll( fling_vec );
|
self launchragdoll(fling_vec);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player maps\mp\zombies\_zm_score::player_add_points( "damage_light" );
|
player maps\mp\zombies\_zm_score::player_add_points("damage_light");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
zombie_knockdown( player, gib )
|
zombie_knockdown(player, gib)
|
||||||
{
|
{
|
||||||
if ( isdefined( level.override_riotshield_damage_func ) )
|
if (isdefined(level.override_riotshield_damage_func))
|
||||||
self [[ level.override_riotshield_damage_func ]]( player, gib );
|
self [[ level.override_riotshield_damage_func ]](player, gib);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( gib )
|
if (gib)
|
||||||
{
|
{
|
||||||
self.a.gib_ref = random( level.riotshield_gib_refs );
|
self.a.gib_ref = random(level.riotshield_gib_refs);
|
||||||
self thread maps\mp\animscripts\zm_death::do_gib();
|
self thread maps\mp\animscripts\zm_death::do_gib();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
riotshield_knockdown_zombie( player, gib )
|
riotshield_knockdown_zombie(player, gib)
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
playsoundatposition( "vox_riotshield_forcehit", self.origin );
|
playsoundatposition("vox_riotshield_forcehit", self.origin);
|
||||||
playsoundatposition( "wpn_riotshield_proj_impact", self.origin );
|
playsoundatposition("wpn_riotshield_proj_impact", self.origin);
|
||||||
|
|
||||||
if ( !isdefined( self ) || !isalive( self ) )
|
if (!isdefined(self) || !isalive(self))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( isdefined( self.riotshield_knockdown_func ) )
|
if (isdefined(self.riotshield_knockdown_func))
|
||||||
self [[ self.riotshield_knockdown_func ]]( player, gib );
|
self [[ self.riotshield_knockdown_func ]](player, gib);
|
||||||
else
|
else
|
||||||
self zombie_knockdown( player, gib );
|
self zombie_knockdown(player, gib);
|
||||||
|
|
||||||
self dodamage( level.zombie_vars["riotshield_knockdown_damage"], player.origin, player, player, 0, "MOD_MELEE", 0, level.riotshield_name );
|
self dodamage(level.zombie_vars["riotshield_knockdown_damage"], player.origin, player, player, 0, "MOD_MELEE", 0, level.riotshield_name);
|
||||||
self playsound( "fly_riotshield_forcehit" );
|
self playsound("fly_riotshield_forcehit");
|
||||||
|
|
||||||
if ( self.health < 1 )
|
if (self.health < 1)
|
||||||
{
|
{
|
||||||
player maps\mp\zombies\_zm_score::player_add_points( "death", "MOD_MELEE" );
|
player maps\mp\zombies\_zm_score::player_add_points("death", "MOD_MELEE");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player maps\mp\zombies\_zm_score::player_add_points( "damage_light" );
|
player maps\mp\zombies\_zm_score::player_add_points("damage_light");
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -15,116 +15,116 @@
|
|||||||
|
|
||||||
init()
|
init()
|
||||||
{
|
{
|
||||||
if ( !maps\mp\zombies\_zm_weapons::is_weapon_included( "slipgun_zm" ) )
|
if (!maps\mp\zombies\_zm_weapons::is_weapon_included("slipgun_zm"))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
precachemodel( "t5_weapon_crossbow_bolt" );
|
precachemodel("t5_weapon_crossbow_bolt");
|
||||||
precacheitem( "slip_bolt_zm" );
|
precacheitem("slip_bolt_zm");
|
||||||
precacheitem( "slip_bolt_upgraded_zm" );
|
precacheitem("slip_bolt_upgraded_zm");
|
||||||
|
|
||||||
if ( is_true( level.slipgun_as_equipment ) )
|
if (is_true(level.slipgun_as_equipment))
|
||||||
{
|
{
|
||||||
maps\mp\zombies\_zm_equipment::register_equipment( "slipgun_zm", &"ZM_HIGHRISE_EQUIP_SLIPGUN_PICKUP_HINT_STRING", &"ZM_HIGHRISE_EQUIP_SLIPGUN_HOWTO", "jetgun_zm_icon", "slipgun", ::slipgun_activation_watcher_thread, ::transferslipgun, ::dropslipgun, ::pickupslipgun );
|
maps\mp\zombies\_zm_equipment::register_equipment("slipgun_zm", &"ZM_HIGHRISE_EQUIP_SLIPGUN_PICKUP_HINT_STRING", &"ZM_HIGHRISE_EQUIP_SLIPGUN_HOWTO", "jetgun_zm_icon", "slipgun", ::slipgun_activation_watcher_thread, ::transferslipgun, ::dropslipgun, ::pickupslipgun);
|
||||||
maps\mp\zombies\_zm_equipment::enemies_ignore_equipment( "slipgun_zm" );
|
maps\mp\zombies\_zm_equipment::enemies_ignore_equipment("slipgun_zm");
|
||||||
maps\mp\gametypes_zm\_weaponobjects::createretrievablehint( "slipgun", &"ZM_HIGHRISE_EQUIP_SLIPGUN_PICKUP_HINT_STRING" );
|
maps\mp\gametypes_zm\_weaponobjects::createretrievablehint("slipgun", &"ZM_HIGHRISE_EQUIP_SLIPGUN_PICKUP_HINT_STRING");
|
||||||
}
|
}
|
||||||
|
|
||||||
set_zombie_var_once( "slipgun_reslip_max_spots", 8 );
|
set_zombie_var_once("slipgun_reslip_max_spots", 8);
|
||||||
set_zombie_var_once( "slipgun_reslip_rate", 6 );
|
set_zombie_var_once("slipgun_reslip_rate", 6);
|
||||||
set_zombie_var_once( "slipgun_max_kill_chain_depth", 16 );
|
set_zombie_var_once("slipgun_max_kill_chain_depth", 16);
|
||||||
set_zombie_var_once( "slipgun_max_kill_round", 100 );
|
set_zombie_var_once("slipgun_max_kill_round", 100);
|
||||||
set_zombie_var_once( "slipgun_chain_radius", 120 );
|
set_zombie_var_once("slipgun_chain_radius", 120);
|
||||||
set_zombie_var_once( "slipgun_chain_wait_min", 0.75, 1 );
|
set_zombie_var_once("slipgun_chain_wait_min", 0.75, 1);
|
||||||
set_zombie_var_once( "slipgun_chain_wait_max", 1.5, 1 );
|
set_zombie_var_once("slipgun_chain_wait_max", 1.5, 1);
|
||||||
level.slippery_spot_count = 0;
|
level.slippery_spot_count = 0;
|
||||||
level.sliquifier_distance_checks = 0;
|
level.sliquifier_distance_checks = 0;
|
||||||
maps\mp\zombies\_zm_spawner::register_zombie_damage_callback( ::slipgun_zombie_damage_response );
|
maps\mp\zombies\_zm_spawner::register_zombie_damage_callback(::slipgun_zombie_damage_response);
|
||||||
maps\mp\zombies\_zm_spawner::register_zombie_death_animscript_callback( ::slipgun_zombie_death_response );
|
maps\mp\zombies\_zm_spawner::register_zombie_death_animscript_callback(::slipgun_zombie_death_response);
|
||||||
level._effect["slipgun_explode"] = loadfx( "weapon/liquifier/fx_liquifier_goo_explo" );
|
level._effect["slipgun_explode"] = loadfx("weapon/liquifier/fx_liquifier_goo_explo");
|
||||||
level._effect["slipgun_splatter"] = loadfx( "maps/zombie/fx_zmb_goo_splat" );
|
level._effect["slipgun_splatter"] = loadfx("maps/zombie/fx_zmb_goo_splat");
|
||||||
level._effect["slipgun_simmer"] = loadfx( "weapon/liquifier/fx_liquifier_goo_sizzle" );
|
level._effect["slipgun_simmer"] = loadfx("weapon/liquifier/fx_liquifier_goo_sizzle");
|
||||||
level._effect["slipgun_viewmodel_eject"] = loadfx( "weapon/liquifier/fx_liquifier_clip_eject" );
|
level._effect["slipgun_viewmodel_eject"] = loadfx("weapon/liquifier/fx_liquifier_clip_eject");
|
||||||
level._effect["slipgun_viewmodel_reload"] = loadfx( "weapon/liquifier/fx_liquifier_reload_steam" );
|
level._effect["slipgun_viewmodel_reload"] = loadfx("weapon/liquifier/fx_liquifier_reload_steam");
|
||||||
onplayerconnect_callback( ::slipgun_player_connect );
|
onplayerconnect_callback(::slipgun_player_connect);
|
||||||
thread wait_init_damage();
|
thread wait_init_damage();
|
||||||
}
|
}
|
||||||
|
|
||||||
slipgun_zombie_death_response()
|
slipgun_zombie_death_response()
|
||||||
{
|
{
|
||||||
if ( !isDefined( self.goo_chain_depth ) )
|
if (!isDefined(self.goo_chain_depth))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
level maps\mp\zombies\_zm_spawner::zombie_death_points( self.origin, self.damagemod, self.damagelocation, self.attacker, self );
|
level maps\mp\zombies\_zm_spawner::zombie_death_points(self.origin, self.damagemod, self.damagelocation, self.attacker, self);
|
||||||
self explode_into_goo( self.attacker, 0 );
|
self explode_into_goo(self.attacker, 0);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
slipgun_zombie_1st_hit_response( upgraded, player )
|
slipgun_zombie_1st_hit_response(upgraded, player)
|
||||||
{
|
{
|
||||||
self notify( "stop_find_flesh" );
|
self notify("stop_find_flesh");
|
||||||
self notify( "zombie_acquire_enemy" );
|
self notify("zombie_acquire_enemy");
|
||||||
self orientmode( "face default" );
|
self orientmode("face default");
|
||||||
self.ignoreall = 1;
|
self.ignoreall = 1;
|
||||||
self.gibbed = 1;
|
self.gibbed = 1;
|
||||||
|
|
||||||
if ( isalive( self ) )
|
if (isalive(self))
|
||||||
{
|
{
|
||||||
if ( !isdefined( self.goo_chain_depth ) )
|
if (!isdefined(self.goo_chain_depth))
|
||||||
self.goo_chain_depth = 0;
|
self.goo_chain_depth = 0;
|
||||||
|
|
||||||
self.goo_upgraded = upgraded;
|
self.goo_upgraded = upgraded;
|
||||||
|
|
||||||
if ( self.health > 0 )
|
if (self.health > 0)
|
||||||
{
|
{
|
||||||
if ( player maps\mp\zombies\_zm_powerups::is_insta_kill_active() )
|
if (player maps\mp\zombies\_zm_powerups::is_insta_kill_active())
|
||||||
self.health = 1;
|
self.health = 1;
|
||||||
|
|
||||||
self dodamage( level.slipgun_damage, self.origin, player, player, "none", level.slipgun_damage_mod, 0, "slip_goo_zm" );
|
self dodamage(level.slipgun_damage, self.origin, player, player, "none", level.slipgun_damage_mod, 0, "slip_goo_zm");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
explode_into_goo( player, chain_depth )
|
explode_into_goo(player, chain_depth)
|
||||||
{
|
{
|
||||||
if ( isdefined( self.marked_for_insta_upgraded_death ) )
|
if (isdefined(self.marked_for_insta_upgraded_death))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
tag = "J_SpineLower";
|
tag = "J_SpineLower";
|
||||||
|
|
||||||
if ( is_true( self.isdog ) )
|
if (is_true(self.isdog))
|
||||||
tag = "tag_origin";
|
tag = "tag_origin";
|
||||||
|
|
||||||
self.guts_explosion = 1;
|
self.guts_explosion = 1;
|
||||||
self playsound( "wpn_slipgun_zombie_explode" );
|
self playsound("wpn_slipgun_zombie_explode");
|
||||||
|
|
||||||
if ( isdefined( level._effect["slipgun_explode"] ) )
|
if (isdefined(level._effect["slipgun_explode"]))
|
||||||
playfx( level._effect["slipgun_explode"], self gettagorigin( tag ) );
|
playfx(level._effect["slipgun_explode"], self gettagorigin(tag));
|
||||||
|
|
||||||
if ( !is_true( self.isdog ) )
|
if (!is_true(self.isdog))
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
|
|
||||||
self ghost();
|
self ghost();
|
||||||
|
|
||||||
if ( !isdefined( self.goo_chain_depth ) )
|
if (!isdefined(self.goo_chain_depth))
|
||||||
self.goo_chain_depth = chain_depth;
|
self.goo_chain_depth = chain_depth;
|
||||||
|
|
||||||
chain_radius = level.zombie_vars["slipgun_chain_radius"];
|
chain_radius = level.zombie_vars["slipgun_chain_radius"];
|
||||||
|
|
||||||
if ( is_true( self.goo_upgraded ) )
|
if (is_true(self.goo_upgraded))
|
||||||
{
|
{
|
||||||
chain_radius *= 1.5;
|
chain_radius *= 1.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
level thread explode_to_near_zombies( player, self.origin, chain_radius, self.goo_chain_depth, self.goo_upgraded );
|
level thread explode_to_near_zombies(player, self.origin, chain_radius, self.goo_chain_depth, self.goo_upgraded);
|
||||||
}
|
}
|
||||||
|
|
||||||
explode_to_near_zombies( player, origin, radius, chain_depth, goo_upgraded )
|
explode_to_near_zombies(player, origin, radius, chain_depth, goo_upgraded)
|
||||||
{
|
{
|
||||||
if ( level.zombie_vars["slipgun_max_kill_chain_depth"] > 0 && chain_depth > level.zombie_vars["slipgun_max_kill_chain_depth"] )
|
if (level.zombie_vars["slipgun_max_kill_chain_depth"] > 0 && chain_depth > level.zombie_vars["slipgun_max_kill_chain_depth"])
|
||||||
return;
|
return;
|
||||||
|
|
||||||
enemies = get_round_enemy_array();
|
enemies = get_round_enemy_array();
|
||||||
enemies = get_array_of_closest( origin, enemies );
|
enemies = get_array_of_closest(origin, enemies);
|
||||||
|
|
||||||
minchainwait = level.zombie_vars["slipgun_chain_wait_min"];
|
minchainwait = level.zombie_vars["slipgun_chain_wait_min"];
|
||||||
maxchainwait = level.zombie_vars["slipgun_chain_wait_max"];
|
maxchainwait = level.zombie_vars["slipgun_chain_wait_max"];
|
||||||
@ -133,62 +133,62 @@ explode_to_near_zombies( player, origin, radius, chain_depth, goo_upgraded )
|
|||||||
tag = "J_Head";
|
tag = "J_Head";
|
||||||
marked_zombies = [];
|
marked_zombies = [];
|
||||||
|
|
||||||
if ( isdefined( enemies ) && enemies.size )
|
if (isdefined(enemies) && enemies.size)
|
||||||
{
|
{
|
||||||
index = 0;
|
index = 0;
|
||||||
|
|
||||||
for ( enemy = enemies[index]; distancesquared( enemy.origin, origin ) < rsquared; enemy = enemies[index] )
|
for (enemy = enemies[index]; distancesquared(enemy.origin, origin) < rsquared; enemy = enemies[index])
|
||||||
{
|
{
|
||||||
if ( isalive( enemy ) && !is_true( enemy.guts_explosion ) && !is_true( enemy.nuked ) && !isdefined( enemy.slipgun_sizzle ) )
|
if (isalive(enemy) && !is_true(enemy.guts_explosion) && !is_true(enemy.nuked) && !isdefined(enemy.slipgun_sizzle))
|
||||||
{
|
{
|
||||||
trace = bullettrace( origin + vectorscale( ( 0, 0, 1 ), 50.0 ), enemy.origin + vectorscale( ( 0, 0, 1 ), 50.0 ), 0, undefined, 1 );
|
trace = bullettrace(origin + vectorscale((0, 0, 1), 50.0), enemy.origin + vectorscale((0, 0, 1), 50.0), 0, undefined, 1);
|
||||||
|
|
||||||
if ( isdefined( trace["fraction"] ) && trace["fraction"] == 1 )
|
if (isdefined(trace["fraction"]) && trace["fraction"] == 1)
|
||||||
{
|
{
|
||||||
enemy.slipgun_sizzle = playfxontag( level._effect["slipgun_simmer"], enemy, tag );
|
enemy.slipgun_sizzle = playfxontag(level._effect["slipgun_simmer"], enemy, tag);
|
||||||
marked_zombies[marked_zombies.size] = enemy;
|
marked_zombies[marked_zombies.size] = enemy;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
index++;
|
index++;
|
||||||
|
|
||||||
if ( index >= enemies.size )
|
if (index >= enemies.size)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( marked_zombies ) && marked_zombies.size )
|
if (isdefined(marked_zombies) && marked_zombies.size)
|
||||||
{
|
{
|
||||||
foreach ( enemy in marked_zombies )
|
foreach (enemy in marked_zombies)
|
||||||
{
|
{
|
||||||
if ( isalive( enemy ) && !is_true( enemy.guts_explosion ) && !is_true( enemy.nuked ) )
|
if (isalive(enemy) && !is_true(enemy.guts_explosion) && !is_true(enemy.nuked))
|
||||||
{
|
{
|
||||||
wait( randomfloatrange( minchainwait, maxchainwait ) );
|
wait(randomfloatrange(minchainwait, maxchainwait));
|
||||||
|
|
||||||
if ( isalive( enemy ) && !is_true( enemy.guts_explosion ) && !is_true( enemy.nuked ) )
|
if (isalive(enemy) && !is_true(enemy.guts_explosion) && !is_true(enemy.nuked))
|
||||||
{
|
{
|
||||||
if ( !isdefined( enemy.goo_chain_depth ) )
|
if (!isdefined(enemy.goo_chain_depth))
|
||||||
enemy.goo_chain_depth = chain_depth;
|
enemy.goo_chain_depth = chain_depth;
|
||||||
|
|
||||||
enemy.goo_upgraded = goo_upgraded;
|
enemy.goo_upgraded = goo_upgraded;
|
||||||
|
|
||||||
if ( enemy.health > 0 )
|
if (enemy.health > 0)
|
||||||
{
|
{
|
||||||
if ( player maps\mp\zombies\_zm_powerups::is_insta_kill_active() )
|
if (player maps\mp\zombies\_zm_powerups::is_insta_kill_active())
|
||||||
enemy.health = 1;
|
enemy.health = 1;
|
||||||
|
|
||||||
enemy dodamage( level.slipgun_damage, origin, player, player, "none", level.slipgun_damage_mod, 0, "slip_goo_zm" );
|
enemy dodamage(level.slipgun_damage, origin, player, player, "none", level.slipgun_damage_mod, 0, "slip_goo_zm");
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( level.slippery_spot_count < level.zombie_vars["slipgun_reslip_max_spots"] )
|
if (level.slippery_spot_count < level.zombie_vars["slipgun_reslip_max_spots"])
|
||||||
{
|
{
|
||||||
if ( ( !isdefined( enemy.slick_count ) || enemy.slick_count == 0 ) && enemy.health <= 0 )
|
if ((!isdefined(enemy.slick_count) || enemy.slick_count == 0) && enemy.health <= 0)
|
||||||
{
|
{
|
||||||
if ( level.zombie_vars["slipgun_reslip_rate"] > 0 && randomint( level.zombie_vars["slipgun_reslip_rate"] ) == 0 )
|
if (level.zombie_vars["slipgun_reslip_rate"] > 0 && randomint(level.zombie_vars["slipgun_reslip_rate"]) == 0)
|
||||||
{
|
{
|
||||||
startpos = origin;
|
startpos = origin;
|
||||||
duration = 24;
|
duration = 24;
|
||||||
thread add_slippery_spot( enemy.origin, duration, startpos );
|
thread add_slippery_spot(enemy.origin, duration, startpos);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,65 +10,65 @@
|
|||||||
|
|
||||||
init()
|
init()
|
||||||
{
|
{
|
||||||
if ( !maps\mp\zombies\_zm_weapons::is_weapon_included( "slowgun_zm" ) )
|
if (!maps\mp\zombies\_zm_weapons::is_weapon_included("slowgun_zm"))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
registerclientfield( "actor", "slowgun_fx", 12000, 3, "int" );
|
registerclientfield("actor", "slowgun_fx", 12000, 3, "int");
|
||||||
registerclientfield( "actor", "anim_rate", 7000, 5, "float" );
|
registerclientfield("actor", "anim_rate", 7000, 5, "float");
|
||||||
registerclientfield( "allplayers", "anim_rate", 7000, 5, "float" );
|
registerclientfield("allplayers", "anim_rate", 7000, 5, "float");
|
||||||
registerclientfield( "toplayer", "sndParalyzerLoop", 12000, 1, "int" );
|
registerclientfield("toplayer", "sndParalyzerLoop", 12000, 1, "int");
|
||||||
registerclientfield( "toplayer", "slowgun_fx", 12000, 1, "int" );
|
registerclientfield("toplayer", "slowgun_fx", 12000, 1, "int");
|
||||||
level.sliquifier_distance_checks = 0;
|
level.sliquifier_distance_checks = 0;
|
||||||
maps\mp\zombies\_zm_spawner::add_cusom_zombie_spawn_logic( ::slowgun_on_zombie_spawned );
|
maps\mp\zombies\_zm_spawner::add_cusom_zombie_spawn_logic(::slowgun_on_zombie_spawned);
|
||||||
maps\mp\zombies\_zm_spawner::register_zombie_damage_callback( ::slowgun_zombie_damage_response );
|
maps\mp\zombies\_zm_spawner::register_zombie_damage_callback(::slowgun_zombie_damage_response);
|
||||||
maps\mp\zombies\_zm_spawner::register_zombie_death_animscript_callback( ::slowgun_zombie_death_response );
|
maps\mp\zombies\_zm_spawner::register_zombie_death_animscript_callback(::slowgun_zombie_death_response);
|
||||||
level._effect["zombie_slowgun_explosion"] = loadfx( "weapon/paralyzer/fx_paralyzer_body_disintegrate" );
|
level._effect["zombie_slowgun_explosion"] = loadfx("weapon/paralyzer/fx_paralyzer_body_disintegrate");
|
||||||
level._effect["zombie_slowgun_explosion_ug"] = loadfx( "weapon/paralyzer/fx_paralyzer_body_disintegrate_ug" );
|
level._effect["zombie_slowgun_explosion_ug"] = loadfx("weapon/paralyzer/fx_paralyzer_body_disintegrate_ug");
|
||||||
level._effect["zombie_slowgun_sizzle"] = loadfx( "weapon/paralyzer/fx_paralyzer_hit_dmg" );
|
level._effect["zombie_slowgun_sizzle"] = loadfx("weapon/paralyzer/fx_paralyzer_hit_dmg");
|
||||||
level._effect["zombie_slowgun_sizzle_ug"] = loadfx( "weapon/paralyzer/fx_paralyzer_hit_dmg_ug" );
|
level._effect["zombie_slowgun_sizzle_ug"] = loadfx("weapon/paralyzer/fx_paralyzer_hit_dmg_ug");
|
||||||
level._effect["player_slowgun_sizzle"] = loadfx( "weapon/paralyzer/fx_paralyzer_hit_noharm" );
|
level._effect["player_slowgun_sizzle"] = loadfx("weapon/paralyzer/fx_paralyzer_hit_noharm");
|
||||||
level._effect["player_slowgun_sizzle_ug"] = loadfx( "weapon/paralyzer/fx_paralyzer_hit_noharm" );
|
level._effect["player_slowgun_sizzle_ug"] = loadfx("weapon/paralyzer/fx_paralyzer_hit_noharm");
|
||||||
level._effect["player_slowgun_sizzle_1st"] = loadfx( "weapon/paralyzer/fx_paralyzer_hit_noharm_view" );
|
level._effect["player_slowgun_sizzle_1st"] = loadfx("weapon/paralyzer/fx_paralyzer_hit_noharm_view");
|
||||||
onplayerconnect_callback( ::slowgun_player_connect );
|
onplayerconnect_callback(::slowgun_player_connect);
|
||||||
level.slowgun_damage = 40;
|
level.slowgun_damage = 40;
|
||||||
level.slowgun_damage_ug = 60;
|
level.slowgun_damage_ug = 60;
|
||||||
level.slowgun_damage_mod = "MOD_PROJECTILE_SPLASH";
|
level.slowgun_damage_mod = "MOD_PROJECTILE_SPLASH";
|
||||||
precacherumble( "damage_heavy" );
|
precacherumble("damage_heavy");
|
||||||
}
|
}
|
||||||
|
|
||||||
slowgun_on_zombie_spawned()
|
slowgun_on_zombie_spawned()
|
||||||
{
|
{
|
||||||
self set_anim_rate( 1.0 );
|
self set_anim_rate(1.0);
|
||||||
self.paralyzer_hit_callback = ::zombie_paralyzed;
|
self.paralyzer_hit_callback = ::zombie_paralyzed;
|
||||||
self.paralyzer_damaged_multiplier = 1;
|
self.paralyzer_damaged_multiplier = 1;
|
||||||
self.paralyzer_score_time_ms = gettime();
|
self.paralyzer_score_time_ms = gettime();
|
||||||
self.paralyzer_slowtime = 0;
|
self.paralyzer_slowtime = 0;
|
||||||
self setclientfield( "slowgun_fx", 0 );
|
self setclientfield("slowgun_fx", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
zombie_paralyzed( player, upgraded )
|
zombie_paralyzed(player, upgraded)
|
||||||
{
|
{
|
||||||
if ( !can_be_paralyzed( self ) )
|
if (!can_be_paralyzed(self))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
insta = player maps\mp\zombies\_zm_powerups::is_insta_kill_active();
|
insta = player maps\mp\zombies\_zm_powerups::is_insta_kill_active();
|
||||||
|
|
||||||
if ( upgraded )
|
if (upgraded)
|
||||||
self setclientfield( "slowgun_fx", 5 );
|
self setclientfield("slowgun_fx", 5);
|
||||||
else
|
else
|
||||||
self setclientfield( "slowgun_fx", 1 );
|
self setclientfield("slowgun_fx", 1);
|
||||||
|
|
||||||
if ( self.slowgun_anim_rate <= 0.1 || insta && self.slowgun_anim_rate <= 0.5 )
|
if (self.slowgun_anim_rate <= 0.1 || insta && self.slowgun_anim_rate <= 0.5)
|
||||||
{
|
{
|
||||||
if ( upgraded )
|
if (upgraded)
|
||||||
damage = level.slowgun_damage_ug;
|
damage = level.slowgun_damage_ug;
|
||||||
else
|
else
|
||||||
damage = level.slowgun_damage;
|
damage = level.slowgun_damage;
|
||||||
|
|
||||||
damage *= randomfloatrange( 0.667, 1.5 );
|
damage *= randomfloatrange(0.667, 1.5);
|
||||||
damage *= self.paralyzer_damaged_multiplier;
|
damage *= self.paralyzer_damaged_multiplier;
|
||||||
|
|
||||||
if ( !isdefined( self.paralyzer_damage ) )
|
if (!isdefined(self.paralyzer_damage))
|
||||||
self.paralyzer_damage = 0;
|
self.paralyzer_damage = 0;
|
||||||
|
|
||||||
// if ( self.paralyzer_damage > 47073 )
|
// if ( self.paralyzer_damage > 47073 )
|
||||||
@ -76,49 +76,49 @@ zombie_paralyzed( player, upgraded )
|
|||||||
|
|
||||||
self.paralyzer_damage += damage;
|
self.paralyzer_damage += damage;
|
||||||
|
|
||||||
if ( insta )
|
if (insta)
|
||||||
damage = self.health + 666;
|
damage = self.health + 666;
|
||||||
|
|
||||||
if ( isalive( self ) )
|
if (isalive(self))
|
||||||
self dodamage( damage, player.origin, player, player, "none", level.slowgun_damage_mod, 0, "slowgun_zm" );
|
self dodamage(damage, player.origin, player, player, "none", level.slowgun_damage_mod, 0, "slowgun_zm");
|
||||||
|
|
||||||
self.paralyzer_damaged_multiplier *= 1.15;
|
self.paralyzer_damaged_multiplier *= 1.15;
|
||||||
self.paralyzer_damaged_multiplier = min( self.paralyzer_damaged_multiplier, 50 );
|
self.paralyzer_damaged_multiplier = min(self.paralyzer_damaged_multiplier, 50);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
self.paralyzer_damaged_multiplier = 1;
|
self.paralyzer_damaged_multiplier = 1;
|
||||||
|
|
||||||
self zombie_slow_for_time( 0.2 );
|
self zombie_slow_for_time(0.2);
|
||||||
}
|
}
|
||||||
|
|
||||||
player_slow_for_time( time )
|
player_slow_for_time(time)
|
||||||
{
|
{
|
||||||
self notify( "player_slow_for_time" );
|
self notify("player_slow_for_time");
|
||||||
self endon( "player_slow_for_time" );
|
self endon("player_slow_for_time");
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
|
|
||||||
if ( !is_true( self.slowgun_flying ) )
|
if (!is_true(self.slowgun_flying))
|
||||||
self thread player_fly_rumble();
|
self thread player_fly_rumble();
|
||||||
|
|
||||||
self setclientfieldtoplayer( "slowgun_fx", 1 );
|
self setclientfieldtoplayer("slowgun_fx", 1);
|
||||||
self set_anim_rate( 0.2 );
|
self set_anim_rate(0.2);
|
||||||
|
|
||||||
wait( time );
|
wait(time);
|
||||||
|
|
||||||
self set_anim_rate( 1.0 );
|
self set_anim_rate(1.0);
|
||||||
self setclientfieldtoplayer( "slowgun_fx", 0 );
|
self setclientfieldtoplayer("slowgun_fx", 0);
|
||||||
self.slowgun_flying = 0;
|
self.slowgun_flying = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
watch_reset_anim_rate()
|
watch_reset_anim_rate()
|
||||||
{
|
{
|
||||||
self set_anim_rate( 1 );
|
self set_anim_rate(1);
|
||||||
self setclientfieldtoplayer( "slowgun_fx", 0 );
|
self setclientfieldtoplayer("slowgun_fx", 0);
|
||||||
|
|
||||||
while ( 1 )
|
while (1)
|
||||||
{
|
{
|
||||||
self waittill_any( "spawned_player", "entering_last_stand", "player_revived", "player_suicide" );
|
self waittill_any("spawned_player", "entering_last_stand", "player_revived", "player_suicide");
|
||||||
self setclientfieldtoplayer( "slowgun_fx", 0 );
|
self setclientfieldtoplayer("slowgun_fx", 0);
|
||||||
self set_anim_rate( 1 );
|
self set_anim_rate(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -10,51 +10,51 @@
|
|||||||
#include maps\mp\zombies\_zm_powerups;
|
#include maps\mp\zombies\_zm_powerups;
|
||||||
#include maps\mp\animscripts\shared;
|
#include maps\mp\animscripts\shared;
|
||||||
|
|
||||||
whirlwind_kill_zombies( n_level, str_weapon )
|
whirlwind_kill_zombies(n_level, str_weapon)
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
n_range = get_air_blast_range( n_level );
|
n_range = get_air_blast_range(n_level);
|
||||||
self.n_charge_level = n_level;
|
self.n_charge_level = n_level;
|
||||||
|
|
||||||
while ( true )
|
while (true)
|
||||||
{
|
{
|
||||||
a_zombies = staff_air_zombie_range( self.origin, n_range );
|
a_zombies = staff_air_zombie_range(self.origin, n_range);
|
||||||
a_zombies = get_array_of_closest( self.origin, a_zombies );
|
a_zombies = get_array_of_closest(self.origin, a_zombies);
|
||||||
|
|
||||||
for ( i = 0; i < a_zombies.size; i++ )
|
for (i = 0; i < a_zombies.size; i++)
|
||||||
{
|
{
|
||||||
if ( !isdefined( a_zombies[i] ) )
|
if (!isdefined(a_zombies[i]))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( a_zombies[i].ai_state != "find_flesh" )
|
if (a_zombies[i].ai_state != "find_flesh")
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( is_true( self._whirlwind_attract_anim ) )
|
if (is_true(self._whirlwind_attract_anim))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
v_offset = ( 10, 10, 32 );
|
v_offset = (10, 10, 32);
|
||||||
|
|
||||||
if ( !bullet_trace_throttled( self.origin + v_offset, a_zombies[i].origin + v_offset, undefined ) )
|
if (!bullet_trace_throttled(self.origin + v_offset, a_zombies[i].origin + v_offset, undefined))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( !isdefined( a_zombies[i] ) || !isalive( a_zombies[i] ) )
|
if (!isdefined(a_zombies[i]) || !isalive(a_zombies[i]))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
v_offset = ( -10, -10, 64 );
|
v_offset = (-10, -10, 64);
|
||||||
|
|
||||||
if ( !bullet_trace_throttled( self.origin + v_offset, a_zombies[i].origin + v_offset, undefined ) )
|
if (!bullet_trace_throttled(self.origin + v_offset, a_zombies[i].origin + v_offset, undefined))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( !isdefined( a_zombies[i] ) || !isalive( a_zombies[i] ) )
|
if (!isdefined(a_zombies[i]) || !isalive(a_zombies[i]))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( is_true( a_zombies[i].is_mechz ) )
|
if (is_true(a_zombies[i].is_mechz))
|
||||||
{
|
{
|
||||||
a_zombies[i] do_damage_network_safe( self.player_owner, 3300, str_weapon, "MOD_IMPACT" );
|
a_zombies[i] do_damage_network_safe(self.player_owner, 3300, str_weapon, "MOD_IMPACT");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
a_zombies[i] thread whirlwind_drag_zombie( self, str_weapon );
|
a_zombies[i] thread whirlwind_drag_zombie(self, str_weapon);
|
||||||
}
|
}
|
||||||
|
|
||||||
wait 0.5;
|
wait 0.5;
|
||||||
|
@ -19,17 +19,17 @@
|
|||||||
#include maps\mp\zm_tomb_craftables;
|
#include maps\mp\zm_tomb_craftables;
|
||||||
#include maps\mp\zm_tomb_utility;
|
#include maps\mp\zm_tomb_utility;
|
||||||
|
|
||||||
flame_damage_fx( damageweapon, e_attacker, pct_damage = 1.0 )
|
flame_damage_fx(damageweapon, e_attacker, pct_damage = 1.0)
|
||||||
{
|
{
|
||||||
was_on_fire = is_true( self.is_on_fire );
|
was_on_fire = is_true(self.is_on_fire);
|
||||||
n_initial_dmg = get_impact_damage( damageweapon ) * pct_damage;
|
n_initial_dmg = get_impact_damage(damageweapon) * pct_damage;
|
||||||
is_upgraded = damageweapon == "staff_fire_upgraded_zm" || damageweapon == "staff_fire_upgraded2_zm" || damageweapon == "staff_fire_upgraded3_zm";
|
is_upgraded = damageweapon == "staff_fire_upgraded_zm" || damageweapon == "staff_fire_upgraded2_zm" || damageweapon == "staff_fire_upgraded3_zm";
|
||||||
|
|
||||||
if ( is_upgraded )
|
if (is_upgraded)
|
||||||
{
|
{
|
||||||
self do_damage_network_safe( e_attacker, self.health, damageweapon, "MOD_BURNED" );
|
self do_damage_network_safe(e_attacker, self.health, damageweapon, "MOD_BURNED");
|
||||||
|
|
||||||
if ( cointoss() )
|
if (cointoss())
|
||||||
self thread zombie_gib_all();
|
self thread zombie_gib_all();
|
||||||
else
|
else
|
||||||
self thread zombie_gib_guts();
|
self thread zombie_gib_guts();
|
||||||
@ -37,23 +37,23 @@ flame_damage_fx( damageweapon, e_attacker, pct_damage = 1.0 )
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
|
|
||||||
if ( !is_upgraded && !was_on_fire )
|
if (!is_upgraded && !was_on_fire)
|
||||||
{
|
{
|
||||||
self.is_on_fire = 1;
|
self.is_on_fire = 1;
|
||||||
self thread zombie_set_and_restore_flame_state();
|
self thread zombie_set_and_restore_flame_state();
|
||||||
wait 0.5;
|
wait 0.5;
|
||||||
self thread flame_damage_over_time( e_attacker, damageweapon, pct_damage );
|
self thread flame_damage_over_time(e_attacker, damageweapon, pct_damage);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( n_initial_dmg > 0 )
|
if (n_initial_dmg > 0)
|
||||||
self do_damage_network_safe( e_attacker, n_initial_dmg, damageweapon, "MOD_BURNED" );
|
self do_damage_network_safe(e_attacker, n_initial_dmg, damageweapon, "MOD_BURNED");
|
||||||
}
|
}
|
||||||
|
|
||||||
get_impact_damage( damageweapon )
|
get_impact_damage(damageweapon)
|
||||||
{
|
{
|
||||||
switch ( damageweapon )
|
switch (damageweapon)
|
||||||
{
|
{
|
||||||
case "staff_fire_zm":
|
case "staff_fire_zm":
|
||||||
return 2050;
|
return 2050;
|
||||||
|
@ -10,22 +10,22 @@
|
|||||||
#include maps\mp\zombies\_zm_score;
|
#include maps\mp\zombies\_zm_score;
|
||||||
#include maps\mp\animscripts\shared;
|
#include maps\mp\animscripts\shared;
|
||||||
|
|
||||||
staff_lightning_ball_kill_zombies( e_attacker )
|
staff_lightning_ball_kill_zombies(e_attacker)
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
self endon( "stop_killing" );
|
self endon("stop_killing");
|
||||||
|
|
||||||
while ( true )
|
while (true)
|
||||||
{
|
{
|
||||||
a_zombies = staff_lightning_get_valid_targets( e_attacker, self.origin );
|
a_zombies = staff_lightning_get_valid_targets(e_attacker, self.origin);
|
||||||
|
|
||||||
if ( isdefined( a_zombies ) )
|
if (isdefined(a_zombies))
|
||||||
{
|
{
|
||||||
foreach ( zombie in a_zombies )
|
foreach (zombie in a_zombies)
|
||||||
{
|
{
|
||||||
if ( staff_lightning_is_target_valid( zombie ) )
|
if (staff_lightning_is_target_valid(zombie))
|
||||||
{
|
{
|
||||||
e_attacker thread staff_lightning_arc_fx( self, zombie );
|
e_attacker thread staff_lightning_arc_fx(self, zombie);
|
||||||
wait 0.2;
|
wait 0.2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -35,18 +35,18 @@ staff_lightning_ball_kill_zombies( e_attacker )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
staff_lightning_get_valid_targets( player, v_source )
|
staff_lightning_get_valid_targets(player, v_source)
|
||||||
{
|
{
|
||||||
player endon( "disconnect" );
|
player endon("disconnect");
|
||||||
a_enemies = [];
|
a_enemies = [];
|
||||||
a_zombies = getaiarray( level.zombie_team );
|
a_zombies = getaiarray(level.zombie_team);
|
||||||
a_zombies = get_array_of_closest( v_source, a_zombies, undefined, undefined, self.n_range );
|
a_zombies = get_array_of_closest(v_source, a_zombies, undefined, undefined, self.n_range);
|
||||||
|
|
||||||
if ( isdefined( a_zombies ) )
|
if (isdefined(a_zombies))
|
||||||
{
|
{
|
||||||
foreach ( ai_zombie in a_zombies )
|
foreach (ai_zombie in a_zombies)
|
||||||
{
|
{
|
||||||
if ( staff_lightning_is_target_valid( ai_zombie ) )
|
if (staff_lightning_is_target_valid(ai_zombie))
|
||||||
a_enemies[a_enemies.size] = ai_zombie;
|
a_enemies[a_enemies.size] = ai_zombie;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -54,129 +54,129 @@ staff_lightning_get_valid_targets( player, v_source )
|
|||||||
return a_enemies;
|
return a_enemies;
|
||||||
}
|
}
|
||||||
|
|
||||||
staff_lightning_is_target_valid( ai_zombie )
|
staff_lightning_is_target_valid(ai_zombie)
|
||||||
{
|
{
|
||||||
if ( !isdefined( ai_zombie ) )
|
if (!isdefined(ai_zombie))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if ( is_true( ai_zombie.is_being_zapped ) )
|
if (is_true(ai_zombie.is_being_zapped))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
staff_lightning_arc_fx( e_source, ai_zombie )
|
staff_lightning_arc_fx(e_source, ai_zombie)
|
||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
|
|
||||||
if ( !isdefined( ai_zombie ) )
|
if (!isdefined(ai_zombie))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( !bullet_trace_throttled( e_source.origin, ai_zombie.origin + vectorscale( ( 0, 0, 1 ), 20.0 ), ai_zombie ) )
|
if (!bullet_trace_throttled(e_source.origin, ai_zombie.origin + vectorscale((0, 0, 1), 20.0), ai_zombie))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( e_source ) && isdefined( ai_zombie ) && isalive( ai_zombie ) )
|
if (isdefined(e_source) && isdefined(ai_zombie) && isalive(ai_zombie))
|
||||||
{
|
{
|
||||||
if ( is_true( ai_zombie.is_mechz ) )
|
if (is_true(ai_zombie.is_mechz))
|
||||||
{
|
{
|
||||||
level thread staff_lightning_ball_damage_over_time_mechz( e_source, ai_zombie, self );
|
level thread staff_lightning_ball_damage_over_time_mechz(e_source, ai_zombie, self);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
level thread staff_lightning_ball_damage_over_time( e_source, ai_zombie, self );
|
level thread staff_lightning_ball_damage_over_time(e_source, ai_zombie, self);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
staff_lightning_ball_damage_over_time( e_source, e_target, e_attacker )
|
staff_lightning_ball_damage_over_time(e_source, e_target, e_attacker)
|
||||||
{
|
{
|
||||||
e_attacker endon( "disconnect" );
|
e_attacker endon("disconnect");
|
||||||
e_target setclientfield( "lightning_impact_fx", 1 );
|
e_target setclientfield("lightning_impact_fx", 1);
|
||||||
e_target thread maps\mp\zombies\_zm_audio::do_zombies_playvocals( "electrocute", e_target.animname );
|
e_target thread maps\mp\zombies\_zm_audio::do_zombies_playvocals("electrocute", e_target.animname);
|
||||||
n_range_sq = e_source.n_range * e_source.n_range;
|
n_range_sq = e_source.n_range * e_source.n_range;
|
||||||
e_target.is_being_zapped = 1;
|
e_target.is_being_zapped = 1;
|
||||||
e_target setclientfield( "lightning_arc_fx", 1 );
|
e_target setclientfield("lightning_arc_fx", 1);
|
||||||
wait 0.5;
|
wait 0.5;
|
||||||
|
|
||||||
if ( isdefined( e_source ) )
|
if (isdefined(e_source))
|
||||||
{
|
{
|
||||||
if ( !isdefined( e_source.n_damage_per_sec ) )
|
if (!isdefined(e_source.n_damage_per_sec))
|
||||||
e_source.n_damage_per_sec = get_lightning_ball_damage_per_sec( e_attacker.chargeshotlevel );
|
e_source.n_damage_per_sec = get_lightning_ball_damage_per_sec(e_attacker.chargeshotlevel);
|
||||||
|
|
||||||
n_damage_per_pulse = e_source.n_damage_per_sec * 1.0;
|
n_damage_per_pulse = e_source.n_damage_per_sec * 1.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
while ( isdefined( e_source ) && isalive( e_target ) )
|
while (isdefined(e_source) && isalive(e_target))
|
||||||
{
|
{
|
||||||
e_target thread stun_zombie();
|
e_target thread stun_zombie();
|
||||||
wait 1.0;
|
wait 1.0;
|
||||||
|
|
||||||
if ( !isdefined( e_source ) || !isalive( e_target ) )
|
if (!isdefined(e_source) || !isalive(e_target))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
n_dist_sq = distancesquared( e_source.origin, e_target.origin );
|
n_dist_sq = distancesquared(e_source.origin, e_target.origin);
|
||||||
|
|
||||||
if ( n_dist_sq > n_range_sq )
|
if (n_dist_sq > n_range_sq)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if ( isalive( e_target ) && isdefined( e_source ) )
|
if (isalive(e_target) && isdefined(e_source))
|
||||||
{
|
{
|
||||||
e_target thread zombie_shock_eyes();
|
e_target thread zombie_shock_eyes();
|
||||||
e_target thread staff_lightning_kill_zombie( e_attacker, e_source.str_weapon );
|
e_target thread staff_lightning_kill_zombie(e_attacker, e_source.str_weapon);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( e_target ) )
|
if (isdefined(e_target))
|
||||||
{
|
{
|
||||||
e_target.is_being_zapped = 0;
|
e_target.is_being_zapped = 0;
|
||||||
e_target setclientfield( "lightning_arc_fx", 0 );
|
e_target setclientfield("lightning_arc_fx", 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
staff_lightning_ball_damage_over_time_mechz( e_source, e_target, e_attacker )
|
staff_lightning_ball_damage_over_time_mechz(e_source, e_target, e_attacker)
|
||||||
{
|
{
|
||||||
e_attacker endon( "disconnect" );
|
e_attacker endon("disconnect");
|
||||||
n_range_sq = e_source.n_range * e_source.n_range;
|
n_range_sq = e_source.n_range * e_source.n_range;
|
||||||
e_target.is_being_zapped = 1;
|
e_target.is_being_zapped = 1;
|
||||||
wait 0.5;
|
wait 0.5;
|
||||||
|
|
||||||
if ( isdefined( e_source ) )
|
if (isdefined(e_source))
|
||||||
{
|
{
|
||||||
if ( !isdefined( e_source.n_damage_per_sec ) )
|
if (!isdefined(e_source.n_damage_per_sec))
|
||||||
e_source.n_damage_per_sec = get_lightning_ball_damage_per_sec( e_attacker.chargeshotlevel );
|
e_source.n_damage_per_sec = get_lightning_ball_damage_per_sec(e_attacker.chargeshotlevel);
|
||||||
|
|
||||||
n_damage_per_pulse = e_source.n_damage_per_sec * 1.0;
|
n_damage_per_pulse = e_source.n_damage_per_sec * 1.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
while ( isdefined( e_source ) && isalive( e_target ) )
|
while (isdefined(e_source) && isalive(e_target))
|
||||||
{
|
{
|
||||||
wait 1.0;
|
wait 1.0;
|
||||||
|
|
||||||
if ( !isdefined( e_source ) || !isalive( e_target ) )
|
if (!isdefined(e_source) || !isalive(e_target))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
n_dist_sq = distancesquared( e_source.origin, e_target.origin );
|
n_dist_sq = distancesquared(e_source.origin, e_target.origin);
|
||||||
|
|
||||||
if ( n_dist_sq > n_range_sq )
|
if (n_dist_sq > n_range_sq)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if ( isalive( e_target ) && isdefined( e_source ) )
|
if (isalive(e_target) && isdefined(e_source))
|
||||||
{
|
{
|
||||||
e_target do_damage_network_safe( e_attacker, e_source.n_damage_per_sec, e_source.str_weapon, "MOD_RIFLE_BULLET" );
|
e_target do_damage_network_safe(e_attacker, e_source.n_damage_per_sec, e_source.str_weapon, "MOD_RIFLE_BULLET");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( e_target ) )
|
if (isdefined(e_target))
|
||||||
{
|
{
|
||||||
e_target.is_being_zapped = 0;
|
e_target.is_being_zapped = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
get_lightning_ball_damage_per_sec( n_charge )
|
get_lightning_ball_damage_per_sec(n_charge)
|
||||||
{
|
{
|
||||||
return 2500;
|
return 2500;
|
||||||
}
|
}
|
@ -8,31 +8,31 @@
|
|||||||
|
|
||||||
watch_staff_revive_fired()
|
watch_staff_revive_fired()
|
||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
|
|
||||||
while ( true )
|
while (true)
|
||||||
{
|
{
|
||||||
self waittill( "missile_fire", e_projectile, str_weapon );
|
self waittill("missile_fire", e_projectile, str_weapon);
|
||||||
|
|
||||||
if ( !( str_weapon == "staff_revive_zm" ) )
|
if (!(str_weapon == "staff_revive_zm"))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
self thread staff_revive_impact_wait();
|
self thread staff_revive_impact_wait();
|
||||||
|
|
||||||
self thread staff_revive_reload( str_weapon );
|
self thread staff_revive_reload(str_weapon);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
staff_revive_impact_wait()
|
staff_revive_impact_wait()
|
||||||
{
|
{
|
||||||
self waittill( "projectile_impact", e_ent, v_explode_point, n_radius, str_name, n_impact );
|
self waittill("projectile_impact", e_ent, v_explode_point, n_radius, str_name, n_impact);
|
||||||
|
|
||||||
self thread staff_revive_impact( v_explode_point );
|
self thread staff_revive_impact(v_explode_point);
|
||||||
}
|
}
|
||||||
|
|
||||||
staff_revive_reload( str_weapon )
|
staff_revive_reload(str_weapon)
|
||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
|
|
||||||
wait 0.4;
|
wait 0.4;
|
||||||
|
|
||||||
@ -48,7 +48,7 @@ staff_revive_reload( str_weapon )
|
|||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
self waittill( "weapon_change" );
|
self waittill("weapon_change");
|
||||||
|
|
||||||
if (self getCurrentWeapon() == str_weapon)
|
if (self getCurrentWeapon() == str_weapon)
|
||||||
{
|
{
|
||||||
|
@ -23,46 +23,46 @@ init_time_bomb()
|
|||||||
{
|
{
|
||||||
time_bomb_precache();
|
time_bomb_precache();
|
||||||
level thread time_bomb_post_init();
|
level thread time_bomb_post_init();
|
||||||
flag_init( "time_bomb_round_killed" );
|
flag_init("time_bomb_round_killed");
|
||||||
flag_init( "time_bomb_enemies_restored" );
|
flag_init("time_bomb_enemies_restored");
|
||||||
flag_init( "time_bomb_zombie_respawning_done" );
|
flag_init("time_bomb_zombie_respawning_done");
|
||||||
flag_init( "time_bomb_restore_active" );
|
flag_init("time_bomb_restore_active");
|
||||||
flag_init( "time_bomb_restore_done" );
|
flag_init("time_bomb_restore_done");
|
||||||
flag_init( "time_bomb_global_restore_done" );
|
flag_init("time_bomb_global_restore_done");
|
||||||
flag_init( "time_bomb_detonation_enabled" );
|
flag_init("time_bomb_detonation_enabled");
|
||||||
flag_init( "time_bomb_stores_door_state" );
|
flag_init("time_bomb_stores_door_state");
|
||||||
registerclientfield( "world", "time_bomb_saved_round_number", 12000, 8, "int" );
|
registerclientfield("world", "time_bomb_saved_round_number", 12000, 8, "int");
|
||||||
registerclientfield( "world", "time_bomb_lua_override", 12000, 1, "int" );
|
registerclientfield("world", "time_bomb_lua_override", 12000, 1, "int");
|
||||||
registerclientfield( "world", "time_bomb_hud_toggle", 12000, 1, "int" );
|
registerclientfield("world", "time_bomb_hud_toggle", 12000, 1, "int");
|
||||||
registerclientfield( "toplayer", "sndTimebombLoop", 12000, 2, "int" );
|
registerclientfield("toplayer", "sndTimebombLoop", 12000, 2, "int");
|
||||||
maps\mp\zombies\_zm_weapons::register_zombie_weapon_callback( "time_bomb_zm", ::player_give_time_bomb );
|
maps\mp\zombies\_zm_weapons::register_zombie_weapon_callback("time_bomb_zm", ::player_give_time_bomb);
|
||||||
level.zombiemode_time_bomb_give_func = ::player_give_time_bomb;
|
level.zombiemode_time_bomb_give_func = ::player_give_time_bomb;
|
||||||
include_weapon( "time_bomb_zm", 1 );
|
include_weapon("time_bomb_zm", 1);
|
||||||
maps\mp\zombies\_zm_weapons::add_limited_weapon( "time_bomb_zm", 1 );
|
maps\mp\zombies\_zm_weapons::add_limited_weapon("time_bomb_zm", 1);
|
||||||
add_time_bomb_to_mystery_box();
|
add_time_bomb_to_mystery_box();
|
||||||
register_equipment_for_level( "time_bomb_zm" );
|
register_equipment_for_level("time_bomb_zm");
|
||||||
register_equipment_for_level( "time_bomb_detonator_zm" );
|
register_equipment_for_level("time_bomb_detonator_zm");
|
||||||
|
|
||||||
if ( !isdefined( level.round_wait_func ) )
|
if (!isdefined(level.round_wait_func))
|
||||||
level.round_wait_func = ::time_bomb_round_wait;
|
level.round_wait_func = ::time_bomb_round_wait;
|
||||||
|
|
||||||
level.zombie_round_change_custom = ::time_bomb_custom_round_change;
|
level.zombie_round_change_custom = ::time_bomb_custom_round_change;
|
||||||
level._effect["time_bomb_set"] = loadfx( "weapon/time_bomb/fx_time_bomb_detonate" );
|
level._effect["time_bomb_set"] = loadfx("weapon/time_bomb/fx_time_bomb_detonate");
|
||||||
level._effect["time_bomb_ammo_fx"] = loadfx( "misc/fx_zombie_powerup_on" );
|
level._effect["time_bomb_ammo_fx"] = loadfx("misc/fx_zombie_powerup_on");
|
||||||
level._effect["time_bomb_respawns_enemy"] = loadfx( "maps/zombie_buried/fx_buried_time_bomb_spawn" );
|
level._effect["time_bomb_respawns_enemy"] = loadfx("maps/zombie_buried/fx_buried_time_bomb_spawn");
|
||||||
level._effect["time_bomb_kills_enemy"] = loadfx( "maps/zombie_buried/fx_buried_time_bomb_death" );
|
level._effect["time_bomb_kills_enemy"] = loadfx("maps/zombie_buried/fx_buried_time_bomb_death");
|
||||||
level._time_bomb = spawnstruct();
|
level._time_bomb = spawnstruct();
|
||||||
level._time_bomb.enemy_type = [];
|
level._time_bomb.enemy_type = [];
|
||||||
register_time_bomb_enemy( "zombie", ::is_zombie_round, ::time_bomb_saves_zombie_data, ::time_bomb_respawns_zombies );
|
register_time_bomb_enemy("zombie", ::is_zombie_round, ::time_bomb_saves_zombie_data, ::time_bomb_respawns_zombies);
|
||||||
register_time_bomb_enemy_default( "zombie" );
|
register_time_bomb_enemy_default("zombie");
|
||||||
level._time_bomb.last_round_restored = -1;
|
level._time_bomb.last_round_restored = -1;
|
||||||
flag_set( "time_bomb_detonation_enabled" );
|
flag_set("time_bomb_detonation_enabled");
|
||||||
}
|
}
|
||||||
|
|
||||||
player_give_time_bomb()
|
player_give_time_bomb()
|
||||||
{
|
{
|
||||||
assert( isplayer( self ), "player_give_time_bomb can only be used on players!" );
|
assert(isplayer(self), "player_give_time_bomb can only be used on players!");
|
||||||
self giveweapon( "time_bomb_zm" );
|
self giveweapon("time_bomb_zm");
|
||||||
self swap_weapon_to_time_bomb();
|
self swap_weapon_to_time_bomb();
|
||||||
self thread show_time_bomb_hints();
|
self thread show_time_bomb_hints();
|
||||||
self thread time_bomb_think();
|
self thread time_bomb_think();
|
||||||
@ -74,17 +74,17 @@ player_give_time_bomb()
|
|||||||
|
|
||||||
show_time_bomb_hints()
|
show_time_bomb_hints()
|
||||||
{
|
{
|
||||||
self endon( "death_or_disconnect" );
|
self endon("death_or_disconnect");
|
||||||
self endon( "player_lost_time_bomb" );
|
self endon("player_lost_time_bomb");
|
||||||
|
|
||||||
if ( !isdefined( self.time_bomb_hints_shown ) )
|
if (!isdefined(self.time_bomb_hints_shown))
|
||||||
self.time_bomb_hints_shown = 0;
|
self.time_bomb_hints_shown = 0;
|
||||||
|
|
||||||
if ( !self.time_bomb_hints_shown )
|
if (!self.time_bomb_hints_shown)
|
||||||
{
|
{
|
||||||
self.time_bomb_hints_shown = 1;
|
self.time_bomb_hints_shown = 1;
|
||||||
wait 0.5;
|
wait 0.5;
|
||||||
self show_time_bomb_notification( &"ZOMBIE_TIMEBOMB_PICKUP" );
|
self show_time_bomb_notification(&"ZOMBIE_TIMEBOMB_PICKUP");
|
||||||
self thread _watch_for_player_switch_to_time_bomb();
|
self thread _watch_for_player_switch_to_time_bomb();
|
||||||
wait 3.5;
|
wait 3.5;
|
||||||
self clean_up_time_bomb_notifications();
|
self clean_up_time_bomb_notifications();
|
||||||
@ -93,74 +93,74 @@ show_time_bomb_hints()
|
|||||||
|
|
||||||
time_bomb_think()
|
time_bomb_think()
|
||||||
{
|
{
|
||||||
self notify( "_time_bomb_kill_thread" );
|
self notify("_time_bomb_kill_thread");
|
||||||
self endon( "_time_bomb_kill_thread" );
|
self endon("_time_bomb_kill_thread");
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
self endon( "player_lost_time_bomb" );
|
self endon("player_lost_time_bomb");
|
||||||
|
|
||||||
while ( true )
|
while (true)
|
||||||
{
|
{
|
||||||
self waittill( "grenade_fire", e_grenade, str_grenade_name );
|
self waittill("grenade_fire", e_grenade, str_grenade_name);
|
||||||
|
|
||||||
if ( str_grenade_name == "time_bomb_zm" )
|
if (str_grenade_name == "time_bomb_zm")
|
||||||
{
|
{
|
||||||
if ( isdefined( str_grenade_name ) && str_grenade_name == "time_bomb_zm" )
|
if (isdefined(str_grenade_name) && str_grenade_name == "time_bomb_zm")
|
||||||
{
|
{
|
||||||
e_grenade thread setup_time_bomb_detonation_model();
|
e_grenade thread setup_time_bomb_detonation_model();
|
||||||
time_bomb_saves_data(0);
|
time_bomb_saves_data(0);
|
||||||
e_grenade time_bomb_model_init();
|
e_grenade time_bomb_model_init();
|
||||||
self thread swap_weapon_to_detonator( e_grenade );
|
self thread swap_weapon_to_detonator(e_grenade);
|
||||||
self thread time_bomb_thrown_vo();
|
self thread time_bomb_thrown_vo();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
swap_weapon_to_detonator( e_grenade )
|
swap_weapon_to_detonator(e_grenade)
|
||||||
{
|
{
|
||||||
self endon( "death_or_disconnect" );
|
self endon("death_or_disconnect");
|
||||||
self endon( "player_lost_time_bomb" );
|
self endon("player_lost_time_bomb");
|
||||||
b_switch_to_weapon = 0;
|
b_switch_to_weapon = 0;
|
||||||
|
|
||||||
if ( isdefined( e_grenade ) )
|
if (isdefined(e_grenade))
|
||||||
{
|
{
|
||||||
b_switch_to_weapon = 1;
|
b_switch_to_weapon = 1;
|
||||||
wait 0.4;
|
wait 0.4;
|
||||||
}
|
}
|
||||||
|
|
||||||
self takeweapon( "time_bomb_zm" );
|
self takeweapon("time_bomb_zm");
|
||||||
self giveweapon( "time_bomb_detonator_zm" );
|
self giveweapon("time_bomb_detonator_zm");
|
||||||
self setweaponammoclip( "time_bomb_detonator_zm", 0 );
|
self setweaponammoclip("time_bomb_detonator_zm", 0);
|
||||||
self setweaponammostock( "time_bomb_detonator_zm", 0 );
|
self setweaponammostock("time_bomb_detonator_zm", 0);
|
||||||
self setactionslot( 2, "weapon", "time_bomb_detonator_zm" );
|
self setactionslot(2, "weapon", "time_bomb_detonator_zm");
|
||||||
|
|
||||||
if ( b_switch_to_weapon )
|
if (b_switch_to_weapon)
|
||||||
self switchtoweapon( "time_bomb_detonator_zm" );
|
self switchtoweapon("time_bomb_detonator_zm");
|
||||||
|
|
||||||
self giveweapon( "time_bomb_zm" );
|
self giveweapon("time_bomb_zm");
|
||||||
}
|
}
|
||||||
|
|
||||||
detonator_think()
|
detonator_think()
|
||||||
{
|
{
|
||||||
self notify( "_detonator_think_done" );
|
self notify("_detonator_think_done");
|
||||||
self endon( "_detonator_think_done" );
|
self endon("_detonator_think_done");
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
self endon( "player_lost_time_bomb" );
|
self endon("player_lost_time_bomb");
|
||||||
debug_time_bomb_print( "player picked up detonator" );
|
debug_time_bomb_print("player picked up detonator");
|
||||||
|
|
||||||
while ( true )
|
while (true)
|
||||||
{
|
{
|
||||||
self waittill( "detonate" );
|
self waittill("detonate");
|
||||||
|
|
||||||
debug_time_bomb_print( "detonate detected! " );
|
debug_time_bomb_print("detonate detected! ");
|
||||||
|
|
||||||
if ( time_bomb_save_exists() && flag( "time_bomb_detonation_enabled" ) )
|
if (time_bomb_save_exists() && flag("time_bomb_detonation_enabled"))
|
||||||
{
|
{
|
||||||
level.time_bomb_save_data.player_used = self;
|
level.time_bomb_save_data.player_used = self;
|
||||||
level.time_bomb_save_data.time_bomb_model thread detonate_time_bomb();
|
level.time_bomb_save_data.time_bomb_model thread detonate_time_bomb();
|
||||||
self notify( "player_activates_timebomb" );
|
self notify("player_activates_timebomb");
|
||||||
self thread time_bomb_detonation_vo();
|
self thread time_bomb_detonation_vo();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -168,10 +168,10 @@ detonator_think()
|
|||||||
|
|
||||||
detonate_time_bomb()
|
detonate_time_bomb()
|
||||||
{
|
{
|
||||||
if ( isdefined( level.time_bomb_save_data.time_bomb_model ) && isdefined( level.time_bomb_save_data.time_bomb_model.origin ) )
|
if (isdefined(level.time_bomb_save_data.time_bomb_model) && isdefined(level.time_bomb_save_data.time_bomb_model.origin))
|
||||||
playsoundatposition( "zmb_timebomb_3d_timer_end", level.time_bomb_save_data.time_bomb_model.origin );
|
playsoundatposition("zmb_timebomb_3d_timer_end", level.time_bomb_save_data.time_bomb_model.origin);
|
||||||
|
|
||||||
if ( time_bomb_save_exists() )
|
if (time_bomb_save_exists())
|
||||||
time_bomb_detonation();
|
time_bomb_detonation();
|
||||||
else
|
else
|
||||||
delete_time_bomb_model();
|
delete_time_bomb_model();
|
||||||
@ -179,9 +179,9 @@ detonate_time_bomb()
|
|||||||
|
|
||||||
time_bomb_detonation()
|
time_bomb_detonation()
|
||||||
{
|
{
|
||||||
level setclientfield( "time_bomb_lua_override", 1 );
|
level setclientfield("time_bomb_lua_override", 1);
|
||||||
|
|
||||||
playsoundatposition( "zmb_timebomb_timechange_2d", ( 0, 0, 0 ) );
|
playsoundatposition("zmb_timebomb_timechange_2d", (0, 0, 0));
|
||||||
_time_bomb_show_overlay();
|
_time_bomb_show_overlay();
|
||||||
time_bomb_clears_global_data();
|
time_bomb_clears_global_data();
|
||||||
time_bomb_clears_player_data();
|
time_bomb_clears_player_data();
|
||||||
@ -193,75 +193,75 @@ time_bomb_detonation()
|
|||||||
delete_time_bomb_model();
|
delete_time_bomb_model();
|
||||||
_time_bomb_hide_overlay();
|
_time_bomb_hide_overlay();
|
||||||
level thread set_time_bomb_restore_active();
|
level thread set_time_bomb_restore_active();
|
||||||
level setclientfield( "time_bomb_lua_override", 0 );
|
level setclientfield("time_bomb_lua_override", 0);
|
||||||
|
|
||||||
if ( isdefined( level._time_bomb.functionality_override ) && level._time_bomb.functionality_override )
|
if (isdefined(level._time_bomb.functionality_override) && level._time_bomb.functionality_override)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
level notify( "time_bomb_detonation_complete" );
|
level notify("time_bomb_detonation_complete");
|
||||||
}
|
}
|
||||||
|
|
||||||
_time_bomb_show_overlay()
|
_time_bomb_show_overlay()
|
||||||
{
|
{
|
||||||
flag_clear( "time_bomb_restore_done" );
|
flag_clear("time_bomb_restore_done");
|
||||||
a_players = get_players();
|
a_players = get_players();
|
||||||
|
|
||||||
foreach ( player in a_players )
|
foreach (player in a_players)
|
||||||
{
|
{
|
||||||
maps\mp\_visionset_mgr::vsmgr_activate( "overlay", "zombie_time_bomb_overlay", player );
|
maps\mp\_visionset_mgr::vsmgr_activate("overlay", "zombie_time_bomb_overlay", player);
|
||||||
player freezecontrols( 1 );
|
player freezecontrols(1);
|
||||||
player enableinvulnerability();
|
player enableinvulnerability();
|
||||||
}
|
}
|
||||||
|
|
||||||
level thread kill_overlay_at_match_end();
|
level thread kill_overlay_at_match_end();
|
||||||
}
|
}
|
||||||
|
|
||||||
_time_bomb_hide_overlay( n_time_start )
|
_time_bomb_hide_overlay(n_time_start)
|
||||||
{
|
{
|
||||||
n_time_end = gettime();
|
n_time_end = gettime();
|
||||||
|
|
||||||
if ( isdefined( n_time_start ) )
|
if (isdefined(n_time_start))
|
||||||
{
|
{
|
||||||
n_time_elapsed = ( n_time_end - n_time_start ) * 0.001;
|
n_time_elapsed = (n_time_end - n_time_start) * 0.001;
|
||||||
n_delay = 4 - n_time_elapsed;
|
n_delay = 4 - n_time_elapsed;
|
||||||
n_delay = clamp( n_delay, 0, 4 );
|
n_delay = clamp(n_delay, 0, 4);
|
||||||
|
|
||||||
if ( n_delay > 0 )
|
if (n_delay > 0)
|
||||||
{
|
{
|
||||||
wait( n_delay );
|
wait(n_delay);
|
||||||
timebomb_wait_for_hostmigration();
|
timebomb_wait_for_hostmigration();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
timebomb_wait_for_hostmigration();
|
timebomb_wait_for_hostmigration();
|
||||||
a_players = get_players();
|
a_players = get_players();
|
||||||
flag_set( "time_bomb_restore_done" );
|
flag_set("time_bomb_restore_done");
|
||||||
|
|
||||||
foreach ( player in a_players )
|
foreach (player in a_players)
|
||||||
{
|
{
|
||||||
player freezecontrols( 0 );
|
player freezecontrols(0);
|
||||||
player disableInvulnerability();
|
player disableInvulnerability();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
set_time_bomb_restore_active()
|
set_time_bomb_restore_active()
|
||||||
{
|
{
|
||||||
flag_set( "time_bomb_restore_active" );
|
flag_set("time_bomb_restore_active");
|
||||||
|
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
|
||||||
flag_clear( "time_bomb_restore_active" );
|
flag_clear("time_bomb_restore_active");
|
||||||
}
|
}
|
||||||
|
|
||||||
_time_bomb_kill_all_active_enemies()
|
_time_bomb_kill_all_active_enemies()
|
||||||
{
|
{
|
||||||
for ( zombies = time_bomb_get_enemy_array(); zombies.size > 0; zombies = time_bomb_get_enemy_array() )
|
for (zombies = time_bomb_get_enemy_array(); zombies.size > 0; zombies = time_bomb_get_enemy_array())
|
||||||
{
|
{
|
||||||
for ( i = 0; i < zombies.size; i++ )
|
for (i = 0; i < zombies.size; i++)
|
||||||
{
|
{
|
||||||
timebomb_wait_for_hostmigration();
|
timebomb_wait_for_hostmigration();
|
||||||
|
|
||||||
if ( isdefined( zombies[i] ) )
|
if (isdefined(zombies[i]))
|
||||||
zombies[i] thread _kill_time_bomb_enemy();
|
zombies[i] thread _kill_time_bomb_enemy();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -269,18 +269,18 @@ _time_bomb_kill_all_active_enemies()
|
|||||||
|
|
||||||
_kill_time_bomb_enemy()
|
_kill_time_bomb_enemy()
|
||||||
{
|
{
|
||||||
self dodamage( self.health + 100, self.origin, level.time_bomb_save_data.player_used, level.time_bomb_save_data.player_used, self.origin );
|
self dodamage(self.health + 100, self.origin, level.time_bomb_save_data.player_used, level.time_bomb_save_data.player_used, self.origin);
|
||||||
self ghost();
|
self ghost();
|
||||||
playfx( level._effect["time_bomb_kills_enemy"], self.origin );
|
playfx(level._effect["time_bomb_kills_enemy"], self.origin);
|
||||||
|
|
||||||
if ( isdefined( self ) && isdefined( self.anchor ) )
|
if (isdefined(self) && isdefined(self.anchor))
|
||||||
self.anchor delete();
|
self.anchor delete();
|
||||||
|
|
||||||
wait_network_frame();
|
wait_network_frame();
|
||||||
|
|
||||||
if ( isdefined( self ) )
|
if (isdefined(self))
|
||||||
{
|
{
|
||||||
if ( isdefined( self.script_mover ) )
|
if (isdefined(self.script_mover))
|
||||||
self.script_mover delete();
|
self.script_mover delete();
|
||||||
|
|
||||||
self delete();
|
self delete();
|
||||||
|
@ -7,9 +7,9 @@
|
|||||||
#include maps\mp\zombies\_zm_score;
|
#include maps\mp\zombies\_zm_score;
|
||||||
#include maps\mp\zombies\_zm_stats;
|
#include maps\mp\zombies\_zm_stats;
|
||||||
|
|
||||||
calculate_tomahawk_damage( n_target_zombie, n_tomahawk_power, tomahawk )
|
calculate_tomahawk_damage(n_target_zombie, n_tomahawk_power, tomahawk)
|
||||||
{
|
{
|
||||||
if ( self.current_tomahawk_weapon == "upgraded_tomahawk_zm" )
|
if (self.current_tomahawk_weapon == "upgraded_tomahawk_zm")
|
||||||
{
|
{
|
||||||
return n_target_zombie.health + 1;
|
return n_target_zombie.health + 1;
|
||||||
}
|
}
|
||||||
@ -19,21 +19,21 @@ calculate_tomahawk_damage( n_target_zombie, n_tomahawk_power, tomahawk )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
get_grenade_charge_power( player )
|
get_grenade_charge_power(player)
|
||||||
{
|
{
|
||||||
player endon( "disconnect" );
|
player endon("disconnect");
|
||||||
|
|
||||||
if ( self.n_cookedtime >= 1000 && self.n_cookedtime < 2000 )
|
if (self.n_cookedtime >= 1000 && self.n_cookedtime < 2000)
|
||||||
{
|
{
|
||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
else if ( self.n_cookedtime >= 2000 && self.n_cookedtime < 3000 )
|
else if (self.n_cookedtime >= 2000 && self.n_cookedtime < 3000)
|
||||||
{
|
{
|
||||||
return 6;
|
return 6;
|
||||||
}
|
}
|
||||||
else if ( self.n_cookedtime >= 3000 )
|
else if (self.n_cookedtime >= 3000)
|
||||||
{
|
{
|
||||||
if ( player.current_tomahawk_weapon != "upgraded_tomahawk_zm" )
|
if (player.current_tomahawk_weapon != "upgraded_tomahawk_zm")
|
||||||
{
|
{
|
||||||
return 6;
|
return 6;
|
||||||
}
|
}
|
||||||
@ -46,50 +46,50 @@ get_grenade_charge_power( player )
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
tomahawk_attack_zombies( m_tomahawk, a_zombies )
|
tomahawk_attack_zombies(m_tomahawk, a_zombies)
|
||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
|
|
||||||
if ( !isdefined( a_zombies ) )
|
if (!isdefined(a_zombies))
|
||||||
{
|
{
|
||||||
self thread tomahawk_return_player( m_tomahawk, 0 );
|
self thread tomahawk_return_player(m_tomahawk, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
n_attack_limit = m_tomahawk.n_grenade_charge_power - 1;
|
n_attack_limit = m_tomahawk.n_grenade_charge_power - 1;
|
||||||
|
|
||||||
if ( a_zombies.size <= n_attack_limit )
|
if (a_zombies.size <= n_attack_limit)
|
||||||
n_attack_limit = a_zombies.size;
|
n_attack_limit = a_zombies.size;
|
||||||
|
|
||||||
for ( i = 0; i < n_attack_limit; i++ )
|
for (i = 0; i < n_attack_limit; i++)
|
||||||
{
|
{
|
||||||
if ( isdefined( a_zombies[i] ) && isalive( a_zombies[i] ) )
|
if (isdefined(a_zombies[i]) && isalive(a_zombies[i]))
|
||||||
{
|
{
|
||||||
tag = "J_Head";
|
tag = "J_Head";
|
||||||
|
|
||||||
if ( a_zombies[i].isdog )
|
if (a_zombies[i].isdog)
|
||||||
tag = "J_Spine1";
|
tag = "J_Spine1";
|
||||||
|
|
||||||
if ( isdefined( a_zombies[i].hit_by_tomahawk ) && !a_zombies[i].hit_by_tomahawk )
|
if (isdefined(a_zombies[i].hit_by_tomahawk) && !a_zombies[i].hit_by_tomahawk)
|
||||||
{
|
{
|
||||||
v_target = a_zombies[i] gettagorigin( tag );
|
v_target = a_zombies[i] gettagorigin(tag);
|
||||||
m_tomahawk moveto( v_target, 0.3 );
|
m_tomahawk moveto(v_target, 0.3);
|
||||||
|
|
||||||
m_tomahawk waittill( "movedone" );
|
m_tomahawk waittill("movedone");
|
||||||
|
|
||||||
if ( isdefined( a_zombies[i] ) && isalive( a_zombies[i] ) )
|
if (isdefined(a_zombies[i]) && isalive(a_zombies[i]))
|
||||||
{
|
{
|
||||||
if ( self.current_tactical_grenade == "upgraded_tomahawk_zm" )
|
if (self.current_tactical_grenade == "upgraded_tomahawk_zm")
|
||||||
playfxontag( level._effect["tomahawk_impact_ug"], a_zombies[i], tag );
|
playfxontag(level._effect["tomahawk_impact_ug"], a_zombies[i], tag);
|
||||||
else
|
else
|
||||||
playfxontag( level._effect["tomahawk_impact"], a_zombies[i], tag );
|
playfxontag(level._effect["tomahawk_impact"], a_zombies[i], tag);
|
||||||
|
|
||||||
playfxontag( level._effect["tomahawk_fire_dot"], a_zombies[i], "j_spineupper" );
|
playfxontag(level._effect["tomahawk_fire_dot"], a_zombies[i], "j_spineupper");
|
||||||
a_zombies[i] setclientfield( "play_tomahawk_hit_sound", 1 );
|
a_zombies[i] setclientfield("play_tomahawk_hit_sound", 1);
|
||||||
n_tomahawk_damage = calculate_tomahawk_damage( a_zombies[i], m_tomahawk.n_grenade_charge_power, m_tomahawk );
|
n_tomahawk_damage = calculate_tomahawk_damage(a_zombies[i], m_tomahawk.n_grenade_charge_power, m_tomahawk);
|
||||||
a_zombies[i] dodamage( n_tomahawk_damage, m_tomahawk.origin, self, m_tomahawk, "none", "MOD_GRENADE", 0, "bouncing_tomahawk_zm" );
|
a_zombies[i] dodamage(n_tomahawk_damage, m_tomahawk.origin, self, m_tomahawk, "none", "MOD_GRENADE", 0, "bouncing_tomahawk_zm");
|
||||||
a_zombies[i].hit_by_tomahawk = 1;
|
a_zombies[i].hit_by_tomahawk = 1;
|
||||||
self maps\mp\zombies\_zm_score::add_to_player_score( 10 );
|
self maps\mp\zombies\_zm_score::add_to_player_score(10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -97,48 +97,48 @@ tomahawk_attack_zombies( m_tomahawk, a_zombies )
|
|||||||
wait 0.2;
|
wait 0.2;
|
||||||
}
|
}
|
||||||
|
|
||||||
self thread tomahawk_return_player( m_tomahawk, n_attack_limit );
|
self thread tomahawk_return_player(m_tomahawk, n_attack_limit);
|
||||||
}
|
}
|
||||||
|
|
||||||
tomahawk_return_player( m_tomahawk, num_zombie_hit = 5 )
|
tomahawk_return_player(m_tomahawk, num_zombie_hit = 5)
|
||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
n_dist = distance2dsquared( m_tomahawk.origin, self.origin );
|
n_dist = distance2dsquared(m_tomahawk.origin, self.origin);
|
||||||
n_attack_limit = m_tomahawk.n_grenade_charge_power - 1;
|
n_attack_limit = m_tomahawk.n_grenade_charge_power - 1;
|
||||||
|
|
||||||
while ( n_dist > 4096 )
|
while (n_dist > 4096)
|
||||||
{
|
{
|
||||||
m_tomahawk moveto( self geteye(), 0.25 );
|
m_tomahawk moveto(self geteye(), 0.25);
|
||||||
|
|
||||||
if ( num_zombie_hit < n_attack_limit )
|
if (num_zombie_hit < n_attack_limit)
|
||||||
{
|
{
|
||||||
self tomahawk_check_for_zombie( m_tomahawk );
|
self tomahawk_check_for_zombie(m_tomahawk);
|
||||||
num_zombie_hit++;
|
num_zombie_hit++;
|
||||||
}
|
}
|
||||||
|
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
n_dist = distance2dsquared( m_tomahawk.origin, self geteye() );
|
n_dist = distance2dsquared(m_tomahawk.origin, self geteye());
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( m_tomahawk.a_has_powerup ) )
|
if (isdefined(m_tomahawk.a_has_powerup))
|
||||||
{
|
{
|
||||||
foreach ( powerup in m_tomahawk.a_has_powerup )
|
foreach (powerup in m_tomahawk.a_has_powerup)
|
||||||
{
|
{
|
||||||
if ( isdefined( powerup ) )
|
if (isdefined(powerup))
|
||||||
powerup.origin = self.origin;
|
powerup.origin = self.origin;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_tomahawk delete();
|
m_tomahawk delete();
|
||||||
self playsoundtoplayer( "wpn_tomahawk_catch_plr", self );
|
self playsoundtoplayer("wpn_tomahawk_catch_plr", self);
|
||||||
self playsound( "wpn_tomahawk_catch_npc" );
|
self playsound("wpn_tomahawk_catch_npc");
|
||||||
wait 5;
|
wait 5;
|
||||||
self playsoundtoplayer( "wpn_tomahawk_cooldown_done", self );
|
self playsoundtoplayer("wpn_tomahawk_cooldown_done", self);
|
||||||
self givemaxammo( self.current_tomahawk_weapon );
|
self givemaxammo(self.current_tomahawk_weapon);
|
||||||
a_zombies = getaispeciesarray( "axis", "all" );
|
a_zombies = getaispeciesarray("axis", "all");
|
||||||
|
|
||||||
foreach ( ai_zombie in a_zombies )
|
foreach (ai_zombie in a_zombies)
|
||||||
ai_zombie.hit_by_tomahawk = 0;
|
ai_zombie.hit_by_tomahawk = 0;
|
||||||
|
|
||||||
self setclientfieldtoplayer( "tomahawk_in_use", 3 );
|
self setclientfieldtoplayer("tomahawk_in_use", 3);
|
||||||
}
|
}
|
@ -8,43 +8,43 @@
|
|||||||
#include maps\mp\zombies\_zm_unitrigger;
|
#include maps\mp\zombies\_zm_unitrigger;
|
||||||
#include maps\mp\zombies\_zm_audio;
|
#include maps\mp\zombies\_zm_audio;
|
||||||
|
|
||||||
triggerweaponslockerisvalidweaponpromptupdate( player, weaponname )
|
triggerweaponslockerisvalidweaponpromptupdate(player, weaponname)
|
||||||
{
|
{
|
||||||
self thread show_current_weapon(player);
|
self thread show_current_weapon(player);
|
||||||
|
|
||||||
retrievingweapon = player wl_has_stored_weapondata();
|
retrievingweapon = player wl_has_stored_weapondata();
|
||||||
|
|
||||||
if ( !retrievingweapon )
|
if (!retrievingweapon)
|
||||||
{
|
{
|
||||||
weaponname = player get_nonalternate_weapon( weaponname );
|
weaponname = player get_nonalternate_weapon(weaponname);
|
||||||
|
|
||||||
if ( !triggerweaponslockerisvalidweapon( weaponname ) )
|
if (!triggerweaponslockerisvalidweapon(weaponname))
|
||||||
self sethintstring( &"ZOMBIE_WEAPON_LOCKER_DENY" );
|
self sethintstring(&"ZOMBIE_WEAPON_LOCKER_DENY");
|
||||||
else
|
else
|
||||||
self sethintstring( &"ZOMBIE_WEAPON_LOCKER_STORE" );
|
self sethintstring(&"ZOMBIE_WEAPON_LOCKER_STORE");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
weapondata = player wl_get_stored_weapondata();
|
weapondata = player wl_get_stored_weapondata();
|
||||||
|
|
||||||
if ( isdefined( level.remap_weapon_locker_weapons ) )
|
if (isdefined(level.remap_weapon_locker_weapons))
|
||||||
weapondata = remap_weapon( weapondata, level.remap_weapon_locker_weapons );
|
weapondata = remap_weapon(weapondata, level.remap_weapon_locker_weapons);
|
||||||
|
|
||||||
weapontogive = weapondata["name"];
|
weapontogive = weapondata["name"];
|
||||||
primaries = player getweaponslistprimaries();
|
primaries = player getweaponslistprimaries();
|
||||||
maxweapons = get_player_weapon_limit( player );
|
maxweapons = get_player_weapon_limit(player);
|
||||||
weaponname = player get_nonalternate_weapon( weaponname );
|
weaponname = player get_nonalternate_weapon(weaponname);
|
||||||
|
|
||||||
if ( isdefined( primaries ) && primaries.size >= maxweapons || weapontogive == weaponname )
|
if (isdefined(primaries) && primaries.size >= maxweapons || weapontogive == weaponname)
|
||||||
{
|
{
|
||||||
if ( !triggerweaponslockerisvalidweapon( weaponname ) )
|
if (!triggerweaponslockerisvalidweapon(weaponname))
|
||||||
{
|
{
|
||||||
self sethintstring( &"ZOMBIE_WEAPON_LOCKER_DENY" );
|
self sethintstring(&"ZOMBIE_WEAPON_LOCKER_DENY");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self sethintstring( &"ZOMBIE_WEAPON_LOCKER_GRAB" );
|
self sethintstring(&"ZOMBIE_WEAPON_LOCKER_GRAB");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -65,19 +65,19 @@ show_current_weapon(player)
|
|||||||
{
|
{
|
||||||
weapondata = player wl_get_stored_weapondata();
|
weapondata = player wl_get_stored_weapondata();
|
||||||
|
|
||||||
if ( isdefined( level.remap_weapon_locker_weapons ) )
|
if (isdefined(level.remap_weapon_locker_weapons))
|
||||||
weapondata = remap_weapon( weapondata, level.remap_weapon_locker_weapons );
|
weapondata = remap_weapon(weapondata, level.remap_weapon_locker_weapons);
|
||||||
|
|
||||||
displayname = getweapondisplayname( weapondata["name"] );
|
displayname = getweapondisplayname(weapondata["name"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isDefined(stub.weaponlockerhud[num]))
|
if (isDefined(stub.weaponlockerhud[num]))
|
||||||
{
|
{
|
||||||
stub.weaponlockerhud[num] settext( displayname );
|
stub.weaponlockerhud[num] settext(displayname);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
hud = newclienthudelem( player );
|
hud = newclienthudelem(player);
|
||||||
hud.alignx = "center";
|
hud.alignx = "center";
|
||||||
hud.aligny = "middle";
|
hud.aligny = "middle";
|
||||||
hud.horzalign = "center";
|
hud.horzalign = "center";
|
||||||
@ -88,12 +88,12 @@ show_current_weapon(player)
|
|||||||
hud.font = "default";
|
hud.font = "default";
|
||||||
hud.fontscale = 1;
|
hud.fontscale = 1;
|
||||||
hud.alpha = 1;
|
hud.alpha = 1;
|
||||||
hud.color = ( 1, 1, 1 );
|
hud.color = (1, 1, 1);
|
||||||
hud.label = &"Placed Weapon: ";
|
hud.label = &"Placed Weapon: ";
|
||||||
hud settext( displayname );
|
hud settext(displayname);
|
||||||
stub.weaponlockerhud[num] = hud;
|
stub.weaponlockerhud[num] = hud;
|
||||||
|
|
||||||
while ( isDefined( self ) )
|
while (isDefined(self))
|
||||||
{
|
{
|
||||||
if (!player isTouching(self) || !is_player_valid(player) || player isSprinting() || player isThrowingGrenade())
|
if (!player isTouching(self) || !is_player_valid(player) || player isSprinting() || player isThrowingGrenade())
|
||||||
{
|
{
|
||||||
@ -111,7 +111,7 @@ show_current_weapon(player)
|
|||||||
stub.weaponlockerhud[num] = undefined;
|
stub.weaponlockerhud[num] = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
wl_set_stored_weapondata( weapondata )
|
wl_set_stored_weapondata(weapondata)
|
||||||
{
|
{
|
||||||
name = weapondata["name"];
|
name = weapondata["name"];
|
||||||
dw_name = weaponDualWieldWeaponName(name);
|
dw_name = weaponDualWieldWeaponName(name);
|
||||||
@ -153,8 +153,8 @@ wl_set_stored_weapondata( weapondata )
|
|||||||
weapondata["alt_stock"] -= clip_alt_missing;
|
weapondata["alt_stock"] -= clip_alt_missing;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( level.weapon_locker_online )
|
if (level.weapon_locker_online)
|
||||||
self set_stored_weapondata( weapondata, level.weapon_locker_map );
|
self set_stored_weapondata(weapondata, level.weapon_locker_map);
|
||||||
else
|
else
|
||||||
self.stored_weapon_data = weapondata;
|
self.stored_weapon_data = weapondata;
|
||||||
}
|
}
|
File diff suppressed because it is too large
Load Diff
@ -20,11 +20,11 @@ struct_class_init()
|
|||||||
level.struct_class_names[ "script_linkname" ] = [];
|
level.struct_class_names[ "script_linkname" ] = [];
|
||||||
level.struct_class_names[ "script_unitrigger_type" ] = [];
|
level.struct_class_names[ "script_unitrigger_type" ] = [];
|
||||||
|
|
||||||
foreach ( s_struct in level.struct )
|
foreach (s_struct in level.struct)
|
||||||
{
|
{
|
||||||
if ( isDefined( s_struct.targetname ) )
|
if (isDefined(s_struct.targetname))
|
||||||
{
|
{
|
||||||
if ( !isDefined( level.struct_class_names[ "targetname" ][ s_struct.targetname ] ) )
|
if (!isDefined(level.struct_class_names[ "targetname" ][ s_struct.targetname ]))
|
||||||
{
|
{
|
||||||
level.struct_class_names[ "targetname" ][ s_struct.targetname ] = [];
|
level.struct_class_names[ "targetname" ][ s_struct.targetname ] = [];
|
||||||
}
|
}
|
||||||
@ -33,9 +33,9 @@ struct_class_init()
|
|||||||
level.struct_class_names[ "targetname" ][ s_struct.targetname ][ size ] = s_struct;
|
level.struct_class_names[ "targetname" ][ s_struct.targetname ][ size ] = s_struct;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( s_struct.target ) )
|
if (isDefined(s_struct.target))
|
||||||
{
|
{
|
||||||
if ( !isDefined( level.struct_class_names[ "target" ][ s_struct.target ] ) )
|
if (!isDefined(level.struct_class_names[ "target" ][ s_struct.target ]))
|
||||||
{
|
{
|
||||||
level.struct_class_names[ "target" ][ s_struct.target ] = [];
|
level.struct_class_names[ "target" ][ s_struct.target ] = [];
|
||||||
}
|
}
|
||||||
@ -44,9 +44,9 @@ struct_class_init()
|
|||||||
level.struct_class_names[ "target" ][ s_struct.target ][ size ] = s_struct;
|
level.struct_class_names[ "target" ][ s_struct.target ][ size ] = s_struct;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( s_struct.script_noteworthy ) )
|
if (isDefined(s_struct.script_noteworthy))
|
||||||
{
|
{
|
||||||
if ( !isDefined( level.struct_class_names[ "script_noteworthy" ][ s_struct.script_noteworthy ] ) )
|
if (!isDefined(level.struct_class_names[ "script_noteworthy" ][ s_struct.script_noteworthy ]))
|
||||||
{
|
{
|
||||||
level.struct_class_names[ "script_noteworthy" ][ s_struct.script_noteworthy ] = [];
|
level.struct_class_names[ "script_noteworthy" ][ s_struct.script_noteworthy ] = [];
|
||||||
}
|
}
|
||||||
@ -55,14 +55,14 @@ struct_class_init()
|
|||||||
level.struct_class_names[ "script_noteworthy" ][ s_struct.script_noteworthy ][ size ] = s_struct;
|
level.struct_class_names[ "script_noteworthy" ][ s_struct.script_noteworthy ][ size ] = s_struct;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( s_struct.script_linkname ) )
|
if (isDefined(s_struct.script_linkname))
|
||||||
{
|
{
|
||||||
level.struct_class_names[ "script_linkname" ][ s_struct.script_linkname ][ 0 ] = s_struct;
|
level.struct_class_names[ "script_linkname" ][ s_struct.script_linkname ][ 0 ] = s_struct;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( s_struct.script_unitrigger_type ) )
|
if (isDefined(s_struct.script_unitrigger_type))
|
||||||
{
|
{
|
||||||
if ( !isDefined( level.struct_class_names[ "script_unitrigger_type" ][ s_struct.script_unitrigger_type ] ) )
|
if (!isDefined(level.struct_class_names[ "script_unitrigger_type" ][ s_struct.script_unitrigger_type ]))
|
||||||
{
|
{
|
||||||
level.struct_class_names[ "script_unitrigger_type" ][ s_struct.script_unitrigger_type ] = [];
|
level.struct_class_names[ "script_unitrigger_type" ][ s_struct.script_unitrigger_type ] = [];
|
||||||
}
|
}
|
||||||
@ -72,16 +72,16 @@ struct_class_init()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
gametype = getDvar( "g_gametype" );
|
gametype = getDvar("g_gametype");
|
||||||
location = getDvar( "ui_zm_mapstartlocation" );
|
location = getDvar("ui_zm_mapstartlocation");
|
||||||
|
|
||||||
if ( array_validate( level.add_struct_gamemode_location_funcs ) )
|
if (array_validate(level.add_struct_gamemode_location_funcs))
|
||||||
{
|
{
|
||||||
if ( array_validate( level.add_struct_gamemode_location_funcs[ gametype ] ) )
|
if (array_validate(level.add_struct_gamemode_location_funcs[ gametype ]))
|
||||||
{
|
{
|
||||||
if ( array_validate( level.add_struct_gamemode_location_funcs[ gametype ][ location ] ) )
|
if (array_validate(level.add_struct_gamemode_location_funcs[ gametype ][ location ]))
|
||||||
{
|
{
|
||||||
for ( i = 0; i < level.add_struct_gamemode_location_funcs[ gametype ][ location ].size; i++ )
|
for (i = 0; i < level.add_struct_gamemode_location_funcs[ gametype ][ location ].size; i++)
|
||||||
{
|
{
|
||||||
[[ level.add_struct_gamemode_location_funcs[ gametype ][ location ][ i ] ]]();
|
[[ level.add_struct_gamemode_location_funcs[ gametype ][ location ][ i ] ]]();
|
||||||
}
|
}
|
||||||
@ -90,11 +90,11 @@ struct_class_init()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
add_struct( s_struct )
|
add_struct(s_struct)
|
||||||
{
|
{
|
||||||
if ( isDefined( s_struct.targetname ) )
|
if (isDefined(s_struct.targetname))
|
||||||
{
|
{
|
||||||
if ( !isDefined( level.struct_class_names[ "targetname" ][ s_struct.targetname ] ) )
|
if (!isDefined(level.struct_class_names[ "targetname" ][ s_struct.targetname ]))
|
||||||
{
|
{
|
||||||
level.struct_class_names[ "targetname" ][ s_struct.targetname ] = [];
|
level.struct_class_names[ "targetname" ][ s_struct.targetname ] = [];
|
||||||
}
|
}
|
||||||
@ -103,9 +103,9 @@ add_struct( s_struct )
|
|||||||
level.struct_class_names[ "targetname" ][ s_struct.targetname ][ size ] = s_struct;
|
level.struct_class_names[ "targetname" ][ s_struct.targetname ][ size ] = s_struct;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( s_struct.script_noteworthy ) )
|
if (isDefined(s_struct.script_noteworthy))
|
||||||
{
|
{
|
||||||
if ( !isDefined( level.struct_class_names[ "script_noteworthy" ][ s_struct.script_noteworthy ] ) )
|
if (!isDefined(level.struct_class_names[ "script_noteworthy" ][ s_struct.script_noteworthy ]))
|
||||||
{
|
{
|
||||||
level.struct_class_names[ "script_noteworthy" ][ s_struct.script_noteworthy ] = [];
|
level.struct_class_names[ "script_noteworthy" ][ s_struct.script_noteworthy ] = [];
|
||||||
}
|
}
|
||||||
@ -114,9 +114,9 @@ add_struct( s_struct )
|
|||||||
level.struct_class_names[ "script_noteworthy" ][ s_struct.script_noteworthy ][ size ] = s_struct;
|
level.struct_class_names[ "script_noteworthy" ][ s_struct.script_noteworthy ][ size ] = s_struct;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( s_struct.target ) )
|
if (isDefined(s_struct.target))
|
||||||
{
|
{
|
||||||
if ( !isDefined( level.struct_class_names[ "target" ][ s_struct.target ] ) )
|
if (!isDefined(level.struct_class_names[ "target" ][ s_struct.target ]))
|
||||||
{
|
{
|
||||||
level.struct_class_names[ "target" ][ s_struct.target ] = [];
|
level.struct_class_names[ "target" ][ s_struct.target ] = [];
|
||||||
}
|
}
|
||||||
@ -125,14 +125,14 @@ add_struct( s_struct )
|
|||||||
level.struct_class_names[ "target" ][ s_struct.target ][ size ] = s_struct;
|
level.struct_class_names[ "target" ][ s_struct.target ][ size ] = s_struct;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( s_struct.script_linkname ) )
|
if (isDefined(s_struct.script_linkname))
|
||||||
{
|
{
|
||||||
level.struct_class_names[ "script_linkname" ][ s_struct.script_linkname ][ 0 ] = s_struct;
|
level.struct_class_names[ "script_linkname" ][ s_struct.script_linkname ][ 0 ] = s_struct;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( s_struct.script_unitrigger_type ) )
|
if (isDefined(s_struct.script_unitrigger_type))
|
||||||
{
|
{
|
||||||
if ( !isDefined( level.struct_class_names[ "script_unitrigger_type" ][ s_struct.script_unitrigger_type ] ) )
|
if (!isDefined(level.struct_class_names[ "script_unitrigger_type" ][ s_struct.script_unitrigger_type ]))
|
||||||
{
|
{
|
||||||
level.struct_class_names[ "script_unitrigger_type" ][ s_struct.script_unitrigger_type ] = [];
|
level.struct_class_names[ "script_unitrigger_type" ][ s_struct.script_unitrigger_type ] = [];
|
||||||
}
|
}
|
||||||
@ -142,7 +142,7 @@ add_struct( s_struct )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
register_perk_struct( name, model, origin, angles )
|
register_perk_struct(name, model, origin, angles)
|
||||||
{
|
{
|
||||||
perk_struct = spawnStruct();
|
perk_struct = spawnStruct();
|
||||||
perk_struct.targetname = "zm_perk_machine";
|
perk_struct.targetname = "zm_perk_machine";
|
||||||
@ -151,53 +151,53 @@ register_perk_struct( name, model, origin, angles )
|
|||||||
perk_struct.script_noteworthy = name;
|
perk_struct.script_noteworthy = name;
|
||||||
perk_struct.model = model;
|
perk_struct.model = model;
|
||||||
|
|
||||||
if ( name == "specialty_weapupgrade" )
|
if (name == "specialty_weapupgrade")
|
||||||
{
|
{
|
||||||
flag_struct = spawnStruct();
|
flag_struct = spawnStruct();
|
||||||
flag_struct.targetname = "weapupgrade_flag_targ";
|
flag_struct.targetname = "weapupgrade_flag_targ";
|
||||||
flag_struct.origin = origin + ( anglesToForward( angles ) * 29 ) + ( anglesToRight( angles ) * -13.5 ) + ( anglesToUp( angles ) * 49.5 );
|
flag_struct.origin = origin + (anglesToForward(angles) * 29) + (anglesToRight(angles) * -13.5) + (anglesToUp(angles) * 49.5);
|
||||||
flag_struct.angles = angles + ( 0, 180, 180 );
|
flag_struct.angles = angles + (0, 180, 180);
|
||||||
flag_struct.model = "zombie_sign_please_wait";
|
flag_struct.model = "zombie_sign_please_wait";
|
||||||
perk_struct.target = flag_struct.targetname;
|
perk_struct.target = flag_struct.targetname;
|
||||||
|
|
||||||
add_struct( flag_struct );
|
add_struct(flag_struct);
|
||||||
}
|
}
|
||||||
|
|
||||||
add_struct( perk_struct );
|
add_struct(perk_struct);
|
||||||
}
|
}
|
||||||
|
|
||||||
register_map_spawn_group( origin, zone, dist )
|
register_map_spawn_group(origin, zone, dist)
|
||||||
{
|
{
|
||||||
spawn_group_struct = spawnStruct();
|
spawn_group_struct = spawnStruct();
|
||||||
spawn_group_struct.targetname = "player_respawn_point";
|
spawn_group_struct.targetname = "player_respawn_point";
|
||||||
spawn_group_struct.origin = origin;
|
spawn_group_struct.origin = origin;
|
||||||
spawn_group_struct.locked = !zone_is_enabled( zone );
|
spawn_group_struct.locked = !zone_is_enabled(zone);
|
||||||
spawn_group_struct.script_int = dist;
|
spawn_group_struct.script_int = dist;
|
||||||
spawn_group_struct.script_noteworthy = zone;
|
spawn_group_struct.script_noteworthy = zone;
|
||||||
spawn_group_struct.script_string = getDvar( "g_gametype" ) + "_" + getDvar( "ui_zm_mapstartlocation" );
|
spawn_group_struct.script_string = getDvar("g_gametype") + "_" + getDvar("ui_zm_mapstartlocation");
|
||||||
spawn_group_struct.target = zone + "_player_spawns";
|
spawn_group_struct.target = zone + "_player_spawns";
|
||||||
|
|
||||||
add_struct( spawn_group_struct );
|
add_struct(spawn_group_struct);
|
||||||
}
|
}
|
||||||
|
|
||||||
register_map_spawn( origin, angles, zone, team_num )
|
register_map_spawn(origin, angles, zone, team_num)
|
||||||
{
|
{
|
||||||
spawn_struct = spawnStruct();
|
spawn_struct = spawnStruct();
|
||||||
spawn_struct.targetname = zone + "_player_spawns";
|
spawn_struct.targetname = zone + "_player_spawns";
|
||||||
spawn_struct.origin = origin;
|
spawn_struct.origin = origin;
|
||||||
spawn_struct.angles = angles;
|
spawn_struct.angles = angles;
|
||||||
spawn_struct.script_string = getDvar( "g_gametype" ) + "_" + getDvar( "ui_zm_mapstartlocation" );
|
spawn_struct.script_string = getDvar("g_gametype") + "_" + getDvar("ui_zm_mapstartlocation");
|
||||||
|
|
||||||
if ( isDefined( team_num ) )
|
if (isDefined(team_num))
|
||||||
{
|
{
|
||||||
spawn_struct.script_noteworthy = "initial_spawn";
|
spawn_struct.script_noteworthy = "initial_spawn";
|
||||||
spawn_struct.script_int = team_num;
|
spawn_struct.script_int = team_num;
|
||||||
}
|
}
|
||||||
|
|
||||||
add_struct( spawn_struct );
|
add_struct(spawn_struct);
|
||||||
}
|
}
|
||||||
|
|
||||||
wallbuy( weapon_name, target, targetname, origin, angles, play_chalk_fx = 1 )
|
wallbuy(weapon_name, target, targetname, origin, angles, play_chalk_fx = 1)
|
||||||
{
|
{
|
||||||
unitrigger_stub = spawnstruct();
|
unitrigger_stub = spawnstruct();
|
||||||
unitrigger_stub.origin = origin;
|
unitrigger_stub.origin = origin;
|
||||||
@ -205,18 +205,18 @@ wallbuy( weapon_name, target, targetname, origin, angles, play_chalk_fx = 1 )
|
|||||||
|
|
||||||
model_name = undefined;
|
model_name = undefined;
|
||||||
|
|
||||||
if ( weapon_name == "sticky_grenade_zm" )
|
if (weapon_name == "sticky_grenade_zm")
|
||||||
{
|
{
|
||||||
model_name = "semtex_bag";
|
model_name = "semtex_bag";
|
||||||
}
|
}
|
||||||
else if ( weapon_name == "claymore_zm" )
|
else if (weapon_name == "claymore_zm")
|
||||||
{
|
{
|
||||||
model_name = "t6_wpn_claymore_world";
|
model_name = "t6_wpn_claymore_world";
|
||||||
}
|
}
|
||||||
|
|
||||||
wallmodel = spawn_weapon_model( weapon_name, model_name, origin, angles );
|
wallmodel = spawn_weapon_model(weapon_name, model_name, origin, angles);
|
||||||
wallmodel.targetname = target;
|
wallmodel.targetname = target;
|
||||||
wallmodel useweaponhidetags( weapon_name );
|
wallmodel useweaponhidetags(weapon_name);
|
||||||
wallmodel hide();
|
wallmodel hide();
|
||||||
|
|
||||||
absmins = wallmodel getabsmins();
|
absmins = wallmodel getabsmins();
|
||||||
@ -231,23 +231,23 @@ wallbuy( weapon_name, target, targetname, origin, angles, play_chalk_fx = 1 )
|
|||||||
unitrigger_stub.cursor_hint = "HINT_NOICON";
|
unitrigger_stub.cursor_hint = "HINT_NOICON";
|
||||||
|
|
||||||
// move model forward so it always shows in front of chalk
|
// move model forward so it always shows in front of chalk
|
||||||
wallmodel.origin += anglesToRight( wallmodel.angles ) * -0.3;
|
wallmodel.origin += anglesToRight(wallmodel.angles) * -0.3;
|
||||||
unitrigger_stub.origin += anglesToRight( wallmodel.angles ) * -0.3;
|
unitrigger_stub.origin += anglesToRight(wallmodel.angles) * -0.3;
|
||||||
|
|
||||||
if ( unitrigger_stub.targetname == "weapon_upgrade" )
|
if (unitrigger_stub.targetname == "weapon_upgrade")
|
||||||
{
|
{
|
||||||
unitrigger_stub.cost = get_weapon_cost( weapon_name );
|
unitrigger_stub.cost = get_weapon_cost(weapon_name);
|
||||||
|
|
||||||
if ( !is_true( level.monolingustic_prompt_format ) )
|
if (!is_true(level.monolingustic_prompt_format))
|
||||||
{
|
{
|
||||||
unitrigger_stub.hint_string = get_weapon_hint( weapon_name );
|
unitrigger_stub.hint_string = get_weapon_hint(weapon_name);
|
||||||
unitrigger_stub.hint_parm1 = unitrigger_stub.cost;
|
unitrigger_stub.hint_parm1 = unitrigger_stub.cost;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
unitrigger_stub.hint_parm1 = get_weapon_display_name( weapon_name );
|
unitrigger_stub.hint_parm1 = get_weapon_display_name(weapon_name);
|
||||||
|
|
||||||
if ( !isDefined( unitrigger_stub.hint_parm1 ) || unitrigger_stub.hint_parm1 == "" || unitrigger_stub.hint_parm1 == "none" )
|
if (!isDefined(unitrigger_stub.hint_parm1) || unitrigger_stub.hint_parm1 == "" || unitrigger_stub.hint_parm1 == "none")
|
||||||
{
|
{
|
||||||
unitrigger_stub.hint_parm1 = "missing weapon name " + weapon_name;
|
unitrigger_stub.hint_parm1 = "missing weapon name " + weapon_name;
|
||||||
}
|
}
|
||||||
@ -262,9 +262,9 @@ wallbuy( weapon_name, target, targetname, origin, angles, play_chalk_fx = 1 )
|
|||||||
unitrigger_stub.require_look_at = 1;
|
unitrigger_stub.require_look_at = 1;
|
||||||
unitrigger_stub.require_look_from = 0;
|
unitrigger_stub.require_look_from = 0;
|
||||||
unitrigger_stub.zombie_weapon_upgrade = weapon_name;
|
unitrigger_stub.zombie_weapon_upgrade = weapon_name;
|
||||||
maps\mp\zombies\_zm_unitrigger::unitrigger_force_per_player_triggers( unitrigger_stub, 1 );
|
maps\mp\zombies\_zm_unitrigger::unitrigger_force_per_player_triggers(unitrigger_stub, 1);
|
||||||
|
|
||||||
if ( is_melee_weapon( weapon_name ) )
|
if (is_melee_weapon(weapon_name))
|
||||||
{
|
{
|
||||||
melee_weapon = undefined;
|
melee_weapon = undefined;
|
||||||
|
|
||||||
@ -306,24 +306,24 @@ wallbuy( weapon_name, target, targetname, origin, angles, play_chalk_fx = 1 )
|
|||||||
|
|
||||||
wallmodel.origin += anglesToForward(angles) * -8; // _zm_melee_weapon::melee_weapon_show moves this back
|
wallmodel.origin += anglesToForward(angles) * -8; // _zm_melee_weapon::melee_weapon_show moves this back
|
||||||
|
|
||||||
maps\mp\zombies\_zm_unitrigger::register_static_unitrigger( unitrigger_stub, ::melee_weapon_think );
|
maps\mp\zombies\_zm_unitrigger::register_static_unitrigger(unitrigger_stub, ::melee_weapon_think);
|
||||||
}
|
}
|
||||||
else if ( weapon_name == "claymore_zm" )
|
else if (weapon_name == "claymore_zm")
|
||||||
{
|
{
|
||||||
wallmodel.angles += (0, 90, 0);
|
wallmodel.angles += (0, 90, 0);
|
||||||
wallmodel.script_int = 90; // fix for model sliding right to left
|
wallmodel.script_int = 90; // fix for model sliding right to left
|
||||||
|
|
||||||
unitrigger_stub.prompt_and_visibility_func = scripts\zm\replaced\_zm_weap_claymore::claymore_unitrigger_update_prompt;
|
unitrigger_stub.prompt_and_visibility_func = scripts\zm\replaced\_zm_weap_claymore::claymore_unitrigger_update_prompt;
|
||||||
maps\mp\zombies\_zm_unitrigger::register_static_unitrigger( unitrigger_stub, scripts\zm\replaced\_zm_weap_claymore::buy_claymores );
|
maps\mp\zombies\_zm_unitrigger::register_static_unitrigger(unitrigger_stub, scripts\zm\replaced\_zm_weap_claymore::buy_claymores);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( is_lethal_grenade( unitrigger_stub.zombie_weapon_upgrade ) )
|
if (is_lethal_grenade(unitrigger_stub.zombie_weapon_upgrade))
|
||||||
unitrigger_stub.prompt_and_visibility_func = scripts\zm\replaced\_zm_weapons::lethal_grenade_update_prompt;
|
unitrigger_stub.prompt_and_visibility_func = scripts\zm\replaced\_zm_weapons::lethal_grenade_update_prompt;
|
||||||
else
|
else
|
||||||
unitrigger_stub.prompt_and_visibility_func = ::wall_weapon_update_prompt;
|
unitrigger_stub.prompt_and_visibility_func = ::wall_weapon_update_prompt;
|
||||||
|
|
||||||
maps\mp\zombies\_zm_unitrigger::register_static_unitrigger( unitrigger_stub, scripts\zm\replaced\_zm_weapons::weapon_spawn_think );
|
maps\mp\zombies\_zm_unitrigger::register_static_unitrigger(unitrigger_stub, scripts\zm\replaced\_zm_weapons::weapon_spawn_think);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (weaponType(weapon_name) == "grenade")
|
if (weaponType(weapon_name) == "grenade")
|
||||||
@ -334,17 +334,17 @@ wallbuy( weapon_name, target, targetname, origin, angles, play_chalk_fx = 1 )
|
|||||||
if (play_chalk_fx)
|
if (play_chalk_fx)
|
||||||
{
|
{
|
||||||
chalk_fx = weapon_name + "_fx";
|
chalk_fx = weapon_name + "_fx";
|
||||||
level thread playchalkfx( chalk_fx, origin, angles );
|
level thread playchalkfx(chalk_fx, origin, angles);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
playchalkfx( effect, origin, angles )
|
playchalkfx(effect, origin, angles)
|
||||||
{
|
{
|
||||||
while ( 1 )
|
while (1)
|
||||||
{
|
{
|
||||||
fx = SpawnFX( level._effect[ effect ], origin, AnglesToForward( angles ), AnglesToUp( angles ) );
|
fx = SpawnFX(level._effect[ effect ], origin, AnglesToForward(angles), AnglesToUp(angles));
|
||||||
TriggerFX( fx );
|
TriggerFX(fx);
|
||||||
level waittill( "connected", player );
|
level waittill("connected", player);
|
||||||
fx Delete();
|
fx Delete();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -365,19 +365,19 @@ wallbuy_grenade_model_fix()
|
|||||||
self.target = undefined;
|
self.target = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
barrier( model, origin, angles, not_solid )
|
barrier(model, origin, angles, not_solid)
|
||||||
{
|
{
|
||||||
if ( !isDefined( level.survival_barriers ) )
|
if (!isDefined(level.survival_barriers))
|
||||||
{
|
{
|
||||||
level.survival_barriers = [];
|
level.survival_barriers = [];
|
||||||
level.survival_barriers_index = 0;
|
level.survival_barriers_index = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
level.survival_barriers[ level.survival_barriers_index ] = spawn( "script_model", origin );
|
level.survival_barriers[ level.survival_barriers_index ] = spawn("script_model", origin);
|
||||||
level.survival_barriers[ level.survival_barriers_index ] setModel( model );
|
level.survival_barriers[ level.survival_barriers_index ] setModel(model);
|
||||||
level.survival_barriers[ level.survival_barriers_index ] rotateTo( angles, 0.1 );
|
level.survival_barriers[ level.survival_barriers_index ] rotateTo(angles, 0.1);
|
||||||
|
|
||||||
if ( is_true( not_solid ) )
|
if (is_true(not_solid))
|
||||||
{
|
{
|
||||||
level.survival_barriers[ level.survival_barriers_index ] notSolid();
|
level.survival_barriers[ level.survival_barriers_index ] notSolid();
|
||||||
}
|
}
|
||||||
@ -385,19 +385,19 @@ barrier( model, origin, angles, not_solid )
|
|||||||
level.survival_barriers_index++;
|
level.survival_barriers_index++;
|
||||||
}
|
}
|
||||||
|
|
||||||
add_struct_location_gamemode_func( gametype, location, func )
|
add_struct_location_gamemode_func(gametype, location, func)
|
||||||
{
|
{
|
||||||
if ( !isDefined( level.add_struct_gamemode_location_funcs ) )
|
if (!isDefined(level.add_struct_gamemode_location_funcs))
|
||||||
{
|
{
|
||||||
level.add_struct_gamemode_location_funcs = [];
|
level.add_struct_gamemode_location_funcs = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isDefined( level.add_struct_gamemode_location_funcs[ gametype ] ) )
|
if (!isDefined(level.add_struct_gamemode_location_funcs[ gametype ]))
|
||||||
{
|
{
|
||||||
level.add_struct_gamemode_location_funcs[ gametype ] = [];
|
level.add_struct_gamemode_location_funcs[ gametype ] = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isDefined( level.add_struct_gamemode_location_funcs[ gametype ][ location ] ) )
|
if (!isDefined(level.add_struct_gamemode_location_funcs[ gametype ][ location ]))
|
||||||
{
|
{
|
||||||
level.add_struct_gamemode_location_funcs[ gametype ][ location ] = [];
|
level.add_struct_gamemode_location_funcs[ gametype ][ location ] = [];
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@ game_mode_spawn_player_logic()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( flag( "start_zombie_round_logic" ) && !isDefined( self.is_hotjoin ) )
|
if (flag("start_zombie_round_logic") && !isDefined(self.is_hotjoin))
|
||||||
{
|
{
|
||||||
self.is_hotjoin = 1;
|
self.is_hotjoin = 1;
|
||||||
return 1;
|
return 1;
|
||||||
@ -18,16 +18,16 @@ game_mode_spawn_player_logic()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
meat_bounce_override( pos, normal, ent, bounce )
|
meat_bounce_override(pos, normal, ent, bounce)
|
||||||
{
|
{
|
||||||
if ( isdefined( ent ) && isplayer( ent ) && is_player_valid(ent) && !ent hasWeapon("item_meat_zm") && !is_true(ent.dont_touch_the_meat) )
|
if (isdefined(ent) && isplayer(ent) && is_player_valid(ent) && !ent hasWeapon("item_meat_zm") && !is_true(ent.dont_touch_the_meat))
|
||||||
{
|
{
|
||||||
level thread meat_stink_player( ent );
|
level thread meat_stink_player(ent);
|
||||||
|
|
||||||
if ( isdefined( self.owner ) )
|
if (isdefined(self.owner))
|
||||||
{
|
{
|
||||||
maps\mp\_demo::bookmark( "zm_player_meat_stink", gettime(), ent, self.owner, 0, self );
|
maps\mp\_demo::bookmark("zm_player_meat_stink", gettime(), ent, self.owner, 0, self);
|
||||||
self.owner maps\mp\zombies\_zm_stats::increment_client_stat( "contaminations_given" );
|
self.owner maps\mp\zombies\_zm_stats::increment_client_stat("contaminations_given");
|
||||||
}
|
}
|
||||||
|
|
||||||
self delete();
|
self delete();
|
||||||
@ -42,32 +42,32 @@ meat_bounce_override( pos, normal, ent, bounce )
|
|||||||
|
|
||||||
foreach (player in players)
|
foreach (player in players)
|
||||||
{
|
{
|
||||||
if ( !is_player_valid(player) )
|
if (!is_player_valid(player))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( player hasWeapon("item_meat_zm") )
|
if (player hasWeapon("item_meat_zm"))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( is_true(player.dont_touch_the_meat) )
|
if (is_true(player.dont_touch_the_meat))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
distsq = distancesquared( pos, player.origin );
|
distsq = distancesquared(pos, player.origin);
|
||||||
|
|
||||||
if ( distsq < closest_player_dist )
|
if (distsq < closest_player_dist)
|
||||||
{
|
{
|
||||||
closest_player = player;
|
closest_player = player;
|
||||||
closest_player_dist = distsq;
|
closest_player_dist = distsq;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( closest_player ) )
|
if (isdefined(closest_player))
|
||||||
{
|
{
|
||||||
level thread meat_stink_player( closest_player );
|
level thread meat_stink_player(closest_player);
|
||||||
|
|
||||||
if ( isdefined( self.owner ) )
|
if (isdefined(self.owner))
|
||||||
{
|
{
|
||||||
maps\mp\_demo::bookmark( "zm_player_meat_stink", gettime(), closest_player, self.owner, 0, self );
|
maps\mp\_demo::bookmark("zm_player_meat_stink", gettime(), closest_player, self.owner, 0, self);
|
||||||
self.owner maps\mp\zombies\_zm_stats::increment_client_stat( "contaminations_given" );
|
self.owner maps\mp\zombies\_zm_stats::increment_client_stat("contaminations_given");
|
||||||
}
|
}
|
||||||
|
|
||||||
self delete();
|
self delete();
|
||||||
@ -76,7 +76,7 @@ meat_bounce_override( pos, normal, ent, bounce )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
playfx( level._effect["meat_impact"], self.origin );
|
playfx(level._effect["meat_impact"], self.origin);
|
||||||
|
|
||||||
if (is_true(bounce))
|
if (is_true(bounce))
|
||||||
{
|
{
|
||||||
@ -105,11 +105,11 @@ meat_bounce_override( pos, normal, ent, bounce )
|
|||||||
|
|
||||||
if (level.scr_zm_ui_gametype_obj == "zmeat")
|
if (level.scr_zm_ui_gametype_obj == "zmeat")
|
||||||
{
|
{
|
||||||
level.meat_powerup = maps\mp\zombies\_zm_powerups::specific_powerup_drop( "meat_stink", pos );
|
level.meat_powerup = maps\mp\zombies\_zm_powerups::specific_powerup_drop("meat_stink", pos);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
level thread meat_stink_on_ground( self.origin );
|
level thread meat_stink_on_ground(self.origin);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -120,7 +120,7 @@ meat_bounce_override( pos, normal, ent, bounce )
|
|||||||
self delete();
|
self delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
meat_stink( who )
|
meat_stink(who)
|
||||||
{
|
{
|
||||||
if (who hasWeapon("item_meat_zm"))
|
if (who hasWeapon("item_meat_zm"))
|
||||||
{
|
{
|
||||||
@ -142,7 +142,7 @@ meat_stink( who )
|
|||||||
player thread scripts\zm\zgrief\zgrief_reimagined::show_grief_hud_msg("Meat dropped!");
|
player thread scripts\zm\zgrief\zgrief_reimagined::show_grief_hud_msg("Meat dropped!");
|
||||||
}
|
}
|
||||||
|
|
||||||
level.meat_powerup = maps\mp\zombies\_zm_powerups::specific_powerup_drop( "meat_stink", who.origin );
|
level.meat_powerup = maps\mp\zombies\_zm_powerups::specific_powerup_drop("meat_stink", who.origin);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -154,13 +154,13 @@ meat_stink( who )
|
|||||||
}
|
}
|
||||||
|
|
||||||
who.pre_meat_weapon = who getcurrentweapon();
|
who.pre_meat_weapon = who getcurrentweapon();
|
||||||
level notify( "meat_grabbed" );
|
level notify("meat_grabbed");
|
||||||
who notify( "meat_grabbed" );
|
who notify("meat_grabbed");
|
||||||
who playsound( "zmb_pickup_meat" );
|
who playsound("zmb_pickup_meat");
|
||||||
who increment_is_drinking();
|
who increment_is_drinking();
|
||||||
who giveweapon( "item_meat_zm" );
|
who giveweapon("item_meat_zm");
|
||||||
who switchtoweapon( "item_meat_zm" );
|
who switchtoweapon("item_meat_zm");
|
||||||
who setweaponammoclip( "item_meat_zm", 1 );
|
who setweaponammoclip("item_meat_zm", 1);
|
||||||
who setMoveSpeedScale(0.75);
|
who setMoveSpeedScale(0.75);
|
||||||
who.ignoreme = 0;
|
who.ignoreme = 0;
|
||||||
level.meat_player = who;
|
level.meat_player = who;
|
||||||
@ -364,7 +364,7 @@ meat_stink_cleanup_on_downed()
|
|||||||
player thread scripts\zm\zgrief\zgrief_reimagined::show_grief_hud_msg("Meat dropped!");
|
player thread scripts\zm\zgrief\zgrief_reimagined::show_grief_hud_msg("Meat dropped!");
|
||||||
}
|
}
|
||||||
|
|
||||||
level.meat_powerup = maps\mp\zombies\_zm_powerups::specific_powerup_drop( "meat_stink", self.origin );
|
level.meat_powerup = maps\mp\zombies\_zm_powerups::specific_powerup_drop("meat_stink", self.origin);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -400,25 +400,25 @@ meat_powerup_reset_on_disconnect()
|
|||||||
meat_stink_on_ground(position_to_play)
|
meat_stink_on_ground(position_to_play)
|
||||||
{
|
{
|
||||||
level.meat_on_ground = 1;
|
level.meat_on_ground = 1;
|
||||||
attractor_point = spawn( "script_model", position_to_play );
|
attractor_point = spawn("script_model", position_to_play);
|
||||||
attractor_point setmodel( "tag_origin" );
|
attractor_point setmodel("tag_origin");
|
||||||
attractor_point playsound( "zmb_land_meat" );
|
attractor_point playsound("zmb_land_meat");
|
||||||
wait 0.2;
|
wait 0.2;
|
||||||
playfxontag( level._effect[ "meat_stink_torso" ], attractor_point, "tag_origin" );
|
playfxontag(level._effect[ "meat_stink_torso" ], attractor_point, "tag_origin");
|
||||||
attractor_point playloopsound( "zmb_meat_flies" );
|
attractor_point playloopsound("zmb_meat_flies");
|
||||||
attractor_point create_zombie_point_of_interest( 768, 48, 10000 );
|
attractor_point create_zombie_point_of_interest(768, 48, 10000);
|
||||||
attractor_point.attract_to_origin = 1;
|
attractor_point.attract_to_origin = 1;
|
||||||
attractor_point thread create_zombie_point_of_interest_attractor_positions( 4, 45 );
|
attractor_point thread create_zombie_point_of_interest_attractor_positions(4, 45);
|
||||||
attractor_point thread maps\mp\zombies\_zm_weap_cymbal_monkey::wait_for_attractor_positions_complete();
|
attractor_point thread maps\mp\zombies\_zm_weap_cymbal_monkey::wait_for_attractor_positions_complete();
|
||||||
attractor_point delay_thread( 10, ::self_delete );
|
attractor_point delay_thread(10, ::self_delete);
|
||||||
wait 10;
|
wait 10;
|
||||||
level.meat_on_ground = undefined;
|
level.meat_on_ground = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
meat_stink_player( who )
|
meat_stink_player(who)
|
||||||
{
|
{
|
||||||
level notify( "new_meat_stink_player" );
|
level notify("new_meat_stink_player");
|
||||||
level endon( "new_meat_stink_player" );
|
level endon("new_meat_stink_player");
|
||||||
|
|
||||||
if (level.scr_zm_ui_gametype_obj == "zmeat")
|
if (level.scr_zm_ui_gametype_obj == "zmeat")
|
||||||
{
|
{
|
||||||
@ -426,16 +426,16 @@ meat_stink_player( who )
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
who notify( "meat_stink_player_start" );
|
who notify("meat_stink_player_start");
|
||||||
level.meat_player = who;
|
level.meat_player = who;
|
||||||
who.ignoreme = 0;
|
who.ignoreme = 0;
|
||||||
players = get_players();
|
players = get_players();
|
||||||
|
|
||||||
foreach ( player in players )
|
foreach (player in players)
|
||||||
{
|
{
|
||||||
player thread maps\mp\gametypes_zm\zgrief::meat_stink_player_cleanup();
|
player thread maps\mp\gametypes_zm\zgrief::meat_stink_player_cleanup();
|
||||||
|
|
||||||
if ( player != who )
|
if (player != who)
|
||||||
{
|
{
|
||||||
player.ignoreme = 1;
|
player.ignoreme = 1;
|
||||||
}
|
}
|
||||||
@ -446,12 +446,12 @@ meat_stink_player( who )
|
|||||||
who thread meat_stink_ignoreme_think();
|
who thread meat_stink_ignoreme_think();
|
||||||
who thread meat_stink_player_create();
|
who thread meat_stink_player_create();
|
||||||
|
|
||||||
who waittill_any_or_timeout( 30, "disconnect", "player_downed", "bled_out", "spawned_player" );
|
who waittill_any_or_timeout(30, "disconnect", "player_downed", "bled_out", "spawned_player");
|
||||||
|
|
||||||
who notify( "meat_stink_player_end" );
|
who notify("meat_stink_player_end");
|
||||||
players = get_players();
|
players = get_players();
|
||||||
|
|
||||||
foreach ( player in players )
|
foreach (player in players)
|
||||||
{
|
{
|
||||||
player thread maps\mp\gametypes_zm\zgrief::meat_stink_player_cleanup();
|
player thread maps\mp\gametypes_zm\zgrief::meat_stink_player_cleanup();
|
||||||
|
|
||||||
@ -466,15 +466,15 @@ meat_stink_player( who )
|
|||||||
|
|
||||||
meat_stink_player_create()
|
meat_stink_player_create()
|
||||||
{
|
{
|
||||||
self maps\mp\zombies\_zm_stats::increment_client_stat( "contaminations_received" );
|
self maps\mp\zombies\_zm_stats::increment_client_stat("contaminations_received");
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
tagname = "J_SpineLower";
|
tagname = "J_SpineLower";
|
||||||
self.meat_stink_3p = spawn( "script_model", self gettagorigin( tagname ) );
|
self.meat_stink_3p = spawn("script_model", self gettagorigin(tagname));
|
||||||
self.meat_stink_3p setmodel( "tag_origin" );
|
self.meat_stink_3p setmodel("tag_origin");
|
||||||
self.meat_stink_3p linkto( self, tagname );
|
self.meat_stink_3p linkto(self, tagname);
|
||||||
playfxontag( level._effect["meat_stink_torso"], self.meat_stink_3p, "tag_origin" );
|
playfxontag(level._effect["meat_stink_torso"], self.meat_stink_3p, "tag_origin");
|
||||||
self setclientfieldtoplayer( "meat_stink", 1 );
|
self setclientfieldtoplayer("meat_stink", 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
print_meat_msg(meat_player, verb)
|
print_meat_msg(meat_player, verb)
|
||||||
|
@ -7,17 +7,17 @@
|
|||||||
|
|
||||||
give_afterlife()
|
give_afterlife()
|
||||||
{
|
{
|
||||||
onplayerconnect_callback( scripts\zm\replaced\_zm_afterlife::init_player );
|
onplayerconnect_callback(scripts\zm\replaced\_zm_afterlife::init_player);
|
||||||
flag_wait( "initial_players_connected" );
|
flag_wait("initial_players_connected");
|
||||||
wait 0.5;
|
wait 0.5;
|
||||||
start_pos = 1;
|
start_pos = 1;
|
||||||
players = getplayers();
|
players = getplayers();
|
||||||
|
|
||||||
foreach ( player in players )
|
foreach (player in players)
|
||||||
{
|
{
|
||||||
if ( isDefined( player.afterlife ) && !player.afterlife )
|
if (isDefined(player.afterlife) && !player.afterlife)
|
||||||
{
|
{
|
||||||
player thread fake_kill_player( start_pos );
|
player thread fake_kill_player(start_pos);
|
||||||
start_pos++;
|
start_pos++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,19 +12,19 @@
|
|||||||
|
|
||||||
init_craftables()
|
init_craftables()
|
||||||
{
|
{
|
||||||
precachestring( &"ZM_PRISON_KEY_DOOR" );
|
precachestring(&"ZM_PRISON_KEY_DOOR");
|
||||||
level.craftable_piece_count = 10;
|
level.craftable_piece_count = 10;
|
||||||
register_clientfields();
|
register_clientfields();
|
||||||
add_zombie_craftable( "alcatraz_shield_zm", &"ZM_PRISON_CRAFT_RIOT", undefined, &"ZOMBIE_BOUGHT_RIOT", undefined, 1 );
|
add_zombie_craftable("alcatraz_shield_zm", &"ZM_PRISON_CRAFT_RIOT", undefined, &"ZOMBIE_BOUGHT_RIOT", undefined, 1);
|
||||||
add_zombie_craftable_vox_category( "alcatraz_shield_zm", "build_zs" );
|
add_zombie_craftable_vox_category("alcatraz_shield_zm", "build_zs");
|
||||||
make_zombie_craftable_open( "alcatraz_shield_zm", "t6_wpn_zmb_shield_dlc2_dmg0_world", vectorscale( ( 0, -1, 0 ), 90.0 ), ( 0, 0, level.riotshield_placement_zoffset ) );
|
make_zombie_craftable_open("alcatraz_shield_zm", "t6_wpn_zmb_shield_dlc2_dmg0_world", vectorscale((0, -1, 0), 90.0), (0, 0, level.riotshield_placement_zoffset));
|
||||||
add_zombie_craftable( "packasplat", &"ZM_PRISON_CRAFT_PACKASPLAT", undefined, undefined, ::onfullycrafted_packasplat, 1 );
|
add_zombie_craftable("packasplat", &"ZM_PRISON_CRAFT_PACKASPLAT", undefined, undefined, ::onfullycrafted_packasplat, 1);
|
||||||
add_zombie_craftable_vox_category( "packasplat", "build_bsm" );
|
add_zombie_craftable_vox_category("packasplat", "build_bsm");
|
||||||
make_zombie_craftable_open( "packasplat", "p6_anim_zm_al_packasplat", vectorscale( ( 0, -1, 0 ), 90.0 ) );
|
make_zombie_craftable_open("packasplat", "p6_anim_zm_al_packasplat", vectorscale((0, -1, 0), 90.0));
|
||||||
level.craftable_piece_swap_allowed = 0;
|
level.craftable_piece_swap_allowed = 0;
|
||||||
add_zombie_craftable( "quest_key1" );
|
add_zombie_craftable("quest_key1");
|
||||||
add_zombie_craftable( "plane", &"ZM_PRISON_CRAFT_PLANE", &"ZM_PRISON_CRAFTING_PLANE", undefined, ::onfullycrafted_plane, 1 );
|
add_zombie_craftable("plane", &"ZM_PRISON_CRAFT_PLANE", &"ZM_PRISON_CRAFTING_PLANE", undefined, ::onfullycrafted_plane, 1);
|
||||||
add_zombie_craftable( "refuelable_plane", &"ZM_PRISON_REFUEL_PLANE", &"ZM_PRISON_REFUELING_PLANE", undefined, ::onfullycrafted_refueled, 1 );
|
add_zombie_craftable("refuelable_plane", &"ZM_PRISON_REFUEL_PLANE", &"ZM_PRISON_REFUELING_PLANE", undefined, ::onfullycrafted_refueled, 1);
|
||||||
in_game_checklist_setup();
|
in_game_checklist_setup();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -32,35 +32,35 @@ include_craftables()
|
|||||||
{
|
{
|
||||||
level.zombie_include_craftables["open_table"].custom_craftablestub_update_prompt = ::prison_open_craftablestub_update_prompt;
|
level.zombie_include_craftables["open_table"].custom_craftablestub_update_prompt = ::prison_open_craftablestub_update_prompt;
|
||||||
craftable_name = "packasplat";
|
craftable_name = "packasplat";
|
||||||
packasplat_case = generate_zombie_craftable_piece( craftable_name, "case", "p6_zm_al_packasplat_suitcase", 48, 36, 0, undefined, ::onpickup_common, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_packasplat_case", 1, "build_bsm" );
|
packasplat_case = generate_zombie_craftable_piece(craftable_name, "case", "p6_zm_al_packasplat_suitcase", 48, 36, 0, undefined, ::onpickup_common, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_packasplat_case", 1, "build_bsm");
|
||||||
packasplat_fuse = generate_zombie_craftable_piece( craftable_name, "fuse", "p6_zm_al_packasplat_engine", 32, 36, 0, undefined, ::onpickup_common, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_packasplat_fuse", 1, "build_bsm" );
|
packasplat_fuse = generate_zombie_craftable_piece(craftable_name, "fuse", "p6_zm_al_packasplat_engine", 32, 36, 0, undefined, ::onpickup_common, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_packasplat_fuse", 1, "build_bsm");
|
||||||
packasplat_blood = generate_zombie_craftable_piece( craftable_name, "blood", "p6_zm_al_packasplat_iv", 32, 15, 0, undefined, ::onpickup_common, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_packasplat_blood", 1, "build_bsm" );
|
packasplat_blood = generate_zombie_craftable_piece(craftable_name, "blood", "p6_zm_al_packasplat_iv", 32, 15, 0, undefined, ::onpickup_common, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_packasplat_blood", 1, "build_bsm");
|
||||||
packasplat = spawnstruct();
|
packasplat = spawnstruct();
|
||||||
packasplat.name = craftable_name;
|
packasplat.name = craftable_name;
|
||||||
packasplat add_craftable_piece( packasplat_case );
|
packasplat add_craftable_piece(packasplat_case);
|
||||||
packasplat add_craftable_piece( packasplat_fuse );
|
packasplat add_craftable_piece(packasplat_fuse);
|
||||||
packasplat add_craftable_piece( packasplat_blood );
|
packasplat add_craftable_piece(packasplat_blood);
|
||||||
packasplat.triggerthink = ::packasplatcraftable;
|
packasplat.triggerthink = ::packasplatcraftable;
|
||||||
include_craftable( packasplat );
|
include_craftable(packasplat);
|
||||||
craftable_name = "alcatraz_shield_zm";
|
craftable_name = "alcatraz_shield_zm";
|
||||||
riotshield_dolly = generate_zombie_craftable_piece( craftable_name, "dolly", "t6_wpn_zmb_shield_dlc2_dolly", 32, 64, 0, undefined, ::onpickup_common, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_riotshield_dolly", 1, "build_zs" );
|
riotshield_dolly = generate_zombie_craftable_piece(craftable_name, "dolly", "t6_wpn_zmb_shield_dlc2_dolly", 32, 64, 0, undefined, ::onpickup_common, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_riotshield_dolly", 1, "build_zs");
|
||||||
riotshield_door = generate_zombie_craftable_piece( craftable_name, "door", "t6_wpn_zmb_shield_dlc2_door", 48, 15, 25, undefined, ::onpickup_common, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_riotshield_door", 1, "build_zs" );
|
riotshield_door = generate_zombie_craftable_piece(craftable_name, "door", "t6_wpn_zmb_shield_dlc2_door", 48, 15, 25, undefined, ::onpickup_common, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_riotshield_door", 1, "build_zs");
|
||||||
riotshield_clamp = generate_zombie_craftable_piece( craftable_name, "clamp", "t6_wpn_zmb_shield_dlc2_shackles", 32, 15, 0, undefined, ::onpickup_common, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_riotshield_clamp", 1, "build_zs" );
|
riotshield_clamp = generate_zombie_craftable_piece(craftable_name, "clamp", "t6_wpn_zmb_shield_dlc2_shackles", 32, 15, 0, undefined, ::onpickup_common, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_riotshield_clamp", 1, "build_zs");
|
||||||
riotshield = spawnstruct();
|
riotshield = spawnstruct();
|
||||||
riotshield.name = craftable_name;
|
riotshield.name = craftable_name;
|
||||||
riotshield add_craftable_piece( riotshield_dolly );
|
riotshield add_craftable_piece(riotshield_dolly);
|
||||||
riotshield add_craftable_piece( riotshield_door );
|
riotshield add_craftable_piece(riotshield_door);
|
||||||
riotshield add_craftable_piece( riotshield_clamp );
|
riotshield add_craftable_piece(riotshield_clamp);
|
||||||
riotshield.onbuyweapon = ::onbuyweapon_riotshield;
|
riotshield.onbuyweapon = ::onbuyweapon_riotshield;
|
||||||
riotshield.triggerthink = ::riotshieldcraftable;
|
riotshield.triggerthink = ::riotshieldcraftable;
|
||||||
include_craftable( riotshield );
|
include_craftable(riotshield);
|
||||||
include_key_craftable( "quest_key1", "p6_zm_al_key" );
|
include_key_craftable("quest_key1", "p6_zm_al_key");
|
||||||
craftable_name = "plane";
|
craftable_name = "plane";
|
||||||
plane_cloth = generate_zombie_craftable_piece( craftable_name, "cloth", "p6_zm_al_clothes_pile_lrg", 48, 15, 0, undefined, ::onpickup_plane, ::ondrop_plane, ::oncrafted_plane, undefined, "tag_origin", undefined, 1 );
|
plane_cloth = generate_zombie_craftable_piece(craftable_name, "cloth", "p6_zm_al_clothes_pile_lrg", 48, 15, 0, undefined, ::onpickup_plane, ::ondrop_plane, ::oncrafted_plane, undefined, "tag_origin", undefined, 1);
|
||||||
plane_fueltanks = generate_zombie_craftable_piece( craftable_name, "fueltanks", "veh_t6_dlc_zombie_part_fuel", 32, 15, 0, undefined, ::onpickup_plane, ::ondrop_plane, ::oncrafted_plane, undefined, "tag_feul_tanks", undefined, 2 );
|
plane_fueltanks = generate_zombie_craftable_piece(craftable_name, "fueltanks", "veh_t6_dlc_zombie_part_fuel", 32, 15, 0, undefined, ::onpickup_plane, ::ondrop_plane, ::oncrafted_plane, undefined, "tag_feul_tanks", undefined, 2);
|
||||||
plane_engine = generate_zombie_craftable_piece( craftable_name, "engine", "veh_t6_dlc_zombie_part_engine", 32, 62, 0, undefined, ::onpickup_plane, ::ondrop_plane, ::oncrafted_plane, undefined, "tag_origin", undefined, 3 );
|
plane_engine = generate_zombie_craftable_piece(craftable_name, "engine", "veh_t6_dlc_zombie_part_engine", 32, 62, 0, undefined, ::onpickup_plane, ::ondrop_plane, ::oncrafted_plane, undefined, "tag_origin", undefined, 3);
|
||||||
plane_steering = generate_zombie_craftable_piece( craftable_name, "steering", "veh_t6_dlc_zombie_part_control", 32, 15, 0, undefined, ::onpickup_plane, ::ondrop_plane, ::oncrafted_plane, undefined, "tag_control_mechanism", undefined, 4 );
|
plane_steering = generate_zombie_craftable_piece(craftable_name, "steering", "veh_t6_dlc_zombie_part_control", 32, 15, 0, undefined, ::onpickup_plane, ::ondrop_plane, ::oncrafted_plane, undefined, "tag_control_mechanism", undefined, 4);
|
||||||
plane_rigging = generate_zombie_craftable_piece( craftable_name, "rigging", "veh_t6_dlc_zombie_part_rigging", 32, 15, 0, undefined, ::onpickup_plane, ::ondrop_plane, ::oncrafted_plane, undefined, "tag_origin", undefined, 5 );
|
plane_rigging = generate_zombie_craftable_piece(craftable_name, "rigging", "veh_t6_dlc_zombie_part_rigging", 32, 15, 0, undefined, ::onpickup_plane, ::ondrop_plane, ::oncrafted_plane, undefined, "tag_origin", undefined, 5);
|
||||||
|
|
||||||
plane_cloth.is_shared = 1;
|
plane_cloth.is_shared = 1;
|
||||||
plane_fueltanks.is_shared = 1;
|
plane_fueltanks.is_shared = 1;
|
||||||
@ -80,20 +80,20 @@ include_craftables()
|
|||||||
plane_rigging.pickup_alias = "sidequest_rigging";
|
plane_rigging.pickup_alias = "sidequest_rigging";
|
||||||
plane = spawnstruct();
|
plane = spawnstruct();
|
||||||
plane.name = craftable_name;
|
plane.name = craftable_name;
|
||||||
plane add_craftable_piece( plane_cloth );
|
plane add_craftable_piece(plane_cloth);
|
||||||
plane add_craftable_piece( plane_engine );
|
plane add_craftable_piece(plane_engine);
|
||||||
plane add_craftable_piece( plane_fueltanks );
|
plane add_craftable_piece(plane_fueltanks);
|
||||||
plane add_craftable_piece( plane_steering );
|
plane add_craftable_piece(plane_steering);
|
||||||
plane add_craftable_piece( plane_rigging );
|
plane add_craftable_piece(plane_rigging);
|
||||||
plane.triggerthink = ::planecraftable;
|
plane.triggerthink = ::planecraftable;
|
||||||
plane.custom_craftablestub_update_prompt = ::prison_plane_update_prompt;
|
plane.custom_craftablestub_update_prompt = ::prison_plane_update_prompt;
|
||||||
include_craftable( plane );
|
include_craftable(plane);
|
||||||
craftable_name = "refuelable_plane";
|
craftable_name = "refuelable_plane";
|
||||||
refuelable_plane_gas1 = generate_zombie_craftable_piece( craftable_name, "fuel1", "accessories_gas_canister_1", 32, 15, 0, undefined, ::onpickup_fuel, ::ondrop_fuel, ::oncrafted_fuel, undefined, undefined, undefined, 6 );
|
refuelable_plane_gas1 = generate_zombie_craftable_piece(craftable_name, "fuel1", "accessories_gas_canister_1", 32, 15, 0, undefined, ::onpickup_fuel, ::ondrop_fuel, ::oncrafted_fuel, undefined, undefined, undefined, 6);
|
||||||
refuelable_plane_gas2 = generate_zombie_craftable_piece( craftable_name, "fuel2", "accessories_gas_canister_1", 32, 15, 0, undefined, ::onpickup_fuel, ::ondrop_fuel, ::oncrafted_fuel, undefined, undefined, undefined, 7 );
|
refuelable_plane_gas2 = generate_zombie_craftable_piece(craftable_name, "fuel2", "accessories_gas_canister_1", 32, 15, 0, undefined, ::onpickup_fuel, ::ondrop_fuel, ::oncrafted_fuel, undefined, undefined, undefined, 7);
|
||||||
refuelable_plane_gas3 = generate_zombie_craftable_piece( craftable_name, "fuel3", "accessories_gas_canister_1", 32, 15, 0, undefined, ::onpickup_fuel, ::ondrop_fuel, ::oncrafted_fuel, undefined, undefined, undefined, 8 );
|
refuelable_plane_gas3 = generate_zombie_craftable_piece(craftable_name, "fuel3", "accessories_gas_canister_1", 32, 15, 0, undefined, ::onpickup_fuel, ::ondrop_fuel, ::oncrafted_fuel, undefined, undefined, undefined, 8);
|
||||||
refuelable_plane_gas4 = generate_zombie_craftable_piece( craftable_name, "fuel4", "accessories_gas_canister_1", 32, 15, 0, undefined, ::onpickup_fuel, ::ondrop_fuel, ::oncrafted_fuel, undefined, undefined, undefined, 9 );
|
refuelable_plane_gas4 = generate_zombie_craftable_piece(craftable_name, "fuel4", "accessories_gas_canister_1", 32, 15, 0, undefined, ::onpickup_fuel, ::ondrop_fuel, ::oncrafted_fuel, undefined, undefined, undefined, 9);
|
||||||
refuelable_plane_gas5 = generate_zombie_craftable_piece( craftable_name, "fuel5", "accessories_gas_canister_1", 32, 15, 0, undefined, ::onpickup_fuel, ::ondrop_fuel, ::oncrafted_fuel, undefined, undefined, undefined, 10 );
|
refuelable_plane_gas5 = generate_zombie_craftable_piece(craftable_name, "fuel5", "accessories_gas_canister_1", 32, 15, 0, undefined, ::onpickup_fuel, ::ondrop_fuel, ::oncrafted_fuel, undefined, undefined, undefined, 10);
|
||||||
|
|
||||||
refuelable_plane_gas1.is_shared = 1;
|
refuelable_plane_gas1.is_shared = 1;
|
||||||
refuelable_plane_gas2.is_shared = 1;
|
refuelable_plane_gas2.is_shared = 1;
|
||||||
@ -108,52 +108,52 @@ include_craftables()
|
|||||||
|
|
||||||
refuelable_plane = spawnstruct();
|
refuelable_plane = spawnstruct();
|
||||||
refuelable_plane.name = craftable_name;
|
refuelable_plane.name = craftable_name;
|
||||||
refuelable_plane add_craftable_piece( refuelable_plane_gas1 );
|
refuelable_plane add_craftable_piece(refuelable_plane_gas1);
|
||||||
refuelable_plane add_craftable_piece( refuelable_plane_gas2 );
|
refuelable_plane add_craftable_piece(refuelable_plane_gas2);
|
||||||
refuelable_plane add_craftable_piece( refuelable_plane_gas3 );
|
refuelable_plane add_craftable_piece(refuelable_plane_gas3);
|
||||||
refuelable_plane add_craftable_piece( refuelable_plane_gas4 );
|
refuelable_plane add_craftable_piece(refuelable_plane_gas4);
|
||||||
refuelable_plane add_craftable_piece( refuelable_plane_gas5 );
|
refuelable_plane add_craftable_piece(refuelable_plane_gas5);
|
||||||
refuelable_plane.triggerthink = ::planefuelable;
|
refuelable_plane.triggerthink = ::planefuelable;
|
||||||
plane.custom_craftablestub_update_prompt = ::prison_plane_update_prompt;
|
plane.custom_craftablestub_update_prompt = ::prison_plane_update_prompt;
|
||||||
include_craftable( refuelable_plane );
|
include_craftable(refuelable_plane);
|
||||||
}
|
}
|
||||||
|
|
||||||
include_key_craftable( craftable_name, model_name )
|
include_key_craftable(craftable_name, model_name)
|
||||||
{
|
{
|
||||||
part_key = generate_zombie_craftable_piece( craftable_name, undefined, model_name, 32, 15, 0, undefined, ::onpickup_key, undefined, undefined, undefined, undefined, undefined, undefined, 1 );
|
part_key = generate_zombie_craftable_piece(craftable_name, undefined, model_name, 32, 15, 0, undefined, ::onpickup_key, undefined, undefined, undefined, undefined, undefined, undefined, 1);
|
||||||
part = spawnstruct();
|
part = spawnstruct();
|
||||||
part.name = craftable_name;
|
part.name = craftable_name;
|
||||||
part add_craftable_piece( part_key );
|
part add_craftable_piece(part_key);
|
||||||
part.triggerthink = maps\mp\zombies\_zm_craftables::setup_craftable_pieces;
|
part.triggerthink = maps\mp\zombies\_zm_craftables::setup_craftable_pieces;
|
||||||
include_craftable( part );
|
include_craftable(part);
|
||||||
}
|
}
|
||||||
|
|
||||||
onpickup_key( player )
|
onpickup_key(player)
|
||||||
{
|
{
|
||||||
flag_set( "key_found" );
|
flag_set("key_found");
|
||||||
|
|
||||||
if ( level.is_master_key_west )
|
if (level.is_master_key_west)
|
||||||
level clientnotify( "fxanim_west_pulley_up_start" );
|
level clientnotify("fxanim_west_pulley_up_start");
|
||||||
else
|
else
|
||||||
level clientnotify( "fxanim_east_pulley_up_start" );
|
level clientnotify("fxanim_east_pulley_up_start");
|
||||||
|
|
||||||
a_m_checklist = getentarray( "plane_checklist", "targetname" );
|
a_m_checklist = getentarray("plane_checklist", "targetname");
|
||||||
|
|
||||||
foreach ( m_checklist in a_m_checklist )
|
foreach (m_checklist in a_m_checklist)
|
||||||
{
|
{
|
||||||
m_checklist showpart( "j_check_key" );
|
m_checklist showpart("j_check_key");
|
||||||
m_checklist showpart( "j_strike_key" );
|
m_checklist showpart("j_strike_key");
|
||||||
}
|
}
|
||||||
|
|
||||||
a_door_structs = getstructarray( "quest_trigger", "script_noteworthy" );
|
a_door_structs = getstructarray("quest_trigger", "script_noteworthy");
|
||||||
|
|
||||||
foreach ( struct in a_door_structs )
|
foreach (struct in a_door_structs)
|
||||||
{
|
{
|
||||||
if ( isdefined( struct.unitrigger_stub ) )
|
if (isdefined(struct.unitrigger_stub))
|
||||||
struct.unitrigger_stub maps\mp\zombies\_zm_unitrigger::run_visibility_function_for_all_triggers();
|
struct.unitrigger_stub maps\mp\zombies\_zm_unitrigger::run_visibility_function_for_all_triggers();
|
||||||
}
|
}
|
||||||
|
|
||||||
player playsound( "evt_key_pickup" );
|
player playsound("evt_key_pickup");
|
||||||
player thread do_player_general_vox( "quest", "sidequest_key_response", undefined, 100 );
|
player thread do_player_general_vox("quest", "sidequest_key_response", undefined, 100);
|
||||||
//level setclientfield( "piece_key_warden", 1 );
|
//level setclientfield( "piece_key_warden", 1 );
|
||||||
}
|
}
|
@ -4,69 +4,69 @@
|
|||||||
#include maps\mp\zombies\_zm_utility;
|
#include maps\mp\zombies\_zm_utility;
|
||||||
#include maps\mp\zombies\_zm_spawner;
|
#include maps\mp\zombies\_zm_spawner;
|
||||||
|
|
||||||
delete_zombie_noone_looking( how_close, how_high )
|
delete_zombie_noone_looking(how_close, how_high)
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
|
|
||||||
if ( !isdefined( how_close ) )
|
if (!isdefined(how_close))
|
||||||
how_close = 1500;
|
how_close = 1500;
|
||||||
|
|
||||||
if ( !isdefined( how_high ) )
|
if (!isdefined(how_high))
|
||||||
how_close = 600;
|
how_close = 600;
|
||||||
|
|
||||||
distance_squared_check = how_close * how_close;
|
distance_squared_check = how_close * how_close;
|
||||||
too_far_dist = distance_squared_check * 3;
|
too_far_dist = distance_squared_check * 3;
|
||||||
|
|
||||||
if ( isdefined( level.zombie_tracking_too_far_dist ) )
|
if (isdefined(level.zombie_tracking_too_far_dist))
|
||||||
too_far_dist = level.zombie_tracking_too_far_dist * level.zombie_tracking_too_far_dist;
|
too_far_dist = level.zombie_tracking_too_far_dist * level.zombie_tracking_too_far_dist;
|
||||||
|
|
||||||
self.inview = 0;
|
self.inview = 0;
|
||||||
self.player_close = 0;
|
self.player_close = 0;
|
||||||
players = get_players();
|
players = get_players();
|
||||||
|
|
||||||
for ( i = 0; i < players.size; i++ )
|
for (i = 0; i < players.size; i++)
|
||||||
{
|
{
|
||||||
if ( players[i].sessionstate == "spectator" )
|
if (players[i].sessionstate == "spectator")
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( isdefined( level.only_track_targeted_players ) )
|
if (isdefined(level.only_track_targeted_players))
|
||||||
{
|
{
|
||||||
if ( !isdefined( self.favoriteenemy ) || self.favoriteenemy != players[i] )
|
if (!isdefined(self.favoriteenemy) || self.favoriteenemy != players[i])
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
can_be_seen = self player_can_see_me( players[i] );
|
can_be_seen = self player_can_see_me(players[i]);
|
||||||
|
|
||||||
if ( can_be_seen && distancesquared( self.origin, players[i].origin ) < too_far_dist )
|
if (can_be_seen && distancesquared(self.origin, players[i].origin) < too_far_dist)
|
||||||
self.inview++;
|
self.inview++;
|
||||||
|
|
||||||
if ( distancesquared( self.origin, players[i].origin ) < distance_squared_check && abs( self.origin[2] - players[i].origin[2] ) < how_high )
|
if (distancesquared(self.origin, players[i].origin) < distance_squared_check && abs(self.origin[2] - players[i].origin[2]) < how_high)
|
||||||
self.player_close++;
|
self.player_close++;
|
||||||
}
|
}
|
||||||
|
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
|
|
||||||
if ( self.inview == 0 && self.player_close == 0 )
|
if (self.inview == 0 && self.player_close == 0)
|
||||||
{
|
{
|
||||||
if ( !isdefined( self.animname ) || isdefined( self.animname ) && self.animname != "zombie" )
|
if (!isdefined(self.animname) || isdefined(self.animname) && self.animname != "zombie")
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( isdefined( self.electrified ) && self.electrified == 1 )
|
if (isdefined(self.electrified) && self.electrified == 1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( isdefined( self.in_the_ground ) && self.in_the_ground == 1 )
|
if (isdefined(self.in_the_ground) && self.in_the_ground == 1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( !( isdefined( self.exclude_distance_cleanup_adding_to_total ) && self.exclude_distance_cleanup_adding_to_total ) && !( isdefined( self.isscreecher ) && self.isscreecher ) )
|
if (!(isdefined(self.exclude_distance_cleanup_adding_to_total) && self.exclude_distance_cleanup_adding_to_total) && !(isdefined(self.isscreecher) && self.isscreecher))
|
||||||
{
|
{
|
||||||
level.zombie_total++;
|
level.zombie_total++;
|
||||||
|
|
||||||
if ( self.health < level.zombie_health )
|
if (self.health < level.zombie_health)
|
||||||
level.zombie_respawned_health[level.zombie_respawned_health.size] = self.health;
|
level.zombie_respawned_health[level.zombie_respawned_health.size] = self.health;
|
||||||
}
|
}
|
||||||
|
|
||||||
self maps\mp\zombies\_zm_spawner::reset_attack_spot();
|
self maps\mp\zombies\_zm_spawner::reset_attack_spot();
|
||||||
self notify( "zombie_delete" );
|
self notify("zombie_delete");
|
||||||
self delete();
|
self delete();
|
||||||
recalc_zombie_array();
|
recalc_zombie_array();
|
||||||
}
|
}
|
||||||
|
@ -15,15 +15,15 @@ init()
|
|||||||
{
|
{
|
||||||
level.custom_vending_precaching = maps\mp\zm_prison::custom_vending_precaching;
|
level.custom_vending_precaching = maps\mp\zm_prison::custom_vending_precaching;
|
||||||
|
|
||||||
add_map_gamemode( "zclassic", maps\mp\zm_prison::zclassic_preinit, undefined, undefined );
|
add_map_gamemode("zclassic", maps\mp\zm_prison::zclassic_preinit, undefined, undefined);
|
||||||
add_map_gamemode( "zgrief", scripts\zm\replaced\zm_alcatraz_grief_cellblock::zgrief_preinit, undefined, undefined );
|
add_map_gamemode("zgrief", scripts\zm\replaced\zm_alcatraz_grief_cellblock::zgrief_preinit, undefined, undefined);
|
||||||
|
|
||||||
add_map_location_gamemode( "zclassic", "prison", maps\mp\zm_alcatraz_classic::precache, maps\mp\zm_alcatraz_classic::main );
|
add_map_location_gamemode("zclassic", "prison", maps\mp\zm_alcatraz_classic::precache, maps\mp\zm_alcatraz_classic::main);
|
||||||
|
|
||||||
add_map_location_gamemode( "zgrief", "cellblock", scripts\zm\replaced\zm_alcatraz_grief_cellblock::precache, scripts\zm\replaced\zm_alcatraz_grief_cellblock::main );
|
add_map_location_gamemode("zgrief", "cellblock", scripts\zm\replaced\zm_alcatraz_grief_cellblock::precache, scripts\zm\replaced\zm_alcatraz_grief_cellblock::main);
|
||||||
|
|
||||||
if (getDvar("ui_zm_mapstartlocation_fake") == "docks")
|
if (getDvar("ui_zm_mapstartlocation_fake") == "docks")
|
||||||
{
|
{
|
||||||
scripts\zm\replaced\utility::add_struct_location_gamemode_func( "zgrief", "cellblock", scripts\zm\locs\zm_prison_loc_docks::struct_init );
|
scripts\zm\replaced\utility::add_struct_location_gamemode_func("zgrief", "cellblock", scripts\zm\locs\zm_prison_loc_docks::struct_init);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -23,7 +23,7 @@ precache()
|
|||||||
|
|
||||||
zgrief_preinit()
|
zgrief_preinit()
|
||||||
{
|
{
|
||||||
registerclientfield( "toplayer", "meat_stink", 1, 1, "int" );
|
registerclientfield("toplayer", "meat_stink", 1, 1, "int");
|
||||||
level.givecustomloadout = maps\mp\zm_prison::givecustomloadout;
|
level.givecustomloadout = maps\mp\zm_prison::givecustomloadout;
|
||||||
zgrief_init();
|
zgrief_init();
|
||||||
}
|
}
|
||||||
@ -42,68 +42,68 @@ encounter_init()
|
|||||||
|
|
||||||
precache_team_characters()
|
precache_team_characters()
|
||||||
{
|
{
|
||||||
precachemodel( "c_zom_player_grief_guard_fb" );
|
precachemodel("c_zom_player_grief_guard_fb");
|
||||||
precachemodel( "c_zom_oleary_shortsleeve_viewhands" );
|
precachemodel("c_zom_oleary_shortsleeve_viewhands");
|
||||||
precachemodel( "c_zom_player_grief_inmate_fb" );
|
precachemodel("c_zom_player_grief_inmate_fb");
|
||||||
precachemodel( "c_zom_grief_guard_viewhands" );
|
precachemodel("c_zom_grief_guard_viewhands");
|
||||||
}
|
}
|
||||||
|
|
||||||
give_team_characters()
|
give_team_characters()
|
||||||
{
|
{
|
||||||
self detachall();
|
self detachall();
|
||||||
self set_player_is_female( 0 );
|
self set_player_is_female(0);
|
||||||
|
|
||||||
if ( !isDefined( self.characterindex ) )
|
if (!isDefined(self.characterindex))
|
||||||
{
|
{
|
||||||
self.characterindex = 1;
|
self.characterindex = 1;
|
||||||
|
|
||||||
if ( self.team == "axis" )
|
if (self.team == "axis")
|
||||||
{
|
{
|
||||||
self.characterindex = 0;
|
self.characterindex = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch ( self.characterindex )
|
switch (self.characterindex)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
case 2:
|
case 2:
|
||||||
self setmodel( "c_zom_player_grief_inmate_fb" );
|
self setmodel("c_zom_player_grief_inmate_fb");
|
||||||
self.voice = "american";
|
self.voice = "american";
|
||||||
self.skeleton = "base";
|
self.skeleton = "base";
|
||||||
self setviewmodel( "c_zom_oleary_shortsleeve_viewhands" );
|
self setviewmodel("c_zom_oleary_shortsleeve_viewhands");
|
||||||
self.characterindex = 0;
|
self.characterindex = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
case 3:
|
case 3:
|
||||||
self setmodel( "c_zom_player_grief_guard_fb" );
|
self setmodel("c_zom_player_grief_guard_fb");
|
||||||
self.voice = "american";
|
self.voice = "american";
|
||||||
self.skeleton = "base";
|
self.skeleton = "base";
|
||||||
self setviewmodel( "c_zom_grief_guard_viewhands" );
|
self setviewmodel("c_zom_grief_guard_viewhands");
|
||||||
self.characterindex = 1;
|
self.characterindex = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
self setmovespeedscale( 1 );
|
self setmovespeedscale(1);
|
||||||
self setsprintduration( 4 );
|
self setsprintduration(4);
|
||||||
self setsprintcooldown( 0 );
|
self setsprintcooldown(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
give_player_shiv()
|
give_player_shiv()
|
||||||
{
|
{
|
||||||
self takeweapon( "knife_zm" );
|
self takeweapon("knife_zm");
|
||||||
self giveweapon( "knife_zm_alcatraz" );
|
self giveweapon("knife_zm_alcatraz");
|
||||||
}
|
}
|
||||||
|
|
||||||
grief_treasure_chest_init()
|
grief_treasure_chest_init()
|
||||||
{
|
{
|
||||||
chest1 = getstruct( "start_chest", "script_noteworthy" );
|
chest1 = getstruct("start_chest", "script_noteworthy");
|
||||||
chest2 = getstruct( "cafe_chest", "script_noteworthy" );
|
chest2 = getstruct("cafe_chest", "script_noteworthy");
|
||||||
setdvar( "disableLookAtEntityLogic", 1 );
|
setdvar("disableLookAtEntityLogic", 1);
|
||||||
level.chests = [];
|
level.chests = [];
|
||||||
level.chests[ level.chests.size ] = chest1;
|
level.chests[ level.chests.size ] = chest1;
|
||||||
level.chests[ level.chests.size ] = chest2;
|
level.chests[ level.chests.size ] = chest2;
|
||||||
maps\mp\zombies\_zm_magicbox::treasure_chest_init( "start_chest" );
|
maps\mp\zombies\_zm_magicbox::treasure_chest_init("start_chest");
|
||||||
}
|
}
|
||||||
|
|
||||||
main()
|
main()
|
||||||
@ -114,41 +114,41 @@ main()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
maps\mp\gametypes_zm\_zm_gametype::setup_standard_objects( "cellblock" );
|
maps\mp\gametypes_zm\_zm_gametype::setup_standard_objects("cellblock");
|
||||||
grief_treasure_chest_init();
|
grief_treasure_chest_init();
|
||||||
precacheshader( "zm_al_wth_zombie" );
|
precacheshader("zm_al_wth_zombie");
|
||||||
array_thread( level.zombie_spawners, ::add_spawn_function, ::remove_zombie_hats_for_grief );
|
array_thread(level.zombie_spawners, ::add_spawn_function, ::remove_zombie_hats_for_grief);
|
||||||
maps\mp\zombies\_zm_ai_brutus::precache();
|
maps\mp\zombies\_zm_ai_brutus::precache();
|
||||||
maps\mp\zombies\_zm_ai_brutus::init();
|
maps\mp\zombies\_zm_ai_brutus::init();
|
||||||
level.enemy_location_override_func = ::enemy_location_override;
|
level.enemy_location_override_func = ::enemy_location_override;
|
||||||
level._effect[ "butterflies" ] = loadfx( "maps/zombie_alcatraz/fx_alcatraz_skull_elec" );
|
level._effect[ "butterflies" ] = loadfx("maps/zombie_alcatraz/fx_alcatraz_skull_elec");
|
||||||
a_t_door_triggers = getentarray( "zombie_door", "targetname" );
|
a_t_door_triggers = getentarray("zombie_door", "targetname");
|
||||||
triggers = a_t_door_triggers;
|
triggers = a_t_door_triggers;
|
||||||
i = 0;
|
i = 0;
|
||||||
|
|
||||||
while ( i < triggers.size )
|
while (i < triggers.size)
|
||||||
{
|
{
|
||||||
if ( isDefined( triggers[ i ].script_flag ) )
|
if (isDefined(triggers[ i ].script_flag))
|
||||||
{
|
{
|
||||||
if ( triggers[ i ].script_flag == "activate_cellblock_citadel" || triggers[ i ].script_flag == "activate_shower_room" || triggers[ i ].script_flag == "activate_cellblock_infirmary" || triggers[ i ].script_flag == "activate_infirmary" )
|
if (triggers[ i ].script_flag == "activate_cellblock_citadel" || triggers[ i ].script_flag == "activate_shower_room" || triggers[ i ].script_flag == "activate_cellblock_infirmary" || triggers[ i ].script_flag == "activate_infirmary")
|
||||||
{
|
{
|
||||||
triggers[ i ] delete();
|
triggers[ i ] delete();
|
||||||
i++;
|
i++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( triggers[ i ].script_flag == "activate_cafeteria" || triggers[ i ].script_flag == "activate_cellblock_east" || triggers[ i ].script_flag == "activate_cellblock_west" || triggers[ i ].script_flag == "activate_cellblock_barber" || triggers[ i ].script_flag == "activate_cellblock_gondola" || triggers[ i ].script_flag == "activate_cellblock_east_west" || triggers[ i ].script_flag == "activate_warden_office" )
|
if (triggers[ i ].script_flag == "activate_cafeteria" || triggers[ i ].script_flag == "activate_cellblock_east" || triggers[ i ].script_flag == "activate_cellblock_west" || triggers[ i ].script_flag == "activate_cellblock_barber" || triggers[ i ].script_flag == "activate_cellblock_gondola" || triggers[ i ].script_flag == "activate_cellblock_east_west" || triggers[ i ].script_flag == "activate_warden_office")
|
||||||
{
|
{
|
||||||
i++;
|
i++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( triggers[ i ].target ) )
|
if (isDefined(triggers[ i ].target))
|
||||||
{
|
{
|
||||||
str_target = triggers[ i ].target;
|
str_target = triggers[ i ].target;
|
||||||
a_door_and_clip = getentarray( str_target, "targetname" );
|
a_door_and_clip = getentarray(str_target, "targetname");
|
||||||
|
|
||||||
foreach ( ent in a_door_and_clip )
|
foreach (ent in a_door_and_clip)
|
||||||
{
|
{
|
||||||
ent delete();
|
ent delete();
|
||||||
}
|
}
|
||||||
@ -160,15 +160,15 @@ main()
|
|||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
a_t_doors = getentarray( "zombie_door", "targetname" );
|
a_t_doors = getentarray("zombie_door", "targetname");
|
||||||
|
|
||||||
foreach ( t_door in a_t_doors )
|
foreach (t_door in a_t_doors)
|
||||||
{
|
{
|
||||||
if ( isDefined( t_door.script_flag ) )
|
if (isDefined(t_door.script_flag))
|
||||||
{
|
{
|
||||||
if ( t_door.script_flag == "activate_cellblock_east_west" || t_door.script_flag == "activate_cellblock_barber" )
|
if (t_door.script_flag == "activate_cellblock_east_west" || t_door.script_flag == "activate_cellblock_barber")
|
||||||
{
|
{
|
||||||
t_door maps\mp\zombies\_zm_blockers::door_opened( self.zombie_cost );
|
t_door maps\mp\zombies\_zm_blockers::door_opened(self.zombie_cost);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -186,9 +186,9 @@ main()
|
|||||||
a_str_zones[ 8 ] = "zone_cellblock_west";
|
a_str_zones[ 8 ] = "zone_cellblock_west";
|
||||||
a_str_zones[ 9 ] = "zone_cellblock_west_gondola";
|
a_str_zones[ 9 ] = "zone_cellblock_west_gondola";
|
||||||
|
|
||||||
foreach ( barrier in zbarriers )
|
foreach (barrier in zbarriers)
|
||||||
{
|
{
|
||||||
if ( isDefined( barrier.script_noteworthy ) && barrier.script_noteworthy == "cafe_chest_zbarrier" || isDefined( barrier.script_noteworthy ) && barrier.script_noteworthy == "start_chest_zbarrier" )
|
if (isDefined(barrier.script_noteworthy) && barrier.script_noteworthy == "cafe_chest_zbarrier" || isDefined(barrier.script_noteworthy) && barrier.script_noteworthy == "start_chest_zbarrier")
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -197,228 +197,228 @@ main()
|
|||||||
str_model = barrier.model;
|
str_model = barrier.model;
|
||||||
b_delete_barrier = 1;
|
b_delete_barrier = 1;
|
||||||
|
|
||||||
if ( isdefined( barrier.script_string ) )
|
if (isdefined(barrier.script_string))
|
||||||
{
|
{
|
||||||
for ( i = 0; i < a_str_zones.size; i++ )
|
for (i = 0; i < a_str_zones.size; i++)
|
||||||
{
|
{
|
||||||
if ( str_model == a_str_zones[ i ] )
|
if (str_model == a_str_zones[ i ])
|
||||||
{
|
{
|
||||||
b_delete_barrier = 0;
|
b_delete_barrier = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( b_delete_barrier == 1 )
|
else if (b_delete_barrier == 1)
|
||||||
{
|
{
|
||||||
barrier delete();
|
barrier delete();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
t_temp = getent( "tower_trap_activate_trigger", "targetname" );
|
t_temp = getent("tower_trap_activate_trigger", "targetname");
|
||||||
t_temp delete();
|
t_temp delete();
|
||||||
t_temp = getent( "tower_trap_range_trigger", "targetname" );
|
t_temp = getent("tower_trap_range_trigger", "targetname");
|
||||||
t_temp delete();
|
t_temp delete();
|
||||||
e_model = getent( "trap_control_docks", "targetname" );
|
e_model = getent("trap_control_docks", "targetname");
|
||||||
e_model delete();
|
e_model delete();
|
||||||
e_brush = getent( "tower_shockbox_door", "targetname" );
|
e_brush = getent("tower_shockbox_door", "targetname");
|
||||||
e_brush delete();
|
e_brush delete();
|
||||||
a_t_travel_triggers = getentarray( "travel_trigger", "script_noteworthy" );
|
a_t_travel_triggers = getentarray("travel_trigger", "script_noteworthy");
|
||||||
|
|
||||||
foreach ( trigger in a_t_travel_triggers )
|
foreach (trigger in a_t_travel_triggers)
|
||||||
{
|
{
|
||||||
trigger delete();
|
trigger delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
a_e_gondola_lights = getentarray( "gondola_state_light", "targetname" );
|
a_e_gondola_lights = getentarray("gondola_state_light", "targetname");
|
||||||
|
|
||||||
foreach ( light in a_e_gondola_lights )
|
foreach (light in a_e_gondola_lights)
|
||||||
{
|
{
|
||||||
light delete();
|
light delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
a_e_gondola_landing_gates = getentarray( "gondola_landing_gates", "targetname" );
|
a_e_gondola_landing_gates = getentarray("gondola_landing_gates", "targetname");
|
||||||
|
|
||||||
foreach ( model in a_e_gondola_landing_gates )
|
foreach (model in a_e_gondola_landing_gates)
|
||||||
{
|
{
|
||||||
model delete();
|
model delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
a_e_gondola_landing_doors = getentarray( "gondola_landing_doors", "targetname" );
|
a_e_gondola_landing_doors = getentarray("gondola_landing_doors", "targetname");
|
||||||
|
|
||||||
foreach ( model in a_e_gondola_landing_doors )
|
foreach (model in a_e_gondola_landing_doors)
|
||||||
{
|
{
|
||||||
model delete();
|
model delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
a_e_gondola_gates = getentarray( "gondola_gates", "targetname" );
|
a_e_gondola_gates = getentarray("gondola_gates", "targetname");
|
||||||
|
|
||||||
foreach ( model in a_e_gondola_gates )
|
foreach (model in a_e_gondola_gates)
|
||||||
{
|
{
|
||||||
model delete();
|
model delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
a_e_gondola_doors = getentarray( "gondola_doors", "targetname" );
|
a_e_gondola_doors = getentarray("gondola_doors", "targetname");
|
||||||
|
|
||||||
foreach ( model in a_e_gondola_doors )
|
foreach (model in a_e_gondola_doors)
|
||||||
{
|
{
|
||||||
model delete();
|
model delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
m_gondola = getent( "zipline_gondola", "targetname" );
|
m_gondola = getent("zipline_gondola", "targetname");
|
||||||
m_gondola delete();
|
m_gondola delete();
|
||||||
t_ride_trigger = getent( "gondola_ride_trigger", "targetname" );
|
t_ride_trigger = getent("gondola_ride_trigger", "targetname");
|
||||||
t_ride_trigger delete();
|
t_ride_trigger delete();
|
||||||
a_classic_clips = getentarray( "classic_clips", "targetname" );
|
a_classic_clips = getentarray("classic_clips", "targetname");
|
||||||
|
|
||||||
foreach ( clip in a_classic_clips )
|
foreach (clip in a_classic_clips)
|
||||||
{
|
{
|
||||||
clip connectpaths();
|
clip connectpaths();
|
||||||
clip delete();
|
clip delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
a_afterlife_props = getentarray( "afterlife_show", "targetname" );
|
a_afterlife_props = getentarray("afterlife_show", "targetname");
|
||||||
|
|
||||||
foreach ( m_prop in a_afterlife_props )
|
foreach (m_prop in a_afterlife_props)
|
||||||
{
|
{
|
||||||
m_prop delete();
|
m_prop delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
spork_portal = getent( "afterlife_show_spork", "targetname" );
|
spork_portal = getent("afterlife_show_spork", "targetname");
|
||||||
spork_portal delete();
|
spork_portal delete();
|
||||||
a_audio = getentarray( "at_headphones", "script_noteworthy" );
|
a_audio = getentarray("at_headphones", "script_noteworthy");
|
||||||
|
|
||||||
foreach ( model in a_audio )
|
foreach (model in a_audio)
|
||||||
{
|
{
|
||||||
model delete();
|
model delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
m_spoon_pickup = getent( "pickup_spoon", "targetname" );
|
m_spoon_pickup = getent("pickup_spoon", "targetname");
|
||||||
m_spoon_pickup delete();
|
m_spoon_pickup delete();
|
||||||
t_sq_bg = getent( "sq_bg_reward_pickup", "targetname" );
|
t_sq_bg = getent("sq_bg_reward_pickup", "targetname");
|
||||||
t_sq_bg delete();
|
t_sq_bg delete();
|
||||||
t_crafting_table = getentarray( "open_craftable_trigger", "targetname" );
|
t_crafting_table = getentarray("open_craftable_trigger", "targetname");
|
||||||
|
|
||||||
foreach ( trigger in t_crafting_table )
|
foreach (trigger in t_crafting_table)
|
||||||
{
|
{
|
||||||
trigger delete();
|
trigger delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
t_warden_fence = getent( "warden_fence_damage", "targetname" );
|
t_warden_fence = getent("warden_fence_damage", "targetname");
|
||||||
t_warden_fence delete();
|
t_warden_fence delete();
|
||||||
m_plane_about_to_crash = getent( "plane_about_to_crash", "targetname" );
|
m_plane_about_to_crash = getent("plane_about_to_crash", "targetname");
|
||||||
m_plane_about_to_crash delete();
|
m_plane_about_to_crash delete();
|
||||||
m_plane_craftable = getent( "plane_craftable", "targetname" );
|
m_plane_craftable = getent("plane_craftable", "targetname");
|
||||||
m_plane_craftable delete();
|
m_plane_craftable delete();
|
||||||
|
|
||||||
for ( i = 1; i <= 5; i++ )
|
for (i = 1; i <= 5; i++)
|
||||||
{
|
{
|
||||||
m_key_lock = getent( "masterkey_lock_" + i, "targetname" );
|
m_key_lock = getent("masterkey_lock_" + i, "targetname");
|
||||||
m_key_lock delete();
|
m_key_lock delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
m_shower_door = getent( "shower_key_door", "targetname" );
|
m_shower_door = getent("shower_key_door", "targetname");
|
||||||
m_shower_door delete();
|
m_shower_door delete();
|
||||||
m_nixie_door = getent( "nixie_door_left", "targetname" );
|
m_nixie_door = getent("nixie_door_left", "targetname");
|
||||||
m_nixie_door delete();
|
m_nixie_door delete();
|
||||||
m_nixie_door = getent( "nixie_door_right", "targetname" );
|
m_nixie_door = getent("nixie_door_right", "targetname");
|
||||||
m_nixie_door delete();
|
m_nixie_door delete();
|
||||||
m_nixie_brush = getent( "nixie_tube_weaponclip", "targetname" );
|
m_nixie_brush = getent("nixie_tube_weaponclip", "targetname");
|
||||||
m_nixie_brush delete();
|
m_nixie_brush delete();
|
||||||
|
|
||||||
for ( i = 1; i <= 3; i++ )
|
for (i = 1; i <= 3; i++)
|
||||||
{
|
{
|
||||||
m_nixie_tube = getent( "nixie_tube_" + i, "targetname" );
|
m_nixie_tube = getent("nixie_tube_" + i, "targetname");
|
||||||
m_nixie_tube delete();
|
m_nixie_tube delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
t_elevator_door = getent( "nixie_elevator_door", "targetname" );
|
t_elevator_door = getent("nixie_elevator_door", "targetname");
|
||||||
t_elevator_door delete();
|
t_elevator_door delete();
|
||||||
e_elevator_clip = getent( "elevator_door_playerclip", "targetname" );
|
e_elevator_clip = getent("elevator_door_playerclip", "targetname");
|
||||||
e_elevator_clip delete();
|
e_elevator_clip delete();
|
||||||
e_elevator_bottom_gate = getent( "elevator_bottom_gate_l", "targetname" );
|
e_elevator_bottom_gate = getent("elevator_bottom_gate_l", "targetname");
|
||||||
e_elevator_bottom_gate delete();
|
e_elevator_bottom_gate delete();
|
||||||
e_elevator_bottom_gate = getent( "elevator_bottom_gate_r", "targetname" );
|
e_elevator_bottom_gate = getent("elevator_bottom_gate_r", "targetname");
|
||||||
e_elevator_bottom_gate delete();
|
e_elevator_bottom_gate delete();
|
||||||
m_docks_puzzle = getent( "cable_puzzle_gate_01", "targetname" );
|
m_docks_puzzle = getent("cable_puzzle_gate_01", "targetname");
|
||||||
m_docks_puzzle delete();
|
m_docks_puzzle delete();
|
||||||
m_docks_puzzle = getent( "cable_puzzle_gate_02", "targetname" );
|
m_docks_puzzle = getent("cable_puzzle_gate_02", "targetname");
|
||||||
m_docks_puzzle delete();
|
m_docks_puzzle delete();
|
||||||
m_infirmary_case = getent( "infirmary_case_door_left", "targetname" );
|
m_infirmary_case = getent("infirmary_case_door_left", "targetname");
|
||||||
m_infirmary_case delete();
|
m_infirmary_case delete();
|
||||||
m_infirmary_case = getent( "infirmary_case_door_right", "targetname" );
|
m_infirmary_case = getent("infirmary_case_door_right", "targetname");
|
||||||
m_infirmary_case delete();
|
m_infirmary_case delete();
|
||||||
fake_plane_part = getent( "fake_veh_t6_dlc_zombie_part_control", "targetname" );
|
fake_plane_part = getent("fake_veh_t6_dlc_zombie_part_control", "targetname");
|
||||||
fake_plane_part delete();
|
fake_plane_part delete();
|
||||||
|
|
||||||
for ( i = 1; i <= 3; i++ )
|
for (i = 1; i <= 3; i++)
|
||||||
{
|
{
|
||||||
m_generator = getent( "generator_panel_" + i, "targetname" );
|
m_generator = getent("generator_panel_" + i, "targetname");
|
||||||
m_generator delete();
|
m_generator delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
a_m_generator_core = getentarray( "generator_core", "targetname" );
|
a_m_generator_core = getentarray("generator_core", "targetname");
|
||||||
|
|
||||||
foreach ( generator in a_m_generator_core )
|
foreach (generator in a_m_generator_core)
|
||||||
{
|
{
|
||||||
generator delete();
|
generator delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
e_playerclip = getent( "electric_chair_playerclip", "targetname" );
|
e_playerclip = getent("electric_chair_playerclip", "targetname");
|
||||||
e_playerclip delete();
|
e_playerclip delete();
|
||||||
|
|
||||||
for ( i = 1; i <= 4; i++ )
|
for (i = 1; i <= 4; i++)
|
||||||
{
|
{
|
||||||
t_use = getent( "trigger_electric_chair_" + i, "targetname" );
|
t_use = getent("trigger_electric_chair_" + i, "targetname");
|
||||||
t_use delete();
|
t_use delete();
|
||||||
m_chair = getent( "electric_chair_" + i, "targetname" );
|
m_chair = getent("electric_chair_" + i, "targetname");
|
||||||
m_chair delete();
|
m_chair delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
a_afterlife_interact = getentarray( "afterlife_interact", "targetname" );
|
a_afterlife_interact = getentarray("afterlife_interact", "targetname");
|
||||||
|
|
||||||
foreach ( model in a_afterlife_interact )
|
foreach (model in a_afterlife_interact)
|
||||||
{
|
{
|
||||||
model turn_afterlife_interact_on();
|
model turn_afterlife_interact_on();
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
}
|
}
|
||||||
|
|
||||||
flag_wait( "initial_blackscreen_passed" );
|
flag_wait("initial_blackscreen_passed");
|
||||||
maps\mp\zombies\_zm_game_module::turn_power_on_and_open_doors();
|
maps\mp\zombies\_zm_game_module::turn_power_on_and_open_doors();
|
||||||
flag_wait( "start_zombie_round_logic" );
|
flag_wait("start_zombie_round_logic");
|
||||||
level thread maps\mp\zm_alcatraz_traps::init_fan_trap_trigs();
|
level thread maps\mp\zm_alcatraz_traps::init_fan_trap_trigs();
|
||||||
level thread maps\mp\zm_alcatraz_traps::init_acid_trap_trigs();
|
level thread maps\mp\zm_alcatraz_traps::init_acid_trap_trigs();
|
||||||
wait 1;
|
wait 1;
|
||||||
level notify( "sleight_on" );
|
level notify("sleight_on");
|
||||||
wait_network_frame();
|
wait_network_frame();
|
||||||
level notify( "doubletap_on" );
|
level notify("doubletap_on");
|
||||||
wait_network_frame();
|
wait_network_frame();
|
||||||
level notify( "juggernog_on" );
|
level notify("juggernog_on");
|
||||||
wait_network_frame();
|
wait_network_frame();
|
||||||
level notify( "electric_cherry_on" );
|
level notify("electric_cherry_on");
|
||||||
wait_network_frame();
|
wait_network_frame();
|
||||||
level notify( "deadshot_on" );
|
level notify("deadshot_on");
|
||||||
wait_network_frame();
|
wait_network_frame();
|
||||||
level notify( "divetonuke_on" );
|
level notify("divetonuke_on");
|
||||||
wait_network_frame();
|
wait_network_frame();
|
||||||
level notify( "additionalprimaryweapon_on" );
|
level notify("additionalprimaryweapon_on");
|
||||||
wait_network_frame();
|
wait_network_frame();
|
||||||
level notify( "Pack_A_Punch_on" );
|
level notify("Pack_A_Punch_on");
|
||||||
wait_network_frame();
|
wait_network_frame();
|
||||||
}
|
}
|
||||||
|
|
||||||
remove_zombie_hats_for_grief()
|
remove_zombie_hats_for_grief()
|
||||||
{
|
{
|
||||||
self detach( "c_zom_guard_hat" );
|
self detach("c_zom_guard_hat");
|
||||||
}
|
}
|
||||||
|
|
||||||
enemy_location_override( zombie, enemy )
|
enemy_location_override(zombie, enemy)
|
||||||
{
|
{
|
||||||
location = enemy.origin;
|
location = enemy.origin;
|
||||||
|
|
||||||
if ( is_true( self.reroute ) )
|
if (is_true(self.reroute))
|
||||||
{
|
{
|
||||||
if ( isDefined( self.reroute_origin ) )
|
if (isDefined(self.reroute_origin))
|
||||||
{
|
{
|
||||||
location = self.reroute_origin;
|
location = self.reroute_origin;
|
||||||
}
|
}
|
||||||
@ -429,27 +429,27 @@ enemy_location_override( zombie, enemy )
|
|||||||
|
|
||||||
magicbox_face_spawn()
|
magicbox_face_spawn()
|
||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
|
|
||||||
if ( !is_gametype_active( "zgrief" ) )
|
if (!is_gametype_active("zgrief"))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
while ( 1 )
|
while (1)
|
||||||
{
|
{
|
||||||
self waittill( "user_grabbed_weapon" );
|
self waittill("user_grabbed_weapon");
|
||||||
|
|
||||||
if ( randomint( 50000 ) == 115 )
|
if (randomint(50000) == 115)
|
||||||
{
|
{
|
||||||
self playsoundtoplayer( "zmb_easteregg_face", self );
|
self playsoundtoplayer("zmb_easteregg_face", self);
|
||||||
self.wth_elem = newclienthudelem( self );
|
self.wth_elem = newclienthudelem(self);
|
||||||
self.wth_elem.horzalign = "fullscreen";
|
self.wth_elem.horzalign = "fullscreen";
|
||||||
self.wth_elem.vertalign = "fullscreen";
|
self.wth_elem.vertalign = "fullscreen";
|
||||||
self.wth_elem.sort = 1000;
|
self.wth_elem.sort = 1000;
|
||||||
self.wth_elem.foreground = 0;
|
self.wth_elem.foreground = 0;
|
||||||
self.wth_elem.alpha = 1;
|
self.wth_elem.alpha = 1;
|
||||||
self.wth_elem setshader( "zm_al_wth_zombie", 640, 480 );
|
self.wth_elem setshader("zm_al_wth_zombie", 640, 480);
|
||||||
self.wth_elem.hidewheninmenu = 1;
|
self.wth_elem.hidewheninmenu = 1;
|
||||||
wait 0.25;
|
wait 0.25;
|
||||||
self.wth_elem destroy();
|
self.wth_elem destroy();
|
||||||
@ -463,24 +463,24 @@ magicbox_face_spawn()
|
|||||||
|
|
||||||
turn_afterlife_interact_on()
|
turn_afterlife_interact_on()
|
||||||
{
|
{
|
||||||
if ( self.script_string == "cell_1_powerup_activate" || self.script_string == "intro_powerup_activate" || self.script_string == "cell_2_powerup_activate" || self.script_string == "wires_shower_door" )
|
if (self.script_string == "cell_1_powerup_activate" || self.script_string == "intro_powerup_activate" || self.script_string == "cell_2_powerup_activate" || self.script_string == "wires_shower_door")
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self.script_string == "electric_cherry_on" || self.script_string == "sleight_on" || self.script_string == "wires_admin_door" )
|
if (self.script_string == "electric_cherry_on" || self.script_string == "sleight_on" || self.script_string == "wires_admin_door")
|
||||||
{
|
{
|
||||||
if ( !isDefined( level.shockbox_anim ) )
|
if (!isDefined(level.shockbox_anim))
|
||||||
{
|
{
|
||||||
level.shockbox_anim[ "on" ] = %fxanim_zom_al_shock_box_on_anim;
|
level.shockbox_anim[ "on" ] = %fxanim_zom_al_shock_box_on_anim;
|
||||||
level.shockbox_anim[ "off" ] = %fxanim_zom_al_shock_box_off_anim;
|
level.shockbox_anim[ "off" ] = %fxanim_zom_al_shock_box_off_anim;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( issubstr( self.model, "p6_zm_al_shock_box" ) )
|
if (issubstr(self.model, "p6_zm_al_shock_box"))
|
||||||
{
|
{
|
||||||
self useanimtree( -1 );
|
self useanimtree(-1);
|
||||||
self setmodel( "p6_zm_al_shock_box_on" );
|
self setmodel("p6_zm_al_shock_box_on");
|
||||||
self setanim( level.shockbox_anim[ "on" ] );
|
self setanim(level.shockbox_anim[ "on" ]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -25,9 +25,9 @@
|
|||||||
start_alcatraz_sidequest()
|
start_alcatraz_sidequest()
|
||||||
{
|
{
|
||||||
init();
|
init();
|
||||||
onplayerconnect_callback( ::player_disconnect_watcher );
|
onplayerconnect_callback(::player_disconnect_watcher);
|
||||||
onplayerconnect_callback( ::player_death_watcher );
|
onplayerconnect_callback(::player_death_watcher);
|
||||||
flag_wait( "start_zombie_round_logic" );
|
flag_wait("start_zombie_round_logic");
|
||||||
|
|
||||||
level.n_quest_iteration_count = 1;
|
level.n_quest_iteration_count = 1;
|
||||||
level.n_plane_fuel_count = 5;
|
level.n_plane_fuel_count = 5;
|
||||||
@ -42,29 +42,29 @@ start_alcatraz_sidequest()
|
|||||||
setup_puzzle_piece_glint();
|
setup_puzzle_piece_glint();
|
||||||
setup_puzzles();
|
setup_puzzles();
|
||||||
setup_quest_triggers();
|
setup_quest_triggers();
|
||||||
flag_set( "docks_gates_remain_open" );
|
flag_set("docks_gates_remain_open");
|
||||||
|
|
||||||
if ( isdefined( level.gamedifficulty ) && level.gamedifficulty != 0 )
|
if (isdefined(level.gamedifficulty) && level.gamedifficulty != 0)
|
||||||
maps\mp\zm_prison_sq_final::final_flight_setup();
|
maps\mp\zm_prison_sq_final::final_flight_setup();
|
||||||
|
|
||||||
level thread warden_fence_hotjoin_handler();
|
level thread warden_fence_hotjoin_handler();
|
||||||
|
|
||||||
if ( isdefined( level.host_migration_listener_custom_func ) )
|
if (isdefined(level.host_migration_listener_custom_func))
|
||||||
level thread [[ level.host_migration_listener_custom_func ]]();
|
level thread [[ level.host_migration_listener_custom_func ]]();
|
||||||
else
|
else
|
||||||
level thread host_migration_listener();
|
level thread host_migration_listener();
|
||||||
|
|
||||||
if ( isdefined( level.manage_electric_chairs_custom_func ) )
|
if (isdefined(level.manage_electric_chairs_custom_func))
|
||||||
level thread [[ level.manage_electric_chairs_custom_func ]]();
|
level thread [[ level.manage_electric_chairs_custom_func ]]();
|
||||||
else
|
else
|
||||||
level thread manage_electric_chairs();
|
level thread manage_electric_chairs();
|
||||||
|
|
||||||
if ( isdefined( level.plane_flight_thread_custom_func ) )
|
if (isdefined(level.plane_flight_thread_custom_func))
|
||||||
level thread [[ level.plane_flight_thread_custom_func ]]();
|
level thread [[ level.plane_flight_thread_custom_func ]]();
|
||||||
else
|
else
|
||||||
level thread plane_flight_thread();
|
level thread plane_flight_thread();
|
||||||
|
|
||||||
if ( isdefined( level.track_quest_status_thread_custom_func ) )
|
if (isdefined(level.track_quest_status_thread_custom_func))
|
||||||
level thread [[ level.track_quest_status_thread_custom_func ]]();
|
level thread [[ level.track_quest_status_thread_custom_func ]]();
|
||||||
else
|
else
|
||||||
level thread track_quest_status_thread();
|
level thread track_quest_status_thread();
|
||||||
@ -75,24 +75,24 @@ start_alcatraz_sidequest()
|
|||||||
dryer_zombies_thread()
|
dryer_zombies_thread()
|
||||||
{
|
{
|
||||||
n_zombie_count_min = 20;
|
n_zombie_count_min = 20;
|
||||||
e_shower_zone = getent( "cellblock_shower", "targetname" );
|
e_shower_zone = getent("cellblock_shower", "targetname");
|
||||||
flag_wait( "dryer_cycle_active" );
|
flag_wait("dryer_cycle_active");
|
||||||
|
|
||||||
if ( level.zombie_total < n_zombie_count_min )
|
if (level.zombie_total < n_zombie_count_min)
|
||||||
level.zombie_total = n_zombie_count_min;
|
level.zombie_total = n_zombie_count_min;
|
||||||
|
|
||||||
while ( flag( "dryer_cycle_active" ) )
|
while (flag("dryer_cycle_active"))
|
||||||
{
|
{
|
||||||
a_zombies_in_shower = [];
|
a_zombies_in_shower = [];
|
||||||
a_zombies_in_shower = get_zombies_touching_volume( "axis", "cellblock_shower", undefined );
|
a_zombies_in_shower = get_zombies_touching_volume("axis", "cellblock_shower", undefined);
|
||||||
|
|
||||||
if ( a_zombies_in_shower.size < n_zombie_count_min )
|
if (a_zombies_in_shower.size < n_zombie_count_min)
|
||||||
{
|
{
|
||||||
e_zombie = get_farthest_available_zombie( e_shower_zone );
|
e_zombie = get_farthest_available_zombie(e_shower_zone);
|
||||||
|
|
||||||
if ( isdefined( e_zombie ) && !isinarray( a_zombies_in_shower, e_zombie ) )
|
if (isdefined(e_zombie) && !isinarray(a_zombies_in_shower, e_zombie))
|
||||||
{
|
{
|
||||||
e_zombie notify( "zapped" );
|
e_zombie notify("zapped");
|
||||||
e_zombie thread dryer_teleports_zombie();
|
e_zombie thread dryer_teleports_zombie();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -103,331 +103,331 @@ dryer_zombies_thread()
|
|||||||
|
|
||||||
track_quest_status_thread()
|
track_quest_status_thread()
|
||||||
{
|
{
|
||||||
while ( true )
|
while (true)
|
||||||
{
|
{
|
||||||
while ( level.characters_in_nml.size == 0 )
|
while (level.characters_in_nml.size == 0)
|
||||||
wait 1;
|
wait 1;
|
||||||
|
|
||||||
while ( level.characters_in_nml.size > 0 )
|
while (level.characters_in_nml.size > 0)
|
||||||
wait 1;
|
wait 1;
|
||||||
|
|
||||||
if ( flag( "plane_trip_to_nml_successful" ) )
|
if (flag("plane_trip_to_nml_successful"))
|
||||||
{
|
{
|
||||||
bestow_quest_rewards();
|
bestow_quest_rewards();
|
||||||
flag_clear( "plane_trip_to_nml_successful" );
|
flag_clear("plane_trip_to_nml_successful");
|
||||||
}
|
}
|
||||||
|
|
||||||
level notify( "bridge_empty" );
|
level notify("bridge_empty");
|
||||||
|
|
||||||
if ( level.n_quest_iteration_count == 2 )
|
if (level.n_quest_iteration_count == 2)
|
||||||
vo_play_four_part_conversation( level.four_part_convos["alcatraz_return_alt" + randomintrange( 0, 2 )] );
|
vo_play_four_part_conversation(level.four_part_convos["alcatraz_return_alt" + randomintrange(0, 2)]);
|
||||||
|
|
||||||
prep_for_new_quest();
|
prep_for_new_quest();
|
||||||
t_plane_fly = getent( "plane_fly_trigger", "targetname" );
|
t_plane_fly = getent("plane_fly_trigger", "targetname");
|
||||||
t_plane_fly sethintstring( &"ZM_PRISON_PLANE_BEGIN_TAKEOFF" );
|
t_plane_fly sethintstring(&"ZM_PRISON_PLANE_BEGIN_TAKEOFF");
|
||||||
t_plane_fly trigger_on();
|
t_plane_fly trigger_on();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
prep_for_new_quest()
|
prep_for_new_quest()
|
||||||
{
|
{
|
||||||
for ( i = 1; i < 4; i++ )
|
for (i = 1; i < 4; i++)
|
||||||
{
|
{
|
||||||
str_trigger_targetname = "trigger_electric_chair_" + i;
|
str_trigger_targetname = "trigger_electric_chair_" + i;
|
||||||
t_electric_chair = getent( str_trigger_targetname, "targetname" );
|
t_electric_chair = getent(str_trigger_targetname, "targetname");
|
||||||
t_electric_chair sethintstring( &"ZM_PRISON_ELECTRIC_CHAIR_ACTIVATE" );
|
t_electric_chair sethintstring(&"ZM_PRISON_ELECTRIC_CHAIR_ACTIVATE");
|
||||||
t_electric_chair trigger_on();
|
t_electric_chair trigger_on();
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( i = 1; i < 5; i++ )
|
for (i = 1; i < 5; i++)
|
||||||
{
|
{
|
||||||
m_electric_chair = getent( "electric_chair_" + i, "targetname" );
|
m_electric_chair = getent("electric_chair_" + i, "targetname");
|
||||||
m_electric_chair notify( "bridge_empty" );
|
m_electric_chair notify("bridge_empty");
|
||||||
}
|
}
|
||||||
|
|
||||||
m_plane_craftable = getent( "plane_craftable", "targetname" );
|
m_plane_craftable = getent("plane_craftable", "targetname");
|
||||||
m_plane_craftable show();
|
m_plane_craftable show();
|
||||||
playfxontag( level._effect["fx_alcatraz_plane_apear"], m_plane_craftable, "tag_origin" );
|
playfxontag(level._effect["fx_alcatraz_plane_apear"], m_plane_craftable, "tag_origin");
|
||||||
veh_plane_flyable = getent( "plane_flyable", "targetname" );
|
veh_plane_flyable = getent("plane_flyable", "targetname");
|
||||||
veh_plane_flyable attachpath( getvehiclenode( "zombie_plane_underground", "targetname" ) );
|
veh_plane_flyable attachpath(getvehiclenode("zombie_plane_underground", "targetname"));
|
||||||
vo_play_four_part_conversation( level.four_part_convos["alcatraz_return_quest_reset"] );
|
vo_play_four_part_conversation(level.four_part_convos["alcatraz_return_quest_reset"]);
|
||||||
flag_clear( "plane_is_away" );
|
flag_clear("plane_is_away");
|
||||||
}
|
}
|
||||||
|
|
||||||
plane_boarding_thread()
|
plane_boarding_thread()
|
||||||
{
|
{
|
||||||
self endon( "death_or_disconnect" );
|
self endon("death_or_disconnect");
|
||||||
flag_set( "plane_is_away" );
|
flag_set("plane_is_away");
|
||||||
self thread player_disconnect_watcher();
|
self thread player_disconnect_watcher();
|
||||||
self thread player_death_watcher();
|
self thread player_death_watcher();
|
||||||
|
|
||||||
flag_set( "plane_boarded" );
|
flag_set("plane_boarded");
|
||||||
self setclientfieldtoplayer( "effects_escape_flight", 1 );
|
self setclientfieldtoplayer("effects_escape_flight", 1);
|
||||||
level.brutus_respawn_after_despawn = 0;
|
level.brutus_respawn_after_despawn = 0;
|
||||||
a_nml_teleport_targets = [];
|
a_nml_teleport_targets = [];
|
||||||
|
|
||||||
for ( i = 1; i < 6; i++ )
|
for (i = 1; i < 6; i++)
|
||||||
a_nml_teleport_targets[i - 1] = getstruct( "nml_telepoint_" + i, "targetname" );
|
a_nml_teleport_targets[i - 1] = getstruct("nml_telepoint_" + i, "targetname");
|
||||||
|
|
||||||
level.characters_in_nml[level.characters_in_nml.size] = self.character_name;
|
level.characters_in_nml[level.characters_in_nml.size] = self.character_name;
|
||||||
self.on_a_plane = 1;
|
self.on_a_plane = 1;
|
||||||
level.someone_has_visited_nml = 1;
|
level.someone_has_visited_nml = 1;
|
||||||
self.n_passenger_index = level.characters_in_nml.size;
|
self.n_passenger_index = level.characters_in_nml.size;
|
||||||
m_plane_craftable = getent( "plane_craftable", "targetname" );
|
m_plane_craftable = getent("plane_craftable", "targetname");
|
||||||
m_plane_about_to_crash = getent( "plane_about_to_crash", "targetname" );
|
m_plane_about_to_crash = getent("plane_about_to_crash", "targetname");
|
||||||
veh_plane_flyable = getent( "plane_flyable", "targetname" );
|
veh_plane_flyable = getent("plane_flyable", "targetname");
|
||||||
t_plane_fly = getent( "plane_fly_trigger", "targetname" );
|
t_plane_fly = getent("plane_fly_trigger", "targetname");
|
||||||
t_plane_fly sethintstring( &"ZM_PRISON_PLANE_BOARD" );
|
t_plane_fly sethintstring(&"ZM_PRISON_PLANE_BOARD");
|
||||||
self enableinvulnerability();
|
self enableinvulnerability();
|
||||||
self playerlinktodelta( m_plane_craftable, "tag_player_crouched_" + ( self.n_passenger_index + 1 ) );
|
self playerlinktodelta(m_plane_craftable, "tag_player_crouched_" + (self.n_passenger_index + 1));
|
||||||
self allowstand( 0 );
|
self allowstand(0);
|
||||||
flag_wait( "plane_departed" );
|
flag_wait("plane_departed");
|
||||||
level notify( "sndStopBrutusLoop" );
|
level notify("sndStopBrutusLoop");
|
||||||
self clientnotify( "sndPS" );
|
self clientnotify("sndPS");
|
||||||
self playsoundtoplayer( "zmb_plane_takeoff", self );
|
self playsoundtoplayer("zmb_plane_takeoff", self);
|
||||||
level thread maps\mp\zombies\_zm_audio::sndmusicstingerevent( "plane_takeoff", self );
|
level thread maps\mp\zombies\_zm_audio::sndmusicstingerevent("plane_takeoff", self);
|
||||||
self playerlinktodelta( veh_plane_flyable, "tag_player_crouched_" + ( self.n_passenger_index + 1 ) );
|
self playerlinktodelta(veh_plane_flyable, "tag_player_crouched_" + (self.n_passenger_index + 1));
|
||||||
self setclientfieldtoplayer( "effects_escape_flight", 2 );
|
self setclientfieldtoplayer("effects_escape_flight", 2);
|
||||||
flag_wait( "plane_approach_bridge" );
|
flag_wait("plane_approach_bridge");
|
||||||
self thread snddelayedimp();
|
self thread snddelayedimp();
|
||||||
self setclientfieldtoplayer( "effects_escape_flight", 3 );
|
self setclientfieldtoplayer("effects_escape_flight", 3);
|
||||||
self unlink();
|
self unlink();
|
||||||
self playerlinktoabsolute( veh_plane_flyable, "tag_player_crouched_" + ( self.n_passenger_index + 1 ) );
|
self playerlinktoabsolute(veh_plane_flyable, "tag_player_crouched_" + (self.n_passenger_index + 1));
|
||||||
flag_wait( "plane_zapped" );
|
flag_wait("plane_zapped");
|
||||||
flag_set( "activate_player_zone_bridge" );
|
flag_set("activate_player_zone_bridge");
|
||||||
self playsoundtoplayer( "zmb_plane_fall", self );
|
self playsoundtoplayer("zmb_plane_fall", self);
|
||||||
self setclientfieldtoplayer( "effects_escape_flight", 4 );
|
self setclientfieldtoplayer("effects_escape_flight", 4);
|
||||||
self.dontspeak = 1;
|
self.dontspeak = 1;
|
||||||
self setclientfieldtoplayer( "isspeaking", 1 );
|
self setclientfieldtoplayer("isspeaking", 1);
|
||||||
self playerlinktodelta( m_plane_about_to_crash, "tag_player_crouched_" + ( self.n_passenger_index + 1 ), 1, 0, 0, 0, 0, 1 );
|
self playerlinktodelta(m_plane_about_to_crash, "tag_player_crouched_" + (self.n_passenger_index + 1), 1, 0, 0, 0, 0, 1);
|
||||||
self forcegrenadethrow();
|
self forcegrenadethrow();
|
||||||
str_current_weapon = self getcurrentweapon();
|
str_current_weapon = self getcurrentweapon();
|
||||||
self giveweapon( "falling_hands_zm" );
|
self giveweapon("falling_hands_zm");
|
||||||
self switchtoweaponimmediate( "falling_hands_zm" );
|
self switchtoweaponimmediate("falling_hands_zm");
|
||||||
self setweaponammoclip( "falling_hands_zm", 0 );
|
self setweaponammoclip("falling_hands_zm", 0);
|
||||||
players = getplayers();
|
players = getplayers();
|
||||||
|
|
||||||
foreach ( player in players )
|
foreach (player in players)
|
||||||
{
|
{
|
||||||
if ( player != self )
|
if (player != self)
|
||||||
player setinvisibletoplayer( self );
|
player setinvisibletoplayer(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
flag_wait( "plane_crashed" );
|
flag_wait("plane_crashed");
|
||||||
self setclientfieldtoplayer( "effects_escape_flight", 5 );
|
self setclientfieldtoplayer("effects_escape_flight", 5);
|
||||||
self takeweapon( "falling_hands_zm" );
|
self takeweapon("falling_hands_zm");
|
||||||
|
|
||||||
if ( isdefined( str_current_weapon ) && str_current_weapon != "none" )
|
if (isdefined(str_current_weapon) && str_current_weapon != "none")
|
||||||
self switchtoweaponimmediate( str_current_weapon );
|
self switchtoweaponimmediate(str_current_weapon);
|
||||||
|
|
||||||
self thread fadetoblackforxsec( 0, 2, 0, 0.5, "black" );
|
self thread fadetoblackforxsec(0, 2, 0, 0.5, "black");
|
||||||
self thread snddelayedmusic();
|
self thread snddelayedmusic();
|
||||||
self unlink();
|
self unlink();
|
||||||
self allowstand( 1 );
|
self allowstand(1);
|
||||||
self setstance( "stand" );
|
self setstance("stand");
|
||||||
players = getplayers();
|
players = getplayers();
|
||||||
|
|
||||||
foreach ( player in players )
|
foreach (player in players)
|
||||||
{
|
{
|
||||||
if ( player != self )
|
if (player != self)
|
||||||
player setvisibletoplayer( self );
|
player setvisibletoplayer(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
flag_clear( "spawn_zombies" );
|
flag_clear("spawn_zombies");
|
||||||
self setorigin( a_nml_teleport_targets[self.n_passenger_index].origin );
|
self setorigin(a_nml_teleport_targets[self.n_passenger_index].origin);
|
||||||
e_poi = getstruct( "plane_crash_poi", "targetname" );
|
e_poi = getstruct("plane_crash_poi", "targetname");
|
||||||
vec_to_target = e_poi.origin - self.origin;
|
vec_to_target = e_poi.origin - self.origin;
|
||||||
vec_to_target = vectortoangles( vec_to_target );
|
vec_to_target = vectortoangles(vec_to_target);
|
||||||
vec_to_target = ( 0, vec_to_target[1], 0 );
|
vec_to_target = (0, vec_to_target[1], 0);
|
||||||
self setplayerangles( vec_to_target );
|
self setplayerangles(vec_to_target);
|
||||||
n_shellshock_duration = 5;
|
n_shellshock_duration = 5;
|
||||||
self shellshock( "explosion", n_shellshock_duration );
|
self shellshock("explosion", n_shellshock_duration);
|
||||||
self.dontspeak = 0;
|
self.dontspeak = 0;
|
||||||
self setclientfieldtoplayer( "isspeaking", 0 );
|
self setclientfieldtoplayer("isspeaking", 0);
|
||||||
self notify( "player_at_bridge" );
|
self notify("player_at_bridge");
|
||||||
wait( n_shellshock_duration );
|
wait(n_shellshock_duration);
|
||||||
self disableinvulnerability();
|
self disableinvulnerability();
|
||||||
self.on_a_plane = 0;
|
self.on_a_plane = 0;
|
||||||
|
|
||||||
if ( level.characters_in_nml.size == 1 )
|
if (level.characters_in_nml.size == 1)
|
||||||
self thread vo_bridge_soliloquy();
|
self thread vo_bridge_soliloquy();
|
||||||
else if ( level.characters_in_nml.size == 4 )
|
else if (level.characters_in_nml.size == 4)
|
||||||
level thread vo_bridge_four_part_convo();
|
level thread vo_bridge_four_part_convo();
|
||||||
|
|
||||||
self playsoundtoplayer( "zmb_ggb_swarm_start", self );
|
self playsoundtoplayer("zmb_ggb_swarm_start", self);
|
||||||
flag_set( "spawn_zombies" );
|
flag_set("spawn_zombies");
|
||||||
level.brutus_respawn_after_despawn = 1;
|
level.brutus_respawn_after_despawn = 1;
|
||||||
character_name = level.characters_in_nml[randomintrange( 0, level.characters_in_nml.size )];
|
character_name = level.characters_in_nml[randomintrange(0, level.characters_in_nml.size)];
|
||||||
players = getplayers();
|
players = getplayers();
|
||||||
|
|
||||||
foreach ( player in players )
|
foreach (player in players)
|
||||||
{
|
{
|
||||||
if ( isdefined( player ) && player.character_name == character_name )
|
if (isdefined(player) && player.character_name == character_name)
|
||||||
player thread do_player_general_vox( "quest", "zombie_arrive_gg", undefined, 100 );
|
player thread do_player_general_vox("quest", "zombie_arrive_gg", undefined, 100);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
plane_flight_thread()
|
plane_flight_thread()
|
||||||
{
|
{
|
||||||
while ( true )
|
while (true)
|
||||||
{
|
{
|
||||||
m_plane_about_to_crash = getent( "plane_about_to_crash", "targetname" );
|
m_plane_about_to_crash = getent("plane_about_to_crash", "targetname");
|
||||||
m_plane_craftable = getent( "plane_craftable", "targetname" );
|
m_plane_craftable = getent("plane_craftable", "targetname");
|
||||||
t_plane_fly = getent( "plane_fly_trigger", "targetname" );
|
t_plane_fly = getent("plane_fly_trigger", "targetname");
|
||||||
veh_plane_flyable = getent( "plane_flyable", "targetname" );
|
veh_plane_flyable = getent("plane_flyable", "targetname");
|
||||||
m_plane_about_to_crash ghost();
|
m_plane_about_to_crash ghost();
|
||||||
flag_wait( "plane_boarded" );
|
flag_wait("plane_boarded");
|
||||||
level clientnotify( "sndPB" );
|
level clientnotify("sndPB");
|
||||||
|
|
||||||
if ( !( isdefined( level.music_override ) && level.music_override ) )
|
if (!(isdefined(level.music_override) && level.music_override))
|
||||||
t_plane_fly playloopsound( "mus_event_plane_countdown_loop", 0.25 );
|
t_plane_fly playloopsound("mus_event_plane_countdown_loop", 0.25);
|
||||||
|
|
||||||
for ( i = 10; i > 0; i-- )
|
for (i = 10; i > 0; i--)
|
||||||
{
|
{
|
||||||
veh_plane_flyable playsound( "zmb_plane_countdown_tick" );
|
veh_plane_flyable playsound("zmb_plane_countdown_tick");
|
||||||
wait 1;
|
wait 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
t_plane_fly stoploopsound( 2 );
|
t_plane_fly stoploopsound(2);
|
||||||
exploder( 10000 );
|
exploder(10000);
|
||||||
veh_plane_flyable attachpath( getvehiclenode( "zombie_plane_flight_path", "targetname" ) );
|
veh_plane_flyable attachpath(getvehiclenode("zombie_plane_flight_path", "targetname"));
|
||||||
veh_plane_flyable startpath();
|
veh_plane_flyable startpath();
|
||||||
flag_set( "plane_departed" );
|
flag_set("plane_departed");
|
||||||
t_plane_fly trigger_off();
|
t_plane_fly trigger_off();
|
||||||
m_plane_craftable ghost();
|
m_plane_craftable ghost();
|
||||||
veh_plane_flyable setvisibletoall();
|
veh_plane_flyable setvisibletoall();
|
||||||
level setclientfield( "fog_stage", 1 );
|
level setclientfield("fog_stage", 1);
|
||||||
playfxontag( level._effect["fx_alcatraz_plane_trail"], veh_plane_flyable, "tag_origin" );
|
playfxontag(level._effect["fx_alcatraz_plane_trail"], veh_plane_flyable, "tag_origin");
|
||||||
wait 2;
|
wait 2;
|
||||||
playfxontag( level._effect["fx_alcatraz_plane_trail_fast"], veh_plane_flyable, "tag_origin" );
|
playfxontag(level._effect["fx_alcatraz_plane_trail_fast"], veh_plane_flyable, "tag_origin");
|
||||||
wait 3;
|
wait 3;
|
||||||
exploder( 10001 );
|
exploder(10001);
|
||||||
wait 4;
|
wait 4;
|
||||||
playfxontag( level._effect["fx_alcatraz_flight_lightning"], veh_plane_flyable, "tag_origin" );
|
playfxontag(level._effect["fx_alcatraz_flight_lightning"], veh_plane_flyable, "tag_origin");
|
||||||
level setclientfield( "scripted_lightning_flash", 1 );
|
level setclientfield("scripted_lightning_flash", 1);
|
||||||
wait 1;
|
wait 1;
|
||||||
flag_set( "plane_approach_bridge" );
|
flag_set("plane_approach_bridge");
|
||||||
stop_exploder( 10001 );
|
stop_exploder(10001);
|
||||||
level setclientfield( "fog_stage", 2 );
|
level setclientfield("fog_stage", 2);
|
||||||
veh_plane_flyable attachpath( getvehiclenode( "zombie_plane_bridge_approach", "targetname" ) );
|
veh_plane_flyable attachpath(getvehiclenode("zombie_plane_bridge_approach", "targetname"));
|
||||||
veh_plane_flyable startpath();
|
veh_plane_flyable startpath();
|
||||||
wait 6;
|
wait 6;
|
||||||
playfxontag( level._effect["fx_alcatraz_flight_lightning"], veh_plane_flyable, "tag_origin" );
|
playfxontag(level._effect["fx_alcatraz_flight_lightning"], veh_plane_flyable, "tag_origin");
|
||||||
level setclientfield( "scripted_lightning_flash", 1 );
|
level setclientfield("scripted_lightning_flash", 1);
|
||||||
|
|
||||||
veh_plane_flyable waittill( "reached_end_node" );
|
veh_plane_flyable waittill("reached_end_node");
|
||||||
|
|
||||||
flag_set( "plane_zapped" );
|
flag_set("plane_zapped");
|
||||||
level setclientfield( "fog_stage", 3 );
|
level setclientfield("fog_stage", 3);
|
||||||
veh_plane_flyable setinvisibletoall();
|
veh_plane_flyable setinvisibletoall();
|
||||||
n_crash_duration = 2.25;
|
n_crash_duration = 2.25;
|
||||||
nd_plane_about_to_crash_1 = getstruct( "plane_about_to_crash_point_1", "targetname" );
|
nd_plane_about_to_crash_1 = getstruct("plane_about_to_crash_point_1", "targetname");
|
||||||
m_plane_about_to_crash.origin = nd_plane_about_to_crash_1.origin;
|
m_plane_about_to_crash.origin = nd_plane_about_to_crash_1.origin;
|
||||||
nd_plane_about_to_crash_2 = getstruct( "plane_about_to_crash_point_2", "targetname" );
|
nd_plane_about_to_crash_2 = getstruct("plane_about_to_crash_point_2", "targetname");
|
||||||
m_plane_about_to_crash moveto( nd_plane_about_to_crash_2.origin, n_crash_duration );
|
m_plane_about_to_crash moveto(nd_plane_about_to_crash_2.origin, n_crash_duration);
|
||||||
m_plane_about_to_crash thread spin_while_falling();
|
m_plane_about_to_crash thread spin_while_falling();
|
||||||
stop_exploder( 10000 );
|
stop_exploder(10000);
|
||||||
|
|
||||||
m_plane_about_to_crash waittill( "movedone" );
|
m_plane_about_to_crash waittill("movedone");
|
||||||
|
|
||||||
flag_set( "plane_crashed" );
|
flag_set("plane_crashed");
|
||||||
wait 2;
|
wait 2;
|
||||||
level setclientfield( "scripted_lightning_flash", 1 );
|
level setclientfield("scripted_lightning_flash", 1);
|
||||||
m_plane_about_to_crash.origin += vectorscale( ( 0, 0, -1 ), 2048.0 );
|
m_plane_about_to_crash.origin += vectorscale((0, 0, -1), 2048.0);
|
||||||
wait 4;
|
wait 4;
|
||||||
veh_plane_flyable setvisibletoall();
|
veh_plane_flyable setvisibletoall();
|
||||||
veh_plane_flyable play_fx( "fx_alcatraz_plane_fire_trail", veh_plane_flyable.origin, veh_plane_flyable.angles, "reached_end_node", 1, "tag_origin", undefined );
|
veh_plane_flyable play_fx("fx_alcatraz_plane_fire_trail", veh_plane_flyable.origin, veh_plane_flyable.angles, "reached_end_node", 1, "tag_origin", undefined);
|
||||||
veh_plane_flyable attachpath( getvehiclenode( "zombie_plane_bridge_flyby", "targetname" ) );
|
veh_plane_flyable attachpath(getvehiclenode("zombie_plane_bridge_flyby", "targetname"));
|
||||||
veh_plane_flyable startpath();
|
veh_plane_flyable startpath();
|
||||||
veh_plane_flyable thread sndpc();
|
veh_plane_flyable thread sndpc();
|
||||||
|
|
||||||
veh_plane_flyable waittill( "reached_end_node" );
|
veh_plane_flyable waittill("reached_end_node");
|
||||||
|
|
||||||
veh_plane_flyable setinvisibletoall();
|
veh_plane_flyable setinvisibletoall();
|
||||||
|
|
||||||
if ( !level.final_flight_activated )
|
if (!level.final_flight_activated)
|
||||||
{
|
{
|
||||||
if ( isdefined( level.brutus_on_the_bridge_custom_func ) )
|
if (isdefined(level.brutus_on_the_bridge_custom_func))
|
||||||
level thread [[ level.brutus_on_the_bridge_custom_func ]]();
|
level thread [[ level.brutus_on_the_bridge_custom_func ]]();
|
||||||
else
|
else
|
||||||
level thread brutus_on_the_bridge();
|
level thread brutus_on_the_bridge();
|
||||||
}
|
}
|
||||||
|
|
||||||
flag_clear( "plane_boarded" );
|
flag_clear("plane_boarded");
|
||||||
flag_clear( "plane_departed" );
|
flag_clear("plane_departed");
|
||||||
flag_clear( "plane_approach_bridge" );
|
flag_clear("plane_approach_bridge");
|
||||||
flag_clear( "plane_zapped" );
|
flag_clear("plane_zapped");
|
||||||
flag_clear( "plane_crashed" );
|
flag_clear("plane_crashed");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
manage_electric_chairs()
|
manage_electric_chairs()
|
||||||
{
|
{
|
||||||
level notify( "manage_electric_chairs" );
|
level notify("manage_electric_chairs");
|
||||||
level endon( "manage_electric_chairs" );
|
level endon("manage_electric_chairs");
|
||||||
|
|
||||||
while ( true )
|
while (true)
|
||||||
{
|
{
|
||||||
flag_wait( "plane_approach_bridge" );
|
flag_wait("plane_approach_bridge");
|
||||||
|
|
||||||
for ( i = 1; i < 5; i++ )
|
for (i = 1; i < 5; i++)
|
||||||
{
|
{
|
||||||
str_trigger_targetname = "trigger_electric_chair_" + i;
|
str_trigger_targetname = "trigger_electric_chair_" + i;
|
||||||
t_electric_chair = getent( str_trigger_targetname, "targetname" );
|
t_electric_chair = getent(str_trigger_targetname, "targetname");
|
||||||
|
|
||||||
if ( isdefined( level.electric_chair_trigger_thread_custom_func ) )
|
if (isdefined(level.electric_chair_trigger_thread_custom_func))
|
||||||
t_electric_chair thread [[ level.electric_chair_trigger_thread_custom_func ]]( i );
|
t_electric_chair thread [[ level.electric_chair_trigger_thread_custom_func ]](i);
|
||||||
else
|
else
|
||||||
t_electric_chair thread electric_chair_trigger_thread( i );
|
t_electric_chair thread electric_chair_trigger_thread(i);
|
||||||
|
|
||||||
t_electric_chair setcursorhint( "HINT_NOICON" );
|
t_electric_chair setcursorhint("HINT_NOICON");
|
||||||
t_electric_chair sethintstring( &"ZM_PRISON_ELECTRIC_CHAIR_ACTIVATE" );
|
t_electric_chair sethintstring(&"ZM_PRISON_ELECTRIC_CHAIR_ACTIVATE");
|
||||||
t_electric_chair usetriggerrequirelookat();
|
t_electric_chair usetriggerrequirelookat();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( level.final_flight_activated )
|
if (level.final_flight_activated)
|
||||||
{
|
{
|
||||||
level.revive_trigger_should_ignore_sight_checks = maps\mp\zm_prison_sq_final::revive_trigger_should_ignore_sight_checks;
|
level.revive_trigger_should_ignore_sight_checks = maps\mp\zm_prison_sq_final::revive_trigger_should_ignore_sight_checks;
|
||||||
|
|
||||||
for ( j = 0; j < level.final_flight_players.size; j++ )
|
for (j = 0; j < level.final_flight_players.size; j++)
|
||||||
{
|
{
|
||||||
m_electric_chair = getent( "electric_chair_" + ( j + 1 ), "targetname" );
|
m_electric_chair = getent("electric_chair_" + (j + 1), "targetname");
|
||||||
corpse = level.final_flight_players[j].e_afterlife_corpse;
|
corpse = level.final_flight_players[j].e_afterlife_corpse;
|
||||||
corpse linkto( m_electric_chair, "tag_origin", ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
corpse linkto(m_electric_chair, "tag_origin", (0, 0, 0), (0, 0, 0));
|
||||||
corpse maps\mp\zombies\_zm_clone::clone_animate( "chair" );
|
corpse maps\mp\zombies\_zm_clone::clone_animate("chair");
|
||||||
wait 1;
|
wait 1;
|
||||||
corpse.revivetrigger unlink();
|
corpse.revivetrigger unlink();
|
||||||
corpse.revivetrigger.origin = m_electric_chair.origin + ( 64, 0, 32 );
|
corpse.revivetrigger.origin = m_electric_chair.origin + (64, 0, 32);
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( j = 1; j < 5; j++ )
|
for (j = 1; j < 5; j++)
|
||||||
{
|
{
|
||||||
str_trigger_targetname = "trigger_electric_chair_" + j;
|
str_trigger_targetname = "trigger_electric_chair_" + j;
|
||||||
t_electric_chair = getent( str_trigger_targetname, "targetname" );
|
t_electric_chair = getent(str_trigger_targetname, "targetname");
|
||||||
t_electric_chair trigger_off();
|
t_electric_chair trigger_off();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for ( i = 1; i < 5; i++ )
|
for (i = 1; i < 5; i++)
|
||||||
{
|
{
|
||||||
m_electric_chair = getent( "electric_chair_" + i, "targetname" );
|
m_electric_chair = getent("electric_chair_" + i, "targetname");
|
||||||
m_electric_chair hide();
|
m_electric_chair hide();
|
||||||
str_trigger_targetname = "trigger_electric_chair_" + i;
|
str_trigger_targetname = "trigger_electric_chair_" + i;
|
||||||
t_electric_chair = getent( str_trigger_targetname, "targetname" );
|
t_electric_chair = getent(str_trigger_targetname, "targetname");
|
||||||
t_electric_chair trigger_off();
|
t_electric_chair trigger_off();
|
||||||
}
|
}
|
||||||
|
|
||||||
flag_wait( "plane_crashed" );
|
flag_wait("plane_crashed");
|
||||||
exploder( 666 );
|
exploder(666);
|
||||||
|
|
||||||
for ( i = 1; i < 5; i++ )
|
for (i = 1; i < 5; i++)
|
||||||
{
|
{
|
||||||
m_electric_chair = getent( "electric_chair_" + i, "targetname" );
|
m_electric_chair = getent("electric_chair_" + i, "targetname");
|
||||||
m_electric_chair show();
|
m_electric_chair show();
|
||||||
m_electric_chair thread snddelayedchairaudio( i );
|
m_electric_chair thread snddelayedchairaudio(i);
|
||||||
str_trigger_targetname = "trigger_electric_chair_" + i;
|
str_trigger_targetname = "trigger_electric_chair_" + i;
|
||||||
t_electric_chair = getent( str_trigger_targetname, "targetname" );
|
t_electric_chair = getent(str_trigger_targetname, "targetname");
|
||||||
t_electric_chair trigger_on();
|
t_electric_chair trigger_on();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -435,6 +435,6 @@ manage_electric_chairs()
|
|||||||
electric_chair_vo();
|
electric_chair_vo();
|
||||||
}
|
}
|
||||||
|
|
||||||
flag_waitopen( "plane_approach_bridge" );
|
flag_waitopen("plane_approach_bridge");
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -11,81 +11,81 @@
|
|||||||
|
|
||||||
init_fan_trap_trigs()
|
init_fan_trap_trigs()
|
||||||
{
|
{
|
||||||
trap_trigs = getentarray( "fan_trap_use_trigger", "targetname" );
|
trap_trigs = getentarray("fan_trap_use_trigger", "targetname");
|
||||||
array_thread( trap_trigs, ::fan_trap_think );
|
array_thread(trap_trigs, ::fan_trap_think);
|
||||||
init_fan_fxanim( "wardens_office" );
|
init_fan_fxanim("wardens_office");
|
||||||
}
|
}
|
||||||
|
|
||||||
fan_trap_think()
|
fan_trap_think()
|
||||||
{
|
{
|
||||||
triggers = getentarray( self.targetname, "targetname" );
|
triggers = getentarray(self.targetname, "targetname");
|
||||||
self.cost = 1000;
|
self.cost = 1000;
|
||||||
self.in_use = 0;
|
self.in_use = 0;
|
||||||
self.is_available = 1;
|
self.is_available = 1;
|
||||||
self.has_been_used = 0;
|
self.has_been_used = 0;
|
||||||
self.zombie_dmg_trig = getent( self.target, "targetname" );
|
self.zombie_dmg_trig = getent(self.target, "targetname");
|
||||||
self.zombie_dmg_trig.script_string = self.script_string;
|
self.zombie_dmg_trig.script_string = self.script_string;
|
||||||
self.zombie_dmg_trig.in_use = 0;
|
self.zombie_dmg_trig.in_use = 0;
|
||||||
self.rumble_trig = getent( "fan_trap_rumble", "targetname" );
|
self.rumble_trig = getent("fan_trap_rumble", "targetname");
|
||||||
light_name = self get_trap_light_name();
|
light_name = self get_trap_light_name();
|
||||||
zapper_light_red( light_name );
|
zapper_light_red(light_name);
|
||||||
self sethintstring( &"ZM_PRISON_FAN_TRAP_UNAVAILABLE" );
|
self sethintstring(&"ZM_PRISON_FAN_TRAP_UNAVAILABLE");
|
||||||
flag_wait( "activate_warden_office" );
|
flag_wait("activate_warden_office");
|
||||||
zapper_light_green( light_name );
|
zapper_light_green(light_name);
|
||||||
self hint_string( &"ZM_PRISON_FAN_TRAP", self.cost );
|
self hint_string(&"ZM_PRISON_FAN_TRAP", self.cost);
|
||||||
|
|
||||||
while ( true )
|
while (true)
|
||||||
{
|
{
|
||||||
self waittill( "trigger", who );
|
self waittill("trigger", who);
|
||||||
|
|
||||||
if ( who in_revive_trigger() )
|
if (who in_revive_trigger())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( !isdefined( self.is_available ) )
|
if (!isdefined(self.is_available))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( is_player_valid( who ) )
|
if (is_player_valid(who))
|
||||||
{
|
{
|
||||||
if ( who.score >= self.cost )
|
if (who.score >= self.cost)
|
||||||
{
|
{
|
||||||
if ( !self.zombie_dmg_trig.in_use )
|
if (!self.zombie_dmg_trig.in_use)
|
||||||
{
|
{
|
||||||
if ( !self.has_been_used )
|
if (!self.has_been_used)
|
||||||
{
|
{
|
||||||
self.has_been_used = 1;
|
self.has_been_used = 1;
|
||||||
level thread maps\mp\zombies\_zm_audio::sndmusicstingerevent( "trap" );
|
level thread maps\mp\zombies\_zm_audio::sndmusicstingerevent("trap");
|
||||||
who do_player_general_vox( "general", "discover_trap" );
|
who do_player_general_vox("general", "discover_trap");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
who do_player_general_vox( "general", "start_trap" );
|
who do_player_general_vox("general", "start_trap");
|
||||||
|
|
||||||
array_thread( triggers, ::hint_string, &"ZOMBIE_TRAP_ACTIVE" );
|
array_thread(triggers, ::hint_string, &"ZOMBIE_TRAP_ACTIVE");
|
||||||
self.zombie_dmg_trig.in_use = 1;
|
self.zombie_dmg_trig.in_use = 1;
|
||||||
self.zombie_dmg_trig.active = 1;
|
self.zombie_dmg_trig.active = 1;
|
||||||
self playsound( "zmb_trap_activate" );
|
self playsound("zmb_trap_activate");
|
||||||
self thread fan_trap_move_switch( self );
|
self thread fan_trap_move_switch(self);
|
||||||
|
|
||||||
self waittill( "switch_activated" );
|
self waittill("switch_activated");
|
||||||
|
|
||||||
who minus_to_player_score( self.cost );
|
who minus_to_player_score(self.cost);
|
||||||
level.trapped_track["fan"] = 1;
|
level.trapped_track["fan"] = 1;
|
||||||
level notify( "trap_activated" );
|
level notify("trap_activated");
|
||||||
who maps\mp\zombies\_zm_stats::increment_client_stat( "prison_fan_trap_used", 0 );
|
who maps\mp\zombies\_zm_stats::increment_client_stat("prison_fan_trap_used", 0);
|
||||||
self.zombie_dmg_trig setvisibletoall();
|
self.zombie_dmg_trig setvisibletoall();
|
||||||
self thread activate_fan_trap();
|
self thread activate_fan_trap();
|
||||||
|
|
||||||
self.zombie_dmg_trig waittill( "trap_finished_" + self.script_string );
|
self.zombie_dmg_trig waittill("trap_finished_" + self.script_string);
|
||||||
|
|
||||||
clientnotify( self.script_string + "off" );
|
clientnotify(self.script_string + "off");
|
||||||
self.zombie_dmg_trig notify( "fan_trap_finished" );
|
self.zombie_dmg_trig notify("fan_trap_finished");
|
||||||
self.zombie_dmg_trig.active = 0;
|
self.zombie_dmg_trig.active = 0;
|
||||||
self.zombie_dmg_trig setinvisibletoall();
|
self.zombie_dmg_trig setinvisibletoall();
|
||||||
array_thread( triggers, ::hint_string, &"ZOMBIE_TRAP_COOLDOWN" );
|
array_thread(triggers, ::hint_string, &"ZOMBIE_TRAP_COOLDOWN");
|
||||||
wait 25;
|
wait 25;
|
||||||
self playsound( "zmb_trap_available" );
|
self playsound("zmb_trap_available");
|
||||||
self notify( "available" );
|
self notify("available");
|
||||||
self.zombie_dmg_trig.in_use = 0;
|
self.zombie_dmg_trig.in_use = 0;
|
||||||
array_thread( triggers, ::hint_string, &"ZM_PRISON_FAN_TRAP", self.cost );
|
array_thread(triggers, ::hint_string, &"ZM_PRISON_FAN_TRAP", self.cost);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -94,87 +94,87 @@ fan_trap_think()
|
|||||||
|
|
||||||
init_acid_trap_trigs()
|
init_acid_trap_trigs()
|
||||||
{
|
{
|
||||||
trap_trigs = getentarray( "acid_trap_trigger", "targetname" );
|
trap_trigs = getentarray("acid_trap_trigger", "targetname");
|
||||||
array_thread( trap_trigs, ::acid_trap_think );
|
array_thread(trap_trigs, ::acid_trap_think);
|
||||||
level thread acid_trap_host_migration_listener();
|
level thread acid_trap_host_migration_listener();
|
||||||
}
|
}
|
||||||
|
|
||||||
acid_trap_think()
|
acid_trap_think()
|
||||||
{
|
{
|
||||||
triggers = getentarray( self.targetname, "targetname" );
|
triggers = getentarray(self.targetname, "targetname");
|
||||||
self.is_available = 1;
|
self.is_available = 1;
|
||||||
self.has_been_used = 0;
|
self.has_been_used = 0;
|
||||||
self.cost = 1000;
|
self.cost = 1000;
|
||||||
self.in_use = 0;
|
self.in_use = 0;
|
||||||
self.zombie_dmg_trig = getent( self.target, "targetname" );
|
self.zombie_dmg_trig = getent(self.target, "targetname");
|
||||||
self.zombie_dmg_trig.in_use = 0;
|
self.zombie_dmg_trig.in_use = 0;
|
||||||
light_name = self get_trap_light_name();
|
light_name = self get_trap_light_name();
|
||||||
zapper_light_red( light_name );
|
zapper_light_red(light_name);
|
||||||
self sethintstring( &"ZM_PRISON_ACID_TRAP_UNAVAILABLE" );
|
self sethintstring(&"ZM_PRISON_ACID_TRAP_UNAVAILABLE");
|
||||||
flag_wait_any( "activate_cafeteria", "activate_infirmary" );
|
flag_wait_any("activate_cafeteria", "activate_infirmary");
|
||||||
zapper_light_green( light_name );
|
zapper_light_green(light_name);
|
||||||
self hint_string( &"ZM_PRISON_ACID_TRAP", self.cost );
|
self hint_string(&"ZM_PRISON_ACID_TRAP", self.cost);
|
||||||
|
|
||||||
while ( true )
|
while (true)
|
||||||
{
|
{
|
||||||
self waittill( "trigger", who );
|
self waittill("trigger", who);
|
||||||
|
|
||||||
if ( who in_revive_trigger() )
|
if (who in_revive_trigger())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( !isdefined( self.is_available ) )
|
if (!isdefined(self.is_available))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( is_player_valid( who ) )
|
if (is_player_valid(who))
|
||||||
{
|
{
|
||||||
if ( who.score >= self.cost )
|
if (who.score >= self.cost)
|
||||||
{
|
{
|
||||||
if ( !self.zombie_dmg_trig.in_use )
|
if (!self.zombie_dmg_trig.in_use)
|
||||||
{
|
{
|
||||||
if ( !self.has_been_used )
|
if (!self.has_been_used)
|
||||||
{
|
{
|
||||||
self.has_been_used = 1;
|
self.has_been_used = 1;
|
||||||
level thread maps\mp\zombies\_zm_audio::sndmusicstingerevent( "trap" );
|
level thread maps\mp\zombies\_zm_audio::sndmusicstingerevent("trap");
|
||||||
who do_player_general_vox( "general", "discover_trap" );
|
who do_player_general_vox("general", "discover_trap");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
who do_player_general_vox( "general", "start_trap" );
|
who do_player_general_vox("general", "start_trap");
|
||||||
|
|
||||||
array_thread( triggers, ::hint_string, &"ZOMBIE_TRAP_ACTIVE" );
|
array_thread(triggers, ::hint_string, &"ZOMBIE_TRAP_ACTIVE");
|
||||||
self.zombie_dmg_trig.in_use = 1;
|
self.zombie_dmg_trig.in_use = 1;
|
||||||
self.zombie_dmg_trig.active = 1;
|
self.zombie_dmg_trig.active = 1;
|
||||||
self playsound( "zmb_trap_activate" );
|
self playsound("zmb_trap_activate");
|
||||||
self thread acid_trap_move_switch( self );
|
self thread acid_trap_move_switch(self);
|
||||||
|
|
||||||
self waittill( "switch_activated" );
|
self waittill("switch_activated");
|
||||||
|
|
||||||
who minus_to_player_score( self.cost );
|
who minus_to_player_score(self.cost);
|
||||||
level.trapped_track["acid"] = 1;
|
level.trapped_track["acid"] = 1;
|
||||||
level notify( "trap_activated" );
|
level notify("trap_activated");
|
||||||
who maps\mp\zombies\_zm_stats::increment_client_stat( "prison_acid_trap_used", 0 );
|
who maps\mp\zombies\_zm_stats::increment_client_stat("prison_acid_trap_used", 0);
|
||||||
self thread activate_acid_trap();
|
self thread activate_acid_trap();
|
||||||
|
|
||||||
self.zombie_dmg_trig waittill( "acid_trap_fx_done" );
|
self.zombie_dmg_trig waittill("acid_trap_fx_done");
|
||||||
|
|
||||||
clientnotify( self.script_string + "off" );
|
clientnotify(self.script_string + "off");
|
||||||
|
|
||||||
if ( isdefined( self.fx_org ) )
|
if (isdefined(self.fx_org))
|
||||||
self.fx_org delete();
|
self.fx_org delete();
|
||||||
|
|
||||||
if ( isdefined( self.zapper_fx_org ) )
|
if (isdefined(self.zapper_fx_org))
|
||||||
self.zapper_fx_org delete();
|
self.zapper_fx_org delete();
|
||||||
|
|
||||||
if ( isdefined( self.zapper_fx_switch_org ) )
|
if (isdefined(self.zapper_fx_switch_org))
|
||||||
self.zapper_fx_switch_org delete();
|
self.zapper_fx_switch_org delete();
|
||||||
|
|
||||||
self.zombie_dmg_trig notify( "acid_trap_finished" );
|
self.zombie_dmg_trig notify("acid_trap_finished");
|
||||||
self.zombie_dmg_trig.active = 0;
|
self.zombie_dmg_trig.active = 0;
|
||||||
array_thread( triggers, ::hint_string, &"ZOMBIE_TRAP_COOLDOWN" );
|
array_thread(triggers, ::hint_string, &"ZOMBIE_TRAP_COOLDOWN");
|
||||||
wait 25;
|
wait 25;
|
||||||
self playsound( "zmb_trap_available" );
|
self playsound("zmb_trap_available");
|
||||||
self notify( "available" );
|
self notify("available");
|
||||||
self.zombie_dmg_trig.in_use = 0;
|
self.zombie_dmg_trig.in_use = 0;
|
||||||
array_thread( triggers, ::hint_string, &"ZM_PRISON_ACID_TRAP", self.cost );
|
array_thread(triggers, ::hint_string, &"ZM_PRISON_ACID_TRAP", self.cost);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -183,54 +183,54 @@ acid_trap_think()
|
|||||||
|
|
||||||
zombie_acid_damage()
|
zombie_acid_damage()
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
self setclientfield( "acid_trap_death_fx", 1 );
|
self setclientfield("acid_trap_death_fx", 1);
|
||||||
|
|
||||||
if ( !isdefined( self.is_brutus ) )
|
if (!isdefined(self.is_brutus))
|
||||||
{
|
{
|
||||||
self.a.gib_ref = random( array( "right_arm", "left_arm", "head", "right_leg", "left_leg", "no_legs" ) );
|
self.a.gib_ref = random(array("right_arm", "left_arm", "head", "right_leg", "left_leg", "no_legs"));
|
||||||
self thread maps\mp\animscripts\zm_death::do_gib();
|
self thread maps\mp\animscripts\zm_death::do_gib();
|
||||||
}
|
}
|
||||||
|
|
||||||
self dodamage( self.health + 1000, self.origin );
|
self dodamage(self.health + 1000, self.origin);
|
||||||
}
|
}
|
||||||
|
|
||||||
player_acid_damage( t_damage )
|
player_acid_damage(t_damage)
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
t_damage endon( "acid_trap_finished" );
|
t_damage endon("acid_trap_finished");
|
||||||
|
|
||||||
if ( !isdefined( self.is_in_acid ) && !self player_is_in_laststand() )
|
if (!isdefined(self.is_in_acid) && !self player_is_in_laststand())
|
||||||
{
|
{
|
||||||
self.is_in_acid = 1;
|
self.is_in_acid = 1;
|
||||||
self thread player_acid_damage_cooldown();
|
self thread player_acid_damage_cooldown();
|
||||||
|
|
||||||
self dodamage( self.maxhealth / 2, self.origin, t_damage, t_damage, "none", "MOD_UNKNOWN", 0, "none" );
|
self dodamage(self.maxhealth / 2, self.origin, t_damage, t_damage, "none", "MOD_UNKNOWN", 0, "none");
|
||||||
wait 1.5;
|
wait 1.5;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
player_acid_damage_cooldown()
|
player_acid_damage_cooldown()
|
||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon("disconnect");
|
||||||
wait 1.5;
|
wait 1.5;
|
||||||
|
|
||||||
if ( isdefined( self ) )
|
if (isdefined(self))
|
||||||
self.is_in_acid = undefined;
|
self.is_in_acid = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
tower_trap_trigger_think()
|
tower_trap_trigger_think()
|
||||||
{
|
{
|
||||||
self.range_trigger = getent( self.target, "targetname" );
|
self.range_trigger = getent(self.target, "targetname");
|
||||||
self.upgrade_trigger = getent( self.script_string, "script_noteworthy" );
|
self.upgrade_trigger = getent(self.script_string, "script_noteworthy");
|
||||||
self.cost = 1000;
|
self.cost = 1000;
|
||||||
light_name = self get_trap_light_name();
|
light_name = self get_trap_light_name();
|
||||||
zapper_light_green( light_name );
|
zapper_light_green(light_name);
|
||||||
self.is_available = 1;
|
self.is_available = 1;
|
||||||
self.in_use = 0;
|
self.in_use = 0;
|
||||||
self.has_been_used = 0;
|
self.has_been_used = 0;
|
||||||
self.sndtowerent = spawn( "script_origin", ( -21, 5584, 356 ) );
|
self.sndtowerent = spawn("script_origin", (-21, 5584, 356));
|
||||||
self tower_trap_weapon();
|
self tower_trap_weapon();
|
||||||
self.upgrade_trigger.cost = 1000;
|
self.upgrade_trigger.cost = 1000;
|
||||||
self.upgrade_trigger.in_use = 0;
|
self.upgrade_trigger.in_use = 0;
|
||||||
@ -241,60 +241,60 @@ tower_trap_trigger_think()
|
|||||||
self thread tower_upgrade_trigger_think();
|
self thread tower_upgrade_trigger_think();
|
||||||
}
|
}
|
||||||
|
|
||||||
while ( true )
|
while (true)
|
||||||
{
|
{
|
||||||
self hint_string( &"ZM_PRISON_TOWER_TRAP", self.cost );
|
self hint_string(&"ZM_PRISON_TOWER_TRAP", self.cost);
|
||||||
|
|
||||||
self waittill( "trigger", who );
|
self waittill("trigger", who);
|
||||||
|
|
||||||
if ( who in_revive_trigger() )
|
if (who in_revive_trigger())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( !isdefined( self.is_available ) )
|
if (!isdefined(self.is_available))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( is_player_valid( who ) )
|
if (is_player_valid(who))
|
||||||
{
|
{
|
||||||
if ( who.score >= self.cost )
|
if (who.score >= self.cost)
|
||||||
{
|
{
|
||||||
if ( !self.in_use )
|
if (!self.in_use)
|
||||||
{
|
{
|
||||||
if ( !self.has_been_used )
|
if (!self.has_been_used)
|
||||||
{
|
{
|
||||||
self.has_been_used = 1;
|
self.has_been_used = 1;
|
||||||
who do_player_general_vox( "general", "discover_trap" );
|
who do_player_general_vox("general", "discover_trap");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
who do_player_general_vox( "general", "start_trap" );
|
who do_player_general_vox("general", "start_trap");
|
||||||
|
|
||||||
self hint_string( &"ZOMBIE_TRAP_ACTIVE" );
|
self hint_string(&"ZOMBIE_TRAP_ACTIVE");
|
||||||
self.in_use = 1;
|
self.in_use = 1;
|
||||||
self.active = 1;
|
self.active = 1;
|
||||||
play_sound_at_pos( "purchase", who.origin );
|
play_sound_at_pos("purchase", who.origin);
|
||||||
self thread tower_trap_move_switch( self );
|
self thread tower_trap_move_switch(self);
|
||||||
self playsound( "zmb_trap_activate" );
|
self playsound("zmb_trap_activate");
|
||||||
|
|
||||||
self waittill( "switch_activated" );
|
self waittill("switch_activated");
|
||||||
|
|
||||||
who minus_to_player_score( self.cost );
|
who minus_to_player_score(self.cost);
|
||||||
level.trapped_track["tower"] = 1;
|
level.trapped_track["tower"] = 1;
|
||||||
level notify( "trap_activated" );
|
level notify("trap_activated");
|
||||||
who maps\mp\zombies\_zm_stats::increment_client_stat( "prison_sniper_tower_used", 0 );
|
who maps\mp\zombies\_zm_stats::increment_client_stat("prison_sniper_tower_used", 0);
|
||||||
self.sndtowerent playsound( "zmb_trap_tower_start" );
|
self.sndtowerent playsound("zmb_trap_tower_start");
|
||||||
self.sndtowerent playloopsound( "zmb_trap_tower_loop", 1 );
|
self.sndtowerent playloopsound("zmb_trap_tower_loop", 1);
|
||||||
self thread activate_tower_trap();
|
self thread activate_tower_trap();
|
||||||
self thread tower_trap_timer();
|
self thread tower_trap_timer();
|
||||||
|
|
||||||
self waittill( "tower_trap_off" );
|
self waittill("tower_trap_off");
|
||||||
|
|
||||||
self.sndtowerent stoploopsound( 1 );
|
self.sndtowerent stoploopsound(1);
|
||||||
self.sndtowerent playsound( "zmb_trap_tower_end" );
|
self.sndtowerent playsound("zmb_trap_tower_end");
|
||||||
self.active = 0;
|
self.active = 0;
|
||||||
self sethintstring( &"ZOMBIE_TRAP_COOLDOWN" );
|
self sethintstring(&"ZOMBIE_TRAP_COOLDOWN");
|
||||||
zapper_light_red( light_name );
|
zapper_light_red(light_name);
|
||||||
wait 25;
|
wait 25;
|
||||||
self playsound( "zmb_trap_available" );
|
self playsound("zmb_trap_available");
|
||||||
self notify( "available" );
|
self notify("available");
|
||||||
self.in_use = 0;
|
self.in_use = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -308,21 +308,21 @@ tower_upgrade_trigger_think()
|
|||||||
{
|
{
|
||||||
level thread open_tower_trap_upgrade_panel();
|
level thread open_tower_trap_upgrade_panel();
|
||||||
|
|
||||||
level waittill( self.upgrade_trigger.script_string );
|
level waittill(self.upgrade_trigger.script_string);
|
||||||
|
|
||||||
self.upgrade_trigger.in_use = 1;
|
self.upgrade_trigger.in_use = 1;
|
||||||
self.upgrade_trigger.is_available = 0;
|
self.upgrade_trigger.is_available = 0;
|
||||||
|
|
||||||
level.trapped_track["tower_upgrade"] = 1;
|
level.trapped_track["tower_upgrade"] = 1;
|
||||||
level notify( "tower_trap_upgraded" );
|
level notify("tower_trap_upgraded");
|
||||||
level notify( "close_tower_trap_upgrade_panel" );
|
level notify("close_tower_trap_upgrade_panel");
|
||||||
self upgrade_tower_trap_weapon();
|
self upgrade_tower_trap_weapon();
|
||||||
|
|
||||||
level waittill( "end_of_round" );
|
level waittill("end_of_round");
|
||||||
|
|
||||||
self tower_trap_weapon();
|
self tower_trap_weapon();
|
||||||
self.upgrade_trigger notify( "afterlife_interact_reset" );
|
self.upgrade_trigger notify("afterlife_interact_reset");
|
||||||
self.upgrade_trigger notify( "available" );
|
self.upgrade_trigger notify("available");
|
||||||
self.upgrade_trigger.in_use = 0;
|
self.upgrade_trigger.in_use = 0;
|
||||||
self.upgrade_trigger.is_available = 1;
|
self.upgrade_trigger.is_available = 1;
|
||||||
}
|
}
|
||||||
@ -337,11 +337,11 @@ tower_trap_weapon()
|
|||||||
|
|
||||||
activate_tower_trap()
|
activate_tower_trap()
|
||||||
{
|
{
|
||||||
self endon( "tower_trap_off" );
|
self endon("tower_trap_off");
|
||||||
|
|
||||||
while ( true )
|
while (true)
|
||||||
{
|
{
|
||||||
zombies = getaiarray( level.zombie_team );
|
zombies = getaiarray(level.zombie_team);
|
||||||
|
|
||||||
if (is_gametype_active("zgrief"))
|
if (is_gametype_active("zgrief"))
|
||||||
{
|
{
|
||||||
@ -350,76 +350,76 @@ activate_tower_trap()
|
|||||||
|
|
||||||
zombies_sorted = [];
|
zombies_sorted = [];
|
||||||
|
|
||||||
foreach ( zombie in zombies )
|
foreach (zombie in zombies)
|
||||||
{
|
{
|
||||||
if ( zombie istouching( self.range_trigger ) )
|
if (zombie istouching(self.range_trigger))
|
||||||
{
|
{
|
||||||
zombies_sorted[zombies_sorted.size] = zombie;
|
zombies_sorted[zombies_sorted.size] = zombie;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( zombies_sorted.size <= 0 )
|
if (zombies_sorted.size <= 0)
|
||||||
{
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
self tower_trap_fires( zombies_sorted );
|
self tower_trap_fires(zombies_sorted);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tower_trap_fires( a_zombies )
|
tower_trap_fires(a_zombies)
|
||||||
{
|
{
|
||||||
if ( isdefined( level.custom_tower_trap_fires_func ) )
|
if (isdefined(level.custom_tower_trap_fires_func))
|
||||||
{
|
{
|
||||||
self thread [[ level.custom_tower_trap_fires_func ]]( a_zombies );
|
self thread [[ level.custom_tower_trap_fires_func ]](a_zombies);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( a_zombies.size <= 0 )
|
if (a_zombies.size <= 0)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
self endon( "tower_trap_off" );
|
self endon("tower_trap_off");
|
||||||
e_org = getstruct( self.range_trigger.target, "targetname" );
|
e_org = getstruct(self.range_trigger.target, "targetname");
|
||||||
|
|
||||||
while ( 1 )
|
while (1)
|
||||||
{
|
{
|
||||||
if ( a_zombies.size <= 0 )
|
if (a_zombies.size <= 0)
|
||||||
{
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
n_index = randomintrange( 0, a_zombies.size );
|
n_index = randomintrange(0, a_zombies.size);
|
||||||
e_target = a_zombies[n_index];
|
e_target = a_zombies[n_index];
|
||||||
|
|
||||||
if ( !isalive( e_target ) )
|
if (!isalive(e_target))
|
||||||
{
|
{
|
||||||
arrayremovevalue( a_zombies, e_target, 0 );
|
arrayremovevalue(a_zombies, e_target, 0);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isplayer( e_target ) && e_target maps\mp\zombies\_zm_laststand::player_is_in_laststand() )
|
if (isplayer(e_target) && e_target maps\mp\zombies\_zm_laststand::player_is_in_laststand())
|
||||||
{
|
{
|
||||||
arrayremovevalue( a_zombies, e_target, 0 );
|
arrayremovevalue(a_zombies, e_target, 0);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
v_zombietarget = e_target gettagorigin( self.tag_to_target );
|
v_zombietarget = e_target gettagorigin(self.tag_to_target);
|
||||||
|
|
||||||
if ( sighttracepassed( e_org.origin, v_zombietarget, 1, undefined ) )
|
if (sighttracepassed(e_org.origin, v_zombietarget, 1, undefined))
|
||||||
{
|
{
|
||||||
magicbullet( self.weapon_name, e_org.origin, v_zombietarget );
|
magicbullet(self.weapon_name, e_org.origin, v_zombietarget);
|
||||||
|
|
||||||
wait( self.trap_reload_time );
|
wait(self.trap_reload_time);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
arrayremovevalue( a_zombies, e_target, 0 );
|
arrayremovevalue(a_zombies, e_target, 0);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,113 +7,113 @@
|
|||||||
#include maps\mp\zombies\_zm_laststand;
|
#include maps\mp\zombies\_zm_laststand;
|
||||||
#include maps\mp\zombies\_zm_audio;
|
#include maps\mp\zombies\_zm_audio;
|
||||||
|
|
||||||
move_gondola( b_suppress_doors_close = 0 )
|
move_gondola(b_suppress_doors_close = 0)
|
||||||
{
|
{
|
||||||
level clientnotify( "sndGS" );
|
level clientnotify("sndGS");
|
||||||
level thread gondola_lights_red();
|
level thread gondola_lights_red();
|
||||||
e_gondola = level.e_gondola;
|
e_gondola = level.e_gondola;
|
||||||
t_ride = level.e_gondola.t_ride;
|
t_ride = level.e_gondola.t_ride;
|
||||||
e_gondola.is_moving = 1;
|
e_gondola.is_moving = 1;
|
||||||
|
|
||||||
if ( e_gondola.location == "roof" )
|
if (e_gondola.location == "roof")
|
||||||
{
|
{
|
||||||
s_moveloc = getstruct( "gondola_struct_docks", "targetname" );
|
s_moveloc = getstruct("gondola_struct_docks", "targetname");
|
||||||
e_gondola.destination = "docks";
|
e_gondola.destination = "docks";
|
||||||
level thread gondola_outofbounds_trigger_stop();
|
level thread gondola_outofbounds_trigger_stop();
|
||||||
}
|
}
|
||||||
else if ( e_gondola.location == "docks" )
|
else if (e_gondola.location == "docks")
|
||||||
{
|
{
|
||||||
s_moveloc = getstruct( "gondola_struct_roof", "targetname" );
|
s_moveloc = getstruct("gondola_struct_roof", "targetname");
|
||||||
e_gondola.destination = "roof";
|
e_gondola.destination = "roof";
|
||||||
level thread gondola_outofbounds_trigger_enabled();
|
level thread gondola_outofbounds_trigger_enabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( flag( "gondola_initialized" ) )
|
if (flag("gondola_initialized"))
|
||||||
{
|
{
|
||||||
flag_set( "gondola_roof_to_dock" );
|
flag_set("gondola_roof_to_dock");
|
||||||
flag_set( "gondola_dock_to_roof" );
|
flag_set("gondola_dock_to_roof");
|
||||||
flag_set( "gondola_ride_zone_enabled" );
|
flag_set("gondola_ride_zone_enabled");
|
||||||
}
|
}
|
||||||
|
|
||||||
flag_clear( "gondola_at_" + e_gondola.location );
|
flag_clear("gondola_at_" + e_gondola.location);
|
||||||
|
|
||||||
a_t_move = getentarray( "gondola_move_trigger", "targetname" );
|
a_t_move = getentarray("gondola_move_trigger", "targetname");
|
||||||
|
|
||||||
foreach ( trigger in a_t_move )
|
foreach (trigger in a_t_move)
|
||||||
trigger sethintstring( "" );
|
trigger sethintstring("");
|
||||||
|
|
||||||
a_t_call = getentarray( "gondola_call_trigger", "targetname" );
|
a_t_call = getentarray("gondola_call_trigger", "targetname");
|
||||||
|
|
||||||
foreach ( trigger in a_t_call )
|
foreach (trigger in a_t_call)
|
||||||
trigger sethintstring( &"ZM_PRISON_GONDOLA_ACTIVE" );
|
trigger sethintstring(&"ZM_PRISON_GONDOLA_ACTIVE");
|
||||||
|
|
||||||
if ( !( isdefined( b_suppress_doors_close ) && b_suppress_doors_close ) )
|
if (!(isdefined(b_suppress_doors_close) && b_suppress_doors_close))
|
||||||
e_gondola gondola_doors_move( e_gondola.location, -1 );
|
e_gondola gondola_doors_move(e_gondola.location, -1);
|
||||||
|
|
||||||
level notify( "gondola_moving" );
|
level notify("gondola_moving");
|
||||||
|
|
||||||
check_when_gondola_moves_if_groundent_is_undefined( e_gondola );
|
check_when_gondola_moves_if_groundent_is_undefined(e_gondola);
|
||||||
a_players = getplayers();
|
a_players = getplayers();
|
||||||
|
|
||||||
foreach ( player in a_players )
|
foreach (player in a_players)
|
||||||
{
|
{
|
||||||
if ( player is_player_on_gondola() )
|
if (player is_player_on_gondola())
|
||||||
{
|
{
|
||||||
player setclientfieldtoplayer( "rumble_gondola", 1 );
|
player setclientfieldtoplayer("rumble_gondola", 1);
|
||||||
player thread check_for_death_on_gondola( e_gondola );
|
player thread check_for_death_on_gondola(e_gondola);
|
||||||
player.is_on_gondola = 1;
|
player.is_on_gondola = 1;
|
||||||
level thread maps\mp\zombies\_zm_audio::sndmusicstingerevent( "gondola", player );
|
level thread maps\mp\zombies\_zm_audio::sndmusicstingerevent("gondola", player);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( player.e_afterlife_corpse ) && player.e_afterlife_corpse istouching( t_ride ) )
|
if (isdefined(player.e_afterlife_corpse) && player.e_afterlife_corpse istouching(t_ride))
|
||||||
player.e_afterlife_corpse thread link_corpses_to_gondola( e_gondola );
|
player.e_afterlife_corpse thread link_corpses_to_gondola(e_gondola);
|
||||||
}
|
}
|
||||||
|
|
||||||
e_gondola thread create_gondola_poi();
|
e_gondola thread create_gondola_poi();
|
||||||
level thread gondola_moving_vo();
|
level thread gondola_moving_vo();
|
||||||
e_gondola thread gondola_physics_explosion( 10 );
|
e_gondola thread gondola_physics_explosion(10);
|
||||||
e_gondola moveto( s_moveloc.origin, 10, 1, 1 );
|
e_gondola moveto(s_moveloc.origin, 10, 1, 1);
|
||||||
flag_set( "gondola_in_motion" );
|
flag_set("gondola_in_motion");
|
||||||
e_gondola thread gondola_chain_fx_anim();
|
e_gondola thread gondola_chain_fx_anim();
|
||||||
e_gondola playsound( "zmb_gondola_start" );
|
e_gondola playsound("zmb_gondola_start");
|
||||||
e_gondola playloopsound( "zmb_gondola_loop", 1 );
|
e_gondola playloopsound("zmb_gondola_loop", 1);
|
||||||
|
|
||||||
e_gondola waittill( "movedone" );
|
e_gondola waittill("movedone");
|
||||||
|
|
||||||
flag_clear( "gondola_in_motion" );
|
flag_clear("gondola_in_motion");
|
||||||
e_gondola stoploopsound( 0.5 );
|
e_gondola stoploopsound(0.5);
|
||||||
e_gondola thread sndcooldown();
|
e_gondola thread sndcooldown();
|
||||||
e_gondola playsound( "zmb_gondola_stop" );
|
e_gondola playsound("zmb_gondola_stop");
|
||||||
player_escaped_gondola_failsafe();
|
player_escaped_gondola_failsafe();
|
||||||
a_players = getplayers();
|
a_players = getplayers();
|
||||||
|
|
||||||
foreach ( player in a_players )
|
foreach (player in a_players)
|
||||||
{
|
{
|
||||||
if ( isdefined( player.is_on_gondola ) && player.is_on_gondola )
|
if (isdefined(player.is_on_gondola) && player.is_on_gondola)
|
||||||
{
|
{
|
||||||
player setclientfieldtoplayer( "rumble_gondola", 0 );
|
player setclientfieldtoplayer("rumble_gondola", 0);
|
||||||
player.is_on_gondola = 0;
|
player.is_on_gondola = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
e_gondola gondola_doors_move( e_gondola.destination, 1 );
|
e_gondola gondola_doors_move(e_gondola.destination, 1);
|
||||||
e_gondola.is_moving = 0;
|
e_gondola.is_moving = 0;
|
||||||
e_gondola thread tear_down_gondola_poi();
|
e_gondola thread tear_down_gondola_poi();
|
||||||
wait 1.0;
|
wait 1.0;
|
||||||
level clientnotify( "sndGE" );
|
level clientnotify("sndGE");
|
||||||
|
|
||||||
if ( e_gondola.location == "roof" )
|
if (e_gondola.location == "roof")
|
||||||
{
|
{
|
||||||
e_gondola.location = "docks";
|
e_gondola.location = "docks";
|
||||||
str_zone = "zone_dock_gondola";
|
str_zone = "zone_dock_gondola";
|
||||||
}
|
}
|
||||||
else if ( e_gondola.location == "docks" )
|
else if (e_gondola.location == "docks")
|
||||||
{
|
{
|
||||||
e_gondola.location = "roof";
|
e_gondola.location = "roof";
|
||||||
str_zone = "zone_cellblock_west_gondola_dock";
|
str_zone = "zone_cellblock_west_gondola_dock";
|
||||||
}
|
}
|
||||||
|
|
||||||
level notify( "gondola_arrived", str_zone );
|
level notify("gondola_arrived", str_zone);
|
||||||
gondola_cooldown();
|
gondola_cooldown();
|
||||||
flag_set( "gondola_at_" + e_gondola.location );
|
flag_set("gondola_at_" + e_gondola.location);
|
||||||
}
|
}
|
@ -8,73 +8,73 @@
|
|||||||
|
|
||||||
blundergat_upgrade_station()
|
blundergat_upgrade_station()
|
||||||
{
|
{
|
||||||
t_upgrade = getent( "blundergat_upgrade", "targetname" );
|
t_upgrade = getent("blundergat_upgrade", "targetname");
|
||||||
t_upgrade.equipname = "packasplat";
|
t_upgrade.equipname = "packasplat";
|
||||||
t_upgrade.cost = t_upgrade scripts\zm\_zm_reimagined::get_equipment_cost();
|
t_upgrade.cost = t_upgrade scripts\zm\_zm_reimagined::get_equipment_cost();
|
||||||
t_upgrade sethintstring( &"ZM_PRISON_CONVERT_START", " [Cost: " + t_upgrade.cost + "]" );
|
t_upgrade sethintstring(&"ZM_PRISON_CONVERT_START", " [Cost: " + t_upgrade.cost + "]");
|
||||||
t_upgrade usetriggerrequirelookat();
|
t_upgrade usetriggerrequirelookat();
|
||||||
waittill_crafted( "packasplat" );
|
waittill_crafted("packasplat");
|
||||||
m_converter = t_upgrade.m_upgrade_machine;
|
m_converter = t_upgrade.m_upgrade_machine;
|
||||||
v_angles = m_converter gettagangles( "tag_origin" );
|
v_angles = m_converter gettagangles("tag_origin");
|
||||||
v_weapon_origin_offset = anglestoforward( v_angles ) * 1 + anglestoright( v_angles ) * 10 + anglestoup( v_angles ) * 1.75;
|
v_weapon_origin_offset = anglestoforward(v_angles) * 1 + anglestoright(v_angles) * 10 + anglestoup(v_angles) * 1.75;
|
||||||
v_weapon_angles_offset = ( 0, 90, -90 );
|
v_weapon_angles_offset = (0, 90, -90);
|
||||||
m_converter.v_weapon_origin = m_converter gettagorigin( "tag_origin" ) + v_weapon_origin_offset;
|
m_converter.v_weapon_origin = m_converter gettagorigin("tag_origin") + v_weapon_origin_offset;
|
||||||
m_converter.v_weapon_angles = v_angles + v_weapon_angles_offset;
|
m_converter.v_weapon_angles = v_angles + v_weapon_angles_offset;
|
||||||
m_converter useanimtree( #animtree );
|
m_converter useanimtree(#animtree);
|
||||||
m_converter.fxanims["close"] = %fxanim_zom_al_packasplat_start_anim;
|
m_converter.fxanims["close"] = %fxanim_zom_al_packasplat_start_anim;
|
||||||
m_converter.fxanims["inject"] = %fxanim_zom_al_packasplat_idle_anim;
|
m_converter.fxanims["inject"] = %fxanim_zom_al_packasplat_idle_anim;
|
||||||
m_converter.fxanims["open"] = %fxanim_zom_al_packasplat_end_anim;
|
m_converter.fxanims["open"] = %fxanim_zom_al_packasplat_end_anim;
|
||||||
m_converter.n_start_time = getanimlength( m_converter.fxanims["close"] );
|
m_converter.n_start_time = getanimlength(m_converter.fxanims["close"]);
|
||||||
m_converter.n_idle_time = getanimlength( m_converter.fxanims["inject"] );
|
m_converter.n_idle_time = getanimlength(m_converter.fxanims["inject"]);
|
||||||
m_converter.n_end_time = getanimlength( m_converter.fxanims["open"] );
|
m_converter.n_end_time = getanimlength(m_converter.fxanims["open"]);
|
||||||
|
|
||||||
while ( true )
|
while (true)
|
||||||
{
|
{
|
||||||
t_upgrade thread blundergat_change_hintstring( &"ZM_PRISON_CONVERT_START", " [Cost: " + t_upgrade.cost + "]" );
|
t_upgrade thread blundergat_change_hintstring(&"ZM_PRISON_CONVERT_START", " [Cost: " + t_upgrade.cost + "]");
|
||||||
|
|
||||||
t_upgrade waittill( "trigger", player );
|
t_upgrade waittill("trigger", player);
|
||||||
|
|
||||||
if ( isdefined( level.custom_craftable_validation ) )
|
if (isdefined(level.custom_craftable_validation))
|
||||||
{
|
{
|
||||||
valid = t_upgrade [[ level.custom_craftable_validation ]]( player );
|
valid = t_upgrade [[ level.custom_craftable_validation ]](player);
|
||||||
|
|
||||||
if ( !valid )
|
if (!valid)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (player.score < t_upgrade.cost)
|
if (player.score < t_upgrade.cost)
|
||||||
{
|
{
|
||||||
self play_sound_on_ent( "no_purchase" );
|
self play_sound_on_ent("no_purchase");
|
||||||
player maps\mp\zombies\_zm_audio::create_and_play_dialog( "general", "no_money_weapon" );
|
player maps\mp\zombies\_zm_audio::create_and_play_dialog("general", "no_money_weapon");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
str_valid_weapon = player getcurrentweapon();
|
str_valid_weapon = player getcurrentweapon();
|
||||||
|
|
||||||
if ( str_valid_weapon == "blundergat_zm" || str_valid_weapon == "blundergat_upgraded_zm" )
|
if (str_valid_weapon == "blundergat_zm" || str_valid_weapon == "blundergat_upgraded_zm")
|
||||||
{
|
{
|
||||||
player maps\mp\zombies\_zm_score::minus_to_player_score( t_upgrade.cost );
|
player maps\mp\zombies\_zm_score::minus_to_player_score(t_upgrade.cost);
|
||||||
t_upgrade play_sound_on_ent( "purchase" );
|
t_upgrade play_sound_on_ent("purchase");
|
||||||
|
|
||||||
player thread maps\mp\zombies\_zm_perks::do_knuckle_crack();
|
player thread maps\mp\zombies\_zm_perks::do_knuckle_crack();
|
||||||
player.is_pack_splatting = 1;
|
player.is_pack_splatting = 1;
|
||||||
t_upgrade setinvisibletoall();
|
t_upgrade setinvisibletoall();
|
||||||
m_converter.worldgun = spawn_weapon_model( str_valid_weapon, undefined, m_converter.v_weapon_origin, m_converter.v_weapon_angles );
|
m_converter.worldgun = spawn_weapon_model(str_valid_weapon, undefined, m_converter.v_weapon_origin, m_converter.v_weapon_angles);
|
||||||
m_converter blundergat_upgrade_station_inject( str_valid_weapon );
|
m_converter blundergat_upgrade_station_inject(str_valid_weapon);
|
||||||
t_upgrade thread blundergat_change_hintstring( &"ZM_PRISON_CONVERT_PICKUP" );
|
t_upgrade thread blundergat_change_hintstring(&"ZM_PRISON_CONVERT_PICKUP");
|
||||||
|
|
||||||
if ( isdefined( player ) )
|
if (isdefined(player))
|
||||||
{
|
{
|
||||||
t_upgrade setvisibletoplayer( player );
|
t_upgrade setvisibletoplayer(player);
|
||||||
t_upgrade thread wait_for_player_to_take( player, str_valid_weapon );
|
t_upgrade thread wait_for_player_to_take(player, str_valid_weapon);
|
||||||
}
|
}
|
||||||
|
|
||||||
t_upgrade thread wait_for_timeout();
|
t_upgrade thread wait_for_timeout();
|
||||||
t_upgrade waittill_any( "acid_timeout", "acid_taken" );
|
t_upgrade waittill_any("acid_timeout", "acid_taken");
|
||||||
|
|
||||||
t_upgrade setinvisibletoall();
|
t_upgrade setinvisibletoall();
|
||||||
|
|
||||||
if ( isdefined( player ) )
|
if (isdefined(player))
|
||||||
player.is_pack_splatting = undefined;
|
player.is_pack_splatting = undefined;
|
||||||
|
|
||||||
m_converter.worldgun delete();
|
m_converter.worldgun delete();
|
||||||
@ -83,91 +83,91 @@ blundergat_upgrade_station()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
t_upgrade thread blundergat_change_hintstring( &"ZM_PRISON_MISSING_BLUNDERGAT" );
|
t_upgrade thread blundergat_change_hintstring(&"ZM_PRISON_MISSING_BLUNDERGAT");
|
||||||
wait 2;
|
wait 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
blundergat_change_hintstring( hint_string, hint_string_cost )
|
blundergat_change_hintstring(hint_string, hint_string_cost)
|
||||||
{
|
{
|
||||||
self notify( "new_change_hint_string" );
|
self notify("new_change_hint_string");
|
||||||
self endon( "new_change_hint_string" );
|
self endon("new_change_hint_string");
|
||||||
|
|
||||||
while ( isdefined( self.is_locked ) && self.is_locked )
|
while (isdefined(self.is_locked) && self.is_locked)
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
|
||||||
if (isDefined(hint_string_cost))
|
if (isDefined(hint_string_cost))
|
||||||
{
|
{
|
||||||
self sethintstring( hint_string, hint_string_cost );
|
self sethintstring(hint_string, hint_string_cost);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
self sethintstring( hint_string );
|
self sethintstring(hint_string);
|
||||||
}
|
}
|
||||||
|
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
|
||||||
if (isDefined(hint_string_cost))
|
if (isDefined(hint_string_cost))
|
||||||
{
|
{
|
||||||
self sethintstring( hint_string, hint_string_cost );
|
self sethintstring(hint_string, hint_string_cost);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
self sethintstring( hint_string );
|
self sethintstring(hint_string);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
wait_for_player_to_take( player, str_valid_weapon )
|
wait_for_player_to_take(player, str_valid_weapon)
|
||||||
{
|
{
|
||||||
self endon( "acid_timeout" );
|
self endon("acid_timeout");
|
||||||
player endon( "disconnect" );
|
player endon("disconnect");
|
||||||
|
|
||||||
while ( true )
|
while (true)
|
||||||
{
|
{
|
||||||
self waittill( "trigger", trigger_player );
|
self waittill("trigger", trigger_player);
|
||||||
|
|
||||||
if ( isdefined( level.custom_craftable_validation ) )
|
if (isdefined(level.custom_craftable_validation))
|
||||||
{
|
{
|
||||||
valid = self [[ level.custom_craftable_validation ]]( player );
|
valid = self [[ level.custom_craftable_validation ]](player);
|
||||||
|
|
||||||
if ( !valid )
|
if (!valid)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( trigger_player == player )
|
if (trigger_player == player)
|
||||||
{
|
{
|
||||||
current_weapon = player getcurrentweapon();
|
current_weapon = player getcurrentweapon();
|
||||||
|
|
||||||
if ( is_player_valid( player ) && !( player.is_drinking > 0 ) && !is_melee_weapon( current_weapon ) && !is_placeable_mine( current_weapon ) && !is_equipment( current_weapon ) && level.revive_tool != current_weapon && "none" != current_weapon && !player hacker_active() )
|
if (is_player_valid(player) && !(player.is_drinking > 0) && !is_melee_weapon(current_weapon) && !is_placeable_mine(current_weapon) && !is_equipment(current_weapon) && level.revive_tool != current_weapon && "none" != current_weapon && !player hacker_active())
|
||||||
{
|
{
|
||||||
self notify( "acid_taken" );
|
self notify("acid_taken");
|
||||||
player notify( "acid_taken" );
|
player notify("acid_taken");
|
||||||
weapon_limit = get_player_weapon_limit( player );
|
weapon_limit = get_player_weapon_limit(player);
|
||||||
primaries = player getweaponslistprimaries();
|
primaries = player getweaponslistprimaries();
|
||||||
|
|
||||||
if ( isdefined( primaries ) && primaries.size >= weapon_limit )
|
if (isdefined(primaries) && primaries.size >= weapon_limit)
|
||||||
player takeweapon( current_weapon );
|
player takeweapon(current_weapon);
|
||||||
|
|
||||||
str_new_weapon = undefined;
|
str_new_weapon = undefined;
|
||||||
|
|
||||||
if ( str_valid_weapon == "blundergat_zm" )
|
if (str_valid_weapon == "blundergat_zm")
|
||||||
str_new_weapon = "blundersplat_zm";
|
str_new_weapon = "blundersplat_zm";
|
||||||
else
|
else
|
||||||
str_new_weapon = "blundersplat_upgraded_zm";
|
str_new_weapon = "blundersplat_upgraded_zm";
|
||||||
|
|
||||||
if ( player hasweapon( "blundersplat_zm" ) )
|
if (player hasweapon("blundersplat_zm"))
|
||||||
player givemaxammo( "blundersplat_zm" );
|
player givemaxammo("blundersplat_zm");
|
||||||
else if ( player hasweapon( "blundersplat_upgraded_zm" ) )
|
else if (player hasweapon("blundersplat_upgraded_zm"))
|
||||||
player givemaxammo( "blundersplat_upgraded_zm" );
|
player givemaxammo("blundersplat_upgraded_zm");
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player giveweapon( str_new_weapon );
|
player giveweapon(str_new_weapon);
|
||||||
player switchtoweapon( str_new_weapon );
|
player switchtoweapon(str_new_weapon);
|
||||||
}
|
}
|
||||||
|
|
||||||
player thread do_player_general_vox( "general", "player_recieves_blundersplat" );
|
player thread do_player_general_vox("general", "player_recieves_blundersplat");
|
||||||
player notify( "player_obtained_acidgat" );
|
player notify("player_obtained_acidgat");
|
||||||
player thread player_lost_blundersplat_watcher();
|
player thread player_lost_blundersplat_watcher();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -19,30 +19,30 @@ grief_soul_catcher_state_manager()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
while ( true )
|
while (true)
|
||||||
{
|
{
|
||||||
level setclientfield( self.script_parameters, 0 );
|
level setclientfield(self.script_parameters, 0);
|
||||||
|
|
||||||
self waittill( "first_zombie_killed_in_zone" );
|
self waittill("first_zombie_killed_in_zone");
|
||||||
|
|
||||||
if ( isdefined( level.soul_catcher_clip[self.script_noteworthy] ) )
|
if (isdefined(level.soul_catcher_clip[self.script_noteworthy]))
|
||||||
level.soul_catcher_clip[self.script_noteworthy] setvisibletoall();
|
level.soul_catcher_clip[self.script_noteworthy] setvisibletoall();
|
||||||
|
|
||||||
level setclientfield( self.script_parameters, 1 );
|
level setclientfield(self.script_parameters, 1);
|
||||||
anim_length = getanimlength( %o_zombie_dreamcatcher_intro );
|
anim_length = getanimlength(%o_zombie_dreamcatcher_intro);
|
||||||
wait( anim_length );
|
wait(anim_length);
|
||||||
|
|
||||||
while ( !self.is_charged )
|
while (!self.is_charged)
|
||||||
{
|
{
|
||||||
level setclientfield( self.script_parameters, 2 );
|
level setclientfield(self.script_parameters, 2);
|
||||||
self waittill_either( "fully_charged", "finished_eating" );
|
self waittill_either("fully_charged", "finished_eating");
|
||||||
}
|
}
|
||||||
|
|
||||||
level setclientfield( self.script_parameters, 6 );
|
level setclientfield(self.script_parameters, 6);
|
||||||
anim_length = getanimlength( %o_zombie_dreamcatcher_outtro );
|
anim_length = getanimlength(%o_zombie_dreamcatcher_outtro);
|
||||||
wait( anim_length );
|
wait(anim_length);
|
||||||
|
|
||||||
if ( isdefined( level.soul_catcher_clip[self.script_noteworthy] ) )
|
if (isdefined(level.soul_catcher_clip[self.script_noteworthy]))
|
||||||
level.soul_catcher_clip[self.script_noteworthy] delete();
|
level.soul_catcher_clip[self.script_noteworthy] delete();
|
||||||
|
|
||||||
self.souls_received = 0;
|
self.souls_received = 0;
|
||||||
@ -54,16 +54,16 @@ grief_soul_catcher_state_manager()
|
|||||||
|
|
||||||
wolf_spit_out_powerup()
|
wolf_spit_out_powerup()
|
||||||
{
|
{
|
||||||
if ( !( isdefined( level.enable_magic ) && level.enable_magic ) )
|
if (!(isdefined(level.enable_magic) && level.enable_magic))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
power_origin_struct = getstruct( "wolf_puke_powerup_origin", "targetname" );
|
power_origin_struct = getstruct("wolf_puke_powerup_origin", "targetname");
|
||||||
|
|
||||||
if ( level.scr_zm_ui_gametype_obj != "zmeat" && randomint( 100 ) < 20 )
|
if (level.scr_zm_ui_gametype_obj != "zmeat" && randomint(100) < 20)
|
||||||
{
|
{
|
||||||
for ( i = 0; i < level.zombie_powerup_array.size; i++ )
|
for (i = 0; i < level.zombie_powerup_array.size; i++)
|
||||||
{
|
{
|
||||||
if ( level.zombie_powerup_array[i] == "meat_stink" )
|
if (level.zombie_powerup_array[i] == "meat_stink")
|
||||||
{
|
{
|
||||||
level.zombie_powerup_index = i;
|
level.zombie_powerup_index = i;
|
||||||
found = 1;
|
found = 1;
|
||||||
@ -73,17 +73,17 @@ wolf_spit_out_powerup()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
while ( true )
|
while (true)
|
||||||
{
|
{
|
||||||
level.zombie_powerup_index = randomint( level.zombie_powerup_array.size );
|
level.zombie_powerup_index = randomint(level.zombie_powerup_array.size);
|
||||||
|
|
||||||
if ( level.zombie_powerup_array[level.zombie_powerup_index] == "nuke" )
|
if (level.zombie_powerup_array[level.zombie_powerup_index] == "nuke")
|
||||||
{
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( level.scr_zm_ui_gametype_obj == "zmeat" && level.zombie_powerup_array[level.zombie_powerup_index] == "meat_stink" )
|
if (level.scr_zm_ui_gametype_obj == "zmeat" && level.zombie_powerup_array[level.zombie_powerup_index] == "meat_stink")
|
||||||
{
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
continue;
|
continue;
|
||||||
@ -96,12 +96,12 @@ wolf_spit_out_powerup()
|
|||||||
if (getDvar("ui_zm_mapstartlocation_fake") == "docks")
|
if (getDvar("ui_zm_mapstartlocation_fake") == "docks")
|
||||||
{
|
{
|
||||||
power_origin_struct = spawnStruct();
|
power_origin_struct = spawnStruct();
|
||||||
power_origin_struct.origin = ( 41.4695, 6096.17, -102.9326 );
|
power_origin_struct.origin = (41.4695, 6096.17, -102.9326);
|
||||||
}
|
}
|
||||||
|
|
||||||
spawn_infinite_powerup_drop( power_origin_struct.origin, level.zombie_powerup_array[level.zombie_powerup_index] );
|
spawn_infinite_powerup_drop(power_origin_struct.origin, level.zombie_powerup_array[level.zombie_powerup_index]);
|
||||||
power_ups = get_array_of_closest( power_origin_struct.origin, level.active_powerups, undefined, undefined, 100 );
|
power_ups = get_array_of_closest(power_origin_struct.origin, level.active_powerups, undefined, undefined, 100);
|
||||||
|
|
||||||
if ( isdefined( power_ups[0] ) )
|
if (isdefined(power_ups[0]))
|
||||||
power_ups[0] movez( 120, 4 );
|
power_ups[0] movez(120, 4);
|
||||||
}
|
}
|
@ -14,17 +14,17 @@
|
|||||||
#include maps\mp\zombies\_zm_weap_claymore;
|
#include maps\mp\zombies\_zm_weap_claymore;
|
||||||
#include maps\mp\zombies\_zm_unitrigger;
|
#include maps\mp\zombies\_zm_unitrigger;
|
||||||
|
|
||||||
watch_cell_open_close( door )
|
watch_cell_open_close(door)
|
||||||
{
|
{
|
||||||
level.cell_open = 0;
|
level.cell_open = 0;
|
||||||
|
|
||||||
while ( true )
|
while (true)
|
||||||
{
|
{
|
||||||
level waittill( "cell_open" );
|
level waittill("cell_open");
|
||||||
|
|
||||||
level.cell_open = 1;
|
level.cell_open = 1;
|
||||||
|
|
||||||
level waittill( "cell_close" );
|
level waittill("cell_close");
|
||||||
|
|
||||||
level.cell_open = 0;
|
level.cell_open = 0;
|
||||||
}
|
}
|
||||||
|
@ -6,45 +6,45 @@
|
|||||||
#include maps\mp\zombies\_zm_zonemgr;
|
#include maps\mp\zombies\_zm_zonemgr;
|
||||||
#include maps\mp\zombies\_zm_ai_basic;
|
#include maps\mp\zombies\_zm_ai_basic;
|
||||||
|
|
||||||
delete_zombie_noone_looking( how_close, how_high )
|
delete_zombie_noone_looking(how_close, how_high)
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
|
|
||||||
if ( self can_be_deleted_from_buried_special_zones() )
|
if (self can_be_deleted_from_buried_special_zones())
|
||||||
{
|
{
|
||||||
self.inview = 0;
|
self.inview = 0;
|
||||||
self.player_close = 0;
|
self.player_close = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( !isdefined( how_close ) )
|
if (!isdefined(how_close))
|
||||||
how_close = 1000;
|
how_close = 1000;
|
||||||
|
|
||||||
if ( !isdefined( how_high ) )
|
if (!isdefined(how_high))
|
||||||
how_high = 500;
|
how_high = 500;
|
||||||
|
|
||||||
if ( !( isdefined( self.has_legs ) && self.has_legs ) )
|
if (!(isdefined(self.has_legs) && self.has_legs))
|
||||||
how_close *= 1.5;
|
how_close *= 1.5;
|
||||||
|
|
||||||
distance_squared_check = how_close * how_close;
|
distance_squared_check = how_close * how_close;
|
||||||
height_squared_check = how_high * how_high;
|
height_squared_check = how_high * how_high;
|
||||||
too_far_dist = distance_squared_check * 3;
|
too_far_dist = distance_squared_check * 3;
|
||||||
|
|
||||||
if ( isdefined( level.zombie_tracking_too_far_dist ) )
|
if (isdefined(level.zombie_tracking_too_far_dist))
|
||||||
too_far_dist = level.zombie_tracking_too_far_dist * level.zombie_tracking_too_far_dist;
|
too_far_dist = level.zombie_tracking_too_far_dist * level.zombie_tracking_too_far_dist;
|
||||||
|
|
||||||
self.inview = 0;
|
self.inview = 0;
|
||||||
self.player_close = 0;
|
self.player_close = 0;
|
||||||
players = get_players();
|
players = get_players();
|
||||||
|
|
||||||
foreach ( player in players )
|
foreach (player in players)
|
||||||
{
|
{
|
||||||
if ( player.sessionstate == "spectator" )
|
if (player.sessionstate == "spectator")
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( isdefined( player.laststand ) && player.laststand && ( isdefined( self.favoriteenemy ) && self.favoriteenemy == player ) )
|
if (isdefined(player.laststand) && player.laststand && (isdefined(self.favoriteenemy) && self.favoriteenemy == player))
|
||||||
{
|
{
|
||||||
if ( !self can_zombie_see_any_player() )
|
if (!self can_zombie_see_any_player())
|
||||||
{
|
{
|
||||||
self.favoriteenemy = undefined;
|
self.favoriteenemy = undefined;
|
||||||
self.zombie_path_bad = 1;
|
self.zombie_path_bad = 1;
|
||||||
@ -52,45 +52,45 @@ delete_zombie_noone_looking( how_close, how_high )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( level.only_track_targeted_players ) )
|
if (isdefined(level.only_track_targeted_players))
|
||||||
{
|
{
|
||||||
if ( !isdefined( self.favoriteenemy ) || self.favoriteenemy != player )
|
if (!isdefined(self.favoriteenemy) || self.favoriteenemy != player)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
can_be_seen = self player_can_see_me( player );
|
can_be_seen = self player_can_see_me(player);
|
||||||
distance_squared = distancesquared( self.origin, player.origin );
|
distance_squared = distancesquared(self.origin, player.origin);
|
||||||
|
|
||||||
if ( can_be_seen && distance_squared < too_far_dist )
|
if (can_be_seen && distance_squared < too_far_dist)
|
||||||
self.inview++;
|
self.inview++;
|
||||||
|
|
||||||
if ( distance_squared < distance_squared_check && abs( self.origin[2] - player.origin[2] ) < how_high )
|
if (distance_squared < distance_squared_check && abs(self.origin[2] - player.origin[2]) < how_high)
|
||||||
self.player_close++;
|
self.player_close++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
|
|
||||||
if ( self.inview == 0 && self.player_close == 0 )
|
if (self.inview == 0 && self.player_close == 0)
|
||||||
{
|
{
|
||||||
if ( !isdefined( self.animname ) || isdefined( self.animname ) && self.animname != "zombie" )
|
if (!isdefined(self.animname) || isdefined(self.animname) && self.animname != "zombie")
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( isdefined( self.electrified ) && self.electrified == 1 )
|
if (isdefined(self.electrified) && self.electrified == 1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( !( isdefined( self.exclude_distance_cleanup_adding_to_total ) && self.exclude_distance_cleanup_adding_to_total ) && !( isdefined( self.isscreecher ) && self.isscreecher ) )
|
if (!(isdefined(self.exclude_distance_cleanup_adding_to_total) && self.exclude_distance_cleanup_adding_to_total) && !(isdefined(self.isscreecher) && self.isscreecher))
|
||||||
{
|
{
|
||||||
level.zombie_total++;
|
level.zombie_total++;
|
||||||
|
|
||||||
if ( self.health < level.zombie_health )
|
if (self.health < level.zombie_health)
|
||||||
level.zombie_respawned_health[level.zombie_respawned_health.size] = self.health;
|
level.zombie_respawned_health[level.zombie_respawned_health.size] = self.health;
|
||||||
}
|
}
|
||||||
|
|
||||||
self maps\mp\zombies\_zm_spawner::reset_attack_spot();
|
self maps\mp\zombies\_zm_spawner::reset_attack_spot();
|
||||||
self notify( "zombie_delete" );
|
self notify("zombie_delete");
|
||||||
|
|
||||||
if ( isdefined( self.anchor ) )
|
if (isdefined(self.anchor))
|
||||||
self.anchor delete();
|
self.anchor delete();
|
||||||
|
|
||||||
self delete();
|
self delete();
|
||||||
|
@ -9,29 +9,29 @@
|
|||||||
|
|
||||||
jail_traversal_fix()
|
jail_traversal_fix()
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
window_pos = ( -837, 496, 8 );
|
window_pos = (-837, 496, 8);
|
||||||
fix_dist = 64;
|
fix_dist = 64;
|
||||||
|
|
||||||
while ( true )
|
while (true)
|
||||||
{
|
{
|
||||||
dist = distancesquared( self.origin, window_pos );
|
dist = distancesquared(self.origin, window_pos);
|
||||||
|
|
||||||
if ( dist < fix_dist )
|
if (dist < fix_dist)
|
||||||
{
|
{
|
||||||
node = self getnegotiationstartnode();
|
node = self getnegotiationstartnode();
|
||||||
|
|
||||||
if ( isdefined( node ) )
|
if (isdefined(node))
|
||||||
{
|
{
|
||||||
if ( node.animscript == "zm_jump_down_48" && node.type == "Begin" )
|
if (node.animscript == "zm_jump_down_48" && node.type == "Begin")
|
||||||
{
|
{
|
||||||
self setphysparams( 25, 0, 60 );
|
self setphysparams(25, 0, 60);
|
||||||
wait 1;
|
wait 1;
|
||||||
|
|
||||||
if ( is_true( self.has_legs ) )
|
if (is_true(self.has_legs))
|
||||||
self setphysparams( 15, 0, 60 );
|
self setphysparams(15, 0, 60);
|
||||||
else
|
else
|
||||||
self setphysparams( 15, 0, 24 );
|
self setphysparams(15, 0, 24);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,31 +8,31 @@
|
|||||||
|
|
||||||
transport_player_to_start_zone()
|
transport_player_to_start_zone()
|
||||||
{
|
{
|
||||||
self endon( "death_or_disconnect" );
|
self endon("death_or_disconnect");
|
||||||
fountain_debug_print( "transport player!" );
|
fountain_debug_print("transport player!");
|
||||||
|
|
||||||
if ( !isdefined( level._fountain_transporter ) )
|
if (!isdefined(level._fountain_transporter))
|
||||||
{
|
{
|
||||||
level._fountain_transporter = spawnstruct();
|
level._fountain_transporter = spawnstruct();
|
||||||
level._fountain_transporter.index = 0;
|
level._fountain_transporter.index = 0;
|
||||||
level._fountain_transporter.end_points = getstructarray( "fountain_transport_end_location", "targetname" );
|
level._fountain_transporter.end_points = getstructarray("fountain_transport_end_location", "targetname");
|
||||||
}
|
}
|
||||||
|
|
||||||
self playsoundtoplayer( "zmb_buried_teleport", self );
|
self playsoundtoplayer("zmb_buried_teleport", self);
|
||||||
self play_teleport_fx();
|
self play_teleport_fx();
|
||||||
self flash_screen_white();
|
self flash_screen_white();
|
||||||
wait_network_frame();
|
wait_network_frame();
|
||||||
|
|
||||||
if ( level._fountain_transporter.index >= level._fountain_transporter.end_points.size )
|
if (level._fountain_transporter.index >= level._fountain_transporter.end_points.size)
|
||||||
level._fountain_transporter.index = 0;
|
level._fountain_transporter.index = 0;
|
||||||
|
|
||||||
tries = 0;
|
tries = 0;
|
||||||
|
|
||||||
while ( positionwouldtelefrag( level._fountain_transporter.end_points[level._fountain_transporter.index].origin ) )
|
while (positionwouldtelefrag(level._fountain_transporter.end_points[level._fountain_transporter.index].origin))
|
||||||
{
|
{
|
||||||
tries++;
|
tries++;
|
||||||
|
|
||||||
if ( tries >= 4 )
|
if (tries >= 4)
|
||||||
{
|
{
|
||||||
tries = 0;
|
tries = 0;
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
@ -40,22 +40,22 @@ transport_player_to_start_zone()
|
|||||||
|
|
||||||
level._fountain_transporter.index++;
|
level._fountain_transporter.index++;
|
||||||
|
|
||||||
if ( level._fountain_transporter.index >= level._fountain_transporter.end_points.size )
|
if (level._fountain_transporter.index >= level._fountain_transporter.end_points.size)
|
||||||
level._fountain_transporter.index = 0;
|
level._fountain_transporter.index = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
self setorigin( level._fountain_transporter.end_points[level._fountain_transporter.index].origin );
|
self setorigin(level._fountain_transporter.end_points[level._fountain_transporter.index].origin);
|
||||||
self setplayerangles( level._fountain_transporter.end_points[level._fountain_transporter.index].angles );
|
self setplayerangles(level._fountain_transporter.end_points[level._fountain_transporter.index].angles);
|
||||||
self setvelocity( ( 0, 0, 0 ) );
|
self setvelocity((0, 0, 0));
|
||||||
level._fountain_transporter.index++;
|
level._fountain_transporter.index++;
|
||||||
wait_network_frame();
|
wait_network_frame();
|
||||||
self play_teleport_fx();
|
self play_teleport_fx();
|
||||||
self thread flash_screen_fade_out();
|
self thread flash_screen_fade_out();
|
||||||
self maps\mp\zm_buried_classic::buried_set_start_area_lighting();
|
self maps\mp\zm_buried_classic::buried_set_start_area_lighting();
|
||||||
self thread maps\mp\zombies\_zm_ai_ghost::behave_after_fountain_transport( self );
|
self thread maps\mp\zombies\_zm_ai_ghost::behave_after_fountain_transport(self);
|
||||||
self maps\mp\zombies\_zm_stats::increment_client_stat( "buried_fountain_transporter_used", 0 );
|
self maps\mp\zombies\_zm_stats::increment_client_stat("buried_fountain_transporter_used", 0);
|
||||||
self maps\mp\zombies\_zm_stats::increment_player_stat( "buried_fountain_transporter_used" );
|
self maps\mp\zombies\_zm_stats::increment_player_stat("buried_fountain_transporter_used");
|
||||||
self notify( "player_used_fountain_teleporter" );
|
self notify("player_used_fountain_teleporter");
|
||||||
wait_network_frame();
|
wait_network_frame();
|
||||||
wait_network_frame();
|
wait_network_frame();
|
||||||
self.is_in_fountain_transport_trigger = 0;
|
self.is_in_fountain_transport_trigger = 0;
|
||||||
|
@ -18,40 +18,40 @@
|
|||||||
|
|
||||||
init()
|
init()
|
||||||
{
|
{
|
||||||
add_map_gamemode( "zclassic", maps\mp\zm_buried::zclassic_preinit, undefined, undefined );
|
add_map_gamemode("zclassic", maps\mp\zm_buried::zclassic_preinit, undefined, undefined);
|
||||||
add_map_gamemode( "zcleansed", maps\mp\zm_buried::zcleansed_preinit, undefined, undefined );
|
add_map_gamemode("zcleansed", maps\mp\zm_buried::zcleansed_preinit, undefined, undefined);
|
||||||
add_map_gamemode( "zgrief", maps\mp\zm_buried::zgrief_preinit, undefined, undefined );
|
add_map_gamemode("zgrief", maps\mp\zm_buried::zgrief_preinit, undefined, undefined);
|
||||||
|
|
||||||
add_map_location_gamemode( "zclassic", "processing", maps\mp\zm_buried_classic::precache, maps\mp\zm_buried_classic::main );
|
add_map_location_gamemode("zclassic", "processing", maps\mp\zm_buried_classic::precache, maps\mp\zm_buried_classic::main);
|
||||||
|
|
||||||
add_map_location_gamemode( "zcleansed", "street", maps\mp\zm_buried_turned_street::precache, maps\mp\zm_buried_turned_street::main );
|
add_map_location_gamemode("zcleansed", "street", maps\mp\zm_buried_turned_street::precache, maps\mp\zm_buried_turned_street::main);
|
||||||
|
|
||||||
add_map_location_gamemode( "zgrief", "street", scripts\zm\replaced\zm_buried_grief_street::precache, scripts\zm\replaced\zm_buried_grief_street::main );
|
add_map_location_gamemode("zgrief", "street", scripts\zm\replaced\zm_buried_grief_street::precache, scripts\zm\replaced\zm_buried_grief_street::main);
|
||||||
|
|
||||||
if (getDvar("ui_zm_mapstartlocation_fake") == "maze")
|
if (getDvar("ui_zm_mapstartlocation_fake") == "maze")
|
||||||
{
|
{
|
||||||
scripts\zm\replaced\utility::add_struct_location_gamemode_func( "zgrief", "street", scripts\zm\locs\zm_buried_loc_maze::struct_init );
|
scripts\zm\replaced\utility::add_struct_location_gamemode_func("zgrief", "street", scripts\zm\locs\zm_buried_loc_maze::struct_init);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
buildbuildable( buildable )
|
buildbuildable(buildable)
|
||||||
{
|
{
|
||||||
player = get_players()[0];
|
player = get_players()[0];
|
||||||
|
|
||||||
foreach ( stub in level.buildable_stubs )
|
foreach (stub in level.buildable_stubs)
|
||||||
{
|
{
|
||||||
if ( !isdefined( buildable ) || stub.equipname == buildable )
|
if (!isdefined(buildable) || stub.equipname == buildable)
|
||||||
{
|
{
|
||||||
if ( isdefined( buildable ) || stub.persistent != 3 )
|
if (isdefined(buildable) || stub.persistent != 3)
|
||||||
{
|
{
|
||||||
stub maps\mp\zombies\_zm_buildables::buildablestub_remove();
|
stub maps\mp\zombies\_zm_buildables::buildablestub_remove();
|
||||||
|
|
||||||
foreach ( piece in stub.buildablezone.pieces )
|
foreach (piece in stub.buildablezone.pieces)
|
||||||
{
|
{
|
||||||
piece maps\mp\zombies\_zm_buildables::piece_unspawn();
|
piece maps\mp\zombies\_zm_buildables::piece_unspawn();
|
||||||
}
|
}
|
||||||
|
|
||||||
stub maps\mp\zombies\_zm_buildables::buildablestub_finish_build( player );
|
stub maps\mp\zombies\_zm_buildables::buildablestub_finish_build(player);
|
||||||
|
|
||||||
stub.model notsolid();
|
stub.model notsolid();
|
||||||
stub.model show();
|
stub.model show();
|
||||||
|
@ -20,33 +20,33 @@ precache()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
precachemodel( "collision_wall_128x128x10_standard" );
|
precachemodel("collision_wall_128x128x10_standard");
|
||||||
precachemodel( "collision_wall_256x256x10_standard" );
|
precachemodel("collision_wall_256x256x10_standard");
|
||||||
precachemodel( "collision_wall_512x512x10_standard" );
|
precachemodel("collision_wall_512x512x10_standard");
|
||||||
precachemodel( "zm_collision_buried_street_grief" );
|
precachemodel("zm_collision_buried_street_grief");
|
||||||
precachemodel( "p6_zm_bu_buildable_bench_tarp" );
|
precachemodel("p6_zm_bu_buildable_bench_tarp");
|
||||||
|
|
||||||
trig = spawn( "script_model", (1288, 1485, 59) );
|
trig = spawn("script_model", (1288, 1485, 59));
|
||||||
trig.angles = (0, 0, 0);
|
trig.angles = (0, 0, 0);
|
||||||
trig.script_angles = (0, 70, 0);
|
trig.script_angles = (0, 70, 0);
|
||||||
trig.targetname = "headchopper_buildable_trigger";
|
trig.targetname = "headchopper_buildable_trigger";
|
||||||
trig.target = "buildable_headchopper";
|
trig.target = "buildable_headchopper";
|
||||||
|
|
||||||
ent = spawn( "script_model", (1271.89, 1495.38, 77.78) );
|
ent = spawn("script_model", (1271.89, 1495.38, 77.78));
|
||||||
ent.angles = (61.5365, 340.343, 0.216167);
|
ent.angles = (61.5365, 340.343, 0.216167);
|
||||||
ent.targetname = "buildable_headchopper";
|
ent.targetname = "buildable_headchopper";
|
||||||
ent.target = "headchopper_bench";
|
ent.target = "headchopper_bench";
|
||||||
ent setmodel( "t6_wpn_zmb_chopper" );
|
ent setmodel("t6_wpn_zmb_chopper");
|
||||||
|
|
||||||
level.chalk_buildable_pieces_hide = 1;
|
level.chalk_buildable_pieces_hide = 1;
|
||||||
griefbuildables = array( "chalk", "turbine", "springpad_zm", "subwoofer_zm", "headchopper_zm" );
|
griefbuildables = array("chalk", "turbine", "springpad_zm", "subwoofer_zm", "headchopper_zm");
|
||||||
maps\mp\zm_buried_buildables::include_buildables( griefbuildables );
|
maps\mp\zm_buried_buildables::include_buildables(griefbuildables);
|
||||||
maps\mp\zm_buried_buildables::init_buildables( griefbuildables );
|
maps\mp\zm_buried_buildables::init_buildables(griefbuildables);
|
||||||
maps\mp\zombies\_zm_equip_turbine::init();
|
maps\mp\zombies\_zm_equip_turbine::init();
|
||||||
maps\mp\zombies\_zm_equip_turbine::init_animtree();
|
maps\mp\zombies\_zm_equip_turbine::init_animtree();
|
||||||
maps\mp\zombies\_zm_equip_springpad::init( &"ZM_BURIED_EQ_SP_PHS", &"ZM_BURIED_EQ_SP_HTS" );
|
maps\mp\zombies\_zm_equip_springpad::init(&"ZM_BURIED_EQ_SP_PHS", &"ZM_BURIED_EQ_SP_HTS");
|
||||||
maps\mp\zombies\_zm_equip_subwoofer::init( &"ZM_BURIED_EQ_SW_PHS", &"ZM_BURIED_EQ_SW_HTS" );
|
maps\mp\zombies\_zm_equip_subwoofer::init(&"ZM_BURIED_EQ_SW_PHS", &"ZM_BURIED_EQ_SW_HTS");
|
||||||
maps\mp\zombies\_zm_equip_headchopper::init( &"ZM_BURIED_EQ_HC_PHS", &"ZM_BURIED_EQ_HC_HTS" );
|
maps\mp\zombies\_zm_equip_headchopper::init(&"ZM_BURIED_EQ_HC_PHS", &"ZM_BURIED_EQ_HC_HTS");
|
||||||
}
|
}
|
||||||
|
|
||||||
main()
|
main()
|
||||||
@ -61,34 +61,34 @@ main()
|
|||||||
level.equipment_team_pick_up = 1;
|
level.equipment_team_pick_up = 1;
|
||||||
level.zones["zone_mansion"].is_enabled = 0;
|
level.zones["zone_mansion"].is_enabled = 0;
|
||||||
level thread maps\mp\zombies\_zm_buildables::think_buildables();
|
level thread maps\mp\zombies\_zm_buildables::think_buildables();
|
||||||
maps\mp\gametypes_zm\_zm_gametype::setup_standard_objects( "street" );
|
maps\mp\gametypes_zm\_zm_gametype::setup_standard_objects("street");
|
||||||
street_treasure_chest_init();
|
street_treasure_chest_init();
|
||||||
deleteslothbarricades();
|
deleteslothbarricades();
|
||||||
disable_tunnels();
|
disable_tunnels();
|
||||||
powerswitchstate( 1 );
|
powerswitchstate(1);
|
||||||
level.enemy_location_override_func = ::enemy_location_override;
|
level.enemy_location_override_func = ::enemy_location_override;
|
||||||
spawnmapcollision( "zm_collision_buried_street_grief" );
|
spawnmapcollision("zm_collision_buried_street_grief");
|
||||||
flag_wait( "initial_blackscreen_passed" );
|
flag_wait("initial_blackscreen_passed");
|
||||||
flag_wait( "start_zombie_round_logic" );
|
flag_wait("start_zombie_round_logic");
|
||||||
wait 1;
|
wait 1;
|
||||||
builddynamicwallbuys();
|
builddynamicwallbuys();
|
||||||
buildbuildables();
|
buildbuildables();
|
||||||
turnperkon( "revive" );
|
turnperkon("revive");
|
||||||
turnperkon( "doubletap" );
|
turnperkon("doubletap");
|
||||||
turnperkon( "marathon" );
|
turnperkon("marathon");
|
||||||
turnperkon( "juggernog" );
|
turnperkon("juggernog");
|
||||||
turnperkon( "sleight" );
|
turnperkon("sleight");
|
||||||
turnperkon( "additionalprimaryweapon" );
|
turnperkon("additionalprimaryweapon");
|
||||||
turnperkon( "Pack_A_Punch" );
|
turnperkon("Pack_A_Punch");
|
||||||
}
|
}
|
||||||
|
|
||||||
enemy_location_override( zombie, enemy )
|
enemy_location_override(zombie, enemy)
|
||||||
{
|
{
|
||||||
location = enemy.origin;
|
location = enemy.origin;
|
||||||
|
|
||||||
if ( isDefined( self.reroute ) && self.reroute )
|
if (isDefined(self.reroute) && self.reroute)
|
||||||
{
|
{
|
||||||
if ( isDefined( self.reroute_origin ) )
|
if (isDefined(self.reroute_origin))
|
||||||
{
|
{
|
||||||
location = self.reroute_origin;
|
location = self.reroute_origin;
|
||||||
}
|
}
|
||||||
@ -99,11 +99,11 @@ enemy_location_override( zombie, enemy )
|
|||||||
|
|
||||||
street_treasure_chest_init()
|
street_treasure_chest_init()
|
||||||
{
|
{
|
||||||
start_chest = getstruct( "start_chest", "script_noteworthy" );
|
start_chest = getstruct("start_chest", "script_noteworthy");
|
||||||
court_chest = getstruct( "courtroom_chest1", "script_noteworthy" );
|
court_chest = getstruct("courtroom_chest1", "script_noteworthy");
|
||||||
jail_chest = getstruct( "jail_chest1", "script_noteworthy" );
|
jail_chest = getstruct("jail_chest1", "script_noteworthy");
|
||||||
gun_chest = getstruct( "gunshop_chest", "script_noteworthy" );
|
gun_chest = getstruct("gunshop_chest", "script_noteworthy");
|
||||||
setdvar( "disableLookAtEntityLogic", 1 );
|
setdvar("disableLookAtEntityLogic", 1);
|
||||||
level.chests = [];
|
level.chests = [];
|
||||||
level.chests[ level.chests.size ] = start_chest;
|
level.chests[ level.chests.size ] = start_chest;
|
||||||
level.chests[ level.chests.size ] = court_chest;
|
level.chests[ level.chests.size ] = court_chest;
|
||||||
@ -112,38 +112,38 @@ street_treasure_chest_init()
|
|||||||
|
|
||||||
chest_names = array("start_chest", "courtroom_chest1", "jail_chest1", "gunshop_chest");
|
chest_names = array("start_chest", "courtroom_chest1", "jail_chest1", "gunshop_chest");
|
||||||
chest_name = random(chest_names);
|
chest_name = random(chest_names);
|
||||||
maps\mp\zombies\_zm_magicbox::treasure_chest_init( chest_name );
|
maps\mp\zombies\_zm_magicbox::treasure_chest_init(chest_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
builddynamicwallbuys()
|
builddynamicwallbuys()
|
||||||
{
|
{
|
||||||
builddynamicwallbuy( "morgue", "pdw57_zm" );
|
builddynamicwallbuy("morgue", "pdw57_zm");
|
||||||
builddynamicwallbuy( "church", "svu_zm" );
|
builddynamicwallbuy("church", "svu_zm");
|
||||||
builddynamicwallbuy( "mansion", "an94_zm" );
|
builddynamicwallbuy("mansion", "an94_zm");
|
||||||
|
|
||||||
level notify("dynamicwallbuysbuilt");
|
level notify("dynamicwallbuysbuilt");
|
||||||
}
|
}
|
||||||
|
|
||||||
builddynamicwallbuy( location, weaponname )
|
builddynamicwallbuy(location, weaponname)
|
||||||
{
|
{
|
||||||
foreach ( stub in level.chalk_builds )
|
foreach (stub in level.chalk_builds)
|
||||||
{
|
{
|
||||||
wallbuy = getstruct( stub.target, "targetname" );
|
wallbuy = getstruct(stub.target, "targetname");
|
||||||
|
|
||||||
if ( isDefined( wallbuy.script_location ) && wallbuy.script_location == location )
|
if (isDefined(wallbuy.script_location) && wallbuy.script_location == location)
|
||||||
{
|
{
|
||||||
spawned_wallbuy = undefined;
|
spawned_wallbuy = undefined;
|
||||||
|
|
||||||
for ( i = 0; i < level._spawned_wallbuys.size; i++ )
|
for (i = 0; i < level._spawned_wallbuys.size; i++)
|
||||||
{
|
{
|
||||||
if ( level._spawned_wallbuys[ i ].target == wallbuy.targetname )
|
if (level._spawned_wallbuys[ i ].target == wallbuy.targetname)
|
||||||
{
|
{
|
||||||
spawned_wallbuy = level._spawned_wallbuys[ i ];
|
spawned_wallbuy = level._spawned_wallbuys[ i ];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isDefined( spawned_wallbuy ) )
|
if (!isDefined(spawned_wallbuy))
|
||||||
{
|
{
|
||||||
origin = wallbuy.origin;
|
origin = wallbuy.origin;
|
||||||
|
|
||||||
@ -165,96 +165,96 @@ builddynamicwallbuy( location, weaponname )
|
|||||||
level._spawned_wallbuys[level._spawned_wallbuys.size] = struct;
|
level._spawned_wallbuys[level._spawned_wallbuys.size] = struct;
|
||||||
|
|
||||||
// move model foreward so it always shows in front of chalk
|
// move model foreward so it always shows in front of chalk
|
||||||
model = spawn_weapon_model( weaponname, undefined, origin + anglesToRight(wallbuy.angles) * -0.25, wallbuy.angles );
|
model = spawn_weapon_model(weaponname, undefined, origin + anglesToRight(wallbuy.angles) * -0.25, wallbuy.angles);
|
||||||
model.targetname = struct.target;
|
model.targetname = struct.target;
|
||||||
model setmodel( getWeaponModel(weaponname) );
|
model setmodel(getWeaponModel(weaponname));
|
||||||
model useweaponhidetags( weaponname );
|
model useweaponhidetags(weaponname);
|
||||||
model hide();
|
model hide();
|
||||||
|
|
||||||
chalk_fx = weaponname + "_fx";
|
chalk_fx = weaponname + "_fx";
|
||||||
thread scripts\zm\replaced\utility::playchalkfx( chalk_fx, origin, wallbuy.angles );
|
thread scripts\zm\replaced\utility::playchalkfx(chalk_fx, origin, wallbuy.angles);
|
||||||
}
|
}
|
||||||
|
|
||||||
maps\mp\zombies\_zm_weapons::add_dynamic_wallbuy( weaponname, wallbuy.targetname, 1 );
|
maps\mp\zombies\_zm_weapons::add_dynamic_wallbuy(weaponname, wallbuy.targetname, 1);
|
||||||
thread wait_and_remove( stub, stub.buildablezone.pieces[ 0 ] );
|
thread wait_and_remove(stub, stub.buildablezone.pieces[ 0 ]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
buildbuildables()
|
buildbuildables()
|
||||||
{
|
{
|
||||||
buildbuildable( "headchopper_zm" );
|
buildbuildable("headchopper_zm");
|
||||||
buildbuildable( "springpad_zm" );
|
buildbuildable("springpad_zm");
|
||||||
buildbuildable( "subwoofer_zm" );
|
buildbuildable("subwoofer_zm");
|
||||||
buildbuildable( "turbine" );
|
buildbuildable("turbine");
|
||||||
}
|
}
|
||||||
|
|
||||||
disable_tunnels()
|
disable_tunnels()
|
||||||
{
|
{
|
||||||
// main tunnel saloon side
|
// main tunnel saloon side
|
||||||
origin = (770, -863, 320);
|
origin = (770, -863, 320);
|
||||||
angles = ( 0, 180, -35 );
|
angles = (0, 180, -35);
|
||||||
collision = spawn( "script_model", origin + anglesToUp(angles) * 128 );
|
collision = spawn("script_model", origin + anglesToUp(angles) * 128);
|
||||||
collision.angles = angles;
|
collision.angles = angles;
|
||||||
collision setmodel( "collision_wall_256x256x10_standard" );
|
collision setmodel("collision_wall_256x256x10_standard");
|
||||||
model = spawn( "script_model", origin );
|
model = spawn("script_model", origin);
|
||||||
model.angles = angles;
|
model.angles = angles;
|
||||||
model setmodel( "p6_zm_bu_sloth_blocker_medium" );
|
model setmodel("p6_zm_bu_sloth_blocker_medium");
|
||||||
|
|
||||||
// main tunnel courthouse side
|
// main tunnel courthouse side
|
||||||
origin = (349, 579, 240);
|
origin = (349, 579, 240);
|
||||||
angles = ( 0, 0, -10 );
|
angles = (0, 0, -10);
|
||||||
collision = spawn( "script_model", origin + anglesToUp(angles) * 64 );
|
collision = spawn("script_model", origin + anglesToUp(angles) * 64);
|
||||||
collision.angles = angles;
|
collision.angles = angles;
|
||||||
collision setmodel( "collision_wall_128x128x10_standard" );
|
collision setmodel("collision_wall_128x128x10_standard");
|
||||||
model = spawn( "script_model", origin );
|
model = spawn("script_model", origin);
|
||||||
model.angles = angles;
|
model.angles = angles;
|
||||||
model setmodel( "p6_zm_bu_sloth_blocker_medium" );
|
model setmodel("p6_zm_bu_sloth_blocker_medium");
|
||||||
|
|
||||||
// main tunnel above general store
|
// main tunnel above general store
|
||||||
origin = (-123, -801, 326);
|
origin = (-123, -801, 326);
|
||||||
angles = ( 0, 0, 90 );
|
angles = (0, 0, 90);
|
||||||
collision = spawn( "script_model", origin );
|
collision = spawn("script_model", origin);
|
||||||
collision.angles = angles;
|
collision.angles = angles;
|
||||||
collision setmodel( "collision_wall_128x128x10_standard" );
|
collision setmodel("collision_wall_128x128x10_standard");
|
||||||
|
|
||||||
// main tunnel above jail
|
// main tunnel above jail
|
||||||
origin = (-852, 408, 379);
|
origin = (-852, 408, 379);
|
||||||
angles = ( 0, 0, 90 );
|
angles = (0, 0, 90);
|
||||||
collision = spawn( "script_model", origin );
|
collision = spawn("script_model", origin);
|
||||||
collision.angles = angles;
|
collision.angles = angles;
|
||||||
collision setmodel( "collision_wall_512x512x10_standard" );
|
collision setmodel("collision_wall_512x512x10_standard");
|
||||||
|
|
||||||
// main tunnel above stables
|
// main tunnel above stables
|
||||||
origin = (-713, -313, 287);
|
origin = (-713, -313, 287);
|
||||||
angles = ( 0, 0, 90 );
|
angles = (0, 0, 90);
|
||||||
collision = spawn( "script_model", origin );
|
collision = spawn("script_model", origin);
|
||||||
collision.angles = angles;
|
collision.angles = angles;
|
||||||
collision setmodel( "collision_wall_128x128x10_standard" );
|
collision setmodel("collision_wall_128x128x10_standard");
|
||||||
|
|
||||||
// bank top
|
// bank top
|
||||||
model = spawn( "script_model", (-371.839, -448.016, 224.125));
|
model = spawn("script_model", (-371.839, -448.016, 224.125));
|
||||||
model.angles = (0, 180, -90);
|
model.angles = (0, 180, -90);
|
||||||
model setmodel("p6_zm_bu_wood_planks_106x171");
|
model setmodel("p6_zm_bu_wood_planks_106x171");
|
||||||
model = spawn( "script_model", (-381.252, -443.056, 144.125), 1);
|
model = spawn("script_model", (-381.252, -443.056, 144.125), 1);
|
||||||
model.angles = (0, 0, 0);
|
model.angles = (0, 0, 0);
|
||||||
model setmodel("collision_clip_wall_128x128x10");
|
model setmodel("collision_clip_wall_128x128x10");
|
||||||
model disconnectpaths();
|
model disconnectpaths();
|
||||||
|
|
||||||
// bank tunnel
|
// bank tunnel
|
||||||
model = spawn( "script_model", (-54.6069, -1129.47, 6.125));
|
model = spawn("script_model", (-54.6069, -1129.47, 6.125));
|
||||||
model.angles = (0, 0, 0);
|
model.angles = (0, 0, 0);
|
||||||
model setmodel("p6_zm_bu_wood_planks_106x171");
|
model setmodel("p6_zm_bu_wood_planks_106x171");
|
||||||
model = spawn( "script_model", (-92.6853, -1075.92, 8.125));
|
model = spawn("script_model", (-92.6853, -1075.92, 8.125));
|
||||||
model.angles = (0, 140, 0);
|
model.angles = (0, 140, 0);
|
||||||
model setmodel("p6_zm_bu_sloth_blocker_medium");
|
model setmodel("p6_zm_bu_sloth_blocker_medium");
|
||||||
model = spawn( "script_model", (-40.3028, -1158.31, 3.125));
|
model = spawn("script_model", (-40.3028, -1158.31, 3.125));
|
||||||
model.angles = (0, -90, -15);
|
model.angles = (0, -90, -15);
|
||||||
model setmodel("p6_zm_bu_victorian_couch");
|
model setmodel("p6_zm_bu_victorian_couch");
|
||||||
model = spawn( "script_model", (-75.4725, -1156.37, 52.125));
|
model = spawn("script_model", (-75.4725, -1156.37, 52.125));
|
||||||
model.angles = (0, 0, 180);
|
model.angles = (0, 0, 180);
|
||||||
model setmodel("p6_zm_work_bench");
|
model setmodel("p6_zm_work_bench");
|
||||||
model = spawn( "script_model", (-53.4637, -1165.89, 8.125), 1);
|
model = spawn("script_model", (-53.4637, -1165.89, 8.125), 1);
|
||||||
model.angles = (0, 0, 0);
|
model.angles = (0, 0, 0);
|
||||||
model setmodel("collision_clip_64x64x128");
|
model setmodel("collision_clip_64x64x128");
|
||||||
model disconnectpaths();
|
model disconnectpaths();
|
||||||
|
@ -7,23 +7,23 @@
|
|||||||
|
|
||||||
electric_switch()
|
electric_switch()
|
||||||
{
|
{
|
||||||
trig = getent( "use_elec_switch", "targetname" );
|
trig = getent("use_elec_switch", "targetname");
|
||||||
master_switch = getent( "elec_switch", "targetname" );
|
master_switch = getent("elec_switch", "targetname");
|
||||||
master_switch notsolid();
|
master_switch notsolid();
|
||||||
trig sethintstring( &"ZOMBIE_ELECTRIC_SWITCH" );
|
trig sethintstring(&"ZOMBIE_ELECTRIC_SWITCH");
|
||||||
trig setvisibletoall();
|
trig setvisibletoall();
|
||||||
|
|
||||||
trig setinvisibletoall();
|
trig setinvisibletoall();
|
||||||
master_switch rotateroll( -90, 0.3 );
|
master_switch rotateroll(-90, 0.3);
|
||||||
master_switch playsound( "zmb_switch_flip" );
|
master_switch playsound("zmb_switch_flip");
|
||||||
master_switch playsound( "zmb_poweron" );
|
master_switch playsound("zmb_poweron");
|
||||||
level delay_thread( 11.8, ::sndpoweronmusicstinger );
|
level delay_thread(11.8, ::sndpoweronmusicstinger);
|
||||||
|
|
||||||
master_switch waittill( "rotatedone" );
|
master_switch waittill("rotatedone");
|
||||||
|
|
||||||
master_switch playsound( "zmb_turn_on" );
|
master_switch playsound("zmb_turn_on");
|
||||||
level notify( "electric_door" );
|
level notify("electric_door");
|
||||||
clientnotify( "power_on" );
|
clientnotify("power_on");
|
||||||
flag_set( "power_on" );
|
flag_set("power_on");
|
||||||
level setclientfield( "zombie_power_on", 1 );
|
level setclientfield("zombie_power_on", 1);
|
||||||
}
|
}
|
@ -27,76 +27,76 @@
|
|||||||
|
|
||||||
sq_metagame()
|
sq_metagame()
|
||||||
{
|
{
|
||||||
level endon( "sq_metagame_player_connected" );
|
level endon("sq_metagame_player_connected");
|
||||||
|
|
||||||
if ( !is_true( level.buried_sq_maxis_complete ) && !is_true( level.buried_sq_richtofen_complete ) )
|
if (!is_true(level.buried_sq_maxis_complete) && !is_true(level.buried_sq_richtofen_complete))
|
||||||
level waittill( "buried_sidequest_achieved" );
|
level waittill("buried_sidequest_achieved");
|
||||||
|
|
||||||
m_endgame_machine = getstruct( "sq_endgame_machine", "targetname" );
|
m_endgame_machine = getstruct("sq_endgame_machine", "targetname");
|
||||||
a_stat = [];
|
a_stat = [];
|
||||||
a_stat[0] = "sq_transit_last_completed";
|
a_stat[0] = "sq_transit_last_completed";
|
||||||
a_stat[1] = "sq_highrise_last_completed";
|
a_stat[1] = "sq_highrise_last_completed";
|
||||||
a_stat[2] = "sq_buried_last_completed";
|
a_stat[2] = "sq_buried_last_completed";
|
||||||
level.n_metagame_machine_lights_on = 0;
|
level.n_metagame_machine_lights_on = 0;
|
||||||
flag_wait( "start_zombie_round_logic" );
|
flag_wait("start_zombie_round_logic");
|
||||||
sq_metagame_clear_lights();
|
sq_metagame_clear_lights();
|
||||||
players = get_players();
|
players = get_players();
|
||||||
player_count = players.size;
|
player_count = players.size;
|
||||||
|
|
||||||
for ( n_player = 0; n_player < player_count; n_player++ )
|
for (n_player = 0; n_player < player_count; n_player++)
|
||||||
{
|
{
|
||||||
for ( n_stat = 0; n_stat < a_stat.size; n_stat++ )
|
for (n_stat = 0; n_stat < a_stat.size; n_stat++)
|
||||||
{
|
{
|
||||||
if ( flag( "sq_is_max_tower_built" ) )
|
if (flag("sq_is_max_tower_built"))
|
||||||
{
|
{
|
||||||
m_endgame_machine sq_metagame_machine_set_light( n_player, n_stat, "sq_bulb_orange" );
|
m_endgame_machine sq_metagame_machine_set_light(n_player, n_stat, "sq_bulb_orange");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_endgame_machine sq_metagame_machine_set_light( n_player, n_stat, "sq_bulb_blue" );
|
m_endgame_machine sq_metagame_machine_set_light(n_player, n_stat, "sq_bulb_blue");
|
||||||
}
|
}
|
||||||
|
|
||||||
level setclientfield( "buried_sq_egm_bulb_" + n_stat, 1 );
|
level setclientfield("buried_sq_egm_bulb_" + n_stat, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_endgame_machine.activate_trig = spawn( "trigger_radius", m_endgame_machine.origin, 0, 128, 72 );
|
m_endgame_machine.activate_trig = spawn("trigger_radius", m_endgame_machine.origin, 0, 128, 72);
|
||||||
|
|
||||||
m_endgame_machine.activate_trig waittill( "trigger" );
|
m_endgame_machine.activate_trig waittill("trigger");
|
||||||
|
|
||||||
m_endgame_machine.activate_trig delete();
|
m_endgame_machine.activate_trig delete();
|
||||||
m_endgame_machine.activate_trig = undefined;
|
m_endgame_machine.activate_trig = undefined;
|
||||||
level setclientfield( "buried_sq_egm_animate", 1 );
|
level setclientfield("buried_sq_egm_animate", 1);
|
||||||
m_endgame_machine.endgame_trig = spawn( "trigger_radius_use", m_endgame_machine.origin, 0, 16, 16 );
|
m_endgame_machine.endgame_trig = spawn("trigger_radius_use", m_endgame_machine.origin, 0, 16, 16);
|
||||||
m_endgame_machine.endgame_trig setcursorhint( "HINT_NOICON" );
|
m_endgame_machine.endgame_trig setcursorhint("HINT_NOICON");
|
||||||
m_endgame_machine.endgame_trig sethintstring( &"ZM_BURIED_SQ_EGM_BUT" );
|
m_endgame_machine.endgame_trig sethintstring(&"ZM_BURIED_SQ_EGM_BUT");
|
||||||
m_endgame_machine.endgame_trig triggerignoreteam();
|
m_endgame_machine.endgame_trig triggerignoreteam();
|
||||||
m_endgame_machine.endgame_trig usetriggerrequirelookat();
|
m_endgame_machine.endgame_trig usetriggerrequirelookat();
|
||||||
|
|
||||||
m_endgame_machine.endgame_trig waittill( "trigger" );
|
m_endgame_machine.endgame_trig waittill("trigger");
|
||||||
|
|
||||||
m_endgame_machine.endgame_trig delete();
|
m_endgame_machine.endgame_trig delete();
|
||||||
m_endgame_machine.endgame_trig = undefined;
|
m_endgame_machine.endgame_trig = undefined;
|
||||||
level thread sq_metagame_clear_tower_pieces();
|
level thread sq_metagame_clear_tower_pieces();
|
||||||
playsoundatposition( "zmb_endgame_mach_button", m_endgame_machine.origin );
|
playsoundatposition("zmb_endgame_mach_button", m_endgame_machine.origin);
|
||||||
players = get_players();
|
players = get_players();
|
||||||
|
|
||||||
sq_metagame_clear_lights();
|
sq_metagame_clear_lights();
|
||||||
|
|
||||||
if ( flag( "sq_is_max_tower_built" ) )
|
if (flag("sq_is_max_tower_built"))
|
||||||
level notify( "end_game_reward_starts_maxis" );
|
level notify("end_game_reward_starts_maxis");
|
||||||
else
|
else
|
||||||
level notify( "end_game_reward_starts_richtofen" );
|
level notify("end_game_reward_starts_richtofen");
|
||||||
}
|
}
|
||||||
|
|
||||||
make_richtofen_zombie()
|
make_richtofen_zombie()
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon("death");
|
||||||
level.sq_richtofen_zombie.spawned = 1;
|
level.sq_richtofen_zombie.spawned = 1;
|
||||||
self setclientfield( "buried_sq_maxis_ending_update_eyeball_color", 1 );
|
self setclientfield("buried_sq_maxis_ending_update_eyeball_color", 1);
|
||||||
self thread richtofen_zombie_watch_death();
|
self thread richtofen_zombie_watch_death();
|
||||||
|
|
||||||
self waittill( "completed_emerging_into_playable_area" );
|
self waittill("completed_emerging_into_playable_area");
|
||||||
|
|
||||||
self thread richtofen_zombie_vo_watcher();
|
self thread richtofen_zombie_vo_watcher();
|
||||||
self.deathfunction_old = self.deathfunction;
|
self.deathfunction_old = self.deathfunction;
|
||||||
@ -105,13 +105,13 @@ make_richtofen_zombie()
|
|||||||
|
|
||||||
richtofen_zombie_deathfunction_override()
|
richtofen_zombie_deathfunction_override()
|
||||||
{
|
{
|
||||||
if ( isdefined( self.attacker ) && isplayer( self.attacker ) )
|
if (isdefined(self.attacker) && isplayer(self.attacker))
|
||||||
{
|
{
|
||||||
if ( !( isdefined( self.turning_into_ghost ) && self.turning_into_ghost ) )
|
if (!(isdefined(self.turning_into_ghost) && self.turning_into_ghost))
|
||||||
{
|
{
|
||||||
self force_random_powerup_drop();
|
self force_random_powerup_drop();
|
||||||
|
|
||||||
self.attacker maps\mp\zombies\_zm_score::add_to_player_score( 500 );
|
self.attacker maps\mp\zombies\_zm_score::add_to_player_score(500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -124,9 +124,9 @@ sq_give_player_rewards()
|
|||||||
|
|
||||||
players = get_players();
|
players = get_players();
|
||||||
|
|
||||||
foreach ( player in players )
|
foreach (player in players)
|
||||||
{
|
{
|
||||||
if ( is_player_valid( player ) )
|
if (is_player_valid(player))
|
||||||
{
|
{
|
||||||
player thread scripts\zm\replaced\_zm_sq::sq_give_player_all_perks();
|
player thread scripts\zm\replaced\_zm_sq::sq_give_player_all_perks();
|
||||||
}
|
}
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user