diff --git a/scripts/zm/_zm_reimagined.gsc b/scripts/zm/_zm_reimagined.gsc index 5771f23f..7ec6296c 100644 --- a/scripts/zm/_zm_reimagined.gsc +++ b/scripts/zm/_zm_reimagined.gsc @@ -746,16 +746,16 @@ enemy_counter_hud() get_current_ghost_count() { - ghost_count = 0; - ais = getaiarray( level.zombie_team ); + ghost_count = 0; + ais = getaiarray( level.zombie_team ); - foreach ( ai in ais ) - { - if ( isdefined( ai.is_ghost ) && ai.is_ghost ) - ghost_count++; - } + foreach ( ai in ais ) + { + if ( isdefined( ai.is_ghost ) && ai.is_ghost ) + ghost_count++; + } - return ghost_count; + return ghost_count; } timer_hud() @@ -2340,8 +2340,8 @@ last_stand_restore_pistol_ammo(only_store_info = false) self setweaponammoclip( weapon, self.stored_weapon_info[ weapon ].clip_amt ); - if ( "none" != dual_wield_name ) - self set_weapon_ammo_clip_left( weapon, self.stored_weapon_info[ weapon ].left_clip_amt ); + if ( "none" != dual_wield_name ) + self set_weapon_ammo_clip_left( weapon, self.stored_weapon_info[ weapon ].left_clip_amt ); self setweaponammostock( weapon, self.stored_weapon_info[ weapon ].stock_amt ); @@ -3057,7 +3057,7 @@ onuseplantobject_mtower( player ) onuseplantobject_rtower( player ) { - m_tower = getent( "sq_guillotine", "targetname" ); + m_tower = getent( "sq_guillotine", "targetname" ); m_tower sq_tower_spawn_attachment( "p6_zm_bu_sq_crystal", "j_crystal_01" ); m_tower sq_tower_spawn_attachment( "p6_zm_bu_sq_satellite_dish", "j_satellite" ); m_tower sq_tower_spawn_attachment( "p6_zm_bu_sq_antenna", "j_antenna" ); @@ -3072,9 +3072,9 @@ onuseplantobject_rtower( player ) sq_tower_spawn_attachment( str_model, str_tag ) { - m_part = spawn( "script_model", self gettagorigin( str_tag ) ); - m_part.angles = self gettagangles( str_tag ); - m_part setmodel( str_model ); + m_part = spawn( "script_model", self gettagorigin( str_tag ) ); + m_part.angles = self gettagangles( str_tag ); + m_part setmodel( str_model ); } unregister_tower_unitriggers() diff --git a/scripts/zm/locs/zm_buried_loc_maze.gsc b/scripts/zm/locs/zm_buried_loc_maze.gsc index d2e02def..c0538651 100644 --- a/scripts/zm/locs/zm_buried_loc_maze.gsc +++ b/scripts/zm/locs/zm_buried_loc_maze.gsc @@ -22,16 +22,16 @@ struct_init() level.struct_class_names[ "targetname" ][ "zm_perk_machine" ] = []; foreach (struct in structs) - { - if (isdefined(struct.script_string) && isSubStr(struct.script_string, "zclassic")) - { + { + if (isdefined(struct.script_string) && isSubStr(struct.script_string, "zclassic")) + { 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 ); } } else if (isdefined(struct.script_string) && isSubStr(struct.script_string, "maze")) - { + { if (struct.script_noteworthy == "specialty_armorvest") { struct.origin += anglesToRight(struct.angles) * 24; @@ -84,7 +84,7 @@ struct_init() player_respawn_points = []; foreach (initial_spawn in level.struct_class_names["script_noteworthy"]["initial_spawn"]) - { + { if (isDefined(initial_spawn.script_string) && isSubStr(initial_spawn.script_string, "zgrief_maze")) { initial_spawn.script_string = "zgrief_street"; @@ -94,9 +94,9 @@ struct_init() } foreach (player_respawn_point in level.struct_class_names["targetname"]["player_respawn_point"]) - { + { if (player_respawn_point.script_noteworthy == "zone_maze") - { + { if (player_respawn_point.target == "maze_spawn_points") { player_respawn_point.script_noteworthy = "zone_mansion_backyard"; @@ -107,7 +107,7 @@ struct_init() } player_respawn_points[player_respawn_points.size] = player_respawn_point; - } + } else if (player_respawn_point.script_noteworthy == "zone_maze_staircase") { spawn_array = getstructarray( player_respawn_point.target, "targetname" ); @@ -128,7 +128,7 @@ struct_init() player_respawn_points[player_respawn_points.size] = player_respawn_point; } - } + } level.struct_class_names[ "script_noteworthy" ][ "initial_spawn" ] = initial_spawns; level.struct_class_names[ "targetname" ][ "player_respawn_point" ] = player_respawn_points; @@ -136,33 +136,33 @@ struct_init() level.struct_class_names[ "targetname" ][ "intermission" ] = []; intermission_cam = spawnStruct(); - intermission_cam.origin = (3694, 569, 253); - intermission_cam.angles = (30, 0, 0); - intermission_cam.targetname = "intermission"; - intermission_cam.script_string = "street"; - intermission_cam.speed = 30; - intermission_cam.target = "intermission_street_end"; - scripts\zm\replaced\utility::add_struct(intermission_cam); + intermission_cam.origin = (3694, 569, 253); + intermission_cam.angles = (30, 0, 0); + intermission_cam.targetname = "intermission"; + intermission_cam.script_string = "street"; + intermission_cam.speed = 30; + intermission_cam.target = "intermission_street_end"; + scripts\zm\replaced\utility::add_struct(intermission_cam); - intermission_cam_end = spawnStruct(); - intermission_cam_end.origin = (5856, 569, 253); - intermission_cam_end.angles = (30, 0, 0); - intermission_cam_end.targetname = "intermission_street_end"; - scripts\zm\replaced\utility::add_struct(intermission_cam_end); + intermission_cam_end = spawnStruct(); + intermission_cam_end.origin = (5856, 569, 253); + intermission_cam_end.angles = (30, 0, 0); + intermission_cam_end.targetname = "intermission_street_end"; + scripts\zm\replaced\utility::add_struct(intermission_cam_end); } precache() { precachemodel( "zm_collision_buried_street_grief" ); - precachemodel( "p6_zm_bu_buildable_bench_tarp" ); - level.chalk_buildable_pieces_hide = 1; - griefbuildables = array( "chalk", "turbine", "springpad_zm", "subwoofer_zm" ); - maps\mp\zm_buried_buildables::include_buildables( griefbuildables ); - maps\mp\zm_buried_buildables::init_buildables( griefbuildables ); - maps\mp\zombies\_zm_equip_turbine::init(); - 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_subwoofer::init( &"ZM_BURIED_EQ_SW_PHS", &"ZM_BURIED_EQ_SW_HTS" ); + precachemodel( "p6_zm_bu_buildable_bench_tarp" ); + level.chalk_buildable_pieces_hide = 1; + griefbuildables = array( "chalk", "turbine", "springpad_zm", "subwoofer_zm" ); + maps\mp\zm_buried_buildables::include_buildables( griefbuildables ); + maps\mp\zm_buried_buildables::init_buildables( griefbuildables ); + maps\mp\zombies\_zm_equip_turbine::init(); + 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_subwoofer::init( &"ZM_BURIED_EQ_SW_PHS", &"ZM_BURIED_EQ_SW_HTS" ); maps\mp\zm_buried_fountain::init_fountain(); setdvar( "disableLookAtEntityLogic", 1 ); @@ -178,15 +178,15 @@ precache() collision = spawn( "script_model", start_chest_zbarrier.origin, 1 ); collision.angles = start_chest_zbarrier.angles; collision setmodel( "collision_clip_32x32x128" ); - collision disconnectpaths(); + collision disconnectpaths(); collision = spawn( "script_model", start_chest_zbarrier.origin - ( 0, 32, 0 ), 1 ); collision.angles = start_chest_zbarrier.angles; collision setmodel( "collision_clip_32x32x128" ); - collision disconnectpaths(); + collision disconnectpaths(); collision = spawn( "script_model", start_chest_zbarrier.origin + ( 0, 32, 0 ), 1 ); collision.angles = start_chest_zbarrier.angles; collision setmodel( "collision_clip_32x32x128" ); - collision disconnectpaths(); + collision disconnectpaths(); start_chest2_zbarrier = getEnt( "tunnels_chest1_zbarrier", "script_noteworthy" ); start_chest2_zbarrier.origin = (5605.74, 276.96, 17); @@ -199,15 +199,15 @@ precache() collision = spawn( "script_model", start_chest2_zbarrier.origin, 1 ); collision.angles = start_chest2_zbarrier.angles; collision setmodel( "collision_clip_32x32x128" ); - collision disconnectpaths(); + collision disconnectpaths(); collision = spawn( "script_model", start_chest2_zbarrier.origin - ( 32, 0, 0 ), 1 ); collision.angles = start_chest2_zbarrier.angles; collision setmodel( "collision_clip_32x32x128" ); - collision disconnectpaths(); + collision disconnectpaths(); collision = spawn( "script_model", start_chest2_zbarrier.origin + ( 32, 0, 0 ), 1 ); collision.angles = start_chest2_zbarrier.angles; collision setmodel( "collision_clip_32x32x128" ); - collision disconnectpaths(); + collision disconnectpaths(); level.chests = []; level.chests[0] = start_chest; @@ -217,12 +217,12 @@ precache() main() { level.buildables_built["pap"] = 1; - level.equipment_team_pick_up = 1; - level thread maps\mp\zombies\_zm_buildables::think_buildables(); - maps\mp\gametypes_zm\_zm_gametype::setup_standard_objects( "street" ); + level.equipment_team_pick_up = 1; + level thread maps\mp\zombies\_zm_buildables::think_buildables(); + maps\mp\gametypes_zm\_zm_gametype::setup_standard_objects( "street" ); maps\mp\zombies\_zm_magicbox::treasure_chest_init( random( array( "start_chest", "tunnels_chest1" ) ) ); - deleteslothbarricades(); - powerswitchstate( 1 ); + deleteslothbarricades(); + powerswitchstate( 1 ); flag_set("mansion_door1"); level.zones["zone_mansion"].is_enabled = 0; @@ -270,7 +270,7 @@ init_barriers() structs = getstructarray( "zm_perk_machine", "targetname" ); foreach (struct in structs) - { + { scripts\zm\replaced\utility::barrier( "collision_geo_64x64x128_standard", struct.origin + (anglesToRight(struct.angles) * -9) + (0, 0, 320), struct.angles ); } } diff --git a/scripts/zm/locs/zm_prison_loc_docks.gsc b/scripts/zm/locs/zm_prison_loc_docks.gsc index 7cfd2b1e..1c380724 100644 --- a/scripts/zm/locs/zm_prison_loc_docks.gsc +++ b/scripts/zm/locs/zm_prison_loc_docks.gsc @@ -7,78 +7,78 @@ 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_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" ] = []; player_respawn_points = []; foreach (player_respawn_point in level.struct_class_names["targetname"]["player_respawn_point"]) - { + { if (player_respawn_point.script_noteworthy == "zone_dock") - { - i = 0; - respawn_array = getstructarray(player_respawn_point.target, "targetname"); + { + i = 0; + respawn_array = getstructarray(player_respawn_point.target, "targetname"); - foreach (respawn in respawn_array) - { - if (respawn.origin == (-664, 5944, 0)) - { - continue; - } + foreach (respawn in respawn_array) + { + if (respawn.origin == (-664, 5944, 0)) + { + continue; + } - script_int = int(i / 2) + 1; + script_int = int(i / 2) + 1; - origin = respawn.origin + (anglesToRight(respawn.angles) * 32); - angles = respawn.angles; + origin = respawn.origin + (anglesToRight(respawn.angles) * 32); + 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); - angles = respawn.angles; + origin = respawn.origin + (anglesToRight(respawn.angles) * -32); + 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++; + } player_respawn_points[player_respawn_points.size] = player_respawn_point; - } - else if (player_respawn_point.script_noteworthy == "zone_dock_gondola") - { + } + else if (player_respawn_point.script_noteworthy == "zone_dock_gondola") + { player_respawn_points[player_respawn_points.size] = player_respawn_point; - } - else if (player_respawn_point.script_noteworthy == "zone_studio") - { + } + else if (player_respawn_point.script_noteworthy == "zone_studio") + { player_respawn_points[player_respawn_points.size] = player_respawn_point; - } - else if (player_respawn_point.script_noteworthy == "zone_citadel_basement_building") - { + } + else if (player_respawn_point.script_noteworthy == "zone_citadel_basement_building") + { player_respawn_points[player_respawn_points.size] = player_respawn_point; - } - } + } + } level.struct_class_names[ "targetname" ][ "player_respawn_point" ] = player_respawn_points; - level.struct_class_names[ "targetname" ][ "intermission" ] = []; + level.struct_class_names[ "targetname" ][ "intermission" ] = []; - intermission_cam = spawnStruct(); - intermission_cam.origin = (402, 6197, 142); - intermission_cam.angles = (0, 190, 0); - intermission_cam.targetname = "intermission"; - intermission_cam.script_string = "cellblock"; - intermission_cam.speed = 30; - intermission_cam.target = "intermission_cellblock_end"; - scripts\zm\replaced\utility::add_struct(intermission_cam); + intermission_cam = spawnStruct(); + intermission_cam.origin = (402, 6197, 142); + intermission_cam.angles = (0, 190, 0); + intermission_cam.targetname = "intermission"; + intermission_cam.script_string = "cellblock"; + intermission_cam.speed = 30; + intermission_cam.target = "intermission_cellblock_end"; + scripts\zm\replaced\utility::add_struct(intermission_cam); - intermission_cam_end = spawnStruct(); - intermission_cam_end.origin = (-1043, 5931, -47); - intermission_cam_end.angles = (0, 190, 0); - intermission_cam_end.targetname = "intermission_cellblock_end"; - scripts\zm\replaced\utility::add_struct(intermission_cam_end); + intermission_cam_end = spawnStruct(); + intermission_cam_end.origin = (-1043, 5931, -47); + intermission_cam_end.angles = (0, 190, 0); + intermission_cam_end.targetname = "intermission_cellblock_end"; + scripts\zm\replaced\utility::add_struct(intermission_cam_end); } precache() @@ -90,18 +90,18 @@ precache() main() { - flag_set("gondola_roof_to_dock"); - init_wallbuys(); - init_barriers(); - generatebuildabletarps(); - set_box_weapons(); - disable_zombie_spawn_locations(); - disable_gondola_call_triggers(); - disable_craftable_triggers(); - disable_afterlife_props(); - create_key_door_unitrigger( 4, 98, 112, 108 ); - level thread open_inner_gate(); - level thread turn_afterlife_interacts_on(); + flag_set("gondola_roof_to_dock"); + init_wallbuys(); + init_barriers(); + generatebuildabletarps(); + set_box_weapons(); + disable_zombie_spawn_locations(); + disable_gondola_call_triggers(); + disable_craftable_triggers(); + disable_afterlife_props(); + create_key_door_unitrigger( 4, 98, 112, 108 ); + level thread open_inner_gate(); + level thread turn_afterlife_interacts_on(); maps\mp\gametypes_zm\_zm_gametype::setup_standard_objects( "cellblock" ); maps\mp\zombies\_zm_magicbox::treasure_chest_init( "dock_chest" ); precacheshader( "zm_al_wth_zombie" ); @@ -110,12 +110,12 @@ main() maps\mp\zombies\_zm_ai_brutus::init(); level._effect["butterflies"] = loadfx( "maps/zombie_alcatraz/fx_alcatraz_skull_elec" ); 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(); } set_box_weapons() { - if(isDefined(level.zombie_weapons["thompson_zm"])) + if(isDefined(level.zombie_weapons["thompson_zm"])) { level.zombie_weapons["thompson_zm"].is_in_box = 0; } @@ -127,76 +127,76 @@ set_box_weapons() init_wallbuys() { - 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( "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( "uzi_zm", "uzi", "weapon_upgrade", ( -219, 7156, 122 ), ( 0, 190, 0 ) ); } init_barriers() { - // left - model = spawn( "script_model", (-90.4585, 7669.56, 114.511)); - model.angles = (90, -10, 55); - model setmodel("p6_zm_al_horrific_bed_mattress_3"); - model = spawn( "script_model", (-111.549, 7667.96, 97.125)); - model.angles = (0, 0, 90); - model setmodel("zm_al_kitchen_table_01"); - model = spawn( "script_model", (-113.959, 7638.7, 75.0369)); - model.angles = (6, 0, -6); - model setmodel("afr_corrugated_metal4x8_holes"); - model = spawn( "script_model", (-106.911, 7636.47, 64.125)); - model.angles = (0, 0, 0); - model setmodel("collision_clip_wall_128x128x10"); + // left + model = spawn( "script_model", (-90.4585, 7669.56, 114.511)); + model.angles = (90, -10, 55); + model setmodel("p6_zm_al_horrific_bed_mattress_3"); + model = spawn( "script_model", (-111.549, 7667.96, 97.125)); + model.angles = (0, 0, 90); + model setmodel("zm_al_kitchen_table_01"); + model = spawn( "script_model", (-113.959, 7638.7, 75.0369)); + model.angles = (6, 0, -6); + model setmodel("afr_corrugated_metal4x8_holes"); + model = spawn( "script_model", (-106.911, 7636.47, 64.125)); + model.angles = (0, 0, 0); + model setmodel("collision_clip_wall_128x128x10"); - // right - model = spawn( "script_model", (48.6213, 7639.88, 74.125)); - model.angles = (22, -44, 0); - model setmodel("p6_zm_al_infirmary_case"); - model = spawn( "script_model", (44.9895, 7601.56, 81.125)); - model.angles = (-5, -41, -8); - model setmodel("afr_corrugated_metal4x8_holes"); - model = spawn( "script_model", (98.769, 7602.89, 64.125)); - model.angles = (0, -142, 0); - model setmodel("p6_zm_al_desk_small"); - model = spawn( "script_model", (43.2479, 7606.2, 66.125)); - model.angles = (0, -45, 0); - model setmodel("collision_clip_wall_128x128x10"); + // right + model = spawn( "script_model", (48.6213, 7639.88, 74.125)); + model.angles = (22, -44, 0); + model setmodel("p6_zm_al_infirmary_case"); + model = spawn( "script_model", (44.9895, 7601.56, 81.125)); + model.angles = (-5, -41, -8); + model setmodel("afr_corrugated_metal4x8_holes"); + model = spawn( "script_model", (98.769, 7602.89, 64.125)); + model.angles = (0, -142, 0); + model setmodel("p6_zm_al_desk_small"); + model = spawn( "script_model", (43.2479, 7606.2, 66.125)); + model.angles = (0, -45, 0); + model setmodel("collision_clip_wall_128x128x10"); } generatebuildabletarps() { - model = spawn( "script_model", (432.836, 6238.03, 55.997)); - model.angles = (0, 100, 0); - model setmodel("p6_zm_buildable_bench_tarp"); + model = spawn( "script_model", (432.836, 6238.03, 55.997)); + model.angles = (0, 100, 0); + model setmodel("p6_zm_buildable_bench_tarp"); } disable_zombie_spawn_locations() { 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; - while ( i < zone.spawn_locations.size ) - { - if (zone.spawn_locations[i].origin == (615.8, 7875.9, 95)) - { - zone.spawn_locations[i].is_enabled = false; - } - else if (zone.spawn_locations[i].origin == (663.8, 7827.9, 95)) - { - zone.spawn_locations[i].is_enabled = false; - } + i = 0; + while ( i < zone.spawn_locations.size ) + { + if (zone.spawn_locations[i].origin == (615.8, 7875.9, 95)) + { + zone.spawn_locations[i].is_enabled = false; + } + else if (zone.spawn_locations[i].origin == (663.8, 7827.9, 95)) + { + zone.spawn_locations[i].is_enabled = false; + } - i++; - } + i++; + } } } disable_gondola_call_triggers() { - t_call_triggers = getentarray( "gondola_call_trigger", "targetname" ); - foreach ( trigger in t_call_triggers ) + t_call_triggers = getentarray( "gondola_call_trigger", "targetname" ); + foreach ( trigger in t_call_triggers ) { trigger delete(); } @@ -204,7 +204,7 @@ disable_gondola_call_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 ) { trigger delete(); @@ -213,7 +213,7 @@ disable_craftable_triggers() disable_afterlife_props() { - a_afterlife_props = getentarray( "afterlife_show", "targetname" ); + a_afterlife_props = getentarray( "afterlife_show", "targetname" ); foreach ( m_prop in a_afterlife_props ) { m_prop delete(); @@ -222,143 +222,143 @@ disable_afterlife_props() turn_afterlife_interacts_on() { - a_afterlife_interact = getentarray( "afterlife_interact", "targetname" ); + a_afterlife_interact = getentarray( "afterlife_interact", "targetname" ); foreach ( model in a_afterlife_interact ) { - if ( model.script_string == "juggernog_on" ) - { - model turn_afterlife_interact_on(); - wait 0.1; - } + if ( model.script_string == "juggernog_on" ) + { + model turn_afterlife_interact_on(); + wait 0.1; + } } - m_docks_shockbox = getent( "docks_panel", "targetname" ); - m_docks_shockbox turn_afterlife_interact_on(); + m_docks_shockbox = getent( "docks_panel", "targetname" ); + m_docks_shockbox turn_afterlife_interact_on(); } #using_animtree("fxanim_props"); turn_afterlife_interact_on() { - if ( !isDefined( level.shockbox_anim ) ) - { - level.shockbox_anim[ "on" ] = %fxanim_zom_al_shock_box_on_anim; - level.shockbox_anim[ "off" ] = %fxanim_zom_al_shock_box_off_anim; - } + if ( !isDefined( level.shockbox_anim ) ) + { + level.shockbox_anim[ "on" ] = %fxanim_zom_al_shock_box_on_anim; + level.shockbox_anim[ "off" ] = %fxanim_zom_al_shock_box_off_anim; + } - if ( issubstr( self.model, "p6_zm_al_shock_box" ) ) - { - self useanimtree( -1 ); - self setmodel( "p6_zm_al_shock_box_on" ); - self setanim( level.shockbox_anim[ "on" ] ); - } + if ( issubstr( self.model, "p6_zm_al_shock_box" ) ) + { + self useanimtree( -1 ); + self setmodel( "p6_zm_al_shock_box_on" ); + self setanim( level.shockbox_anim[ "on" ] ); + } } create_key_door_unitrigger( piece_num, width, height, length ) { - t_key_door = getstruct( "key_door_" + piece_num + "_trigger", "targetname" ); - t_key_door.unitrigger_stub = spawnstruct(); - 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.script_unitrigger_type = "unitrigger_box_use"; - t_key_door.unitrigger_stub.hint_string = &"ZM_PRISON_KEY_DOOR_LOCKED"; - t_key_door.unitrigger_stub.cursor_hint = "HINT_NOICON"; - t_key_door.unitrigger_stub.script_width = width; - t_key_door.unitrigger_stub.script_height = height; - t_key_door.unitrigger_stub.script_length = length; - t_key_door.unitrigger_stub.n_door_index = piece_num; - 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.cost = 2000; - maps\mp\zombies\_zm_unitrigger::register_static_unitrigger( t_key_door.unitrigger_stub, ::master_key_door_trigger_thread ); + t_key_door = getstruct( "key_door_" + piece_num + "_trigger", "targetname" ); + t_key_door.unitrigger_stub = spawnstruct(); + 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.script_unitrigger_type = "unitrigger_box_use"; + t_key_door.unitrigger_stub.hint_string = &"ZM_PRISON_KEY_DOOR_LOCKED"; + t_key_door.unitrigger_stub.cursor_hint = "HINT_NOICON"; + t_key_door.unitrigger_stub.script_width = width; + t_key_door.unitrigger_stub.script_height = height; + t_key_door.unitrigger_stub.script_length = length; + t_key_door.unitrigger_stub.n_door_index = piece_num; + 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.cost = 2000; + maps\mp\zombies\_zm_unitrigger::register_static_unitrigger( t_key_door.unitrigger_stub, ::master_key_door_trigger_thread ); } 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" ); - self setinvisibletoplayer( player, b_is_invis ); + 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 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() { - self endon( "death" ); - self endon( "kill_trigger" ); - n_door_index = self.stub.n_door_index; - b_door_open = 0; + self endon( "death" ); + self endon( "kill_trigger" ); + n_door_index = self.stub.n_door_index; + b_door_open = 0; - while ( !b_door_open ) - { - self waittill( "trigger", e_triggerer ); + while ( !b_door_open ) + { + self waittill( "trigger", e_triggerer ); - if ( is_player_valid(e_triggerer) ) - { - if ( e_triggerer.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" ); + if ( is_player_valid(e_triggerer) ) + { + if ( e_triggerer.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" ); - self.stub.master_key_door_opened = 1; - 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 ); - self playsound( "evt_quest_door_open" ); - b_door_open = 1; - } - else - { - play_sound_at_pos( "no_purchase", self.stub.origin ); - } - } - } + self.stub.master_key_door_opened = 1; + 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 ); + self playsound( "evt_quest_door_open" ); + b_door_open = 1; + } + else + { + 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 ) { - m_lock = getent( "masterkey_lock_" + n_door_index, "targetname" ); - m_lock playsound( "zmb_quest_key_unlock" ); - playfxontag( level._effect["fx_alcatraz_unlock_door"], m_lock, "tag_origin" ); - wait 0.5; - m_lock delete(); + m_lock = getent( "masterkey_lock_" + n_door_index, "targetname" ); + m_lock playsound( "zmb_quest_key_unlock" ); + playfxontag( level._effect["fx_alcatraz_unlock_door"], m_lock, "tag_origin" ); + wait 0.5; + m_lock delete(); - 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 connectpaths(); - gate_1_monsterclip = getent( "docks_gate_1_monsterclip", "targetname" ); - gate_1_monsterclip.origin += vectorscale( ( 0, 0, 1 ), 256.0 ); - gate_1_monsterclip disconnectpaths(); - gate_1_monsterclip.origin -= vectorscale( ( 0, 0, 1 ), 256.0 ); + 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 connectpaths(); + gate_1_monsterclip = getent( "docks_gate_1_monsterclip", "targetname" ); + gate_1_monsterclip.origin += vectorscale( ( 0, 0, 1 ), 256.0 ); + gate_1_monsterclip disconnectpaths(); + gate_1_monsterclip.origin -= vectorscale( ( 0, 0, 1 ), 256.0 ); - if ( isdefined( e_triggerer ) ) - e_triggerer door_rumble_on_open(); + if ( isdefined( e_triggerer ) ) + e_triggerer door_rumble_on_open(); - m_gate_01 playsound( "zmb_chainlink_open" ); - flag_set( "docks_inner_gate_unlocked" ); - flag_set( "docks_inner_gate_open" ); + m_gate_01 playsound( "zmb_chainlink_open" ); + flag_set( "docks_inner_gate_unlocked" ); + flag_set( "docks_inner_gate_open" ); } door_rumble_on_open() { - self endon( "disconnect" ); - level endon( "end_game" ); - self setclientfieldtoplayer( "rumble_door_open", 1 ); - wait_network_frame(); - self setclientfieldtoplayer( "rumble_door_open", 0 ); + self endon( "disconnect" ); + level endon( "end_game" ); + self setclientfieldtoplayer( "rumble_door_open", 1 ); + wait_network_frame(); + self setclientfieldtoplayer( "rumble_door_open", 0 ); } 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 ); - wait( 0.75 ); - m_gate_02 connectpaths(); - gate_2_monsterclip = getent( "docks_gate_2_monsterclip", "targetname" ); - gate_2_monsterclip.origin += vectorscale( ( 0, 0, 1 ), 256.0 ); - gate_2_monsterclip disconnectpaths(); - gate_2_monsterclip.origin -= vectorscale( ( 0, 0, 1 ), 256.0 ); + m_gate_02 moveto( m_gate_02.origin + ( -16, 80, 0 ), 0.5 ); + wait( 0.75 ); + m_gate_02 connectpaths(); + gate_2_monsterclip = getent( "docks_gate_2_monsterclip", "targetname" ); + gate_2_monsterclip.origin += vectorscale( ( 0, 0, 1 ), 256.0 ); + gate_2_monsterclip disconnectpaths(); + gate_2_monsterclip.origin -= vectorscale( ( 0, 0, 1 ), 256.0 ); } \ No newline at end of file diff --git a/scripts/zm/locs/zm_transit_loc_cornfield.gsc b/scripts/zm/locs/zm_transit_loc_cornfield.gsc index 86e6df86..ee8333dd 100644 --- a/scripts/zm/locs/zm_transit_loc_cornfield.gsc +++ b/scripts/zm/locs/zm_transit_loc_cornfield.gsc @@ -10,51 +10,51 @@ 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( "specialty_weapupgrade", "p6_anim_zm_buildable_pap_on", ( 10460, -564, -220 ), ( 0, -35, 0 ) ); + 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 ) ); - zone_respawnpoints = []; - respawnpoints = maps\mp\gametypes_zm\_zm_gametype::get_player_spawns_for_gametype(); - for (i = 0; i < respawnpoints.size; i++) - { - if (isDefined(respawnpoints[i].script_noteworthy) && respawnpoints[i].script_noteworthy == "zone_amb_cornfield") - { - if (isDefined(respawnpoints[i].script_string) && respawnpoints[i].script_string == "zgrief_cornfield") - { - zone_respawnpoints[respawnpoints[i].script_noteworthy] = respawnpoints[i]; - } - } - else if (isDefined(respawnpoints[i].script_noteworthy) && respawnpoints[i].script_noteworthy == "zone_cornfield_prototype") - { - zone_respawnpoints[respawnpoints[i].script_noteworthy] = respawnpoints[i]; - } - } + zone_respawnpoints = []; + respawnpoints = maps\mp\gametypes_zm\_zm_gametype::get_player_spawns_for_gametype(); + for (i = 0; i < respawnpoints.size; i++) + { + if (isDefined(respawnpoints[i].script_noteworthy) && respawnpoints[i].script_noteworthy == "zone_amb_cornfield") + { + if (isDefined(respawnpoints[i].script_string) && respawnpoints[i].script_string == "zgrief_cornfield") + { + zone_respawnpoints[respawnpoints[i].script_noteworthy] = respawnpoints[i]; + } + } + else if (isDefined(respawnpoints[i].script_noteworthy) && respawnpoints[i].script_noteworthy == "zone_cornfield_prototype") + { + zone_respawnpoints[respawnpoints[i].script_noteworthy] = respawnpoints[i]; + } + } - level.struct_class_names["targetname"]["player_respawn_point"] = []; + level.struct_class_names["targetname"]["player_respawn_point"] = []; level.struct_class_names["script_noteworthy"]["initial_spawn"] = []; - zone = "zone_cornfield_prototype"; - scripts\zm\replaced\utility::register_map_spawn_group( zone_respawnpoints[zone].origin, zone, zone_respawnpoints[zone].script_int ); + zone = "zone_cornfield_prototype"; + 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"); - foreach(respawn in respawn_array) - { - scripts\zm\replaced\utility::register_map_spawn( respawn.origin + (100, 0, 0), respawn.angles, zone, respawn.script_int ); - } + respawn_array = getstructarray(zone_respawnpoints[zone].target, "targetname"); + foreach(respawn in respawn_array) + { + scripts\zm\replaced\utility::register_map_spawn( respawn.origin + (100, 0, 0), respawn.angles, zone, respawn.script_int ); + } - zone = "zone_amb_cornfield"; - scripts\zm\replaced\utility::register_map_spawn_group( zone_respawnpoints[zone].origin, zone, zone_respawnpoints[zone].script_int ); + 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( (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( (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( (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( (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( (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( (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( (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( (10046, -591, -192), (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 ) { if ( isDefined( struct.script_noteworthy ) && struct.script_noteworthy == "cornfield" ) @@ -63,25 +63,25 @@ struct_init() } } - intermission_cam = spawnStruct(); - intermission_cam.origin = (10266, 470, -90); - intermission_cam.angles = (0, -90, 0); - intermission_cam.targetname = "intermission"; - intermission_cam.script_string = "cornfield"; - intermission_cam.speed = 30; - intermission_cam.target = "intermission_cornfield_end"; - scripts\zm\replaced\utility::add_struct(intermission_cam); + intermission_cam = spawnStruct(); + intermission_cam.origin = (10266, 470, -90); + intermission_cam.angles = (0, -90, 0); + intermission_cam.targetname = "intermission"; + intermission_cam.script_string = "cornfield"; + intermission_cam.speed = 30; + intermission_cam.target = "intermission_cornfield_end"; + scripts\zm\replaced\utility::add_struct(intermission_cam); - intermission_cam_end = spawnStruct(); - intermission_cam_end.origin = (10216, -1224, -199); - intermission_cam_end.angles = (0, -90, 0); - intermission_cam_end.targetname = "intermission_cornfield_end"; - scripts\zm\replaced\utility::add_struct(intermission_cam_end); + intermission_cam_end = spawnStruct(); + intermission_cam_end.origin = (10216, -1224, -199); + intermission_cam_end.angles = (0, -90, 0); + intermission_cam_end.targetname = "intermission_cornfield_end"; + scripts\zm\replaced\utility::add_struct(intermission_cam_end); } 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.angles = ( 0, 90, 0 ); start_chest = spawnStruct(); @@ -92,15 +92,15 @@ precache() collision = spawn( "script_model", start_chest_zbarrier.origin + ( 0, 0, 64 ), 1 ); collision.angles = start_chest_zbarrier.angles; collision setmodel( "collision_clip_32x32x128" ); - collision disconnectpaths(); + collision disconnectpaths(); collision = spawn( "script_model", start_chest_zbarrier.origin + ( 0, -32, 64 ), 1 ); collision.angles = start_chest_zbarrier.angles; collision setmodel( "collision_clip_32x32x128" ); - collision disconnectpaths(); + collision disconnectpaths(); collision = spawn( "script_model", start_chest_zbarrier.origin + ( 0, 32, 64 ), 1 ); collision.angles = start_chest_zbarrier.angles; collision setmodel( "collision_clip_32x32x128" ); - collision disconnectpaths(); + collision disconnectpaths(); level.chests = []; level.chests[0] = start_chest; @@ -110,144 +110,144 @@ main() { init_wallbuys(); init_barriers(); - disable_zombie_spawn_locations(); - setup_standard_objects("cornfield"); - maps\mp\zombies\_zm_magicbox::treasure_chest_init( random( array( "start_chest" ) ) ); + disable_zombie_spawn_locations(); + setup_standard_objects("cornfield"); + maps\mp\zombies\_zm_magicbox::treasure_chest_init( random( array( "start_chest" ) ) ); scripts\zm\locs\loc_common::init(); } init_wallbuys() { 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( "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( "ak74u_zm", "ak74u", "weapon_upgrade", ( 13979, -1550, -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( "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( "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( "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( "claymore_zm", "claymore", "claymore_purchase", ( 13603, -1281, -134 ), ( 0, -180, 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( "claymore_zm", "claymore", "claymore_purchase", ( 13603, -1281, -134 ), ( 0, -180, 0 ) ); } init_barriers() { - model = spawn( "script_model", (10176.5, -14.8391, -221.988), 1); - model.angles = (0, 35, 0); - model setmodel("collision_clip_wall_256x256x10"); - model disconnectpaths(); + model = spawn( "script_model", (10176.5, -14.8391, -221.988), 1); + model.angles = (0, 35, 0); + model setmodel("collision_clip_wall_256x256x10"); + model disconnectpaths(); - model = spawn( "script_model", (10002.6, -95.4607, -212.275), 1); - model.angles = (0, 0, 0); - model setmodel("collision_clip_wall_128x128x10"); - model disconnectpaths(); + model = spawn( "script_model", (10002.6, -95.4607, -212.275), 1); + model.angles = (0, 0, 0); + model setmodel("collision_clip_wall_128x128x10"); + model disconnectpaths(); - model = spawn( "script_model", (10173.4, -1761.36, -217.812), 1); - model.angles = (0, -60, 0); - model setmodel("collision_clip_wall_128x128x10"); - model disconnectpaths(); + model = spawn( "script_model", (10173.4, -1761.36, -217.812), 1); + model.angles = (0, -60, 0); + model setmodel("collision_clip_wall_128x128x10"); + model disconnectpaths(); - model = spawn( "script_model", (10147.5, -1657.67, -217.208), 1); - model.angles = (0, 88, 0); - model setmodel("collision_clip_wall_256x256x10"); - model disconnectpaths(); + model = spawn( "script_model", (10147.5, -1657.67, -217.208), 1); + model.angles = (0, 88, 0); + model setmodel("collision_clip_wall_256x256x10"); + model disconnectpaths(); - model = spawn( "script_model", (10082.7, -1528.05, -217.288), 1); - model.angles = (0, -180, 0); - model setmodel("collision_clip_wall_128x128x10"); - model disconnectpaths(); + model = spawn( "script_model", (10082.7, -1528.05, -217.288), 1); + model.angles = (0, -180, 0); + model setmodel("collision_clip_wall_128x128x10"); + model disconnectpaths(); - model = spawn( "script_model", (10159.6, -1104.45, -214.861), 1); - model.angles = (0, -30, 0); - model setmodel("collision_clip_64x64x256"); - model disconnectpaths(); + model = spawn( "script_model", (10159.6, -1104.45, -214.861), 1); + model.angles = (0, -30, 0); + model setmodel("collision_clip_64x64x256"); + model disconnectpaths(); - model = spawn( "script_model", (10157.4, -1222.83, -217.875), 1); - model.angles = (0, 10, 0); - model setmodel("collision_clip_64x64x256"); - model disconnectpaths(); + model = spawn( "script_model", (10157.4, -1222.83, -217.875), 1); + model.angles = (0, 10, 0); + model setmodel("collision_clip_64x64x256"); + model disconnectpaths(); - model = spawn( "script_model", (10216.6, -1134.53, -217.261), 1); - model.angles = (0, -30, 0); - model setmodel("collision_clip_64x64x256"); - model disconnectpaths(); + model = spawn( "script_model", (10216.6, -1134.53, -217.261), 1); + model.angles = (0, -30, 0); + model setmodel("collision_clip_64x64x256"); + model disconnectpaths(); - model = spawn( "script_model", (10147.4, -1152.83, -217.875), 1); - model.angles = (0, 10, 0); - model setmodel("collision_clip_64x64x256"); - model disconnectpaths(); + model = spawn( "script_model", (10147.4, -1152.83, -217.875), 1); + model.angles = (0, 10, 0); + model setmodel("collision_clip_64x64x256"); + model disconnectpaths(); - model = spawn( "script_model", (10099.6, -1064.45, -214.861), 1); - model.angles = (0, -30, 0); - model setmodel("collision_clip_64x64x256"); - model disconnectpaths(); + model = spawn( "script_model", (10099.6, -1064.45, -214.861), 1); + model.angles = (0, -30, 0); + model setmodel("collision_clip_64x64x256"); + model disconnectpaths(); - model = spawn( "script_model", (10016.8, -1490.24, -217.875), 1); - model.angles = (0, -30, 0); - model setmodel("collision_clip_128x128x128"); - model disconnectpaths(); + model = spawn( "script_model", (10016.8, -1490.24, -217.875), 1); + model.angles = (0, -30, 0); + model setmodel("collision_clip_128x128x128"); + model disconnectpaths(); - model = spawn( "script_model", (10443.9, -353.378, -217.748), 1); - model.angles = (0, -35, 0); - model setmodel("collision_clip_128x128x128"); - model disconnectpaths(); + model = spawn( "script_model", (10443.9, -353.378, -217.748), 1); + model.angles = (0, -35, 0); + model setmodel("collision_clip_128x128x128"); + model disconnectpaths(); - model = spawn( "script_model", (10393.5, -421.323, -220.142), 1); - model.angles = (0, -25, 0); - model setmodel("collision_clip_128x128x128"); - model disconnectpaths(); + model = spawn( "script_model", (10393.5, -421.323, -220.142), 1); + model.angles = (0, -25, 0); + model setmodel("collision_clip_128x128x128"); + model disconnectpaths(); - model = spawn( "script_model", (10334.9, -544.594, -217.922), 1); - model.angles = (0, -25, 0); - model setmodel("collision_clip_128x128x128"); - model disconnectpaths(); + model = spawn( "script_model", (10334.9, -544.594, -217.922), 1); + model.angles = (0, -25, 0); + model setmodel("collision_clip_128x128x128"); + model disconnectpaths(); - origin = (9720, -1090, -212); - angles = (0, 90, 0); + origin = (9720, -1090, -212); + angles = (0, 90, 0); - model = spawn( "script_model", origin, 1); - model.angles = angles; - model setmodel("veh_t6_civ_smallwagon_dead"); - model disconnectpaths(); + model = spawn( "script_model", origin, 1); + model.angles = angles; + model setmodel("veh_t6_civ_smallwagon_dead"); + model disconnectpaths(); - model = spawn( "script_model", origin + (anglesToRight(angles) * 24) + (anglesToUp(angles) * 128), 1); - model.angles = angles; - model setmodel("collision_clip_wall_256x256x10"); - model disconnectpaths(); + model = spawn( "script_model", origin + (anglesToRight(angles) * 24) + (anglesToUp(angles) * 128), 1); + model.angles = angles; + model setmodel("collision_clip_wall_256x256x10"); + model disconnectpaths(); - origin = (9900, -232, -217); - angles = (0, -90, 0); + origin = (9900, -232, -217); + angles = (0, -90, 0); - model = spawn( "script_model", origin, 1); - model.angles = angles; - model setmodel("veh_t6_civ_microbus_dead"); - model disconnectpaths(); + model = spawn( "script_model", origin, 1); + model.angles = angles; + model setmodel("veh_t6_civ_microbus_dead"); + model disconnectpaths(); - model = spawn( "script_model", origin + (anglesToRight(angles) * -48) + (anglesToUp(angles) * 128), 1); - model.angles = angles; - model setmodel("collision_clip_wall_256x256x10"); - model disconnectpaths(); + model = spawn( "script_model", origin + (anglesToRight(angles) * -48) + (anglesToUp(angles) * 128), 1); + model.angles = angles; + model setmodel("collision_clip_wall_256x256x10"); + model disconnectpaths(); } disable_zombie_spawn_locations() { for ( z = 0; z < level.zone_keys.size; z++ ) { - if ( level.zone_keys[ z ] != "zone_amb_cornfield" ) - { - continue; - } + if ( level.zone_keys[ z ] != "zone_amb_cornfield" ) + { + continue; + } - zone = level.zones[ level.zone_keys[ z ] ]; + zone = level.zones[ level.zone_keys[ z ] ]; - i = 0; - while ( i < zone.spawn_locations.size ) - { - if (zone.spawn_locations[i].origin[0] <= 9700) - { - zone.spawn_locations[i].is_enabled = false; - } + i = 0; + while ( i < zone.spawn_locations.size ) + { + if (zone.spawn_locations[i].origin[0] <= 9700) + { + zone.spawn_locations[i].is_enabled = false; + } - i++; - } + i++; + } } } \ No newline at end of file diff --git a/scripts/zm/locs/zm_transit_loc_diner.gsc b/scripts/zm/locs/zm_transit_loc_diner.gsc index 34fece0b..b05bd0fc 100644 --- a/scripts/zm/locs/zm_transit_loc_diner.gsc +++ b/scripts/zm/locs/zm_transit_loc_diner.gsc @@ -10,121 +10,121 @@ 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_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_rof", "zombie_vending_doubletap2", ( -4170, -7592, -63 ), ( 0, 270, 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_rof", "zombie_vending_doubletap2", ( -4170, -7592, -63 ), ( 0, 270, 0 ) ); - ind = 0; - respawnpoints = maps\mp\gametypes_zm\_zm_gametype::get_player_spawns_for_gametype(); - for(i = 0; i < respawnpoints.size; i++) - { - if(respawnpoints[i].script_noteworthy == "zone_gas") - { - ind = i; - break; - } - } + ind = 0; + respawnpoints = maps\mp\gametypes_zm\_zm_gametype::get_player_spawns_for_gametype(); + for(i = 0; i < respawnpoints.size; i++) + { + if(respawnpoints[i].script_noteworthy == "zone_gas") + { + ind = i; + break; + } + } - zone = "zone_gas"; - scripts\zm\replaced\utility::register_map_spawn_group( respawnpoints[ind].origin, zone, respawnpoints[ind].script_int ); + zone = "zone_gas"; + scripts\zm\replaced\utility::register_map_spawn_group( respawnpoints[ind].origin, zone, respawnpoints[ind].script_int ); - respawn_array = getstructarray(respawnpoints[ind].target, "targetname"); - foreach(respawn in respawn_array) - { - if(respawn.script_int == 2) - { - respawn.angles += (0, 180, 0); - } + respawn_array = getstructarray(respawnpoints[ind].target, "targetname"); + foreach(respawn in respawn_array) + { + if(respawn.script_int == 2) + { + 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"; - scripts\zm\replaced\utility::register_map_spawn_group( (-4173, -7095, -35), zone, 6000 ); + zone = "zone_roadside_east"; + 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( (-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( (-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( (-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( (-4256, -7326, -35), (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( (-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( (-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( (-4181, -7326, -35), (0, 180, 0), zone ); + scripts\zm\replaced\utility::register_map_spawn( (-4256, -7326, -35), (0, 180, 0), zone ); - zone = "zone_roadside_west"; - scripts\zm\replaced\utility::register_map_spawn_group( (-5799, -6839, -30), zone, 6000 ); + zone = "zone_roadside_west"; + 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( (-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( (-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( (-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( (-5895, -6984, -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( (-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( (-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( (-5970, -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" ); 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" ) - { - object.script_gameobjectname = "zstandard zgrief zcleansed zturned"; + if ( isDefined( object.script_gameobjectname ) && object.script_gameobjectname == "zcleansed zturned" ) + { + object.script_gameobjectname = "zstandard zgrief zcleansed zturned"; - if(object.origin == (-6460.7, -7115, 6.8)) - { - object setModel("veh_t6_civ_microbus_dead"); - object.origin += anglesToUp(object.angles) * -65; - object.origin += anglesToForward(object.angles) * 125; - } - else if(object.origin == (-6550.5, -6901.7, 6.8)) - { - object setModel("veh_t6_civ_smallwagon_dead"); - object.origin += anglesToUp(object.angles) * -60; - object.origin += anglesToForward(object.angles) * 150; - } - else if(object.origin == (-6251.1, -6449.4, 20.8)) - { - object setModel("veh_t6_civ_60s_coupe_dead"); - object.origin += anglesToUp(object.angles) * -60; - object.origin += anglesToForward(object.angles) * 125; - object.origin += anglesToRight(object.angles) * 25; - } - else if(object.origin == (-5822.9, -6434.6, 20.8)) - { - object setModel("p6_zm_rocks_medium_05"); - object.origin += anglesToUp(object.angles) * -80; - object.origin += anglesToForward(object.angles) * 50; - object.origin += anglesToRight(object.angles) * 100; - } - else if(object.origin == (-5589.5, -6310.3, 24.8)) - { - object setModel("p6_zm_rocks_medium_05"); - object.origin += anglesToUp(object.angles) * -80; - object.origin += anglesToForward(object.angles) * 50; - object.origin += anglesToRight(object.angles) * 125; - } - else if(object.origin == (-4813, -6665.3, 0.8)) - { - object setModel("veh_t6_civ_60s_coupe_dead"); - object.origin += anglesToUp(object.angles) * -65; - object.origin += anglesToForward(object.angles) * 100; - } - else if(object.origin == (-3978.4, -6484.9, 0.8)) - { - object setModel("veh_t6_civ_smallwagon_dead"); - object.origin += anglesToUp(object.angles) * -60; - object.origin += anglesToForward(object.angles) * 125; - } - else if(object.origin == (-3902.4, -6884.9, 0.8)) - { - object setModel("veh_t6_civ_microbus_dead"); - object.origin += anglesToUp(object.angles) * -65; - object.origin += anglesToForward(object.angles) * 50; - } - } - } + if(object.origin == (-6460.7, -7115, 6.8)) + { + object setModel("veh_t6_civ_microbus_dead"); + object.origin += anglesToUp(object.angles) * -65; + object.origin += anglesToForward(object.angles) * 125; + } + else if(object.origin == (-6550.5, -6901.7, 6.8)) + { + object setModel("veh_t6_civ_smallwagon_dead"); + object.origin += anglesToUp(object.angles) * -60; + object.origin += anglesToForward(object.angles) * 150; + } + else if(object.origin == (-6251.1, -6449.4, 20.8)) + { + object setModel("veh_t6_civ_60s_coupe_dead"); + object.origin += anglesToUp(object.angles) * -60; + object.origin += anglesToForward(object.angles) * 125; + object.origin += anglesToRight(object.angles) * 25; + } + else if(object.origin == (-5822.9, -6434.6, 20.8)) + { + object setModel("p6_zm_rocks_medium_05"); + object.origin += anglesToUp(object.angles) * -80; + object.origin += anglesToForward(object.angles) * 50; + object.origin += anglesToRight(object.angles) * 100; + } + else if(object.origin == (-5589.5, -6310.3, 24.8)) + { + object setModel("p6_zm_rocks_medium_05"); + object.origin += anglesToUp(object.angles) * -80; + object.origin += anglesToForward(object.angles) * 50; + object.origin += anglesToRight(object.angles) * 125; + } + else if(object.origin == (-4813, -6665.3, 0.8)) + { + object setModel("veh_t6_civ_60s_coupe_dead"); + object.origin += anglesToUp(object.angles) * -65; + object.origin += anglesToForward(object.angles) * 100; + } + else if(object.origin == (-3978.4, -6484.9, 0.8)) + { + object setModel("veh_t6_civ_smallwagon_dead"); + object.origin += anglesToUp(object.angles) * -60; + object.origin += anglesToForward(object.angles) * 125; + } + else if(object.origin == (-3902.4, -6884.9, 0.8)) + { + object setModel("veh_t6_civ_microbus_dead"); + object.origin += anglesToUp(object.angles) * -65; + object.origin += anglesToForward(object.angles) * 50; + } + } + } } } @@ -135,30 +135,30 @@ precache() main() { - level.zones["zone_diner_roof"].is_enabled = 0; - level.zones["zone_trans_diner2"].is_enabled = 0; - treasure_chest_init(); + level.zones["zone_diner_roof"].is_enabled = 0; + level.zones["zone_trans_diner2"].is_enabled = 0; + treasure_chest_init(); init_wallbuys(); init_barriers(); - generatebuildabletarps(); - disable_zombie_spawn_locations(); + generatebuildabletarps(); + disable_zombie_spawn_locations(); scripts\zm\locs\loc_common::init(); } treasure_chest_init() { - chests = getstructarray( "treasure_chest_use", "targetname" ); + chests = getstructarray( "treasure_chest_use", "targetname" ); level.chests = []; 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() { 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( "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( "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( "tazer_knuckles_zm", "tazer_knuckles", "tazer_upgrade", ( -6265, -7941, 100 ), ( 0, 90, 0 ) ); } init_barriers() @@ -167,17 +167,17 @@ init_barriers() collision setmodel( "zm_collision_transit_diner_survival" ); collision disconnectpaths(); - origin = ( -6350, -7046, -60 ); + origin = ( -6350, -7046, -60 ); 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) * 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( "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) ); } generatebuildabletarps() { - tarp = spawn( "script_model", ( -4688, -7974, -64 ) ); - tarp.angles = ( 0, 0, 0 ); + tarp = spawn( "script_model", ( -4688, -7974, -64 ) ); + tarp.angles = ( 0, 0, 0 ); tarp setModel( "p6_zm_buildable_bench_tarp" ); } @@ -187,35 +187,35 @@ disable_zombie_spawn_locations() { zone = level.zones[ level.zone_keys[ z ] ]; - i = 0; - while ( i < zone.spawn_locations.size ) - { - if ( zone.spawn_locations[ i ].targetname == "zone_trans_diner_spawners") - { - zone.spawn_locations[ i ].is_enabled = false; - } - else if ( zone.spawn_locations[ i ].targetname == "zone_trans_diner2_spawners") - { - zone.spawn_locations[ i ].is_enabled = false; - } - else if ( zone.spawn_locations[ i ].origin == ( -3825, -6576, -52.7 ) ) - { - zone.spawn_locations[ i ].is_enabled = false; - } - else if ( zone.spawn_locations[ i ].origin == ( -5130, -6512, -35.4 ) ) - { - zone.spawn_locations[ i ].is_enabled = false; - } - else if ( zone.spawn_locations[ i ].origin == ( -6462, -7159, -64 ) ) - { - zone.spawn_locations[ i ].is_enabled = false; - } - else if ( zone.spawn_locations[ i ].origin == ( -6531, -6613, -54.4 ) ) - { - zone.spawn_locations[ i ].is_enabled = false; - } + i = 0; + while ( i < zone.spawn_locations.size ) + { + if ( zone.spawn_locations[ i ].targetname == "zone_trans_diner_spawners") + { + zone.spawn_locations[ i ].is_enabled = false; + } + else if ( zone.spawn_locations[ i ].targetname == "zone_trans_diner2_spawners") + { + zone.spawn_locations[ i ].is_enabled = false; + } + else if ( zone.spawn_locations[ i ].origin == ( -3825, -6576, -52.7 ) ) + { + zone.spawn_locations[ i ].is_enabled = false; + } + else if ( zone.spawn_locations[ i ].origin == ( -5130, -6512, -35.4 ) ) + { + zone.spawn_locations[ i ].is_enabled = false; + } + else if ( zone.spawn_locations[ i ].origin == ( -6462, -7159, -64 ) ) + { + zone.spawn_locations[ i ].is_enabled = false; + } + else if ( zone.spawn_locations[ i ].origin == ( -6531, -6613, -54.4 ) ) + { + zone.spawn_locations[ i ].is_enabled = false; + } - i++; + i++; } } } \ No newline at end of file diff --git a/scripts/zm/locs/zm_transit_loc_power.gsc b/scripts/zm/locs/zm_transit_loc_power.gsc index 5cd02133..6e19ac48 100644 --- a/scripts/zm/locs/zm_transit_loc_power.gsc +++ b/scripts/zm/locs/zm_transit_loc_power.gsc @@ -10,28 +10,28 @@ 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_quickrevive", "zombie_vending_quickrevive", ( 11855, 7308, -758 ), ( 0, 220, 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_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_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_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_weapupgrade", "p6_anim_zm_buildable_pap_on", ( 12333, 8158, -752 ), ( 0, 180, 0 ) ); ind = 0; - respawnpoints = maps\mp\gametypes_zm\_zm_gametype::get_player_spawns_for_gametype(); - for(i = 0; i < respawnpoints.size; i++) - { - if(respawnpoints[i].script_noteworthy == "zone_prr") - { - ind = i; - break; - } - } + respawnpoints = maps\mp\gametypes_zm\_zm_gametype::get_player_spawns_for_gametype(); + for(i = 0; i < respawnpoints.size; i++) + { + if(respawnpoints[i].script_noteworthy == "zone_prr") + { + ind = i; + break; + } + } zone = "zone_pow"; 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, 7932, -541), (0, 0, 0), zone, 1 ); scripts\zm\replaced\utility::register_map_spawn( (10160, 7868, -541), (0, 0, 0), zone, 1 ); @@ -43,9 +43,9 @@ struct_init() zone = "zone_prr"; scripts\zm\replaced\utility::register_map_spawn_group( respawnpoints[ind].origin, zone, respawnpoints[ind].script_int ); - respawn_array = getstructarray(respawnpoints[ind].target, "targetname"); - foreach(respawn in respawn_array) - { + respawn_array = getstructarray(respawnpoints[ind].target, "targetname"); + foreach(respawn in respawn_array) + { angles = respawn.angles; if (respawn.origin[0] < 12200) { @@ -56,13 +56,13 @@ struct_init() 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"; 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, 8846, -322), (0, 180, 0), zone ); scripts\zm\replaced\utility::register_map_spawn( (10630, 8846, -323), (0, -90, 0), zone ); @@ -79,23 +79,23 @@ precache() main() { - treasure_chest_init(); + treasure_chest_init(); init_wallbuys(); init_barriers(); - show_powerswitch(); + show_powerswitch(); activate_core(); generatebuildabletarps(); - disable_zombie_spawn_locations(); + disable_zombie_spawn_locations(); disable_player_spawn_locations(); scripts\zm\locs\loc_common::init(); } treasure_chest_init() { - chests = getstructarray( "treasure_chest_use", "targetname" ); + chests = getstructarray( "treasure_chest_use", "targetname" ); level.chests = []; 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() @@ -126,16 +126,16 @@ init_barriers() show_powerswitch() { - body = spawn( "script_model", ( 12237.4, 8512, -749.9 ) ); - body.angles = ( 0, 0, 0 ); + body = spawn( "script_model", ( 12237.4, 8512, -749.9 ) ); + body.angles = ( 0, 0, 0 ); body setModel( "p6_zm_buildable_pswitch_body" ); - lever = spawn( "script_model", ( 12237.4, 8503, -703.65 ) ); - lever.angles = ( 0, 0, 0 ); + lever = spawn( "script_model", ( 12237.4, 8503, -703.65 ) ); + lever.angles = ( 0, 0, 0 ); lever setModel( "p6_zm_buildable_pswitch_lever" ); - hand = spawn( "script_model", ( 12237.7, 8503.1, -684.55 ) ); - hand.angles = ( 0, 270, 0 ); + hand = spawn( "script_model", ( 12237.7, 8503.1, -684.55 ) ); + hand.angles = ( 0, 270, 0 ); hand setModel( "p6_zm_buildable_pswitch_hand" ); } @@ -152,13 +152,13 @@ generatebuildabletarps() { // trap tarp = spawn( "script_model", ( 11325, 8170, -488 ) ); - tarp.angles = ( 0, 0, 0 ); + tarp.angles = ( 0, 0, 0 ); tarp setModel( "p6_zm_buildable_bench_tarp" ); } disable_zombie_spawn_locations() { - level.zones["zone_trans_8"].is_spawning_allowed = 0; + level.zones["zone_trans_8"].is_spawning_allowed = 0; } disable_player_spawn_locations() diff --git a/scripts/zm/locs/zm_transit_loc_tunnel.gsc b/scripts/zm/locs/zm_transit_loc_tunnel.gsc index 9fcf5968..97315142 100644 --- a/scripts/zm/locs/zm_transit_loc_tunnel.gsc +++ b/scripts/zm/locs/zm_transit_loc_tunnel.gsc @@ -10,30 +10,30 @@ 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_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_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_weapupgrade", "p6_anim_zm_buildable_pap_on", ( -11301, -2096, 184 ), ( 0, 115, 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_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_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 ) ); - zone = "zone_amb_tunnel"; - 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( (-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( (-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( (-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( (-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( (-10965, -2987, 220), (0, 95, 0), zone ); + zone = "zone_amb_tunnel"; + 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( (-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( (-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( (-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( (-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( (-10965, -2987, 220), (0, 95, 0), zone ); } 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.angles = ( 0, 89, 0 ); start_chest = spawnStruct(); @@ -44,15 +44,15 @@ precache() collision = spawn( "script_model", start_chest_zbarrier.origin + ( 0, 0, 64 ), 1 ); collision.angles = start_chest_zbarrier.angles; collision setmodel( "collision_clip_32x32x128" ); - collision disconnectpaths(); + collision disconnectpaths(); collision = spawn( "script_model", start_chest_zbarrier.origin + ( 0, -32, 64 ), 1 ); collision.angles = start_chest_zbarrier.angles; collision setmodel( "collision_clip_32x32x128" ); - collision disconnectpaths(); + collision disconnectpaths(); collision = spawn( "script_model", start_chest_zbarrier.origin + ( 0, 32, 64 ), 1 ); collision.angles = start_chest_zbarrier.angles; collision setmodel( "collision_clip_32x32x128" ); - collision disconnectpaths(); + collision disconnectpaths(); level.chests = []; level.chests[0] = start_chest; @@ -62,32 +62,32 @@ main() { init_wallbuys(); init_barriers(); - disable_zombie_spawn_locations(); - maps\mp\zombies\_zm_magicbox::treasure_chest_init( random( array( "start_chest" ) ) ); + disable_zombie_spawn_locations(); + maps\mp\zombies\_zm_magicbox::treasure_chest_init( random( array( "start_chest" ) ) ); scripts\zm\locs\loc_common::init(); } init_wallbuys() { 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( "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( "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( "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( "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( "bowie_knife_zm", "bowie_knife", "bowie_upgrade", ( -10787, -1430, 247 ), ( 0, 88, 0 ) ); } init_barriers() { - origin = ( -11270, -500, 255 ); + origin = ( -11270, -500, 255 ); 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( "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( "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_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 ); - 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 ); } @@ -97,39 +97,39 @@ disable_zombie_spawn_locations() { zone = level.zones[ level.zone_keys[ z ] ]; - i = 0; - while ( i < zone.spawn_locations.size ) - { - if ( zone.spawn_locations[ i ].origin == ( -11447, -3424, 254.2 ) ) - { - zone.spawn_locations[ i ].is_enabled = false; - } - else if ( zone.spawn_locations[ i ].origin == ( -11093, 393, 192 ) ) - { - zone.spawn_locations[ i ].is_enabled = false; - } - else if ( zone.spawn_locations[ i ].origin == ( -10944, -3846, 221.14 ) ) - { - zone.spawn_locations[ i ].is_enabled = false; - } - else if ( zone.spawn_locations[ i ].origin == ( -10836, 1195, 209.7 ) ) - { - zone.spawn_locations[ i ].is_enabled = false; - } - else if ( zone.spawn_locations[ i ].origin == ( -11251, -4397, 200.02 ) ) - { - zone.spawn_locations[ i ].is_enabled = false; - } - else if ( zone.spawn_locations[ i ].origin == ( -11334, -5280, 212.7 ) ) - { - zone.spawn_locations[ i ].is_enabled = false; - } - else if ( zone.spawn_locations[ i ].origin == ( -11347, -3134, 283.9 ) ) - { - zone.spawn_locations[ i ].is_enabled = false; - } + i = 0; + while ( i < zone.spawn_locations.size ) + { + if ( zone.spawn_locations[ i ].origin == ( -11447, -3424, 254.2 ) ) + { + zone.spawn_locations[ i ].is_enabled = false; + } + else if ( zone.spawn_locations[ i ].origin == ( -11093, 393, 192 ) ) + { + zone.spawn_locations[ i ].is_enabled = false; + } + else if ( zone.spawn_locations[ i ].origin == ( -10944, -3846, 221.14 ) ) + { + zone.spawn_locations[ i ].is_enabled = false; + } + else if ( zone.spawn_locations[ i ].origin == ( -10836, 1195, 209.7 ) ) + { + zone.spawn_locations[ i ].is_enabled = false; + } + else if ( zone.spawn_locations[ i ].origin == ( -11251, -4397, 200.02 ) ) + { + zone.spawn_locations[ i ].is_enabled = false; + } + else if ( zone.spawn_locations[ i ].origin == ( -11334, -5280, 212.7 ) ) + { + zone.spawn_locations[ i ].is_enabled = false; + } + else if ( zone.spawn_locations[ i ].origin == ( -11347, -3134, 283.9 ) ) + { + zone.spawn_locations[ i ].is_enabled = false; + } - i++; - } + i++; + } } } \ No newline at end of file diff --git a/scripts/zm/replaced/_damagefeedback.gsc b/scripts/zm/replaced/_damagefeedback.gsc index 51ebf7e2..4d222dbd 100644 --- a/scripts/zm/replaced/_damagefeedback.gsc +++ b/scripts/zm/replaced/_damagefeedback.gsc @@ -2,5 +2,5 @@ onplayerconnect() { - // removed + // removed } \ No newline at end of file diff --git a/scripts/zm/replaced/_globallogic_ui.gsc b/scripts/zm/replaced/_globallogic_ui.gsc index 3598b391..5b122926 100644 --- a/scripts/zm/replaced/_globallogic_ui.gsc +++ b/scripts/zm/replaced/_globallogic_ui.gsc @@ -7,31 +7,31 @@ menuautoassign( comingfrommenu ) { - teamkeys = getarraykeys( level.teams ); - assignment = self get_assigned_team(); - self closemenus(); + teamkeys = getarraykeys( level.teams ); + assignment = self get_assigned_team(); + self closemenus(); - self.pers["team"] = assignment; - self.team = assignment; - self.pers["class"] = undefined; - self.class = undefined; - self.pers["weapon"] = undefined; - self.pers["savedmodel"] = undefined; - self updateobjectivetext(); + self.pers["team"] = assignment; + self.team = assignment; + self.pers["class"] = undefined; + self.class = undefined; + self.pers["weapon"] = undefined; + self.pers["savedmodel"] = undefined; + self updateobjectivetext(); - if ( level.teambased ) - self.sessionteam = assignment; - else - { - self.sessionteam = "none"; - self.ffateam = assignment; - } + if ( level.teambased ) + self.sessionteam = assignment; + else + { + self.sessionteam = "none"; + self.ffateam = assignment; + } - self notify( "joined_team" ); - level notify( "joined_team" ); - self notify( "end_respawn" ); - self beginclasschoice(); - self setclientscriptmainmenu( game["menu_class"] ); + self notify( "joined_team" ); + level notify( "joined_team" ); + self notify( "end_respawn" ); + self beginclasschoice(); + self setclientscriptmainmenu( game["menu_class"] ); } get_assigned_team() @@ -40,65 +40,65 @@ get_assigned_team() teamplayers["axis"] = 0; teamplayers["allies"] = 0; - players = get_players(); - foreach ( player in players ) - { - if ( !isDefined(player.team) || (player.team != "axis" && player.team != "allies") ) - { - continue; - } + players = get_players(); + foreach ( player in players ) + { + if ( !isDefined(player.team) || (player.team != "axis" && player.team != "allies") ) + { + continue; + } - if ( player == self ) - { - continue; - } + if ( player == self ) + { + continue; + } - teamplayers[player.team]++; - } + teamplayers[player.team]++; + } - if ( teamplayers["axis"] <= teamplayers["allies"] ) - { - guids = strTok(getDvar("team_axis"), " "); - foreach ( guid in guids ) - { - if ( self getguid() == int(guid) ) - { - arrayRemoveValue(guids, guid); + if ( teamplayers["axis"] <= teamplayers["allies"] ) + { + guids = strTok(getDvar("team_axis"), " "); + foreach ( guid in guids ) + { + if ( self getguid() == int(guid) ) + { + arrayRemoveValue(guids, guid); - guid_text = ""; - foreach (guid in guids) - { - guid_text += guid + " "; - } + guid_text = ""; + foreach (guid in guids) + { + guid_text += guid + " "; + } - setDvar("team_axis", guid_text); + setDvar("team_axis", guid_text); - return "axis"; - } - } - } + return "axis"; + } + } + } - if ( teamplayers["allies"] <= teamplayers["axis"] ) - { - guids = strTok(getDvar("team_allies"), " "); - foreach ( guid in guids ) - { - if ( self getguid() == int(guid) ) - { - arrayRemoveValue(guids, guid); + if ( teamplayers["allies"] <= teamplayers["axis"] ) + { + guids = strTok(getDvar("team_allies"), " "); + foreach ( guid in guids ) + { + if ( self getguid() == int(guid) ) + { + arrayRemoveValue(guids, guid); - guid_text = ""; - foreach (guid in guids) - { - guid_text += guid + " "; - } + guid_text = ""; + foreach (guid in guids) + { + guid_text += guid + " "; + } - setDvar("team_allies", guid_text); + setDvar("team_allies", guid_text); - return "allies"; - } - } - } + return "allies"; + } + } + } if ( teamplayers["allies"] == teamplayers["axis"] ) { diff --git a/scripts/zm/replaced/_hud_message.gsc b/scripts/zm/replaced/_hud_message.gsc index 71d9f919..5e45e9a2 100644 --- a/scripts/zm/replaced/_hud_message.gsc +++ b/scripts/zm/replaced/_hud_message.gsc @@ -6,5 +6,5 @@ onplayerconnect() { - // removed + // removed } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm.gsc b/scripts/zm/replaced/_zm.gsc index eaa4e112..4bb6ff89 100644 --- a/scripts/zm/replaced/_zm.gsc +++ b/scripts/zm/replaced/_zm.gsc @@ -6,219 +6,219 @@ round_start() { - if ( isdefined( level.round_prestart_func ) ) - [[ level.round_prestart_func ]](); - else - { - n_delay = 2; + if ( isdefined( level.round_prestart_func ) ) + [[ level.round_prestart_func ]](); + else + { + n_delay = 2; - if ( isdefined( level.zombie_round_start_delay ) ) - n_delay = level.zombie_round_start_delay; + if ( isdefined( level.zombie_round_start_delay ) ) + n_delay = level.zombie_round_start_delay; - wait( n_delay ); - } + wait( n_delay ); + } - level.zombie_health = level.zombie_vars["zombie_health_start"]; + level.zombie_health = level.zombie_vars["zombie_health_start"]; - if ( getdvarint( "scr_writeConfigStrings" ) == 1 ) - { - wait 5; - exitlevel(); - return; - } + if ( getdvarint( "scr_writeConfigStrings" ) == 1 ) + { + wait 5; + exitlevel(); + return; + } - if ( level.zombie_vars["game_start_delay"] > 0 ) - round_pause( level.zombie_vars["game_start_delay"] ); + if ( level.zombie_vars["game_start_delay"] > 0 ) + round_pause( level.zombie_vars["game_start_delay"] ); - flag_set( "begin_spawning" ); + flag_set( "begin_spawning" ); - if ( !isdefined( level.round_spawn_func ) ) - level.round_spawn_func = ::round_spawning; + if ( !isdefined( level.round_spawn_func ) ) + level.round_spawn_func = ::round_spawning; - if ( !isdefined( level.round_wait_func ) ) - level.round_wait_func = ::round_wait; + if ( !isdefined( level.round_wait_func ) ) + level.round_wait_func = ::round_wait; - if ( !isdefined( level.round_think_func ) ) - level.round_think_func = ::round_think; + if ( !isdefined( level.round_think_func ) ) + level.round_think_func = ::round_think; - level thread [[ level.round_think_func ]](); + level thread [[ level.round_think_func ]](); } round_spawning() { - level endon( "intermission" ); - level endon( "end_of_round" ); - level endon( "restart_round" ); + level endon( "intermission" ); + level endon( "end_of_round" ); + level endon( "restart_round" ); - if ( level.intermission ) - return; + if ( level.intermission ) + return; - if ( level.zombie_spawn_locations.size < 1 ) - { - return; - } + if ( level.zombie_spawn_locations.size < 1 ) + { + return; + } - ai_calculate_health( level.round_number ); - count = 0; - players = get_players(); + ai_calculate_health( level.round_number ); + count = 0; + players = get_players(); - for ( i = 0; i < players.size; i++ ) - players[i].zombification_time = 0; + for ( i = 0; i < players.size; i++ ) + players[i].zombification_time = 0; - max = level.zombie_vars["zombie_max_ai"]; - multiplier = level.round_number / 5; + max = level.zombie_vars["zombie_max_ai"]; + multiplier = level.round_number / 5; - if ( multiplier < 1 ) - multiplier = 1; + if ( multiplier < 1 ) + multiplier = 1; - if ( level.round_number >= 10 ) - multiplier *= ( level.round_number * 0.15 ); + if ( level.round_number >= 10 ) + multiplier *= ( level.round_number * 0.15 ); - player_num = get_players().size; + player_num = get_players().size; max += int( ( player_num * 0.5 ) * level.zombie_vars["zombie_ai_per_player"] * multiplier ); - if ( !isdefined( level.max_zombie_func ) ) - level.max_zombie_func = ::default_max_zombie_func; + if ( !isdefined( level.max_zombie_func ) ) + level.max_zombie_func = ::default_max_zombie_func; - if ( !( isdefined( level.kill_counter_hud ) && level.zombie_total > 0 ) ) - { - level.zombie_total = [[ level.max_zombie_func ]]( max ); - level notify( "zombie_total_set" ); - } + if ( !( isdefined( level.kill_counter_hud ) && level.zombie_total > 0 ) ) + { + level.zombie_total = [[ level.max_zombie_func ]]( max ); + level notify( "zombie_total_set" ); + } - if ( isdefined( level.zombie_total_set_func ) ) - level thread [[ level.zombie_total_set_func ]](); + if ( isdefined( level.zombie_total_set_func ) ) + level thread [[ level.zombie_total_set_func ]](); - if ( level.round_number < 10 || level.speed_change_max > 0 ) - level thread zombie_speed_up(); + if ( level.round_number < 10 || level.speed_change_max > 0 ) + level thread zombie_speed_up(); - mixed_spawns = 0; - old_spawn = undefined; + mixed_spawns = 0; + old_spawn = undefined; - while ( true ) - { - while ( get_current_zombie_count() >= level.zombie_ai_limit || level.zombie_total <= 0 ) - wait 0.1; + while ( true ) + { + while ( get_current_zombie_count() >= level.zombie_ai_limit || level.zombie_total <= 0 ) + wait 0.1; - while ( get_current_actor_count() >= level.zombie_actor_limit ) - { - clear_all_corpses(); - wait 0.1; - } + while ( get_current_actor_count() >= level.zombie_actor_limit ) + { + clear_all_corpses(); + wait 0.1; + } - flag_wait( "spawn_zombies" ); + flag_wait( "spawn_zombies" ); - while ( level.zombie_spawn_locations.size <= 0 ) - wait 0.1; + while ( level.zombie_spawn_locations.size <= 0 ) + wait 0.1; - run_custom_ai_spawn_checks(); - spawn_point = level.zombie_spawn_locations[randomint( level.zombie_spawn_locations.size )]; + run_custom_ai_spawn_checks(); + spawn_point = level.zombie_spawn_locations[randomint( level.zombie_spawn_locations.size )]; - if ( !isdefined( old_spawn ) ) - old_spawn = spawn_point; - else if ( spawn_point == old_spawn ) - spawn_point = level.zombie_spawn_locations[randomint( level.zombie_spawn_locations.size )]; + if ( !isdefined( old_spawn ) ) + old_spawn = spawn_point; + else if ( spawn_point == old_spawn ) + spawn_point = level.zombie_spawn_locations[randomint( level.zombie_spawn_locations.size )]; - old_spawn = spawn_point; + old_spawn = spawn_point; - if ( isdefined( level.mixed_rounds_enabled ) && level.mixed_rounds_enabled == 1 ) - { - spawn_dog = 0; + if ( isdefined( level.mixed_rounds_enabled ) && level.mixed_rounds_enabled == 1 ) + { + spawn_dog = 0; - if ( level.round_number > 30 ) - { - if ( randomint( 100 ) < 3 ) - spawn_dog = 1; - } - else if ( level.round_number > 25 && mixed_spawns < 3 ) - { - if ( randomint( 100 ) < 2 ) - spawn_dog = 1; - } - else if ( level.round_number > 20 && mixed_spawns < 2 ) - { - if ( randomint( 100 ) < 2 ) - spawn_dog = 1; - } - else if ( level.round_number > 15 && mixed_spawns < 1 ) - { - if ( randomint( 100 ) < 1 ) - spawn_dog = 1; - } + if ( level.round_number > 30 ) + { + if ( randomint( 100 ) < 3 ) + spawn_dog = 1; + } + else if ( level.round_number > 25 && mixed_spawns < 3 ) + { + if ( randomint( 100 ) < 2 ) + spawn_dog = 1; + } + else if ( level.round_number > 20 && mixed_spawns < 2 ) + { + if ( randomint( 100 ) < 2 ) + spawn_dog = 1; + } + else if ( level.round_number > 15 && mixed_spawns < 1 ) + { + if ( randomint( 100 ) < 1 ) + spawn_dog = 1; + } - if ( spawn_dog ) - { - keys = getarraykeys( level.zones ); + if ( spawn_dog ) + { + keys = getarraykeys( level.zones ); - for ( i = 0; i < keys.size; i++ ) - { - if ( level.zones[keys[i]].is_occupied ) - { - akeys = getarraykeys( level.zones[keys[i]].adjacent_zones ); + for ( i = 0; i < keys.size; i++ ) + { + if ( level.zones[keys[i]].is_occupied ) + { + akeys = getarraykeys( level.zones[keys[i]].adjacent_zones ); - for ( k = 0; k < akeys.size; k++ ) - { - if ( level.zones[akeys[k]].is_active && !level.zones[akeys[k]].is_occupied && level.zones[akeys[k]].dog_locations.size > 0 ) - { - maps\mp\zombies\_zm_ai_dogs::special_dog_spawn( undefined, 1 ); - level.zombie_total--; - wait_network_frame(); - } - } - } - } - } - } + for ( k = 0; k < akeys.size; k++ ) + { + if ( level.zones[akeys[k]].is_active && !level.zones[akeys[k]].is_occupied && level.zones[akeys[k]].dog_locations.size > 0 ) + { + maps\mp\zombies\_zm_ai_dogs::special_dog_spawn( undefined, 1 ); + level.zombie_total--; + wait_network_frame(); + } + } + } + } + } + } - if ( isdefined( level.zombie_spawners ) ) - { - if ( isdefined( level.use_multiple_spawns ) && level.use_multiple_spawns ) - { - if ( isdefined( spawn_point.script_int ) ) - { - if ( isdefined( level.zombie_spawn[spawn_point.script_int] ) && level.zombie_spawn[spawn_point.script_int].size ) - spawner = random( level.zombie_spawn[spawn_point.script_int] ); - } - else if ( isdefined( level.zones[spawn_point.zone_name].script_int ) && level.zones[spawn_point.zone_name].script_int ) - spawner = random( level.zombie_spawn[level.zones[spawn_point.zone_name].script_int] ); - else if ( isdefined( level.spawner_int ) && ( isdefined( level.zombie_spawn[level.spawner_int].size ) && level.zombie_spawn[level.spawner_int].size ) ) - spawner = random( level.zombie_spawn[level.spawner_int] ); - else - spawner = random( level.zombie_spawners ); - } - else - spawner = random( level.zombie_spawners ); + if ( isdefined( level.zombie_spawners ) ) + { + if ( isdefined( level.use_multiple_spawns ) && level.use_multiple_spawns ) + { + if ( isdefined( spawn_point.script_int ) ) + { + if ( isdefined( level.zombie_spawn[spawn_point.script_int] ) && level.zombie_spawn[spawn_point.script_int].size ) + spawner = random( level.zombie_spawn[spawn_point.script_int] ); + } + else if ( isdefined( level.zones[spawn_point.zone_name].script_int ) && level.zones[spawn_point.zone_name].script_int ) + spawner = random( level.zombie_spawn[level.zones[spawn_point.zone_name].script_int] ); + else if ( isdefined( level.spawner_int ) && ( isdefined( level.zombie_spawn[level.spawner_int].size ) && level.zombie_spawn[level.spawner_int].size ) ) + spawner = random( level.zombie_spawn[level.spawner_int] ); + else + spawner = random( level.zombie_spawners ); + } + else + spawner = random( level.zombie_spawners ); - ai = spawn_zombie( spawner, spawner.targetname, spawn_point ); - } + ai = spawn_zombie( spawner, spawner.targetname, spawn_point ); + } - if ( isdefined( ai ) ) - { - level.zombie_total--; - ai thread round_spawn_failsafe(); - count++; - } + if ( isdefined( ai ) ) + { + level.zombie_total--; + ai thread round_spawn_failsafe(); + count++; + } - wait( level.zombie_vars["zombie_spawn_delay"] ); - wait_network_frame(); - } + wait( level.zombie_vars["zombie_spawn_delay"] ); + wait_network_frame(); + } } round_spawn_failsafe() { - self endon( "death" ); - prevorigin = self.origin; + self endon( "death" ); + prevorigin = self.origin; prevorigin_time = gettime(); - while ( true ) - { - if ( isdefined( self.ignore_round_spawn_failsafe ) && self.ignore_round_spawn_failsafe ) - return; + while ( true ) + { + if ( isdefined( self.ignore_round_spawn_failsafe ) && self.ignore_round_spawn_failsafe ) + return; - wait 0.05; + wait 0.05; - if ( isdefined( self.is_inert ) && self.is_inert ) + if ( isdefined( self.is_inert ) && self.is_inert ) { prevorigin = self.origin; prevorigin_time = gettime(); @@ -239,93 +239,93 @@ round_spawn_failsafe() continue; } - if ( isdefined( self.lastchunk_destroy_time ) ) - { - if ( gettime() - self.lastchunk_destroy_time < 4000 ) + if ( isdefined( self.lastchunk_destroy_time ) ) + { + if ( gettime() - self.lastchunk_destroy_time < 4000 ) { prevorigin = self.origin; prevorigin_time = gettime(); continue; } - } + } - if ( self.origin[2] < level.zombie_vars["below_world_check"] ) - { - if ( isdefined( level.put_timed_out_zombies_back_in_queue ) && level.put_timed_out_zombies_back_in_queue && !flag( "dog_round" ) && !( isdefined( self.isscreecher ) && self.isscreecher ) ) - { - level.zombie_total++; - level.zombie_total_subtract++; - } + if ( self.origin[2] < level.zombie_vars["below_world_check"] ) + { + if ( isdefined( level.put_timed_out_zombies_back_in_queue ) && level.put_timed_out_zombies_back_in_queue && !flag( "dog_round" ) && !( isdefined( self.isscreecher ) && self.isscreecher ) ) + { + level.zombie_total++; + level.zombie_total_subtract++; + } - self dodamage( self.health + 100, ( 0, 0, 0 ) ); - break; - } + self dodamage( self.health + 100, ( 0, 0, 0 ) ); + break; + } - if ( distancesquared( self.origin, prevorigin ) < 576 ) - { + if ( distancesquared( self.origin, prevorigin ) < 576 ) + { if ( gettime() - prevorigin_time < 15000 ) - continue; + continue; - if ( isdefined( level.put_timed_out_zombies_back_in_queue ) && level.put_timed_out_zombies_back_in_queue && !flag( "dog_round" ) ) - { - if ( !self.ignoreall && !( isdefined( self.nuked ) && self.nuked ) && !( isdefined( self.marked_for_death ) && self.marked_for_death ) && !( isdefined( self.isscreecher ) && self.isscreecher ) && !( isdefined( self.is_brutus ) && self.is_brutus ) ) - { - level.zombie_total++; - level.zombie_total_subtract++; + if ( isdefined( level.put_timed_out_zombies_back_in_queue ) && level.put_timed_out_zombies_back_in_queue && !flag( "dog_round" ) ) + { + if ( !self.ignoreall && !( isdefined( self.nuked ) && self.nuked ) && !( isdefined( self.marked_for_death ) && self.marked_for_death ) && !( isdefined( self.isscreecher ) && self.isscreecher ) && !( isdefined( self.is_brutus ) && self.is_brutus ) ) + { + level.zombie_total++; + level.zombie_total_subtract++; 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; + } + } - level.zombies_timeout_playspace++; + level.zombies_timeout_playspace++; if ( isdefined( self.is_brutus ) && self.is_brutus ) - { - self.suppress_brutus_powerup_drop = 1; - self.brutus_round_spawn_failsafe = 1; - } + { + self.suppress_brutus_powerup_drop = 1; + self.brutus_round_spawn_failsafe = 1; + } - self dodamage( self.health + 100, ( 0, 0, 0 ) ); - break; - } + self dodamage( self.health + 100, ( 0, 0, 0 ) ); + break; + } else { prevorigin = self.origin; prevorigin_time = gettime(); } - } + } } round_think( restart = 0 ) { - level endon( "end_round_think" ); + level endon( "end_round_think" ); - if ( !( isdefined( restart ) && restart ) ) - { - if ( isdefined( level.initial_round_wait_func ) ) - [[ level.initial_round_wait_func ]](); + if ( !( isdefined( restart ) && restart ) ) + { + if ( isdefined( level.initial_round_wait_func ) ) + [[ level.initial_round_wait_func ]](); - if ( !( isdefined( level.host_ended_game ) && level.host_ended_game ) ) - { - players = get_players(); + if ( !( isdefined( level.host_ended_game ) && level.host_ended_game ) ) + { + players = get_players(); - foreach ( player in players ) - { - if ( !( isdefined( player.hostmigrationcontrolsfrozen ) && player.hostmigrationcontrolsfrozen ) ) - { - player freezecontrols( 0 ); - } + foreach ( player in players ) + { + if ( !( isdefined( player.hostmigrationcontrolsfrozen ) && player.hostmigrationcontrolsfrozen ) ) + { + player freezecontrols( 0 ); + } - player maps\mp\zombies\_zm_stats::set_global_stat( "rounds", level.round_number ); - } - } - } + player maps\mp\zombies\_zm_stats::set_global_stat( "rounds", level.round_number ); + } + } + } - setroundsplayed( level.round_number ); + setroundsplayed( level.round_number ); - for (;;) - { + for (;;) + { if (!is_gametype_active("zgrief")) { level.player_starting_points = (level.round_number + 1) * 500; @@ -335,128 +335,128 @@ round_think( restart = 0 ) } } - maxreward = 50 * level.round_number; + maxreward = 50 * level.round_number; - if ( maxreward > 500 ) - maxreward = 500; + if ( maxreward > 500 ) + maxreward = 500; - level.zombie_vars["rebuild_barrier_cap_per_round"] = maxreward; - level.pro_tips_start_time = gettime(); - level.zombie_last_run_time = gettime(); + level.zombie_vars["rebuild_barrier_cap_per_round"] = maxreward; + level.pro_tips_start_time = gettime(); + level.zombie_last_run_time = gettime(); - if ( isdefined( level.zombie_round_change_custom ) ) - [[ level.zombie_round_change_custom ]](); - else - { - level thread maps\mp\zombies\_zm_audio::change_zombie_music( "round_start" ); - round_one_up(); - } + if ( isdefined( level.zombie_round_change_custom ) ) + [[ level.zombie_round_change_custom ]](); + else + { + level thread maps\mp\zombies\_zm_audio::change_zombie_music( "round_start" ); + round_one_up(); + } - maps\mp\zombies\_zm_powerups::powerup_round_start(); - players = get_players(); - array_thread( players, maps\mp\zombies\_zm_blockers::rebuild_barrier_reward_reset ); + maps\mp\zombies\_zm_powerups::powerup_round_start(); + players = get_players(); + array_thread( players, maps\mp\zombies\_zm_blockers::rebuild_barrier_reward_reset ); - if ( !( isdefined( level.headshots_only ) && level.headshots_only ) && !restart ) - level thread award_grenades_for_survivors(); + if ( !( isdefined( level.headshots_only ) && level.headshots_only ) && !restart ) + level thread award_grenades_for_survivors(); - bbprint( "zombie_rounds", "round %d player_count %d", level.round_number, players.size ); + bbprint( "zombie_rounds", "round %d player_count %d", level.round_number, players.size ); - level.round_start_time = gettime(); + level.round_start_time = gettime(); - while ( level.zombie_spawn_locations.size <= 0 ) - wait 0.1; + while ( level.zombie_spawn_locations.size <= 0 ) + wait 0.1; - level thread [[ level.round_spawn_func ]](); - level notify( "start_of_round" ); - recordzombieroundstart(); - players = getplayers(); + level thread [[ level.round_spawn_func ]](); + level notify( "start_of_round" ); + recordzombieroundstart(); + players = getplayers(); - for ( index = 0; index < players.size; index++ ) - { - zonename = players[index] get_current_zone(); + for ( index = 0; index < players.size; index++ ) + { + zonename = players[index] get_current_zone(); - if ( isdefined( zonename ) ) - players[index] recordzombiezone( "startingZone", zonename ); - } + if ( isdefined( zonename ) ) + players[index] recordzombiezone( "startingZone", zonename ); + } - if ( isdefined( level.round_start_custom_func ) ) - [[ level.round_start_custom_func ]](); + if ( isdefined( level.round_start_custom_func ) ) + [[ level.round_start_custom_func ]](); - [[ level.round_wait_func ]](); - level.first_round = 0; - level notify( "end_of_round" ); - level thread maps\mp\zombies\_zm_audio::change_zombie_music( "round_end" ); - uploadstats(); + [[ level.round_wait_func ]](); + level.first_round = 0; + level notify( "end_of_round" ); + level thread maps\mp\zombies\_zm_audio::change_zombie_music( "round_end" ); + uploadstats(); - if ( isdefined( level.round_end_custom_logic ) ) - [[ level.round_end_custom_logic ]](); + if ( isdefined( level.round_end_custom_logic ) ) + [[ level.round_end_custom_logic ]](); - players = get_players(); + players = get_players(); - if ( isdefined( level.no_end_game_check ) && level.no_end_game_check ) - { - level thread last_stand_revive(); - level thread spectators_respawn(); - } - else if ( 1 != players.size ) - level thread spectators_respawn(); + if ( isdefined( level.no_end_game_check ) && level.no_end_game_check ) + { + level thread last_stand_revive(); + level thread spectators_respawn(); + } + else if ( 1 != players.size ) + level thread spectators_respawn(); - players = get_players(); - array_thread( players, maps\mp\zombies\_zm_pers_upgrades_system::round_end ); - timer = level.zombie_vars["zombie_spawn_delay"]; + players = get_players(); + array_thread( players, maps\mp\zombies\_zm_pers_upgrades_system::round_end ); + timer = level.zombie_vars["zombie_spawn_delay"]; - if ( timer > 0.08 ) - level.zombie_vars["zombie_spawn_delay"] = timer * 0.95; - else if ( timer < 0.08 ) - level.zombie_vars["zombie_spawn_delay"] = 0.08; + if ( timer > 0.08 ) + level.zombie_vars["zombie_spawn_delay"] = timer * 0.95; + else if ( timer < 0.08 ) + level.zombie_vars["zombie_spawn_delay"] = 0.08; - if ( level.gamedifficulty == 0 ) - level.zombie_move_speed = level.round_number * level.zombie_vars["zombie_move_speed_multiplier_easy"]; - else - level.zombie_move_speed = level.round_number * level.zombie_vars["zombie_move_speed_multiplier"]; + if ( level.gamedifficulty == 0 ) + level.zombie_move_speed = level.round_number * level.zombie_vars["zombie_move_speed_multiplier_easy"]; + else + level.zombie_move_speed = level.round_number * level.zombie_vars["zombie_move_speed_multiplier"]; - level.round_number++; + level.round_number++; - setroundsplayed( level.round_number + int(level.round_number / 256) ); - matchutctime = getutc(); - players = get_players(); + setroundsplayed( level.round_number + int(level.round_number / 256) ); + matchutctime = getutc(); + players = get_players(); - foreach ( player in players ) - { - if ( level.curr_gametype_affects_rank && level.round_number > 3 + level.start_round ) - player maps\mp\zombies\_zm_stats::add_client_stat( "weighted_rounds_played", level.round_number ); + foreach ( player in players ) + { + if ( level.curr_gametype_affects_rank && level.round_number > 3 + level.start_round ) + player maps\mp\zombies\_zm_stats::add_client_stat( "weighted_rounds_played", level.round_number ); - player maps\mp\zombies\_zm_stats::set_global_stat( "rounds", level.round_number ); - player maps\mp\zombies\_zm_stats::update_playing_utc_time( matchutctime ); - } + player maps\mp\zombies\_zm_stats::set_global_stat( "rounds", level.round_number ); + player maps\mp\zombies\_zm_stats::update_playing_utc_time( matchutctime ); + } - check_quickrevive_for_hotjoin(); - level round_over(); - level notify( "between_round_over" ); - restart = 0; - } + check_quickrevive_for_hotjoin(); + level round_over(); + level notify( "between_round_over" ); + restart = 0; + } } spectators_respawn() { - level endon( "between_round_over" ); + level endon( "between_round_over" ); - if ( !isdefined( level.zombie_vars["spectators_respawn"] ) || !level.zombie_vars["spectators_respawn"] ) - return; + if ( !isdefined( level.zombie_vars["spectators_respawn"] ) || !level.zombie_vars["spectators_respawn"] ) + return; - if ( !isdefined( level.custom_spawnplayer ) ) - level.custom_spawnplayer = ::spectator_respawn; + if ( !isdefined( level.custom_spawnplayer ) ) + level.custom_spawnplayer = ::spectator_respawn; - while ( true ) - { - players = get_players(); + while ( true ) + { + players = get_players(); - for ( i = 0; i < players.size; i++ ) - { - if ( players[i].sessionstate == "spectator" && isdefined( players[i].spectator_respawn ) ) - { - players[i] [[ level.spawnplayer ]](); - thread refresh_player_navcard_hud(); + for ( i = 0; i < players.size; i++ ) + { + if ( players[i].sessionstate == "spectator" && isdefined( players[i].spectator_respawn ) ) + { + players[i] [[ level.spawnplayer ]](); + thread refresh_player_navcard_hud(); new_score = (level.round_number + 1) * 250; if (new_score > 1500) @@ -464,20 +464,20 @@ spectators_respawn() new_score = 1500; } - if ( players[i].score < new_score ) - { - players[i].old_score = players[i].score; + if ( players[i].score < new_score ) + { + players[i].old_score = players[i].score; - if ( isdefined( level.spectator_respawn_custom_score ) ) - players[i] [[ level.spectator_respawn_custom_score ]](); + if ( isdefined( level.spectator_respawn_custom_score ) ) + players[i] [[ level.spectator_respawn_custom_score ]](); - players[i].score = new_score; - } - } - } + players[i].score = new_score; + } + } + } - wait 1; - } + wait 1; + } } ai_calculate_health( round_number ) @@ -516,96 +516,96 @@ ai_calculate_health( round_number ) onallplayersready() { - timeout = gettime() + 5000; + timeout = gettime() + 5000; - while ( getnumexpectedplayers() == 0 && gettime() < timeout ) - wait 0.1; + while ( getnumexpectedplayers() == 0 && gettime() < timeout ) + wait 0.1; - player_count_actual = 0; + player_count_actual = 0; - while ( getnumconnectedplayers() < getnumexpectedplayers() || player_count_actual != getnumexpectedplayers() ) - { - players = get_players(); - player_count_actual = 0; + while ( getnumconnectedplayers() < getnumexpectedplayers() || player_count_actual != getnumexpectedplayers() ) + { + players = get_players(); + player_count_actual = 0; - for ( i = 0; i < players.size; i++ ) - { - players[i] freezecontrols( 1 ); + for ( i = 0; i < players.size; i++ ) + { + players[i] freezecontrols( 1 ); - if ( players[i].sessionstate == "playing" ) - player_count_actual++; - } + if ( players[i].sessionstate == "playing" ) + player_count_actual++; + } - wait 0.1; - } + wait 0.1; + } - setinitialplayersconnected(); + setinitialplayersconnected(); - if ( 1 == getnumconnectedplayers() && getdvarint( "scr_zm_enable_bots" ) == 1 ) - { - level thread add_bots(); - flag_set( "initial_players_connected" ); - } - else - { - players = get_players(); + if ( 1 == getnumconnectedplayers() && getdvarint( "scr_zm_enable_bots" ) == 1 ) + { + level thread add_bots(); + flag_set( "initial_players_connected" ); + } + else + { + players = get_players(); - if ( players.size == 1 && level.scr_zm_ui_gametype != "zgrief" ) - { - flag_set( "solo_game" ); - level.solo_lives_given = 0; + if ( players.size == 1 && level.scr_zm_ui_gametype != "zgrief" ) + { + flag_set( "solo_game" ); + level.solo_lives_given = 0; - foreach ( player in players ) - player.lives = 0; + foreach ( player in players ) + player.lives = 0; - level maps\mp\zombies\_zm::set_default_laststand_pistol( 1 ); - } + level maps\mp\zombies\_zm::set_default_laststand_pistol( 1 ); + } - flag_set( "initial_players_connected" ); + flag_set( "initial_players_connected" ); - while ( !aretexturesloaded() ) - wait 0.05; + while ( !aretexturesloaded() ) + wait 0.05; - thread start_zombie_logic_in_x_sec( 3.0 ); - } + thread start_zombie_logic_in_x_sec( 3.0 ); + } setDvar("team_axis", ""); setDvar("team_allies", ""); - fade_out_intro_screen_zm( 5.0, 1.5, 1 ); + fade_out_intro_screen_zm( 5.0, 1.5, 1 ); } fade_out_intro_screen_zm( hold_black_time, fade_out_time, destroyed_afterwards ) { flag_init( "hud_visible" ); - if ( !isdefined( level.introscreen ) ) - { - level.introscreen = newhudelem(); - level.introscreen.x = 0; - level.introscreen.y = 0; - level.introscreen.horzalign = "fullscreen"; - level.introscreen.vertalign = "fullscreen"; - level.introscreen.foreground = 0; - level.introscreen setshader( "black", 640, 480 ); - level.introscreen.immunetodemogamehudsettings = 1; - level.introscreen.immunetodemofreecamera = 1; - wait 0.05; - } + if ( !isdefined( level.introscreen ) ) + { + level.introscreen = newhudelem(); + level.introscreen.x = 0; + level.introscreen.y = 0; + level.introscreen.horzalign = "fullscreen"; + level.introscreen.vertalign = "fullscreen"; + level.introscreen.foreground = 0; + level.introscreen setshader( "black", 640, 480 ); + level.introscreen.immunetodemogamehudsettings = 1; + level.introscreen.immunetodemofreecamera = 1; + wait 0.05; + } - level.introscreen.alpha = 1; + level.introscreen.alpha = 1; - if ( isdefined( hold_black_time ) ) - wait( hold_black_time ); - else - wait 0.2; + if ( isdefined( hold_black_time ) ) + wait( hold_black_time ); + else + wait 0.2; - if ( !isdefined( fade_out_time ) ) - fade_out_time = 1.5; + if ( !isdefined( fade_out_time ) ) + fade_out_time = 1.5; - level.introscreen fadeovertime( fade_out_time ); - level.introscreen.alpha = 0; - wait 1.6; + level.introscreen fadeovertime( fade_out_time ); + level.introscreen.alpha = 0; + wait 1.6; level.passed_introscreen = 1; @@ -618,7 +618,7 @@ fade_out_intro_screen_zm( hold_black_time, fade_out_time, destroyed_afterwards ) flag_set( "hud_visible" ); if ( isDedicated() || ( is_gametype_active("zgrief") && getDvarInt("ui_gametype_team_change") ) ) - { + { flag_init( "all_players_ready" ); level thread wait_for_all_players_ready(); @@ -626,28 +626,28 @@ fade_out_intro_screen_zm( hold_black_time, fade_out_time, destroyed_afterwards ) flag_wait( "all_players_ready" ); } - players = get_players(); - for ( i = 0; i < players.size; i++ ) - { - if ( !( isdefined( level.host_ended_game ) && level.host_ended_game ) ) - { - if ( isdefined( level.player_movement_suppressed ) ) - { - players[i] freezecontrols( level.player_movement_suppressed ); - continue; - } + players = get_players(); + for ( i = 0; i < players.size; i++ ) + { + if ( !( isdefined( level.host_ended_game ) && level.host_ended_game ) ) + { + if ( isdefined( level.player_movement_suppressed ) ) + { + players[i] freezecontrols( level.player_movement_suppressed ); + continue; + } - if ( !( isdefined( players[i].hostmigrationcontrolsfrozen ) && players[i].hostmigrationcontrolsfrozen ) ) - { - players[i] freezecontrols( 0 ); - } - } - } + if ( !( isdefined( players[i].hostmigrationcontrolsfrozen ) && players[i].hostmigrationcontrolsfrozen ) ) + { + players[i] freezecontrols( 0 ); + } + } + } - if ( destroyed_afterwards == 1 ) - level.introscreen destroy(); + if ( destroyed_afterwards == 1 ) + level.introscreen destroy(); - flag_set( "initial_blackscreen_passed" ); + flag_set( "initial_blackscreen_passed" ); } wait_for_all_players_ready() @@ -709,7 +709,7 @@ wait_for_all_players_ready() } if ( isDedicated() && !(is_gametype_active("zgrief") && getDvarInt("ui_gametype_team_change")) ) - { + { level.ready_up_time = 60; level.ready_up_start_time = getTime(); level.ready_up_start_players = get_players(); @@ -860,12 +860,12 @@ wait_for_all_players_ready() get_number_of_waiting_players() { - num = 0; + num = 0; players = get_players(); - for ( i = 0; i < players.size; i++ ) - { - if ( is_player_valid( players[i] ) || is_true( players[i].afterlife ) ) + for ( i = 0; i < players.size; i++ ) + { + if ( is_player_valid( players[i] ) || is_true( players[i].afterlife ) ) { players[i].waiting = 1; } @@ -874,24 +874,24 @@ get_number_of_waiting_players() { num++; } - } + } - return num; + return num; } get_number_of_ready_players() { - num = 0; + num = 0; players = get_players(); - for ( i = 0; i < players.size; i++ ) - { + for ( i = 0; i < players.size; i++ ) + { if ( players[i] jumpbuttonpressed() || players[i] usebuttonpressed() || players[i] is_bot() ) { players[i].ready = 1; } - if ( is_true( players[i].ready ) ) + if ( is_true( players[i].ready ) ) { num++; players[i].statusicon = "menu_mp_killstreak_select"; @@ -900,9 +900,9 @@ get_number_of_ready_players() { players[i].statusicon = "menu_mp_contract_expired"; } - } + } - return num; + return num; } check_for_team_change() @@ -1027,20 +1027,20 @@ last_stand_pistol_rank_init() last_stand_best_pistol() { - pistol_array = []; - current_weapons = self getweaponslistprimaries(); + pistol_array = []; + current_weapons = self getweaponslistprimaries(); - for ( i = 0; i < current_weapons.size; i++ ) - { - class = weaponclass( current_weapons[i] ); + for ( i = 0; i < current_weapons.size; i++ ) + { + class = weaponclass( current_weapons[i] ); - if ( issubstr( current_weapons[i], "knife_ballistic_" ) ) - class = "knife"; + if ( issubstr( current_weapons[i], "knife_ballistic_" ) ) + class = "knife"; - if ( class == "pistol" || class == "pistolspread" || class == "pistol spread" ) - { - if ( current_weapons[i] != level.default_laststandpistol && !flag( "solo_game" ) || !flag( "solo_game" ) && current_weapons[i] != level.default_solo_laststandpistol ) - { + if ( class == "pistol" || class == "pistolspread" || class == "pistol spread" ) + { + if ( current_weapons[i] != level.default_laststandpistol && !flag( "solo_game" ) || !flag( "solo_game" ) && current_weapons[i] != level.default_solo_laststandpistol ) + { ammo_count = self getammocount( current_weapons[i] ); dual_wield_name = weapondualwieldweaponname( current_weapons[i] ); @@ -1049,93 +1049,93 @@ last_stand_best_pistol() ammo_count += self getweaponammoclip( dual_wield_name ); } - if ( ammo_count <= 0 ) - continue; - } + if ( ammo_count <= 0 ) + continue; + } - pistol_array_index = pistol_array.size; - pistol_array[pistol_array_index] = spawnstruct(); - pistol_array[pistol_array_index].gun = current_weapons[i]; - pistol_array[pistol_array_index].value = 0; + pistol_array_index = pistol_array.size; + pistol_array[pistol_array_index] = spawnstruct(); + pistol_array[pistol_array_index].gun = current_weapons[i]; + pistol_array[pistol_array_index].value = 0; - for ( j = 0; j < level.pistol_values.size; j++ ) - { - if ( level.pistol_values[j] == current_weapons[i] ) - { - pistol_array[pistol_array_index].value = j; - break; - } - } - } - } + for ( j = 0; j < level.pistol_values.size; j++ ) + { + if ( level.pistol_values[j] == current_weapons[i] ) + { + pistol_array[pistol_array_index].value = j; + break; + } + } + } + } - self.laststandpistol = last_stand_compare_pistols( pistol_array ); + self.laststandpistol = last_stand_compare_pistols( pistol_array ); } can_track_ammo( weap ) { - if ( !isdefined( weap ) ) - return false; + if ( !isdefined( weap ) ) + return false; - switch ( weap ) - { - case "zombie_tazer_flourish": - case "zombie_sickle_flourish": - case "zombie_knuckle_crack": - case "zombie_fists_zm": - case "zombie_builder_zm": - case "zombie_bowie_flourish": - case "time_bomb_zm": - case "time_bomb_detonator_zm": - case "tazer_knuckles_zm": - case "tazer_knuckles_upgraded_zm": - case "slowgun_zm": - case "slowgun_upgraded_zm": - case "screecher_arms_zm": - case "riotshield_zm": - case "none": - case "no_hands_zm": - case "lower_equip_gasmask_zm": - case "humangun_zm": - case "humangun_upgraded_zm": - case "equip_gasmask_zm": - case "equip_dieseldrone_zm": - case "death_throe_zm": - case "chalk_draw_zm": - case "alcatraz_shield_zm": - case "tomb_shield_zm": - return false; - default: - if ( is_melee_weapon( weap ) || is_zombie_perk_bottle( weap ) || is_placeable_mine( weap ) || is_equipment( weap ) || issubstr( weap, "knife_ballistic_" ) || getsubstr( weap, 0, 3 ) == "gl_" || weaponfuellife( weap ) > 0 || weap == level.revive_tool ) - return false; - } + switch ( weap ) + { + case "zombie_tazer_flourish": + case "zombie_sickle_flourish": + case "zombie_knuckle_crack": + case "zombie_fists_zm": + case "zombie_builder_zm": + case "zombie_bowie_flourish": + case "time_bomb_zm": + case "time_bomb_detonator_zm": + case "tazer_knuckles_zm": + case "tazer_knuckles_upgraded_zm": + case "slowgun_zm": + case "slowgun_upgraded_zm": + case "screecher_arms_zm": + case "riotshield_zm": + case "none": + case "no_hands_zm": + case "lower_equip_gasmask_zm": + case "humangun_zm": + case "humangun_upgraded_zm": + case "equip_gasmask_zm": + case "equip_dieseldrone_zm": + case "death_throe_zm": + case "chalk_draw_zm": + case "alcatraz_shield_zm": + case "tomb_shield_zm": + return false; + default: + if ( is_melee_weapon( weap ) || is_zombie_perk_bottle( weap ) || is_placeable_mine( weap ) || is_equipment( weap ) || issubstr( weap, "knife_ballistic_" ) || getsubstr( weap, 0, 3 ) == "gl_" || weaponfuellife( weap ) > 0 || weap == level.revive_tool ) + return false; + } - return true; + return true; } take_additionalprimaryweapon() { - weapon_to_take = undefined; + weapon_to_take = undefined; self.a_saved_weapon = undefined; - if ( isdefined( self._retain_perks ) && self._retain_perks || isdefined( self._retain_perks_array ) && ( isdefined( self._retain_perks_array["specialty_additionalprimaryweapon"] ) && self._retain_perks_array["specialty_additionalprimaryweapon"] ) ) - return weapon_to_take; + if ( isdefined( self._retain_perks ) && self._retain_perks || isdefined( self._retain_perks_array ) && ( isdefined( self._retain_perks_array["specialty_additionalprimaryweapon"] ) && self._retain_perks_array["specialty_additionalprimaryweapon"] ) ) + return weapon_to_take; - primary_weapons_that_can_be_taken = []; - primaryweapons = self getweaponslistprimaries(); + primary_weapons_that_can_be_taken = []; + primaryweapons = self getweaponslistprimaries(); - for ( i = 0; i < primaryweapons.size; i++ ) - { - if ( maps\mp\zombies\_zm_weapons::is_weapon_included( primaryweapons[i] ) || maps\mp\zombies\_zm_weapons::is_weapon_upgraded( primaryweapons[i] ) ) - primary_weapons_that_can_be_taken[primary_weapons_that_can_be_taken.size] = primaryweapons[i]; - } + for ( i = 0; i < primaryweapons.size; i++ ) + { + if ( maps\mp\zombies\_zm_weapons::is_weapon_included( primaryweapons[i] ) || maps\mp\zombies\_zm_weapons::is_weapon_upgraded( primaryweapons[i] ) ) + primary_weapons_that_can_be_taken[primary_weapons_that_can_be_taken.size] = primaryweapons[i]; + } - pwtcbt = primary_weapons_that_can_be_taken.size; + pwtcbt = primary_weapons_that_can_be_taken.size; while ( pwtcbt >= 3 ) - { - weapon_to_take = primary_weapons_that_can_be_taken[pwtcbt - 1]; - pwtcbt--; + { + weapon_to_take = primary_weapons_that_can_be_taken[pwtcbt - 1]; + pwtcbt--; self.a_saved_weapon = maps\mp\zombies\_zm_weapons::get_player_weapondata(self, weapon_to_take); @@ -1173,13 +1173,13 @@ take_additionalprimaryweapon() self.a_saved_weapon["alt_stock"] -= clip_alt_missing; } - if ( weapon_to_take == self getcurrentweapon() ) - self switchtoweapon( primary_weapons_that_can_be_taken[0] ); + if ( weapon_to_take == self getcurrentweapon() ) + self switchtoweapon( primary_weapons_that_can_be_taken[0] ); - self takeweapon( weapon_to_take ); - } + self takeweapon( weapon_to_take ); + } - return weapon_to_take; + return weapon_to_take; } restore_additionalprimaryweapon() @@ -1199,42 +1199,42 @@ restore_additionalprimaryweapon() current = get_player_weapon_with_same_base( self.a_saved_weapon["name"] ); - if ( isdefined( current ) ) - { - curweapondata = get_player_weapondata( self, current ); - self takeweapon( current ); - weapondata = merge_weapons( curweapondata, weapondata ); - } + if ( isdefined( current ) ) + { + curweapondata = get_player_weapondata( self, current ); + self takeweapon( current ); + weapondata = merge_weapons( curweapondata, weapondata ); + } - name = self.a_saved_weapon["name"]; + name = self.a_saved_weapon["name"]; dw_name = weapondualwieldweaponname( name ); - alt_name = weaponaltweaponname( name ); + alt_name = weaponaltweaponname( name ); - if ( !is_weapon_upgraded( name ) ) - self giveweapon( name ); - else - self giveweapon( name, 0, self get_pack_a_punch_weapon_options( name ) ); + if ( !is_weapon_upgraded( name ) ) + self giveweapon( name ); + else + self giveweapon( name, 0, self get_pack_a_punch_weapon_options( name ) ); - if ( name != "none" ) - { - self setweaponammoclip( name, self.a_saved_weapon["clip"] ); - self setweaponammostock( name, self.a_saved_weapon["stock"] ); + if ( name != "none" ) + { + self setweaponammoclip( name, self.a_saved_weapon["clip"] ); + self setweaponammostock( name, self.a_saved_weapon["stock"] ); - if ( isdefined( self.a_saved_weapon["fuel"] ) ) - self setweaponammofuel( name, self.a_saved_weapon["fuel"] ); + if ( isdefined( self.a_saved_weapon["fuel"] ) ) + self setweaponammofuel( name, self.a_saved_weapon["fuel"] ); - if ( isdefined( self.a_saved_weapon["heat"] ) && isdefined( self.a_saved_weapon["overheat"] ) ) - self setweaponoverheating( self.a_saved_weapon["overheat"], self.a_saved_weapon["heat"], name ); - } + if ( isdefined( self.a_saved_weapon["heat"] ) && isdefined( self.a_saved_weapon["overheat"] ) ) + self setweaponoverheating( self.a_saved_weapon["overheat"], self.a_saved_weapon["heat"], name ); + } - if ( dw_name != "none" ) - self setweaponammoclip( dw_name, self.a_saved_weapon["lh_clip"] ); + if ( dw_name != "none" ) + self setweaponammoclip( dw_name, self.a_saved_weapon["lh_clip"] ); - if ( alt_name != "none" ) - { - self setweaponammoclip( alt_name, self.a_saved_weapon["alt_clip"] ); - self setweaponammostock( alt_name, self.a_saved_weapon["alt_stock"] ); - } + if ( alt_name != "none" ) + { + self setweaponammoclip( alt_name, self.a_saved_weapon["alt_clip"] ); + self setweaponammostock( alt_name, self.a_saved_weapon["alt_stock"] ); + } self switchtoweapon( name ); @@ -2403,8 +2403,8 @@ player_laststand( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, s callback_playerlaststand( einflictor, eattacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) { - self endon( "disconnect" ); - [[ scripts\zm\replaced\_zm_laststand::playerlaststand ]]( einflictor, eattacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ); + self endon( "disconnect" ); + [[ scripts\zm\replaced\_zm_laststand::playerlaststand ]]( einflictor, eattacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ); } player_spawn_protection() @@ -2470,14 +2470,14 @@ wait_and_revive() if ( !isDefined( self.beingrevivedprogressbar ) ) { self.beingrevivedprogressbar = self createprimaryprogressbar(); - self.beingrevivedprogressbar setpoint("CENTER", undefined, level.primaryprogressbarx, -1 * level.primaryprogressbary); - self.beingrevivedprogressbar.bar.color = (0.5, 0.5, 1); - self.beingrevivedprogressbar.hidewheninmenu = 1; - self.beingrevivedprogressbar.bar.hidewheninmenu = 1; - self.beingrevivedprogressbar.barframe.hidewheninmenu = 1; + self.beingrevivedprogressbar setpoint("CENTER", undefined, level.primaryprogressbarx, -1 * level.primaryprogressbary); + self.beingrevivedprogressbar.bar.color = (0.5, 0.5, 1); + self.beingrevivedprogressbar.hidewheninmenu = 1; + self.beingrevivedprogressbar.bar.hidewheninmenu = 1; + self.beingrevivedprogressbar.barframe.hidewheninmenu = 1; self.beingrevivedprogressbar.sort = 1; - self.beingrevivedprogressbar.bar.sort = 2; - self.beingrevivedprogressbar.barframe.sort = 3; + self.beingrevivedprogressbar.bar.sort = 2; + self.beingrevivedprogressbar.barframe.sort = 3; self.beingrevivedprogressbar.barframe destroy(); } self.beingrevivedprogressbar updatebar( 0.01, 1 / solo_revive_time ); @@ -2527,45 +2527,45 @@ player_revive_monitor() player_out_of_playable_area_monitor() { - self notify( "stop_player_out_of_playable_area_monitor" ); - self endon( "stop_player_out_of_playable_area_monitor" ); - self endon( "disconnect" ); - level endon( "end_game" ); + self notify( "stop_player_out_of_playable_area_monitor" ); + self endon( "stop_player_out_of_playable_area_monitor" ); + self endon( "disconnect" ); + level endon( "end_game" ); - while ( !isdefined( self.characterindex ) ) - wait 0.05; + while ( !isdefined( self.characterindex ) ) + wait 0.05; - wait( 0.15 * self.characterindex ); + wait( 0.15 * self.characterindex ); - while ( true ) - { - if ( self.sessionstate == "spectator" ) - { - wait( get_player_out_of_playable_area_monitor_wait_time() ); - continue; - } + while ( true ) + { + if ( self.sessionstate == "spectator" ) + { + wait( get_player_out_of_playable_area_monitor_wait_time() ); + continue; + } - if ( is_true( level.hostmigration_occured ) ) - { - wait( get_player_out_of_playable_area_monitor_wait_time() ); - continue; - } + if ( is_true( level.hostmigration_occured ) ) + { + wait( get_player_out_of_playable_area_monitor_wait_time() ); + continue; + } if ( get_players().size == 1 && flag( "solo_game" ) && ( isdefined( self.waiting_to_revive ) && self.waiting_to_revive ) ) { wait( get_player_out_of_playable_area_monitor_wait_time() ); - continue; + continue; } - if ( !self in_life_brush() && ( self in_kill_brush() || !self in_enabled_playable_area() ) ) - { - if ( !isdefined( level.player_out_of_playable_area_monitor_callback ) || self [[ level.player_out_of_playable_area_monitor_callback ]]() ) - { - self maps\mp\zombies\_zm_stats::increment_map_cheat_stat( "cheat_out_of_playable" ); - self maps\mp\zombies\_zm_stats::increment_client_stat( "cheat_out_of_playable", 0 ); - self maps\mp\zombies\_zm_stats::increment_client_stat( "cheat_total", 0 ); - self playlocalsound( level.zmb_laugh_alias ); - wait 0.5; + if ( !self in_life_brush() && ( self in_kill_brush() || !self in_enabled_playable_area() ) ) + { + if ( !isdefined( level.player_out_of_playable_area_monitor_callback ) || self [[ level.player_out_of_playable_area_monitor_callback ]]() ) + { + self maps\mp\zombies\_zm_stats::increment_map_cheat_stat( "cheat_out_of_playable" ); + self maps\mp\zombies\_zm_stats::increment_client_stat( "cheat_out_of_playable", 0 ); + self maps\mp\zombies\_zm_stats::increment_client_stat( "cheat_total", 0 ); + self playlocalsound( level.zmb_laugh_alias ); + wait 0.5; self.lives = 0; self dodamage( self.health + 1000, self.origin ); @@ -2579,74 +2579,74 @@ player_out_of_playable_area_monitor() { self.bleedout_time = 0; } - } - } + } + } - wait( get_player_out_of_playable_area_monitor_wait_time() ); - } + wait( get_player_out_of_playable_area_monitor_wait_time() ); + } } get_player_out_of_playable_area_monitor_wait_time() { - return 1; + return 1; } player_too_many_weapons_monitor() { - self notify( "stop_player_too_many_weapons_monitor" ); - self endon( "stop_player_too_many_weapons_monitor" ); - self endon( "disconnect" ); - level endon( "end_game" ); - scalar = self.characterindex; + self notify( "stop_player_too_many_weapons_monitor" ); + self endon( "stop_player_too_many_weapons_monitor" ); + self endon( "disconnect" ); + level endon( "end_game" ); + scalar = self.characterindex; - if ( !isdefined( scalar ) ) - scalar = self getentitynumber(); + if ( !isdefined( scalar ) ) + scalar = self getentitynumber(); - wait( 0.15 * scalar ); + wait( 0.15 * scalar ); - while ( true ) - { - if ( self has_powerup_weapon() || self maps\mp\zombies\_zm_laststand::player_is_in_laststand() || self.sessionstate == "spectator" ) - { - wait( get_player_too_many_weapons_monitor_wait_time() ); - continue; - } + while ( true ) + { + if ( self has_powerup_weapon() || self maps\mp\zombies\_zm_laststand::player_is_in_laststand() || self.sessionstate == "spectator" ) + { + wait( get_player_too_many_weapons_monitor_wait_time() ); + continue; + } - weapon_limit = get_player_weapon_limit( self ); - primaryweapons = self getweaponslistprimaries(); + weapon_limit = get_player_weapon_limit( self ); + primaryweapons = self getweaponslistprimaries(); - if ( primaryweapons.size > weapon_limit ) - { - self maps\mp\zombies\_zm_weapons::take_fallback_weapon(); - primaryweapons = self getweaponslistprimaries(); - } + if ( primaryweapons.size > weapon_limit ) + { + self maps\mp\zombies\_zm_weapons::take_fallback_weapon(); + primaryweapons = self getweaponslistprimaries(); + } - primary_weapons_to_take = []; + primary_weapons_to_take = []; - for ( i = 0; i < primaryweapons.size; i++ ) - { - if ( maps\mp\zombies\_zm_weapons::is_weapon_included( primaryweapons[i] ) || maps\mp\zombies\_zm_weapons::is_weapon_upgraded( primaryweapons[i] ) ) - primary_weapons_to_take[primary_weapons_to_take.size] = primaryweapons[i]; - } + for ( i = 0; i < primaryweapons.size; i++ ) + { + if ( maps\mp\zombies\_zm_weapons::is_weapon_included( primaryweapons[i] ) || maps\mp\zombies\_zm_weapons::is_weapon_upgraded( primaryweapons[i] ) ) + primary_weapons_to_take[primary_weapons_to_take.size] = primaryweapons[i]; + } - if ( primary_weapons_to_take.size > weapon_limit ) - { - if ( !isdefined( level.player_too_many_weapons_monitor_callback ) || self [[ level.player_too_many_weapons_monitor_callback ]]( primary_weapons_to_take ) ) - { - self maps\mp\zombies\_zm_stats::increment_map_cheat_stat( "cheat_too_many_weapons" ); - self maps\mp\zombies\_zm_stats::increment_client_stat( "cheat_too_many_weapons", 0 ); - self maps\mp\zombies\_zm_stats::increment_client_stat( "cheat_total", 0 ); - self takeweapon( primary_weapons_to_take[ primary_weapons_to_take.size - 1 ] ); - } - } + if ( primary_weapons_to_take.size > weapon_limit ) + { + if ( !isdefined( level.player_too_many_weapons_monitor_callback ) || self [[ level.player_too_many_weapons_monitor_callback ]]( primary_weapons_to_take ) ) + { + self maps\mp\zombies\_zm_stats::increment_map_cheat_stat( "cheat_too_many_weapons" ); + self maps\mp\zombies\_zm_stats::increment_client_stat( "cheat_too_many_weapons", 0 ); + self maps\mp\zombies\_zm_stats::increment_client_stat( "cheat_total", 0 ); + self takeweapon( primary_weapons_to_take[ primary_weapons_to_take.size - 1 ] ); + } + } - wait( get_player_too_many_weapons_monitor_wait_time() ); - } + wait( get_player_too_many_weapons_monitor_wait_time() ); + } } get_player_too_many_weapons_monitor_wait_time() { - return 1; + return 1; } end_game() @@ -2835,19 +2835,19 @@ check_quickrevive_for_hotjoin(disconnecting_player) subtract_num = 0; if ( isdefined( disconnecting_player ) ) - subtract_num = 1; + subtract_num = 1; players = get_players(); - if ( players.size - subtract_num == 1 ) - { + if ( players.size - subtract_num == 1 ) + { solo_mode = 1; - flag_set( "solo_game" ); - } - else - { - flag_clear( "solo_game" ); - } + flag_set( "solo_game" ); + } + else + { + flag_clear( "solo_game" ); + } set_default_laststand_pistol( solo_mode ); } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_afterlife.gsc b/scripts/zm/replaced/_zm_afterlife.gsc index 591ee6dd..a04d5d2d 100644 --- a/scripts/zm/replaced/_zm_afterlife.gsc +++ b/scripts/zm/replaced/_zm_afterlife.gsc @@ -24,53 +24,53 @@ init() { - level.zombiemode_using_afterlife = 1; - flag_init( "afterlife_start_over" ); - level.afterlife_revive_tool = "syrette_afterlife_zm"; - precacheitem( level.afterlife_revive_tool ); - precachemodel( "drone_collision" ); - 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 ); + level.zombiemode_using_afterlife = 1; + flag_init( "afterlife_start_over" ); + level.afterlife_revive_tool = "syrette_afterlife_zm"; + precacheitem( level.afterlife_revive_tool ); + precachemodel( "drone_collision" ); + 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 ); - if ( isdefined( level.afterlife_player_damage_override ) ) - maps\mp\zombies\_zm::register_player_damage_callback( level.afterlife_player_damage_override ); - else - maps\mp\zombies\_zm::register_player_damage_callback( ::afterlife_player_damage_callback ); + if ( isdefined( level.afterlife_player_damage_override ) ) + maps\mp\zombies\_zm::register_player_damage_callback( level.afterlife_player_damage_override ); + else + maps\mp\zombies\_zm::register_player_damage_callback( ::afterlife_player_damage_callback ); - registerclientfield( "toplayer", "player_lives", 9000, 2, "int" ); - registerclientfield( "toplayer", "player_in_afterlife", 9000, 1, "int" ); - registerclientfield( "toplayer", "player_afterlife_mana", 9000, 5, "float" ); - registerclientfield( "allplayers", "player_afterlife_fx", 9000, 1, "int" ); - registerclientfield( "toplayer", "clientfield_afterlife_audio", 9000, 1, "int" ); - registerclientfield( "toplayer", "player_afterlife_refill", 9000, 1, "int" ); - registerclientfield( "scriptmover", "player_corpse_id", 9000, 3, "int" ); - afterlife_load_fx(); - level thread afterlife_hostmigration(); - precachemodel( "c_zom_ghost_viewhands" ); - precachemodel( "c_zom_hero_ghost_fb" ); - precacheitem( "lightning_hands_zm" ); - precachemodel( "p6_zm_al_shock_box_on" ); - precacheshader( "waypoint_revive_afterlife" ); - a_afterlife_interact = getentarray( "afterlife_interact", "targetname" ); - array_thread( a_afterlife_interact, ::afterlife_interact_object_think ); - level.zombie_spawners = getentarray( "zombie_spawner", "script_noteworthy" ); - array_thread( level.zombie_spawners, ::add_spawn_function, ::afterlife_zombie_damage ); - a_afterlife_triggers = getstructarray( "afterlife_trigger", "targetname" ); + registerclientfield( "toplayer", "player_lives", 9000, 2, "int" ); + registerclientfield( "toplayer", "player_in_afterlife", 9000, 1, "int" ); + registerclientfield( "toplayer", "player_afterlife_mana", 9000, 5, "float" ); + registerclientfield( "allplayers", "player_afterlife_fx", 9000, 1, "int" ); + registerclientfield( "toplayer", "clientfield_afterlife_audio", 9000, 1, "int" ); + registerclientfield( "toplayer", "player_afterlife_refill", 9000, 1, "int" ); + registerclientfield( "scriptmover", "player_corpse_id", 9000, 3, "int" ); + afterlife_load_fx(); + level thread afterlife_hostmigration(); + precachemodel( "c_zom_ghost_viewhands" ); + precachemodel( "c_zom_hero_ghost_fb" ); + precacheitem( "lightning_hands_zm" ); + precachemodel( "p6_zm_al_shock_box_on" ); + precacheshader( "waypoint_revive_afterlife" ); + a_afterlife_interact = getentarray( "afterlife_interact", "targetname" ); + array_thread( a_afterlife_interact, ::afterlife_interact_object_think ); + level.zombie_spawners = getentarray( "zombie_spawner", "script_noteworthy" ); + array_thread( level.zombie_spawners, ::add_spawn_function, ::afterlife_zombie_damage ); + a_afterlife_triggers = getstructarray( "afterlife_trigger", "targetname" ); - foreach ( struct in a_afterlife_triggers ) - afterlife_trigger_create( struct ); + foreach ( struct in a_afterlife_triggers ) + afterlife_trigger_create( struct ); - level.afterlife_interact_dist = 256; - level.is_player_valid_override = ::is_player_valid_afterlife; - level.can_revive = ::can_revive_override; - level.round_prestart_func = ::afterlife_start_zombie_logic; - level.custom_pap_validation = ::is_player_valid_afterlife; - level.player_out_of_playable_area_monitor_callback = ::player_out_of_playable_area; - level thread afterlife_gameover_cleanup(); - level.afterlife_get_spawnpoint = ::afterlife_get_spawnpoint; - level.afterlife_zapped = ::afterlife_zapped; - level.afterlife_give_loadout = ::afterlife_give_loadout; - level.afterlife_save_loadout = ::afterlife_save_loadout; + level.afterlife_interact_dist = 256; + level.is_player_valid_override = ::is_player_valid_afterlife; + level.can_revive = ::can_revive_override; + level.round_prestart_func = ::afterlife_start_zombie_logic; + level.custom_pap_validation = ::is_player_valid_afterlife; + level.player_out_of_playable_area_monitor_callback = ::player_out_of_playable_area; + level thread afterlife_gameover_cleanup(); + level.afterlife_get_spawnpoint = ::afterlife_get_spawnpoint; + level.afterlife_zapped = ::afterlife_zapped; + level.afterlife_give_loadout = ::afterlife_give_loadout; + level.afterlife_save_loadout = ::afterlife_save_loadout; } init_player() @@ -88,10 +88,10 @@ init_player() afterlife_add() { if ( self.lives < 1 ) - { - self.lives++; - self thread afterlife_add_fx(); - } + { + self.lives++; + self thread afterlife_add_fx(); + } self playsoundtoplayer( "zmb_afterlife_add", self ); self setclientfieldtoplayer( "player_lives", self.lives ); } @@ -127,204 +127,204 @@ afterlife_start_zombie_logic() afterlife_laststand( b_electric_chair = 0 ) { - self endon( "disconnect" ); - self endon( "afterlife_bleedout" ); - level endon( "end_game" ); + self endon( "disconnect" ); + self endon( "afterlife_bleedout" ); + level endon( "end_game" ); - if ( isdefined( level.afterlife_laststand_override ) ) - { - self thread [[ level.afterlife_laststand_override ]]( b_electric_chair ); - return; - } + if ( isdefined( level.afterlife_laststand_override ) ) + { + self thread [[ level.afterlife_laststand_override ]]( b_electric_chair ); + return; + } - self.dontspeak = 1; - self.health = 1000; - b_has_electric_cherry = 0; + self.dontspeak = 1; + self.health = 1000; + b_has_electric_cherry = 0; - if ( self hasperk( "specialty_grenadepulldeath" ) ) - b_has_electric_cherry = 1; + if ( self hasperk( "specialty_grenadepulldeath" ) ) + b_has_electric_cherry = 1; - self [[ level.afterlife_save_loadout ]](); - self afterlife_fake_death(); + self [[ level.afterlife_save_loadout ]](); + self afterlife_fake_death(); - if ( isdefined( b_electric_chair ) && !b_electric_chair ) - wait 1; + if ( isdefined( b_electric_chair ) && !b_electric_chair ) + wait 1; - 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(); - } + 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 setclientfieldtoplayer( "clientfield_afterlife_audio", 1 ); + self setclientfieldtoplayer( "clientfield_afterlife_audio", 1 ); - if ( flag( "afterlife_start_over" ) ) - { - self clientnotify( "al_t" ); - wait 1; - self thread fadetoblackforxsec( 0, 1, 0.5, 0.5, "white" ); - wait 0.5; - } + if ( flag( "afterlife_start_over" ) ) + { + self clientnotify( "al_t" ); + wait 1; + self thread fadetoblackforxsec( 0, 1, 0.5, 0.5, "white" ); + wait 0.5; + } - self ghost(); - corpse = self afterlife_spawn_corpse(); - self.e_afterlife_corpse = corpse; - corpse.e_afterlife_player = self; - self thread afterlife_clean_up_on_disconnect(); - self notify( "player_fake_corpse_created" ); - self afterlife_fake_revive(); - self afterlife_enter(); - self.e_afterlife_corpse setclientfield( "player_corpse_id", self getentitynumber() + 1 ); - wait 0.5; - self show(); + self ghost(); + corpse = self afterlife_spawn_corpse(); + self.e_afterlife_corpse = corpse; + corpse.e_afterlife_player = self; + self thread afterlife_clean_up_on_disconnect(); + self notify( "player_fake_corpse_created" ); + self afterlife_fake_revive(); + self afterlife_enter(); + self.e_afterlife_corpse setclientfield( "player_corpse_id", self getentitynumber() + 1 ); + wait 0.5; + self show(); - if ( !( isdefined( self.hostmigrationcontrolsfrozen ) && self.hostmigrationcontrolsfrozen ) ) - self freezecontrols( 0 ); + if ( !( isdefined( self.hostmigrationcontrolsfrozen ) && self.hostmigrationcontrolsfrozen ) ) + 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 enableinvulnerability(); - self.afterlife_revived = 1; - playsoundatposition( "zmb_afterlife_spawn_leave", self.e_afterlife_corpse.origin ); - self afterlife_leave(); - self seteverhadweaponall( 1 ); - self thread afterlife_revive_invincible(); - self playsound( "zmb_afterlife_revived_gasp" ); + self notify( "player_revived" ); + self enableinvulnerability(); + self.afterlife_revived = 1; + playsoundatposition( "zmb_afterlife_spawn_leave", self.e_afterlife_corpse.origin ); + self afterlife_leave(); + self seteverhadweaponall( 1 ); + self thread afterlife_revive_invincible(); + self playsound( "zmb_afterlife_revived_gasp" ); } afterlife_spawn_corpse() { - 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 ); - else - { - trace_start = self.origin; - trace_end = self.origin + vectorscale( ( 0, 0, -1 ), 500.0 ); - corpse_trace = playerphysicstrace( trace_start, trace_end ); - corpse = spawn_player_clone( self, corpse_trace, undefined ); - } + 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 ); + else + { + trace_start = self.origin; + trace_end = self.origin + vectorscale( ( 0, 0, -1 ), 500.0 ); + corpse_trace = playerphysicstrace( trace_start, trace_end ); + corpse = spawn_player_clone( self, corpse_trace, undefined ); + } - corpse.angles = self.angles; - corpse.ignoreme = 1; - corpse maps\mp\zombies\_zm_clone::clone_give_weapon( "m1911_zm" ); - corpse maps\mp\zombies\_zm_clone::clone_animate( "afterlife" ); - corpse thread afterlife_revive_trigger_spawn(); + corpse.angles = self.angles; + corpse.ignoreme = 1; + corpse maps\mp\zombies\_zm_clone::clone_give_weapon( "m1911_zm" ); + corpse maps\mp\zombies\_zm_clone::clone_animate( "afterlife" ); + corpse thread afterlife_revive_trigger_spawn(); - collision = spawn( "script_model", corpse.origin + ( 0, 0, 16 ) ); - collision.angles = corpse.angles; - collision setmodel( "collision_clip_32x32x32" ); - collision linkto( corpse ); - collision ghost(); - corpse.collision = collision; + collision = spawn( "script_model", corpse.origin + ( 0, 0, 16 ) ); + collision.angles = corpse.angles; + collision setmodel( "collision_clip_32x32x32" ); + collision linkto( corpse ); + collision ghost(); + corpse.collision = collision; - if ( get_players().size == 1 ) - corpse thread afterlife_corpse_create_pois(); + if ( get_players().size == 1 ) + corpse thread afterlife_corpse_create_pois(); - return corpse; + return corpse; } afterlife_fake_death() { - level notify( "fake_death" ); - self notify( "fake_death" ); - self takeallweapons(); - self allowstand( 0 ); - self allowcrouch( 0 ); - self allowprone( 1 ); - self setstance( "prone" ); - self enableinvulnerability(); + level notify( "fake_death" ); + self notify( "fake_death" ); + self takeallweapons(); + self allowstand( 0 ); + self allowcrouch( 0 ); + self allowprone( 1 ); + self setstance( "prone" ); + self enableinvulnerability(); self.ignoreme = 1; - if ( self is_jumping() ) - { - while ( self is_jumping() ) - wait 0.05; - } + if ( self is_jumping() ) + { + while ( self is_jumping() ) + wait 0.05; + } - playfx( level._effect["afterlife_enter"], self.origin ); - self freezecontrols( 1 ); + playfx( level._effect["afterlife_enter"], self.origin ); + self freezecontrols( 1 ); } afterlife_fake_revive() { - level notify( "fake_revive" ); - self notify( "fake_revive" ); + level 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 allowcrouch( 0 ); - self allowprone( 0 ); - self.ignoreme = 0; - self setstance( "stand" ); - self giveweapon( "lightning_hands_zm" ); - self switchtoweapon( "lightning_hands_zm" ); - self.score = 0; + self allowstand( 1 ); + self allowcrouch( 0 ); + self allowprone( 0 ); + self.ignoreme = 0; + self setstance( "stand" ); + self giveweapon( "lightning_hands_zm" ); + self switchtoweapon( "lightning_hands_zm" ); + self.score = 0; - if ( flag( "afterlife_start_over" ) ) - { - spawnpoint = [[ level.afterlife_get_spawnpoint ]](); - trace_start = spawnpoint.origin; - trace_end = spawnpoint.origin + vectorscale( ( 0, 0, -1 ), 200.0 ); - respawn_trace = playerphysicstrace( trace_start, trace_end ); - dir = vectornormalize( self.origin - respawn_trace ); - angles = vectortoangles( dir ); - self setorigin( respawn_trace ); - self setplayerangles( angles ); - playsoundatposition( "zmb_afterlife_spawn_enter", spawnpoint.origin ); - } - else - { - playsoundatposition( "zmb_afterlife_spawn_enter", self.origin ); - } + if ( flag( "afterlife_start_over" ) ) + { + spawnpoint = [[ level.afterlife_get_spawnpoint ]](); + trace_start = spawnpoint.origin; + trace_end = spawnpoint.origin + vectorscale( ( 0, 0, -1 ), 200.0 ); + respawn_trace = playerphysicstrace( trace_start, trace_end ); + dir = vectornormalize( self.origin - respawn_trace ); + angles = vectortoangles( dir ); + self setorigin( respawn_trace ); + self setplayerangles( angles ); + playsoundatposition( "zmb_afterlife_spawn_enter", spawnpoint.origin ); + } + else + { + playsoundatposition( "zmb_afterlife_spawn_enter", self.origin ); + } - wait 1; + wait 1; } afterlife_revive_invincible() { - self endon( "disconnect" ); - wait 2; - self disableinvulnerability(); - self.afterlife_revived = undefined; + self endon( "disconnect" ); + wait 2; + self disableinvulnerability(); + self.afterlife_revived = undefined; } afterlife_revive_do_revive( playerbeingrevived, revivergun ) { - playerbeingrevived_player = playerbeingrevived; - playerbeingrevived_player.revive_hud.y = -160; - beingrevivedprogressbar_y = level.primaryprogressbary * -1; - if ( isDefined( playerbeingrevived.e_afterlife_player ) ) - { - playerbeingrevived_player = playerbeingrevived.e_afterlife_player; - playerbeingrevived_player.revive_hud.y = -50; - beingrevivedprogressbar_y = level.secondaryprogressbary * -2; - } - - assert( self is_reviving_afterlife( playerbeingrevived ) ); - revivetime = 3; - playloop = 0; - - if ( isdefined( self.afterlife ) && self.afterlife ) - { - playloop = 1; - revivetime = 1; - } - - timer = 0; - revived = 0; - playerbeingrevived.revivetrigger.beingrevived = 1; - playerbeingrevived.revivetrigger sethintstring( "" ); - - if ( playerbeingrevived_player != self ) + playerbeingrevived_player = playerbeingrevived; + playerbeingrevived_player.revive_hud.y = -160; + beingrevivedprogressbar_y = level.primaryprogressbary * -1; + if ( isDefined( playerbeingrevived.e_afterlife_player ) ) { - playerbeingrevived_player.revive_hud settext( &"GAME_PLAYER_IS_REVIVING_YOU", self ); - playerbeingrevived_player revive_hud_show_n_fade( revivetime ); - } + playerbeingrevived_player = playerbeingrevived.e_afterlife_player; + playerbeingrevived_player.revive_hud.y = -50; + beingrevivedprogressbar_y = level.secondaryprogressbary * -2; + } - if ( isplayer( playerbeingrevived ) ) + assert( self is_reviving_afterlife( playerbeingrevived ) ); + revivetime = 3; + playloop = 0; + + if ( isdefined( self.afterlife ) && self.afterlife ) + { + playloop = 1; + revivetime = 1; + } + + timer = 0; + revived = 0; + playerbeingrevived.revivetrigger.beingrevived = 1; + playerbeingrevived.revivetrigger sethintstring( "" ); + + if ( playerbeingrevived_player != self ) + { + playerbeingrevived_player.revive_hud settext( &"GAME_PLAYER_IS_REVIVING_YOU", self ); + playerbeingrevived_player revive_hud_show_n_fade( revivetime ); + } + + if ( isplayer( playerbeingrevived ) ) { playerbeingrevived startrevive( self ); } @@ -332,391 +332,391 @@ afterlife_revive_do_revive( playerbeingrevived, revivergun ) if ( !isDefined( playerbeingrevived_player.beingrevivedprogressbar ) && playerbeingrevived_player != self ) { playerbeingrevived_player.beingrevivedprogressbar = playerbeingrevived_player createprimaryprogressbar(); - playerbeingrevived_player.beingrevivedprogressbar setpoint("CENTER", undefined, level.primaryprogressbarx, beingrevivedprogressbar_y); - playerbeingrevived_player.beingrevivedprogressbar.bar.color = (0.5, 0.5, 1); - playerbeingrevived_player.beingrevivedprogressbar.hidewheninmenu = 1; - playerbeingrevived_player.beingrevivedprogressbar.bar.hidewheninmenu = 1; - playerbeingrevived_player.beingrevivedprogressbar.barframe.hidewheninmenu = 1; - playerbeingrevived_player.beingrevivedprogressbar.sort = 1; + playerbeingrevived_player.beingrevivedprogressbar setpoint("CENTER", undefined, level.primaryprogressbarx, beingrevivedprogressbar_y); + playerbeingrevived_player.beingrevivedprogressbar.bar.color = (0.5, 0.5, 1); + playerbeingrevived_player.beingrevivedprogressbar.hidewheninmenu = 1; + playerbeingrevived_player.beingrevivedprogressbar.bar.hidewheninmenu = 1; + playerbeingrevived_player.beingrevivedprogressbar.barframe.hidewheninmenu = 1; + playerbeingrevived_player.beingrevivedprogressbar.sort = 1; playerbeingrevived_player.beingrevivedprogressbar.bar.sort = 2; playerbeingrevived_player.beingrevivedprogressbar.barframe.sort = 3; - playerbeingrevived_player.beingrevivedprogressbar.barframe destroy(); + playerbeingrevived_player.beingrevivedprogressbar.barframe destroy(); 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.bar.color = (0.5, 0.5, 1); - self.reviveprogressbar.foreground = 1; - self.reviveprogressbar.bar.foreground = 1; - self.reviveprogressbar.barframe.foreground = 1; - self.reviveprogressbar.sort = 1; + self.reviveprogressbar.foreground = 1; + self.reviveprogressbar.bar.foreground = 1; + self.reviveprogressbar.barframe.foreground = 1; + self.reviveprogressbar.sort = 1; self.reviveprogressbar.bar.sort = 2; self.reviveprogressbar.barframe.sort = 3; - self.reviveprogressbar.barframe destroy(); + self.reviveprogressbar.barframe destroy(); self.reviveprogressbar thread scripts\zm\_zm_reimagined::destroy_on_intermission(); } - if ( !isdefined( self.revivetexthud ) ) - self.revivetexthud = newclienthudelem( self ); + if ( !isdefined( self.revivetexthud ) ) + self.revivetexthud = newclienthudelem( self ); - self thread revive_clean_up_on_gameover(); - self thread laststand_clean_up_on_disconnect( playerbeingrevived, revivergun ); + self thread revive_clean_up_on_gameover(); + self thread laststand_clean_up_on_disconnect( playerbeingrevived, revivergun ); - if ( !isdefined( self.is_reviving_any ) ) - self.is_reviving_any = 0; + if ( !isdefined( self.is_reviving_any ) ) + self.is_reviving_any = 0; - self.is_reviving_any++; - self thread laststand_clean_up_reviving_any( playerbeingrevived ); + self.is_reviving_any++; + self thread laststand_clean_up_reviving_any( playerbeingrevived ); self.reviveprogressbar updatebar( 0.01, 1 / revivetime ); - playerbeingrevived_player.beingrevivedprogressbar updatebar( 0.01, 1 / revivetime ); - self.revivetexthud.alignx = "center"; - self.revivetexthud.aligny = "middle"; - self.revivetexthud.horzalign = "center"; - self.revivetexthud.vertalign = "bottom"; - self.revivetexthud.y = -113; + playerbeingrevived_player.beingrevivedprogressbar updatebar( 0.01, 1 / revivetime ); + self.revivetexthud.alignx = "center"; + self.revivetexthud.aligny = "middle"; + self.revivetexthud.horzalign = "center"; + self.revivetexthud.vertalign = "bottom"; + self.revivetexthud.y = -113; - if ( self issplitscreen() ) - self.revivetexthud.y = -347; + if ( self issplitscreen() ) + self.revivetexthud.y = -347; - self.revivetexthud.foreground = 1; - self.revivetexthud.font = "default"; - self.revivetexthud.fontscale = 1.8; - self.revivetexthud.alpha = 1; - self.revivetexthud.color = ( 1, 1, 1 ); - self.revivetexthud.hidewheninmenu = 1; + self.revivetexthud.foreground = 1; + self.revivetexthud.font = "default"; + self.revivetexthud.fontscale = 1.8; + self.revivetexthud.alpha = 1; + self.revivetexthud.color = ( 1, 1, 1 ); + self.revivetexthud.hidewheninmenu = 1; - if ( self maps\mp\zombies\_zm_pers_upgrades_functions::pers_revive_active() ) - self.revivetexthud.color = ( 0.5, 0.5, 1.0 ); + if ( self maps\mp\zombies\_zm_pers_upgrades_functions::pers_revive_active() ) + self.revivetexthud.color = ( 0.5, 0.5, 1.0 ); - self.revivetexthud settext( &"GAME_REVIVING" ); - self thread check_for_failed_revive( playerbeingrevived ); - e_fx = spawn( "script_model", playerbeingrevived.revivetrigger.origin ); - e_fx setmodel( "tag_origin" ); - e_fx thread revive_fx_clean_up_on_disconnect( playerbeingrevived ); - playfxontag( level._effect["afterlife_leave"], e_fx, "tag_origin" ); + self.revivetexthud settext( &"GAME_REVIVING" ); + self thread check_for_failed_revive( playerbeingrevived ); + e_fx = spawn( "script_model", playerbeingrevived.revivetrigger.origin ); + e_fx setmodel( "tag_origin" ); + e_fx thread revive_fx_clean_up_on_disconnect( playerbeingrevived ); + playfxontag( level._effect["afterlife_leave"], e_fx, "tag_origin" ); - if ( isdefined( playloop ) && playloop ) - e_fx playloopsound( "zmb_afterlife_reviving", 0.05 ); + if ( isdefined( playloop ) && playloop ) + e_fx playloopsound( "zmb_afterlife_reviving", 0.05 ); - while ( self is_reviving_afterlife( playerbeingrevived ) ) - { - wait 0.05; - timer += 0.05; + while ( self is_reviving_afterlife( playerbeingrevived ) ) + { + wait 0.05; + timer += 0.05; - if ( self player_is_in_laststand() ) - break; + if ( self player_is_in_laststand() ) + break; - if ( isdefined( playerbeingrevived.revivetrigger.auto_revive ) && playerbeingrevived.revivetrigger.auto_revive == 1 ) - break; + if ( isdefined( playerbeingrevived.revivetrigger.auto_revive ) && playerbeingrevived.revivetrigger.auto_revive == 1 ) + break; - if ( timer >= revivetime ) - { - revived = 1; - break; - } - } + if ( timer >= revivetime ) + { + revived = 1; + break; + } + } - e_fx delete(); + e_fx delete(); if ( isDefined( playerbeingrevived_player.beingrevivedprogressbar ) ) { 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(""); } } - if ( isdefined( self.reviveprogressbar ) ) + if ( isdefined( self.reviveprogressbar ) ) { self.reviveprogressbar destroyelem(); } - if ( isdefined( self.revivetexthud ) ) + if ( isdefined( self.revivetexthud ) ) { 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 ) - { - if ( isplayer( playerbeingrevived ) ) - playerbeingrevived stoprevive( self ); - } + } + else if ( !revived ) + { + if ( isplayer( playerbeingrevived ) ) + playerbeingrevived stoprevive( self ); + } - playerbeingrevived.revivetrigger sethintstring( &"GAME_BUTTON_TO_REVIVE_PLAYER" ); - playerbeingrevived.revivetrigger.beingrevived = 0; - self notify( "do_revive_ended_normally" ); - self.is_reviving_any--; + playerbeingrevived.revivetrigger sethintstring( &"GAME_BUTTON_TO_REVIVE_PLAYER" ); + playerbeingrevived.revivetrigger.beingrevived = 0; + self notify( "do_revive_ended_normally" ); + self.is_reviving_any--; - if ( !revived ) - playerbeingrevived thread checkforbleedout( self ); + if ( !revived ) + playerbeingrevived thread checkforbleedout( self ); - return revived; + return revived; } afterlife_corpse_cleanup( corpse ) { - playsoundatposition( "zmb_afterlife_revived", corpse.origin ); + playsoundatposition( "zmb_afterlife_revived", corpse.origin ); - if ( isdefined( corpse.revivetrigger ) ) - { - corpse notify( "stop_revive_trigger" ); - corpse.revivetrigger delete(); - corpse.revivetrigger = undefined; - } + if ( isdefined( corpse.revivetrigger ) ) + { + corpse notify( "stop_revive_trigger" ); + corpse.revivetrigger delete(); + corpse.revivetrigger = undefined; + } - if ( isdefined( corpse.collision ) ) - { - corpse.collision delete(); - corpse.collision = undefined; - } + if ( isdefined( corpse.collision ) ) + { + corpse.collision delete(); + corpse.collision = undefined; + } - self.e_afterlife_corpse = undefined; - corpse setclientfield( "player_corpse_id", 0 ); - corpse afterlife_corpse_remove_pois(); - corpse ghost(); - self.loadout = undefined; - wait_network_frame(); - wait_network_frame(); - wait_network_frame(); - corpse delete(); + self.e_afterlife_corpse = undefined; + corpse setclientfield( "player_corpse_id", 0 ); + corpse afterlife_corpse_remove_pois(); + corpse ghost(); + self.loadout = undefined; + wait_network_frame(); + wait_network_frame(); + wait_network_frame(); + corpse delete(); } afterlife_player_damage_callback( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime ) { - if ( isdefined( eattacker ) ) - { - if ( isdefined( eattacker.is_zombie ) && eattacker.is_zombie ) - { - if ( isdefined( eattacker.custom_damage_func ) ) - idamage = eattacker [[ eattacker.custom_damage_func ]]( self ); - else if ( isdefined( eattacker.meleedamage ) && smeansofdeath != "MOD_GRENADE_SPLASH" ) - idamage = eattacker.meleedamage; + if ( isdefined( eattacker ) ) + { + if ( isdefined( eattacker.is_zombie ) && eattacker.is_zombie ) + { + if ( isdefined( eattacker.custom_damage_func ) ) + idamage = eattacker [[ eattacker.custom_damage_func ]]( self ); + else if ( isdefined( eattacker.meleedamage ) && smeansofdeath != "MOD_GRENADE_SPLASH" ) + idamage = eattacker.meleedamage; - if ( isdefined( self.afterlife ) && self.afterlife ) - { - self afterlife_reduce_mana( 10 ); - self clientnotify( "al_d" ); - return 0; - } - } - } + if ( isdefined( self.afterlife ) && self.afterlife ) + { + self afterlife_reduce_mana( 10 ); + self clientnotify( "al_d" ); + return 0; + } + } + } - if ( isdefined( self.afterlife ) && self.afterlife ) - return 0; + if ( isdefined( self.afterlife ) && self.afterlife ) + return 0; - if ( self maps\mp\zombies\_zm_laststand::player_is_in_laststand() ) - return 0; + if ( self maps\mp\zombies\_zm_laststand::player_is_in_laststand() ) + return 0; - if ( isdefined( eattacker ) && ( isdefined( eattacker.is_zombie ) && eattacker.is_zombie || isplayer( eattacker ) ) ) - { - if ( isdefined( self.hasriotshield ) && self.hasriotshield && isdefined( vdir ) ) - { - item_dmg = 100; + if ( isdefined( eattacker ) && ( isdefined( eattacker.is_zombie ) && eattacker.is_zombie || isplayer( eattacker ) ) ) + { + if ( isdefined( self.hasriotshield ) && self.hasriotshield && isdefined( vdir ) ) + { + item_dmg = 100; - if ( isdefined( eattacker.custom_item_dmg ) ) - item_dmg = eattacker.custom_item_dmg; + if ( isdefined( eattacker.custom_item_dmg ) ) + item_dmg = eattacker.custom_item_dmg; - if ( isdefined( self.hasriotshieldequipped ) && self.hasriotshieldequipped ) - { - if ( self player_shield_facing_attacker( vdir, 0.2 ) && isdefined( self.player_shield_apply_damage ) ) - { - self [[ self.player_shield_apply_damage ]]( item_dmg, 0 ); - return 0; - } - } - else if ( !isdefined( self.riotshieldentity ) ) - { - if ( !self player_shield_facing_attacker( vdir, -0.2 ) && isdefined( self.player_shield_apply_damage ) ) - { - self [[ self.player_shield_apply_damage ]]( item_dmg, 0 ); - return 0; - } - } - } - } + if ( isdefined( self.hasriotshieldequipped ) && self.hasriotshieldequipped ) + { + if ( self player_shield_facing_attacker( vdir, 0.2 ) && isdefined( self.player_shield_apply_damage ) ) + { + self [[ self.player_shield_apply_damage ]]( item_dmg, 0 ); + return 0; + } + } + else if ( !isdefined( self.riotshieldentity ) ) + { + if ( !self player_shield_facing_attacker( vdir, -0.2 ) && isdefined( self.player_shield_apply_damage ) ) + { + self [[ self.player_shield_apply_damage ]]( item_dmg, 0 ); + return 0; + } + } + } + } - 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; - return 0; - } + 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; + return 0; + } - if ( smeansofdeath == "MOD_PROJECTILE" || smeansofdeath == "MOD_PROJECTILE_SPLASH" || smeansofdeath == "MOD_GRENADE" || smeansofdeath == "MOD_GRENADE_SPLASH" ) - { - if ( sweapon == "blundersplat_explosive_dart_zm" ) - { - if ( self hasperk( "specialty_flakjacket" ) ) - { - self.use_adjusted_grenade_damage = 1; - idamage = 0; - } + if ( smeansofdeath == "MOD_PROJECTILE" || smeansofdeath == "MOD_PROJECTILE_SPLASH" || smeansofdeath == "MOD_GRENADE" || smeansofdeath == "MOD_GRENADE_SPLASH" ) + { + if ( sweapon == "blundersplat_explosive_dart_zm" ) + { + if ( self hasperk( "specialty_flakjacket" ) ) + { + self.use_adjusted_grenade_damage = 1; + idamage = 0; + } - if ( isalive( self ) && !( isdefined( self.is_zombie ) && self.is_zombie ) ) - { - self.use_adjusted_grenade_damage = 1; - idamage = 25; - } - } - else - { - if ( self hasperk( "specialty_flakjacket" ) ) - return 0; + if ( isalive( self ) && !( isdefined( self.is_zombie ) && self.is_zombie ) ) + { + self.use_adjusted_grenade_damage = 1; + idamage = 25; + } + } + else + { + if ( self hasperk( "specialty_flakjacket" ) ) + return 0; - if ( self.health > 75 && !( isdefined( self.is_zombie ) && self.is_zombie ) ) - idamage = 75; - } - } + if ( self.health > 75 && !( isdefined( self.is_zombie ) && self.is_zombie ) ) + idamage = 75; + } + } - if ( idamage >= self.health && ( isdefined( level.intermission ) && !level.intermission ) ) - { - if ( self.lives > 0 && ( isdefined( self.afterlife ) && !self.afterlife ) ) - { - self playsoundtoplayer( "zmb_afterlife_death", self ); - self afterlife_remove(); - self.afterlife = 1; - self thread afterlife_laststand(); + if ( idamage >= self.health && ( isdefined( level.intermission ) && !level.intermission ) ) + { + if ( self.lives > 0 && ( isdefined( self.afterlife ) && !self.afterlife ) ) + { + self playsoundtoplayer( "zmb_afterlife_death", self ); + self afterlife_remove(); + self.afterlife = 1; + self thread afterlife_laststand(); - if ( self.health <= 1 ) - return 0; - else - idamage = self.health - 1; - } - else - self thread last_stand_conscience_vo(); - } + if ( self.health <= 1 ) + return 0; + else + idamage = self.health - 1; + } + else + self thread last_stand_conscience_vo(); + } - return idamage; + return idamage; } afterlife_give_loadout() { - self takeallweapons(); - loadout = self.loadout; - primaries = self getweaponslistprimaries(); + self takeallweapons(); + loadout = self.loadout; + primaries = self getweaponslistprimaries(); - if ( loadout.weapons.size > 1 || primaries.size > 1 ) - { - foreach ( weapon in primaries ) - self takeweapon( weapon ); - } + if ( loadout.weapons.size > 1 || primaries.size > 1 ) + { + foreach ( weapon in primaries ) + self takeweapon( weapon ); + } - for ( i = 0; i < loadout.weapons.size; i++ ) - { - if ( !isdefined( loadout.weapons[i] ) ) - continue; + for ( i = 0; i < loadout.weapons.size; i++ ) + { + if ( !isdefined( loadout.weapons[i] ) ) + continue; - if ( loadout.weapons[i] == "none" ) - continue; + if ( loadout.weapons[i] == "none" ) + continue; - weapon = loadout.weapons[i]; - stock_amount = loadout.stockcount[i]; - clip_amount = loadout.clipcount[i]; + weapon = loadout.weapons[i]; + stock_amount = loadout.stockcount[i]; + clip_amount = loadout.clipcount[i]; - if ( !self hasweapon( weapon ) ) - { - self giveweapon( weapon, 0, self maps\mp\zombies\_zm_weapons::get_pack_a_punch_weapon_options( weapon ) ); - self setweaponammostock( weapon, stock_amount ); - self setweaponammoclip( weapon, clip_amount ); + if ( !self hasweapon( weapon ) ) + { + self giveweapon( weapon, 0, self maps\mp\zombies\_zm_weapons::get_pack_a_punch_weapon_options( weapon ) ); + self setweaponammostock( weapon, stock_amount ); + self setweaponammoclip( weapon, clip_amount ); - if ( weaponisdualwield( weapon ) ) - { - weapon_dw = weapondualwieldweaponname( weapon ); - self setweaponammoclip( weapon_dw, loadout.clipcount2[i] ); - } + if ( weaponisdualwield( weapon ) ) + { + weapon_dw = weapondualwieldweaponname( weapon ); + self setweaponammoclip( weapon_dw, loadout.clipcount2[i] ); + } - weapon_alt = weaponaltweaponname( weapon ); + weapon_alt = weaponaltweaponname( weapon ); - if ( weapon_alt != "none" ) - { - self setweaponammostock( weapon_alt, loadout.stockcountalt[i] ); - self setweaponammoclip( weapon_alt, loadout.clipcountalt[i] ); - } - } - } + if ( weapon_alt != "none" ) + { + self setweaponammostock( weapon_alt, loadout.stockcountalt[i] ); + self setweaponammoclip( weapon_alt, loadout.clipcountalt[i] ); + } + } + } - self setspawnweapon( loadout.weapons[loadout.current_weapon] ); - self switchtoweaponimmediate( loadout.weapons[loadout.current_weapon] ); + self setspawnweapon( loadout.weapons[loadout.current_weapon] ); + self switchtoweaponimmediate( loadout.weapons[loadout.current_weapon] ); - if ( isdefined( self get_player_melee_weapon() ) ) - self giveweapon( self get_player_melee_weapon() ); + if ( isdefined( self get_player_melee_weapon() ) ) + self giveweapon( self get_player_melee_weapon() ); - self.do_not_display_equipment_pickup_hint = 1; - 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 = 1; + self maps\mp\zombies\_zm_equipment::equipment_give( self.loadout.equipment ); + self.do_not_display_equipment_pickup_hint = undefined; - if ( isdefined( loadout.hasclaymore ) && loadout.hasclaymore && !self hasweapon( "claymore_zm" ) ) - { - self giveweapon( "claymore_zm" ); - self set_player_placeable_mine( "claymore_zm" ); - self setactionslot( 4, "weapon", "claymore_zm" ); - self setweaponammoclip( "claymore_zm", loadout.claymoreclip ); - } + if ( isdefined( loadout.hasclaymore ) && loadout.hasclaymore && !self hasweapon( "claymore_zm" ) ) + { + self giveweapon( "claymore_zm" ); + self set_player_placeable_mine( "claymore_zm" ); + self setactionslot( 4, "weapon", "claymore_zm" ); + self setweaponammoclip( "claymore_zm", loadout.claymoreclip ); + } - if ( isdefined( loadout.hasemp ) && loadout.hasemp ) - { - self giveweapon( "emp_grenade_zm" ); - self setweaponammoclip( "emp_grenade_zm", loadout.empclip ); - } + if ( isdefined( loadout.hasemp ) && loadout.hasemp ) + { + self giveweapon( "emp_grenade_zm" ); + self setweaponammoclip( "emp_grenade_zm", loadout.empclip ); + } - if ( isdefined( loadout.hastomahawk ) && loadout.hastomahawk ) - { - self giveweapon( self.current_tomahawk_weapon ); - self set_player_tactical_grenade( self.current_tomahawk_weapon ); - self setclientfieldtoplayer( "tomahawk_in_use", 1 ); - } + if ( isdefined( loadout.hastomahawk ) && loadout.hastomahawk ) + { + self giveweapon( self.current_tomahawk_weapon ); + self set_player_tactical_grenade( self.current_tomahawk_weapon ); + self setclientfieldtoplayer( "tomahawk_in_use", 1 ); + } - self.score = loadout.score; - perk_array = maps\mp\zombies\_zm_perks::get_perk_array( 1 ); + self.score = loadout.score; + perk_array = maps\mp\zombies\_zm_perks::get_perk_array( 1 ); - for ( i = 0; i < perk_array.size; i++ ) - { - perk = perk_array[i]; - self unsetperk( perk ); - self set_perk_clientfield( perk, 0 ); - } + for ( i = 0; i < perk_array.size; i++ ) + { + perk = perk_array[i]; + self unsetperk( perk ); + self set_perk_clientfield( perk, 0 ); + } - if ( isdefined( self.keep_perks ) && self.keep_perks && isdefined( loadout.perks ) && loadout.perks.size > 0 ) - { - for ( i = 0; i < loadout.perks.size; i++ ) - { - if ( self hasperk( loadout.perks[i] ) ) - continue; + if ( isdefined( self.keep_perks ) && self.keep_perks && isdefined( loadout.perks ) && loadout.perks.size > 0 ) + { + for ( i = 0; i < loadout.perks.size; i++ ) + { + if ( self hasperk( loadout.perks[i] ) ) + continue; - if ( loadout.perks[i] == "specialty_quickrevive" && flag( "solo_game" ) ) - level.solo_game_free_player_quickrevive = 1; + if ( loadout.perks[i] == "specialty_quickrevive" && flag( "solo_game" ) ) + level.solo_game_free_player_quickrevive = 1; - if ( loadout.perks[i] == "specialty_finalstand" ) - continue; + if ( loadout.perks[i] == "specialty_finalstand" ) + 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 set_player_lethal_grenade( self.loadout.lethal_grenade ); + self.keep_perks = undefined; + self set_player_lethal_grenade( self.loadout.lethal_grenade ); - if ( loadout.grenade > 0 ) - { - curgrenadecount = 0; + if ( loadout.grenade > 0 ) + { + curgrenadecount = 0; - if ( self hasweapon( self get_player_lethal_grenade() ) ) - self getweaponammoclip( self get_player_lethal_grenade() ); - else - self giveweapon( self get_player_lethal_grenade() ); + if ( self hasweapon( self get_player_lethal_grenade() ) ) + self getweaponammoclip( self get_player_lethal_grenade() ); + else + 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 ); + } } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_ai_avogadro.gsc b/scripts/zm/replaced/_zm_ai_avogadro.gsc index 9c183478..8e26b56c 100644 --- a/scripts/zm/replaced/_zm_ai_avogadro.gsc +++ b/scripts/zm/replaced/_zm_ai_avogadro.gsc @@ -16,107 +16,107 @@ check_range_attack() { - enemy = self.favoriteenemy; + enemy = self.favoriteenemy; - if ( isdefined( enemy ) ) - { - vec_enemy = enemy.origin - self.origin; - dist_sq = lengthsquared( vec_enemy ); + if ( isdefined( enemy ) ) + { + vec_enemy = enemy.origin - self.origin; + dist_sq = lengthsquared( vec_enemy ); - if ( dist_sq > 4096 && dist_sq < 360000 ) - { - vec_facing = anglestoforward( self.angles ); - norm_facing = vectornormalize( vec_facing ); - norm_enemy = vectornormalize( vec_enemy ); - dot = vectordot( norm_facing, norm_enemy ); + if ( dist_sq > 4096 && dist_sq < 360000 ) + { + vec_facing = anglestoforward( self.angles ); + norm_facing = vectornormalize( vec_facing ); + norm_enemy = vectornormalize( vec_enemy ); + dot = vectordot( norm_facing, norm_enemy ); - if ( dot > 0.99 ) - { - enemy_eye_pos = enemy geteye(); - eye_pos = self geteye(); - passed = bullettracepassed( eye_pos, enemy_eye_pos, 0, undefined ); + if ( dot > 0.99 ) + { + enemy_eye_pos = enemy geteye(); + eye_pos = self geteye(); + passed = bullettracepassed( eye_pos, enemy_eye_pos, 0, undefined ); - if ( passed ) - return true; - } - } - } + if ( passed ) + return true; + } + } + } - return false; + return false; } avogadro_exit( from ) { - powerup_origin = spawn( "script_origin", self.origin ); - if ( self.state == "attacking_bus" || self.state == "stay_attached" ) - { - powerup_origin linkto( level.the_bus ); - } + powerup_origin = spawn( "script_origin", self.origin ); + if ( self.state == "attacking_bus" || self.state == "stay_attached" ) + { + powerup_origin linkto( level.the_bus ); + } - self.state = "exiting"; - self notify( "stop_find_flesh" ); - self notify( "zombie_acquire_enemy" ); - self setfreecameralockonallowed( 0 ); - self.audio_loop_ent stoploopsound( 0.5 ); - self notify( "stop_health" ); + self.state = "exiting"; + self notify( "stop_find_flesh" ); + self notify( "zombie_acquire_enemy" ); + self setfreecameralockonallowed( 0 ); + self.audio_loop_ent stoploopsound( 0.5 ); + self notify( "stop_health" ); - if ( isdefined( self.health_fx ) ) - { - self.health_fx unlink(); - self.health_fx delete(); - } + if ( isdefined( self.health_fx ) ) + { + self.health_fx unlink(); + self.health_fx delete(); + } - if ( isdefined( from ) ) - { - if ( from == "bus" ) - { - self playsound( "zmb_avogadro_death_short" ); - playfx( level._effect["avogadro_ascend_aerial"], self.origin ); - self animscripted( self.origin, self.angles, "zm_bus_win" ); - maps\mp\animscripts\zm_shared::donotetracks( "bus_win_anim" ); - } - else if ( from == "chamber" ) - { - self playsound( "zmb_avogadro_death_short" ); - playfx( level._effect["avogadro_ascend"], self.origin ); - self animscripted( self.origin, self.angles, "zm_chamber_out" ); - wait 0.4; - self ghost(); - stop_exploder( 500 ); - } - else - { - self playsound( "zmb_avogadro_death" ); - playfx( level._effect["avogadro_ascend"], self.origin ); - self animscripted( self.origin, self.angles, "zm_exit" ); - maps\mp\animscripts\zm_shared::donotetracks( "exit_anim" ); - } - } - else - { - self playsound( "zmb_avogadro_death" ); - playfx( level._effect["avogadro_ascend"], self.origin ); - self animscripted( self.origin, self.angles, "zm_exit" ); - maps\mp\animscripts\zm_shared::donotetracks( "exit_anim" ); - } + if ( isdefined( from ) ) + { + if ( from == "bus" ) + { + self playsound( "zmb_avogadro_death_short" ); + playfx( level._effect["avogadro_ascend_aerial"], self.origin ); + self animscripted( self.origin, self.angles, "zm_bus_win" ); + maps\mp\animscripts\zm_shared::donotetracks( "bus_win_anim" ); + } + else if ( from == "chamber" ) + { + self playsound( "zmb_avogadro_death_short" ); + playfx( level._effect["avogadro_ascend"], self.origin ); + self animscripted( self.origin, self.angles, "zm_chamber_out" ); + wait 0.4; + self ghost(); + stop_exploder( 500 ); + } + else + { + self playsound( "zmb_avogadro_death" ); + playfx( level._effect["avogadro_ascend"], self.origin ); + self animscripted( self.origin, self.angles, "zm_exit" ); + maps\mp\animscripts\zm_shared::donotetracks( "exit_anim" ); + } + } + else + { + self playsound( "zmb_avogadro_death" ); + playfx( level._effect["avogadro_ascend"], self.origin ); + self animscripted( self.origin, self.angles, "zm_exit" ); + maps\mp\animscripts\zm_shared::donotetracks( "exit_anim" ); + } - if ( !isdefined( from ) || from != "chamber" ) - level thread do_avogadro_flee_vo( self ); + if ( !isdefined( from ) || from != "chamber" ) + level thread do_avogadro_flee_vo( self ); - self ghost(); - self.hit_by_melee = 0; - self.anchor.origin = self.origin; - self.anchor.angles = self.angles; - self linkto( self.anchor ); + self ghost(); + self.hit_by_melee = 0; + self.anchor.origin = self.origin; + self.anchor.angles = self.angles; + self linkto( self.anchor ); - if ( isdefined( from ) && from == "exit_idle" ) - self.return_round = level.round_number; - else - self.return_round = level.round_number + randomintrange( 2, 5 ); + if ( isdefined( from ) && from == "exit_idle" ) + self.return_round = level.round_number; + else + self.return_round = level.round_number + randomintrange( 2, 5 ); - level.next_avogadro_round = self.return_round; - self.state = "cloud"; - self thread cloud_update_fx(); + level.next_avogadro_round = self.return_round; + self.state = "cloud"; + self thread cloud_update_fx(); if ( !isdefined( from ) ) { @@ -127,69 +127,69 @@ avogadro_exit( from ) level thread maps\mp\zombies\_zm_powerups::powerup_drop( powerup_origin.origin ); } - powerup_origin delete(); + powerup_origin delete(); } cloud_update_fx() { - self endon( "cloud_fx_end" ); - level endon( "end_game" ); - region = []; - region[0] = "bus"; - region[1] = "diner"; - region[2] = "farm"; - region[3] = "cornfield"; - region[4] = "power"; - region[5] = "town"; + self endon( "cloud_fx_end" ); + level endon( "end_game" ); + region = []; + region[0] = "bus"; + region[1] = "diner"; + region[2] = "farm"; + region[3] = "cornfield"; + region[4] = "power"; + region[5] = "town"; - if ( !isdefined( self.sndent ) ) - { - self.sndent = spawn( "script_origin", ( 0, 0, 0 ) ); - self.sndent playloopsound( "zmb_avogadro_thunder_overhead" ); - } + if ( !isdefined( self.sndent ) ) + { + self.sndent = spawn( "script_origin", ( 0, 0, 0 ) ); + self.sndent playloopsound( "zmb_avogadro_thunder_overhead" ); + } - cloud_time = gettime(); + cloud_time = gettime(); - for ( vo_counter = 0; 1; vo_counter++ ) - { - if ( gettime() >= cloud_time ) - { - if ( isdefined( self.current_region ) ) - { - exploder_num = level.transit_region[self.current_region].exploder; - stop_exploder( exploder_num ); - } + for ( vo_counter = 0; 1; vo_counter++ ) + { + if ( gettime() >= cloud_time ) + { + if ( isdefined( self.current_region ) ) + { + exploder_num = level.transit_region[self.current_region].exploder; + stop_exploder( exploder_num ); + } - rand_region = array_randomize( region ); - region_str = rand_region[0]; + rand_region = array_randomize( region ); + region_str = rand_region[0]; - if ( !isdefined( self.current_region ) ) - region_str = region[4]; + if ( !isdefined( self.current_region ) ) + region_str = region[4]; - self.current_region = region_str; - exploder_num = level.transit_region[region_str].exploder; - exploder( exploder_num ); - self.sndent moveto( level.transit_region[region_str].sndorigin, 3 ); - cloud_time = gettime() + 30000; - } + self.current_region = region_str; + exploder_num = level.transit_region[region_str].exploder; + exploder( exploder_num ); + self.sndent moveto( level.transit_region[region_str].sndorigin, 3 ); + cloud_time = gettime() + 30000; + } - if ( vo_counter > 50 ) - { - player = self get_player_in_region(); + if ( vo_counter > 50 ) + { + player = self get_player_in_region(); - if ( isdefined( player ) ) - { - if ( isdefined( self._in_cloud ) && self._in_cloud ) - player thread do_player_general_vox( "general", "avogadro_above", 90, 10 ); - else - player thread do_player_general_vox( "general", "avogadro_arrive", 60, 40 ); - } - else - level thread avogadro_storm_vox(); + if ( isdefined( player ) ) + { + if ( isdefined( self._in_cloud ) && self._in_cloud ) + player thread do_player_general_vox( "general", "avogadro_above", 90, 10 ); + else + player thread do_player_general_vox( "general", "avogadro_arrive", 60, 40 ); + } + else + level thread avogadro_storm_vox(); - vo_counter = 0; - } + vo_counter = 0; + } - wait 0.1; - } + wait 0.1; + } } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_ai_brutus.gsc b/scripts/zm/replaced/_zm_ai_brutus.gsc index b68e00eb..af412143 100644 --- a/scripts/zm/replaced/_zm_ai_brutus.gsc +++ b/scripts/zm/replaced/_zm_ai_brutus.gsc @@ -6,69 +6,69 @@ 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 ) - return; + if ( level.brutus_spawners.size == 0 ) + 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++ ) - { - level.brutus_spawners[i].is_enabled = 1; - level.brutus_spawners[i].script_forcespawn = 1; - } + for ( i = 0; i < level.brutus_spawners.size; i++ ) + { + level.brutus_spawners[i].is_enabled = 1; + level.brutus_spawners[i].script_forcespawn = 1; + } - level.brutus_spawn_positions = getstructarray( "brutus_location", "script_noteworthy" ); - level thread setup_interaction_matrix(); - level.sndbrutusistalking = 0; - level.brutus_health = 500; - level.brutus_health_increase = 1000; - level.brutus_round_count = 0; - level.brutus_last_spawn_round = 0; - level.brutus_count = 0; - level.brutus_max_count = 1; - level.brutus_damage_percent = 0.1; - level.brutus_helmet_shots = 5; - level.brutus_team_points_for_death = 500; - level.brutus_player_points_for_death = 250; - level.brutus_points_for_helmet = 250; - level.brutus_alarm_chance = 100; - level.brutus_min_alarm_chance = 100; - level.brutus_alarm_chance_increment = 10; - level.brutus_max_alarm_chance = 200; - level.brutus_min_round_fq = 4; - level.brutus_max_round_fq = 7; - level.brutus_reset_dist_sq = 262144; - level.brutus_aggro_dist_sq = 16384; - level.brutus_aggro_earlyout = 12; - level.brutus_blocker_pieces_req = 1; - level.brutus_zombie_per_round = 1; - level.brutus_players_in_zone_spawn_point_cap = 120; - level.brutus_teargas_duration = 7; - level.player_teargas_duration = 2; - level.brutus_teargas_radius = 64; - level.num_pulls_since_brutus_spawn = 0; - level.brutus_min_pulls_between_box_spawns = 4; - level.brutus_explosive_damage_for_helmet_pop = 1500; - level.brutus_explosive_damage_increase = 600; - level.brutus_failed_paths_to_teleport = 15; - level.brutus_do_prologue = 1; - level.brutus_min_spawn_delay = 10.0; - level.brutus_max_spawn_delay = 60.0; - level.brutus_respawn_after_despawn = 1; - level.brutus_in_grief = 0; + level.brutus_spawn_positions = getstructarray( "brutus_location", "script_noteworthy" ); + level thread setup_interaction_matrix(); + level.sndbrutusistalking = 0; + level.brutus_health = 500; + level.brutus_health_increase = 1000; + level.brutus_round_count = 0; + level.brutus_last_spawn_round = 0; + level.brutus_count = 0; + level.brutus_max_count = 1; + level.brutus_damage_percent = 0.1; + level.brutus_helmet_shots = 5; + level.brutus_team_points_for_death = 500; + level.brutus_player_points_for_death = 250; + level.brutus_points_for_helmet = 250; + level.brutus_alarm_chance = 100; + level.brutus_min_alarm_chance = 100; + level.brutus_alarm_chance_increment = 10; + level.brutus_max_alarm_chance = 200; + level.brutus_min_round_fq = 4; + level.brutus_max_round_fq = 7; + level.brutus_reset_dist_sq = 262144; + level.brutus_aggro_dist_sq = 16384; + level.brutus_aggro_earlyout = 12; + level.brutus_blocker_pieces_req = 1; + level.brutus_zombie_per_round = 1; + level.brutus_players_in_zone_spawn_point_cap = 120; + level.brutus_teargas_duration = 7; + level.player_teargas_duration = 2; + level.brutus_teargas_radius = 64; + level.num_pulls_since_brutus_spawn = 0; + level.brutus_min_pulls_between_box_spawns = 4; + level.brutus_explosive_damage_for_helmet_pop = 1500; + level.brutus_explosive_damage_increase = 600; + level.brutus_failed_paths_to_teleport = 15; + level.brutus_do_prologue = 1; + level.brutus_min_spawn_delay = 10.0; + level.brutus_max_spawn_delay = 60.0; + level.brutus_respawn_after_despawn = 1; + level.brutus_in_grief = 0; - if ( getdvar( "ui_gametype" ) == "zgrief" ) - level.brutus_in_grief = 1; + if ( getdvar( "ui_gametype" ) == "zgrief" ) + level.brutus_in_grief = 1; - level.brutus_shotgun_damage_mod = 1.5; - level.brutus_custom_goalradius = 48; - registerclientfield( "actor", "helmet_off", 9000, 1, "int" ); - registerclientfield( "actor", "brutus_lock_down", 9000, 1, "int" ); - level thread maps\mp\zombies\_zm_ai_brutus::brutus_spawning_logic(); + level.brutus_shotgun_damage_mod = 1.5; + level.brutus_custom_goalradius = 48; + registerclientfield( "actor", "helmet_off", 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::get_brutus_interest_points(); + level thread maps\mp\zombies\_zm_ai_brutus::get_brutus_interest_points(); level.custom_perk_validation = maps\mp\zombies\_zm_ai_brutus::check_perk_machine_valid; level.custom_craftable_validation = ::check_craftable_table_valid; @@ -77,37 +77,37 @@ init() setup_interaction_matrix() { - level.interaction_types = []; + level.interaction_types = []; - level.interaction_types["magic_box"] = spawnstruct(); - level.interaction_types["magic_box"].priority = 0; - level.interaction_types["magic_box"].animstate = "zm_lock_magicbox"; - level.interaction_types["magic_box"].notify_name = "box_lock_anim"; - level.interaction_types["magic_box"].action_notetrack = "locked"; - level.interaction_types["magic_box"].end_notetrack = "lock_done"; - level.interaction_types["magic_box"].validity_func = ::is_magic_box_valid; - level.interaction_types["magic_box"].get_func = ::get_magic_boxes; - level.interaction_types["magic_box"].value_func = ::get_dist_score; - level.interaction_types["magic_box"].interact_func = ::magic_box_lock; - level.interaction_types["magic_box"].spawn_bias = 1000; - level.interaction_types["magic_box"].num_times_to_scale = 1; - level.interaction_types["magic_box"].unlock_cost = 2000; + level.interaction_types["magic_box"] = spawnstruct(); + level.interaction_types["magic_box"].priority = 0; + level.interaction_types["magic_box"].animstate = "zm_lock_magicbox"; + level.interaction_types["magic_box"].notify_name = "box_lock_anim"; + level.interaction_types["magic_box"].action_notetrack = "locked"; + level.interaction_types["magic_box"].end_notetrack = "lock_done"; + level.interaction_types["magic_box"].validity_func = ::is_magic_box_valid; + level.interaction_types["magic_box"].get_func = ::get_magic_boxes; + level.interaction_types["magic_box"].value_func = ::get_dist_score; + level.interaction_types["magic_box"].interact_func = ::magic_box_lock; + level.interaction_types["magic_box"].spawn_bias = 1000; + level.interaction_types["magic_box"].num_times_to_scale = 1; + level.interaction_types["magic_box"].unlock_cost = 2000; - level.interaction_types["perk_machine"] = spawnstruct(); - level.interaction_types["perk_machine"].priority = 1; - level.interaction_types["perk_machine"].animstate = "zm_lock_perk_machine"; - level.interaction_types["perk_machine"].notify_name = "perk_lock_anim"; - level.interaction_types["perk_machine"].action_notetrack = "locked"; - level.interaction_types["perk_machine"].validity_func = ::is_perk_machine_valid; - level.interaction_types["perk_machine"].get_func = ::get_perk_machines; - level.interaction_types["perk_machine"].value_func = ::get_dist_score; - level.interaction_types["perk_machine"].interact_func = ::perk_machine_lock; - level.interaction_types["perk_machine"].spawn_bias = 800; - level.interaction_types["perk_machine"].num_times_to_scale = 3; - level.interaction_types["perk_machine"].unlock_cost = 2000; + level.interaction_types["perk_machine"] = spawnstruct(); + level.interaction_types["perk_machine"].priority = 1; + level.interaction_types["perk_machine"].animstate = "zm_lock_perk_machine"; + level.interaction_types["perk_machine"].notify_name = "perk_lock_anim"; + level.interaction_types["perk_machine"].action_notetrack = "locked"; + level.interaction_types["perk_machine"].validity_func = ::is_perk_machine_valid; + level.interaction_types["perk_machine"].get_func = ::get_perk_machines; + level.interaction_types["perk_machine"].value_func = ::get_dist_score; + level.interaction_types["perk_machine"].interact_func = ::perk_machine_lock; + level.interaction_types["perk_machine"].spawn_bias = 800; + level.interaction_types["perk_machine"].num_times_to_scale = 3; + level.interaction_types["perk_machine"].unlock_cost = 2000; if ( !is_gametype_active( "zgrief" ) ) - { + { level.interaction_types["blocker"] = spawnstruct(); level.interaction_types["blocker"].priority = 5; level.interaction_types["blocker"].animstate = "zm_smash_blocker"; @@ -131,7 +131,7 @@ setup_interaction_matrix() level.interaction_types["trap"].spawn_bias = 400; level.interaction_types["trap"].interaction_z_offset = -15; - level.interaction_types["craftable_table"] = spawnstruct(); + level.interaction_types["craftable_table"] = spawnstruct(); level.interaction_types["craftable_table"].priority = 2; level.interaction_types["craftable_table"].animstate = "zm_smash_craftable_table"; level.interaction_types["craftable_table"].notify_name = "table_smash_anim"; @@ -165,116 +165,116 @@ setup_interaction_matrix() level.interaction_types["plane_ramp"].fx_z_offset = -60; level.interaction_types["plane_ramp"].fx_x_offset = 70; level.interaction_types["plane_ramp"].fx_yaw_offset = 90; - } + } - level.interaction_priority = []; - interaction_types = getarraykeys( level.interaction_types ); + level.interaction_priority = []; + interaction_types = getarraykeys( level.interaction_types ); - for ( i = 0; i < interaction_types.size; i++ ) - { - int_type = interaction_types[i]; - interaction = level.interaction_types[int_type]; - assert( !isdefined( level.interaction_priority[interaction.priority] ) ); - level.interaction_priority[interaction.priority] = int_type; - } + for ( i = 0; i < interaction_types.size; i++ ) + { + int_type = interaction_types[i]; + interaction = level.interaction_types[int_type]; + assert( !isdefined( level.interaction_priority[interaction.priority] ) ); + level.interaction_priority[interaction.priority] = int_type; + } } check_craftable_table_valid( player ) { - if ( !isdefined( self.stub ) && ( isdefined( self.is_locked ) && self.is_locked ) ) - { - if ( player.score >= self.locked_cost ) - { - player minus_to_player_score( self.locked_cost ); - self.is_locked = 0; - self.locked_cost = undefined; - self.lock_fx delete(); - } + if ( !isdefined( self.stub ) && ( isdefined( self.is_locked ) && self.is_locked ) ) + { + if ( player.score >= self.locked_cost ) + { + player minus_to_player_score( self.locked_cost ); + self.is_locked = 0; + self.locked_cost = undefined; + self.lock_fx delete(); + } - return false; - } - else if ( isdefined( self.stub ) && ( isdefined( self.stub.is_locked ) && self.stub.is_locked ) ) - { - if ( player.score >= self.stub.locked_cost ) - { - player minus_to_player_score( self.stub.locked_cost ); - self.stub.is_locked = 0; - self.stub.locked_cost = undefined; - self.stub.lock_fx delete(); + return false; + } + else if ( isdefined( self.stub ) && ( isdefined( self.stub.is_locked ) && self.stub.is_locked ) ) + { + if ( player.score >= self.stub.locked_cost ) + { + player minus_to_player_score( self.stub.locked_cost ); + self.stub.is_locked = 0; + self.stub.locked_cost = undefined; + self.stub.lock_fx delete(); self scripts\zm\zm_prison\zm_prison_reimagined::craftabletrigger_update_prompt( player ); - } + } - return false; - } + return false; + } - return true; + return true; } brutus_round_tracker() { - 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_wait_func = level.round_wait_func; + 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_wait_func = level.round_wait_func; flag_wait_any( "activate_cellblock_east", "activate_cellblock_west" ); - while ( true ) - { - level waittill( "between_round_over" ); + while ( true ) + { + 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 ) ) - continue; - else if ( level.next_brutus_round <= level.round_number ) - { - if ( maps\mp\zm_alcatraz_utility::is_team_on_golden_gate_bridge() ) - { - level.next_brutus_round = level.round_number + 1; - continue; - } + if ( level.round_number < 9 && ( isdefined( level.is_forever_solo_game ) && level.is_forever_solo_game ) ) + continue; + else if ( level.next_brutus_round <= level.round_number ) + { + if ( maps\mp\zm_alcatraz_utility::is_team_on_golden_gate_bridge() ) + { + level.next_brutus_round = level.round_number + 1; + 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 ) ) - { - level.music_round_override = 1; - level thread maps\mp\zombies\_zm_audio::change_zombie_music( "brutus_round_start" ); - level thread sndforcewait(); - level.next_brutus_round = level.round_number + randomintrange( level.brutus_min_round_fq, level.brutus_max_round_fq ); - } - } - } + if ( attempt_brutus_spawn( level.brutus_zombie_per_round ) ) + { + level.music_round_override = 1; + level thread maps\mp\zombies\_zm_audio::change_zombie_music( "brutus_round_start" ); + level thread sndforcewait(); + level.next_brutus_round = level.round_number + randomintrange( level.brutus_min_round_fq, level.brutus_max_round_fq ); + } + } + } } craftable_table_lock() { - self endon( "death" ); - table_struct = self.priority_item; + self endon( "death" ); + table_struct = self.priority_item; - if ( !isdefined( table_struct ) ) + if ( !isdefined( table_struct ) ) { return; } - craftable_table = table_struct get_trigger_for_craftable(); - int_struct = level.interaction_types["craftable_table"]; - craftable_table.lock_fx = spawn( "script_model", table_struct.origin ); - 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 setmodel( "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.is_locked = 1; - 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 = table_struct get_trigger_for_craftable(); + int_struct = level.interaction_types["craftable_table"]; + craftable_table.lock_fx = spawn( "script_model", table_struct.origin ); + 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 setmodel( "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.is_locked = 1; + craftable_table.locked_cost = get_scaling_lock_cost( "craftable_table", craftable_table ); + 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 ); } - 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; @@ -283,134 +283,134 @@ craftable_table_lock() 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 notify( "brutus_locked_object" ); - self.priority_item = undefined; + level notify( "brutus_locked_object" ); + self.priority_item = undefined; } brutus_find_flesh() { - self endon( "death" ); - level endon( "intermission" ); + self endon( "death" ); + level endon( "intermission" ); - if ( level.intermission ) - return; + if ( level.intermission ) + return; - self.ai_state = "idle"; - self.helitarget = 1; - self.ignoreme = 0; - self.nododgemove = 1; - self.ignore_player = []; - self thread brutus_watch_for_gondola(); - self thread brutus_stuck_watcher(); - self thread brutus_goal_watcher(); - self thread watch_for_player_dist(); + self.ai_state = "idle"; + self.helitarget = 1; + self.ignoreme = 0; + self.nododgemove = 1; + self.ignore_player = []; + self thread brutus_watch_for_gondola(); + self thread brutus_stuck_watcher(); + self thread brutus_goal_watcher(); + self thread watch_for_player_dist(); - while ( true ) - { - if ( self.not_interruptable ) - { - wait 0.05; - continue; - } + while ( true ) + { + if ( self.not_interruptable ) + { + wait 0.05; + continue; + } - player = brutus_get_closest_valid_player(); - brutus_zone = get_zone_from_position( self.origin ); + player = brutus_get_closest_valid_player(); + brutus_zone = get_zone_from_position( self.origin ); - if ( !isdefined( brutus_zone ) ) - { - brutus_zone = self.prev_zone; + if ( !isdefined( brutus_zone ) ) + { + brutus_zone = self.prev_zone; - if ( !isdefined( brutus_zone ) ) - { - wait 1; - continue; - } - } + if ( !isdefined( brutus_zone ) ) + { + wait 1; + continue; + } + } - player_zone = undefined; - self.prev_zone = brutus_zone; + player_zone = undefined; + self.prev_zone = brutus_zone; - if ( !isdefined( player ) ) - self.priority_item = self get_priority_item_for_brutus( brutus_zone, 1 ); - else - { - player_zone = player get_player_zone(); + if ( !isdefined( player ) ) + self.priority_item = self get_priority_item_for_brutus( brutus_zone, 1 ); + else + { + player_zone = player get_player_zone(); - if ( isdefined( player_zone ) ) - self.priority_item = self get_priority_item_for_brutus( player_zone ); - else - self.priority_item = self get_priority_item_for_brutus( brutus_zone, 1 ); - } + if ( isdefined( player_zone ) ) + self.priority_item = self get_priority_item_for_brutus( player_zone ); + else + 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 ) ) - { - self.favorite_enemy = player; - self.goal_pos = player.origin; - brutus_start_basic_find_flesh(); - } - else if ( isdefined( self.priority_item ) ) - { - brutus_stop_basic_find_flesh(); - self.goalradius = 12; - self.custom_goalradius_override = 12; - self.goal_pos = self get_interact_offset( self.priority_item, self.ai_state ); - self setgoalpos( self.goal_pos ); - } - else if ( isdefined( player ) ) - { - self.favorite_enemy = player; - self.goal_pos = self.favorite_enemy.origin; - brutus_start_basic_find_flesh(); - } - else - { - self.goal_pos = self.origin; - self.ai_state = "idle"; - self setanimstatefromasd( "zm_idle" ); - self setgoalpos( self.goal_pos ); - } + 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.goal_pos = player.origin; + brutus_start_basic_find_flesh(); + } + else if ( isdefined( self.priority_item ) ) + { + brutus_stop_basic_find_flesh(); + self.goalradius = 12; + self.custom_goalradius_override = 12; + self.goal_pos = self get_interact_offset( self.priority_item, self.ai_state ); + self setgoalpos( self.goal_pos ); + } + else if ( isdefined( player ) ) + { + self.favorite_enemy = player; + self.goal_pos = self.favorite_enemy.origin; + brutus_start_basic_find_flesh(); + } + else + { + self.goal_pos = self.origin; + self.ai_state = "idle"; + self setanimstatefromasd( "zm_idle" ); + self setgoalpos( self.goal_pos ); + } - wait 1; - } + wait 1; + } } get_brutus_spawn_pos_val( brutus_pos ) { - score = 0; - zone_name = brutus_pos.zone_name; + score = 0; + zone_name = brutus_pos.zone_name; - if ( !maps\mp\zombies\_zm_zonemgr::zone_is_enabled( zone_name ) ) - return 0; + if ( !maps\mp\zombies\_zm_zonemgr::zone_is_enabled( zone_name ) ) + 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 ) - return 0; - else - { - n_score_addition = 1; + if ( a_players_in_zone.size == 0 ) + return 0; + else + { + n_score_addition = 1; - for ( i = 0; i < a_players_in_zone.size; i++ ) - { - 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_score_addition += linear_map( n_dist, 2000, 0, 0, level.brutus_players_in_zone_spawn_point_cap ); - } - } + for ( i = 0; i < a_players_in_zone.size; i++ ) + { + 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_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 ) - 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; - 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; for ( i = 0; i < interaction_types.size; i++ ) @@ -426,7 +426,7 @@ get_brutus_spawn_pos_val( brutus_pos ) } } - return score; + return score; } brutus_spawn( starting_health, has_helmet, helmet_hits, explosive_dmg_taken, zone_name ) diff --git a/scripts/zm/replaced/_zm_ai_dogs.gsc b/scripts/zm/replaced/_zm_ai_dogs.gsc index a017ef2d..5ac5a61d 100644 --- a/scripts/zm/replaced/_zm_ai_dogs.gsc +++ b/scripts/zm/replaced/_zm_ai_dogs.gsc @@ -12,22 +12,22 @@ enable_dog_rounds() { - level.dog_rounds_enabled = 1; + level.dog_rounds_enabled = 1; - if ( !isdefined( level.dog_round_track_override ) ) - level.dog_round_track_override = ::dog_round_tracker; + if ( !isdefined( level.dog_round_track_override ) ) + level.dog_round_track_override = ::dog_round_tracker; - level thread [[ level.dog_round_track_override ]](); + level thread [[ level.dog_round_track_override ]](); } dog_round_tracker() { - level.dog_round_count = 1; - level.next_dog_round = level.round_number + randomintrange( 4, 6 ); - old_spawn_func = level.round_spawn_func; - old_wait_func = level.round_wait_func; + level.dog_round_count = 1; + level.next_dog_round = level.round_number + randomintrange( 4, 6 ); + old_spawn_func = level.round_spawn_func; + old_wait_func = level.round_wait_func; - if (level.next_dog_round == 5) + if (level.next_dog_round == 5) { level.prev_dog_round_amount = 4; } @@ -36,19 +36,19 @@ dog_round_tracker() level.prev_dog_round_amount = 5; } - while ( true ) - { - level waittill( "between_round_over" ); + while ( true ) + { + level waittill( "between_round_over" ); - if ( level.round_number == level.next_dog_round ) - { - level.music_round_override = 1; - old_spawn_func = level.round_spawn_func; - old_wait_func = level.round_wait_func; - dog_round_start(); - level.round_spawn_func = ::dog_round_spawning; + if ( level.round_number == level.next_dog_round ) + { + level.music_round_override = 1; + old_spawn_func = level.round_spawn_func; + old_wait_func = level.round_wait_func; + dog_round_start(); + 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.next_dog_round = level.round_number + level.prev_dog_round_amount; @@ -66,14 +66,14 @@ dog_round_tracker() level.prev_dog_round_amount = undefined; } - } - else if ( flag( "dog_round" ) ) - { - dog_round_stop(); - level.round_spawn_func = old_spawn_func; - level.round_wait_func = old_wait_func; - level.music_round_override = 0; - level.dog_round_count += 1; - } - } + } + else if ( flag( "dog_round" ) ) + { + dog_round_stop(); + level.round_spawn_func = old_spawn_func; + level.round_wait_func = old_wait_func; + level.music_round_override = 0; + level.dog_round_count += 1; + } + } } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_ai_ghost.gsc b/scripts/zm/replaced/_zm_ai_ghost.gsc index a33b33e5..b9e09283 100644 --- a/scripts/zm/replaced/_zm_ai_ghost.gsc +++ b/scripts/zm/replaced/_zm_ai_ghost.gsc @@ -16,93 +16,93 @@ ghost_zone_spawning_think() { - level endon( "intermission" ); + level endon( "intermission" ); - if ( isdefined( level.intermission ) && level.intermission ) - return; + if ( isdefined( level.intermission ) && level.intermission ) + return; - if ( !isdefined( level.female_ghost_spawner ) ) - { - return; - } + if ( !isdefined( level.female_ghost_spawner ) ) + { + return; + } - while ( true ) - { - if ( level.zombie_ghost_count >= level.zombie_ai_limit_ghost ) - { - wait 0.1; - continue; - } + while ( true ) + { + if ( level.zombie_ghost_count >= level.zombie_ai_limit_ghost ) + { + wait 0.1; + continue; + } - valid_player_count = 0; - valid_players = []; + valid_player_count = 0; + valid_players = []; - while ( valid_player_count < 1 ) - { - players = getplayers(); - valid_player_count = 0; + while ( valid_player_count < 1 ) + { + players = getplayers(); + valid_player_count = 0; - foreach ( player in players ) - { - if ( is_player_valid( player ) && !is_player_fully_claimed( player ) ) - { - if ( isdefined( player.is_in_ghost_zone ) && player.is_in_ghost_zone ) - { - valid_player_count++; - valid_players[valid_players.size] = player; - } - } - } + foreach ( player in players ) + { + if ( is_player_valid( player ) && !is_player_fully_claimed( player ) ) + { + if ( isdefined( player.is_in_ghost_zone ) && player.is_in_ghost_zone ) + { + valid_player_count++; + valid_players[valid_players.size] = player; + } + } + } - wait 0.1; - } + wait 0.1; + } - valid_players = array_randomize( valid_players ); - spawn_point = get_best_spawn_point( valid_players[0] ); + valid_players = array_randomize( valid_players ); + spawn_point = get_best_spawn_point( valid_players[0] ); - if ( !isdefined( spawn_point ) ) - { - wait 0.1; - continue; - } + if ( !isdefined( spawn_point ) ) + { + wait 0.1; + continue; + } - ghost_ai = undefined; + ghost_ai = undefined; - if ( isdefined( level.female_ghost_spawner ) ) - ghost_ai = spawn_zombie( level.female_ghost_spawner, level.female_ghost_spawner.targetname, spawn_point ); - else - { - return; - } + if ( isdefined( level.female_ghost_spawner ) ) + ghost_ai = spawn_zombie( level.female_ghost_spawner, level.female_ghost_spawner.targetname, spawn_point ); + else + { + return; + } - if ( isdefined( ghost_ai ) ) - { - ghost_ai setclientfield( "ghost_fx", 3 ); - ghost_ai.spawn_point = spawn_point; - ghost_ai.is_ghost = 1; - ghost_ai.is_spawned_in_ghost_zone = 1; - ghost_ai.find_target = 1; - level.zombie_ghost_count++; - } - else - { - return; - } + if ( isdefined( ghost_ai ) ) + { + ghost_ai setclientfield( "ghost_fx", 3 ); + ghost_ai.spawn_point = spawn_point; + ghost_ai.is_ghost = 1; + ghost_ai.is_spawned_in_ghost_zone = 1; + ghost_ai.find_target = 1; + level.zombie_ghost_count++; + } + else + { + return; + } - wait 0.1; - } + wait 0.1; + } } should_last_ghost_drop_powerup() { - if ( flag( "time_bomb_restore_active" ) ) - return false; + if ( flag( "time_bomb_restore_active" ) ) + return false; - if ( !isdefined( level.ghost_round_last_ghost_origin ) ) - return false; + if ( !isdefined( level.ghost_round_last_ghost_origin ) ) + return false; if ( !is_true( level.ghost_round_no_damage ) ) return false; - return true; + return true; } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_ai_leaper.gsc b/scripts/zm/replaced/_zm_ai_leaper.gsc index 3cfebefd..8221c633 100644 --- a/scripts/zm/replaced/_zm_ai_leaper.gsc +++ b/scripts/zm/replaced/_zm_ai_leaper.gsc @@ -15,10 +15,10 @@ leaper_round_tracker() { - level.leaper_round_count = 1; - level.next_leaper_round = level.round_number + randomintrange( 4, 6 ); - old_spawn_func = level.round_spawn_func; - old_wait_func = level.round_wait_func; + level.leaper_round_count = 1; + level.next_leaper_round = level.round_number + randomintrange( 4, 6 ); + old_spawn_func = level.round_spawn_func; + old_wait_func = level.round_wait_func; if (level.next_leaper_round == 5) { @@ -29,18 +29,18 @@ leaper_round_tracker() level.prev_leaper_round_amount = 5; } - while ( true ) - { - level waittill( "between_round_over" ); + while ( true ) + { + level waittill( "between_round_over" ); - if ( level.round_number == level.next_leaper_round ) - { - level.music_round_override = 1; - old_spawn_func = level.round_spawn_func; - old_wait_func = level.round_wait_func; - leaper_round_start(); - level.round_spawn_func = ::leaper_round_spawning; - level.round_wait_func = ::leaper_round_wait; + if ( level.round_number == level.next_leaper_round ) + { + level.music_round_override = 1; + old_spawn_func = level.round_spawn_func; + old_wait_func = level.round_wait_func; + leaper_round_start(); + level.round_spawn_func = ::leaper_round_spawning; + level.round_wait_func = ::leaper_round_wait; if( !isdefined( level.prev_leaper_round_amount ) ) { @@ -60,79 +60,79 @@ leaper_round_tracker() level.prev_leaper_round_amount = undefined; } - } - else if ( flag( "leaper_round" ) ) - { - leaper_round_stop(); - level.round_spawn_func = old_spawn_func; - level.round_wait_func = old_wait_func; - level.music_round_override = 0; - level.leaper_round_count += 1; - } - } + } + else if ( flag( "leaper_round" ) ) + { + leaper_round_stop(); + level.round_spawn_func = old_spawn_func; + level.round_wait_func = old_wait_func; + level.music_round_override = 0; + level.leaper_round_count += 1; + } + } } leaper_round_accuracy_tracking() { - players = getplayers(); - level.leaper_round_accurate_players = 0; + players = getplayers(); + level.leaper_round_accurate_players = 0; - 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_hits_start_leaper_round = players[i] maps\mp\gametypes_zm\_globallogic_score::getpersstat( "hits" ); - } + 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_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++ ) - { - 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; + 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_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 ) - level.leaper_round_accurate_players++; - } + if ( total_shots_end_leaper_round == total_hits_end_leaper_round ) + level.leaper_round_accurate_players++; + } - if ( level.leaper_round_accurate_players == players.size ) - { - 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 ); - 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 ) ); - } - } + if ( level.leaper_round_accurate_players == players.size ) + { + 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 ); + 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 ) ); + } + } } leaper_death() { - self endon( "leaper_cleanup" ); + self endon( "leaper_cleanup" ); - self waittill( "death" ); + self waittill( "death" ); - self leaper_stop_trail_fx(); - self playsound( "zmb_vocals_leaper_death" ); - playfx( level._effect["leaper_death"], self.origin ); + self leaper_stop_trail_fx(); + self playsound( "zmb_vocals_leaper_death" ); + playfx( level._effect["leaper_death"], self.origin ); - if ( get_current_zombie_count() == 0 && level.zombie_total == 0 ) - { - level.last_leaper_origin = self.origin; - level notify( "last_leaper_down" ); - } + if ( get_current_zombie_count() == 0 && level.zombie_total == 0 ) + { + level.last_leaper_origin = self.origin; + level notify( "last_leaper_down" ); + } - if ( isplayer( self.attacker ) ) - { - self.deathpoints_already_given = 1; + if ( isplayer( self.attacker ) ) + { + self.deathpoints_already_given = 1; - event = "death"; + event = "death"; - if ( issubstr( self.damageweapon, "knife_ballistic_" ) ) - event = "ballistic_knife_death"; + if ( issubstr( self.damageweapon, "knife_ballistic_" ) ) + event = "ballistic_knife_death"; - 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 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 ); + } } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_ai_mechz.gsc b/scripts/zm/replaced/_zm_ai_mechz.gsc index a9454839..8b04f5cc 100644 --- a/scripts/zm/replaced/_zm_ai_mechz.gsc +++ b/scripts/zm/replaced/_zm_ai_mechz.gsc @@ -22,260 +22,260 @@ mechz_set_starting_health() { - self.maxhealth = level.mechz_health; - self.helmet_dmg = 0; - self.helmet_dmg_for_removal = self.maxhealth * level.mechz_helmet_health_percentage; - self.powerplant_cover_dmg = 0; - self.powerplant_cover_dmg_for_removal = self.maxhealth * level.mechz_powerplant_expose_health_percentage; - self.powerplant_dmg = 0; - self.powerplant_dmg_for_destroy = self.maxhealth * level.mechz_powerplant_destroyed_health_percentage; - level.mechz_explosive_dmg_to_cancel_claw = self.maxhealth * level.mechz_explosive_dmg_to_cancel_claw_percentage; + self.maxhealth = level.mechz_health; + self.helmet_dmg = 0; + self.helmet_dmg_for_removal = self.maxhealth * level.mechz_helmet_health_percentage; + self.powerplant_cover_dmg = 0; + self.powerplant_cover_dmg_for_removal = self.maxhealth * level.mechz_powerplant_expose_health_percentage; + self.powerplant_dmg = 0; + self.powerplant_dmg_for_destroy = self.maxhealth * level.mechz_powerplant_destroyed_health_percentage; + level.mechz_explosive_dmg_to_cancel_claw = self.maxhealth * level.mechz_explosive_dmg_to_cancel_claw_percentage; - self.health = level.mechz_health; - self.non_attacker_func = ::mechz_non_attacker_damage_override; - self.non_attack_func_takes_attacker = 1; - self.actor_damage_func = ::mechz_damage_override; - self.instakill_func = ::mechz_instakill_override; - self.nuke_damage_func = ::mechz_nuke_override; + self.health = level.mechz_health; + self.non_attacker_func = ::mechz_non_attacker_damage_override; + self.non_attack_func_takes_attacker = 1; + self.actor_damage_func = ::mechz_damage_override; + self.instakill_func = ::mechz_instakill_override; + self.nuke_damage_func = ::mechz_nuke_override; } mechz_damage_override( inflictor, attacker, damage, flags, meansofdeath, weapon, vpoint, vdir, shitloc, poffsettime, boneindex ) { - num_tiers = level.mechz_armor_info.size + 1; - old_health_tier = int( num_tiers * self.health / self.maxhealth ); - bonename = getpartname( "c_zom_mech_body", boneindex ); + num_tiers = level.mechz_armor_info.size + 1; + old_health_tier = int( num_tiers * self.health / self.maxhealth ); + 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 ) ) - { - n_mechz_damage_percent = 1.0; - n_mechz_headshot_modifier = 2.0; - } - else - { - n_mechz_damage_percent = level.mechz_damage_percent; - n_mechz_headshot_modifier = 1.0; - } + 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_headshot_modifier = 2.0; + } + else + { + n_mechz_damage_percent = level.mechz_damage_percent; + n_mechz_headshot_modifier = 1.0; + } - if ( isdefined( weapon ) && is_weapon_shotgun( weapon ) ) - { - n_mechz_damage_percent *= level.mechz_shotgun_damage_mod; - n_mechz_headshot_modifier *= level.mechz_shotgun_damage_mod; - } + if ( isdefined( weapon ) && is_weapon_shotgun( weapon ) ) + { + n_mechz_damage_percent *= level.mechz_shotgun_damage_mod; + n_mechz_headshot_modifier *= level.mechz_shotgun_damage_mod; + } - if ( damage <= 10 ) - n_mechz_damage_percent = 1.0; + if ( damage <= 10 ) + 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 ( n_mechz_damage_percent < 0.5 ) - n_mechz_damage_percent = 0.5; + 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 ) + n_mechz_damage_percent = 0.5; - if ( !( isdefined( self.has_helmet ) && self.has_helmet ) && issubstr( weapon, "staff" ) && n_mechz_damage_percent < 1.0 ) - 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; - final_damage = damage * n_mechz_damage_percent; + final_damage = damage * n_mechz_damage_percent; - if ( !isdefined( self.explosive_dmg_taken ) ) - self.explosive_dmg_taken = 0; + if ( !isdefined( self.explosive_dmg_taken ) ) + self.explosive_dmg_taken = 0; - self.explosive_dmg_taken += final_damage; - self.helmet_dmg += final_damage; + self.explosive_dmg_taken += final_damage; + self.helmet_dmg += final_damage; - 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.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(); + 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.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 ent_released_from_claw_grab_achievement( attacker, self.e_grabbed ); - self thread mechz_claw_release(); - } - } - } - else if ( shitloc != "head" && shitloc != "helmet" ) - { - if ( bonename == "tag_powersupply" ) - { - final_damage = damage * n_mechz_damage_percent; + self thread ent_released_from_claw_grab_achievement( attacker, self.e_grabbed ); + self thread mechz_claw_release(); + } + } + } + else if ( shitloc != "head" && shitloc != "helmet" ) + { + if ( bonename == "tag_powersupply" ) + { + final_damage = damage * n_mechz_damage_percent; - if ( !( isdefined( self.powerplant_covered ) && self.powerplant_covered ) ) - self.powerplant_dmg += final_damage; - else - self.powerplant_cover_dmg += final_damage; - } + if ( !( isdefined( self.powerplant_covered ) && self.powerplant_covered ) ) + self.powerplant_dmg += final_damage; + else + 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 ) ) - self thread mechz_claw_shot_pain_reaction(); + if ( isdefined( self.e_grabbed ) && ( shitloc == "left_hand" || shitloc == "left_arm_lower" || shitloc == "left_arm_upper" ) ) + { + if ( isdefined( self.e_grabbed ) ) + self thread mechz_claw_shot_pain_reaction(); - self thread ent_released_from_claw_grab_achievement( attacker, self.e_grabbed ); - self thread mechz_claw_release( 1 ); - } + self thread ent_released_from_claw_grab_achievement( attacker, self.e_grabbed ); + self thread mechz_claw_release( 1 ); + } - final_damage = damage * n_mechz_damage_percent; - } - else if ( !( isdefined( self.has_helmet ) && self.has_helmet ) ) - final_damage = damage * n_mechz_headshot_modifier; - else - { - final_damage = damage * n_mechz_damage_percent; - self.helmet_dmg += final_damage; - } + final_damage = damage * n_mechz_damage_percent; + } + else if ( !( isdefined( self.has_helmet ) && self.has_helmet ) ) + final_damage = damage * n_mechz_headshot_modifier; + else + { + final_damage = damage * n_mechz_damage_percent; + self.helmet_dmg += final_damage; + } - if ( !isdefined( weapon ) || weapon == "none" ) - { - if ( !isplayer( attacker ) ) - final_damage = 0; - } + if ( !isdefined( weapon ) || weapon == "none" ) + { + if ( !isplayer( attacker ) ) + 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 ) - { - while ( old_health_tier > new_health_tier ) - { - if ( old_health_tier < num_tiers ) - self mechz_launch_armor_piece(); + if ( old_health_tier > new_health_tier ) + { + while ( old_health_tier > new_health_tier ) + { + if ( old_health_tier < num_tiers ) + 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 ) - { - self.has_helmet = 0; - self detach( "c_zom_mech_faceplate", "J_Helmet" ); + if ( isdefined( self.has_helmet ) && self.has_helmet && self.helmet_dmg >= self.helmet_dmg_for_removal ) + { + self.has_helmet = 0; + self detach( "c_zom_mech_faceplate", "J_Helmet" ); - if ( sndmechzisnetworksafe( "destruction" ) ) - self playsound( "zmb_ai_mechz_destruction" ); + if ( sndmechzisnetworksafe( "destruction" ) ) + self playsound( "zmb_ai_mechz_destruction" ); - if ( sndmechzisnetworksafe( "angry" ) ) - self playsound( "zmb_ai_mechz_vox_angry" ); + if ( sndmechzisnetworksafe( "angry" ) ) + self playsound( "zmb_ai_mechz_vox_angry" ); - self.fx_field |= 1024; - self.fx_field &= ~2048; - self setclientfield( "mechz_fx", self.fx_field ); + self.fx_field |= 1024; + self.fx_field &= ~2048; + self setclientfield( "mechz_fx", self.fx_field ); - if ( !( isdefined( self.not_interruptable ) && self.not_interruptable ) && !( isdefined( self.is_traversing ) && self.is_traversing ) ) - { - self mechz_interrupt(); - self animscripted( self.origin, self.angles, "zm_pain_faceplate" ); - self maps\mp\animscripts\zm_shared::donotetracks( "pain_anim_faceplate" ); - } + if ( !( isdefined( self.not_interruptable ) && self.not_interruptable ) && !( isdefined( self.is_traversing ) && self.is_traversing ) ) + { + self mechz_interrupt(); + self animscripted( self.origin, self.angles, "zm_pain_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 ) - { - self.powerplant_covered = 0; - self detach( "c_zom_mech_powersupply_cap", "tag_powersupply" ); - cap_model = spawn( "script_model", self gettagorigin( "tag_powersupply" ) ); - cap_model.angles = self gettagangles( "tag_powersupply" ); - cap_model setmodel( "c_zom_mech_powersupply_cap" ); - cap_model physicslaunch( cap_model.origin, anglestoforward( cap_model.angles ) ); - cap_model thread mechz_delayed_item_delete(); + if ( isdefined( self.powerplant_covered ) && self.powerplant_covered && self.powerplant_cover_dmg >= self.powerplant_cover_dmg_for_removal ) + { + self.powerplant_covered = 0; + self detach( "c_zom_mech_powersupply_cap", "tag_powersupply" ); + cap_model = spawn( "script_model", self gettagorigin( "tag_powersupply" ) ); + cap_model.angles = self gettagangles( "tag_powersupply" ); + cap_model setmodel( "c_zom_mech_powersupply_cap" ); + cap_model physicslaunch( cap_model.origin, anglestoforward( cap_model.angles ) ); + cap_model thread mechz_delayed_item_delete(); - if ( sndmechzisnetworksafe( "destruction" ) ) - self playsound( "zmb_ai_mechz_destruction" ); + if ( sndmechzisnetworksafe( "destruction" ) ) + self playsound( "zmb_ai_mechz_destruction" ); - if ( !( isdefined( self.not_interruptable ) && self.not_interruptable ) && !( isdefined( self.is_traversing ) && self.is_traversing ) ) - { - self mechz_interrupt(); - self animscripted( self.origin, self.angles, "zm_pain_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 ) - { - self.has_powerplant = 0; - self thread mechz_stun( level.mechz_powerplant_stun_time ); + if ( !( isdefined( self.not_interruptable ) && self.not_interruptable ) && !( isdefined( self.is_traversing ) && self.is_traversing ) ) + { + self mechz_interrupt(); + self animscripted( self.origin, self.angles, "zm_pain_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 ) + { + self.has_powerplant = 0; + self thread mechz_stun( level.mechz_powerplant_stun_time ); - if ( sndmechzisnetworksafe( "destruction" ) ) - self playsound( "zmb_ai_mechz_destruction" ); - } + if ( sndmechzisnetworksafe( "destruction" ) ) + self playsound( "zmb_ai_mechz_destruction" ); + } - return final_damage; + return final_damage; } mechz_round_tracker() { - maps\mp\zombies\_zm_ai_mechz_ffotd::mechz_round_tracker_start(); - level.num_mechz_spawned = 0; - old_spawn_func = level.round_spawn_func; - old_wait_func = level.round_wait_func; + maps\mp\zombies\_zm_ai_mechz_ffotd::mechz_round_tracker_start(); + level.num_mechz_spawned = 0; + old_spawn_func = level.round_spawn_func; + old_wait_func = level.round_wait_func; - while ( !isdefined( level.zombie_mechz_locations ) ) - wait 0.05; + while ( !isdefined( level.zombie_mechz_locations ) ) + wait 0.05; - flag_wait( "activate_zone_nml" ); - mech_start_round_num = 8; + flag_wait( "activate_zone_nml" ); + mech_start_round_num = 8; - if ( isdefined( level.is_forever_solo_game ) && level.is_forever_solo_game ) - mech_start_round_num = 8; + if ( isdefined( level.is_forever_solo_game ) && level.is_forever_solo_game ) + mech_start_round_num = 8; - while ( level.round_number < mech_start_round_num ) - level waittill( "between_round_over" ); + while ( level.round_number < mech_start_round_num ) + level waittill( "between_round_over" ); - level.next_mechz_round = level.round_number; - level thread debug_print_mechz_round(); + level.next_mechz_round = level.round_number; + level thread debug_print_mechz_round(); - while ( true ) - { - maps\mp\zombies\_zm_ai_mechz_ffotd::mechz_round_tracker_loop_start(); + while ( true ) + { + maps\mp\zombies\_zm_ai_mechz_ffotd::mechz_round_tracker_loop_start(); - if ( level.num_mechz_spawned > 0 ) - level.mechz_should_drop_powerup = 1; + if ( level.num_mechz_spawned > 0 ) + level.mechz_should_drop_powerup = 1; - if ( level.next_mechz_round <= level.round_number ) - { - a_zombies = getaispeciesarray( level.zombie_team, "all" ); + if ( level.next_mechz_round <= level.round_number ) + { + a_zombies = getaispeciesarray( level.zombie_team, "all" ); - foreach ( zombie in a_zombies ) - { - if ( isdefined( zombie.is_mechz ) && zombie.is_mechz && isalive( zombie ) ) - { - level.next_mechz_round++; - break; - } - } - } + foreach ( zombie in a_zombies ) + { + if ( isdefined( zombie.is_mechz ) && zombie.is_mechz && isalive( zombie ) ) + { + level.next_mechz_round++; + break; + } + } + } - if ( level.mechz_left_to_spawn == 0 && level.next_mechz_round <= level.round_number ) - { - mechz_health_increases(); + if ( level.mechz_left_to_spawn == 0 && level.next_mechz_round <= level.round_number ) + { + mechz_health_increases(); - if ( get_players().size == 1 ) - level.mechz_zombie_per_round = 1; - else if ( level.mechz_round_count < 2 ) - level.mechz_zombie_per_round = 1; - else if ( level.mechz_round_count < 5 ) - level.mechz_zombie_per_round = 2; - else - level.mechz_zombie_per_round = 3; + if ( get_players().size == 1 ) + level.mechz_zombie_per_round = 1; + else if ( level.mechz_round_count < 2 ) + level.mechz_zombie_per_round = 1; + else if ( level.mechz_round_count < 5 ) + level.mechz_zombie_per_round = 2; + else + level.mechz_zombie_per_round = 3; - level.mechz_left_to_spawn = level.mechz_zombie_per_round; - mechz_spawning = level.mechz_left_to_spawn; - wait( randomfloatrange( 10.0, 15.0 ) ); - level notify( "spawn_mechz" ); + level.mechz_left_to_spawn = level.mechz_zombie_per_round; + mechz_spawning = level.mechz_left_to_spawn; + wait( randomfloatrange( 10.0, 15.0 ) ); + level notify( "spawn_mechz" ); - 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 ); - else - n_round_gap = randomintrange( level.mechz_min_round_fq, level.mechz_max_round_fq ); + 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 ); + else + 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.mechz_round_count++; - level thread debug_print_mechz_round(); - level.num_mechz_spawned += mechz_spawning; - } + level.next_mechz_round = level.round_number + n_round_gap; + level.mechz_round_count++; + level thread debug_print_mechz_round(); + level.num_mechz_spawned += mechz_spawning; + } - 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(); + } } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_ai_screecher.gsc b/scripts/zm/replaced/_zm_ai_screecher.gsc index dcf23843..93ebbfc5 100644 --- a/scripts/zm/replaced/_zm_ai_screecher.gsc +++ b/scripts/zm/replaced/_zm_ai_screecher.gsc @@ -12,281 +12,281 @@ screecher_spawning_logic() { - level endon( "intermission" ); + level endon( "intermission" ); - if ( level.intermission ) - return; + if ( level.intermission ) + return; - if ( level.screecher_spawners.size < 1 ) - { - return; - } + if ( level.screecher_spawners.size < 1 ) + { + return; + } - while ( true ) - { - while ( !isdefined( level.zombie_screecher_locations ) || level.zombie_screecher_locations.size <= 0 ) - wait 0.1; + while ( true ) + { + while ( !isdefined( level.zombie_screecher_locations ) || level.zombie_screecher_locations.size <= 0 ) + wait 0.1; - // while ( getdvarint( _hash_B0C0D38F ) ) - // wait 0.1; + // while ( getdvarint( _hash_B0C0D38F ) ) + // wait 0.1; - if ( !flag( "spawn_zombies" ) ) - flag_wait( "spawn_zombies" ); + if ( !flag( "spawn_zombies" ) ) + flag_wait( "spawn_zombies" ); - valid_players_in_screecher_zone = 0; - valid_players = []; + valid_players_in_screecher_zone = 0; + valid_players = []; - while ( valid_players_in_screecher_zone <= level.zombie_screecher_count ) - { - players = getplayers(); - valid_players_in_screecher_zone = 0; + while ( valid_players_in_screecher_zone <= level.zombie_screecher_count ) + { + players = getplayers(); + valid_players_in_screecher_zone = 0; - for ( p = 0; p < players.size; p++ ) - { - if ( is_player_valid( players[p] ) && player_in_screecher_zone( players[p] ) && !isdefined( players[p].screecher ) ) - { - valid_players_in_screecher_zone++; - valid_players[valid_players.size] = players[p]; - } - } + for ( p = 0; p < players.size; p++ ) + { + if ( is_player_valid( players[p] ) && player_in_screecher_zone( players[p] ) && !isdefined( players[p].screecher ) ) + { + valid_players_in_screecher_zone++; + valid_players[valid_players.size] = players[p]; + } + } - wait 0.1; - } + wait 0.1; + } - if ( !isdefined( level.zombie_screecher_locations ) || level.zombie_screecher_locations.size <= 0 ) - continue; + if ( !isdefined( level.zombie_screecher_locations ) || level.zombie_screecher_locations.size <= 0 ) + 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_point = undefined; + spawn_points = get_array_of_closest( valid_players[0].origin, level.zombie_screecher_locations ); + spawn_point = undefined; - if ( !isdefined( spawn_points ) || spawn_points.size == 0 ) - { - wait 0.1; - continue; - } + if ( !isdefined( spawn_points ) || spawn_points.size == 0 ) + { + wait 0.1; + continue; + } - if ( !isdefined( level.last_spawn ) ) - { - level.last_spawn_index = 0; - level.last_spawn = []; - level.last_spawn[level.last_spawn_index] = spawn_points[0]; - level.last_spawn_index = 1; - spawn_point = spawn_points[0]; - } - else - { - foreach ( point in spawn_points ) - { - if ( point == level.last_spawn[0] ) - continue; + if ( !isdefined( level.last_spawn ) ) + { + level.last_spawn_index = 0; + level.last_spawn = []; + level.last_spawn[level.last_spawn_index] = spawn_points[0]; + level.last_spawn_index = 1; + spawn_point = spawn_points[0]; + } + else + { + foreach ( point in spawn_points ) + { + if ( point == level.last_spawn[0] ) + continue; - if ( isdefined( level.last_spawn[1] ) && point == level.last_spawn[1] ) - continue; + if ( isdefined( level.last_spawn[1] ) && point == level.last_spawn[1] ) + continue; - spawn_point = point; - level.last_spawn[level.last_spawn_index] = spawn_point; - level.last_spawn_index++; + spawn_point = point; + level.last_spawn[level.last_spawn_index] = spawn_point; + level.last_spawn_index++; - if ( level.last_spawn_index > 1 ) - level.last_spawn_index = 0; + if ( level.last_spawn_index > 1 ) + level.last_spawn_index = 0; - break; - } - } + break; + } + } - if ( !isdefined( spawn_point ) ) - spawn_point = spawn_points[0]; + if ( !isdefined( spawn_point ) ) + spawn_point = spawn_points[0]; - if ( isdefined( level.screecher_spawners ) ) - { - spawner = random( level.screecher_spawners ); - ai = spawn_zombie( spawner, spawner.targetname, spawn_point ); - } + if ( isdefined( level.screecher_spawners ) ) + { + spawner = random( level.screecher_spawners ); + ai = spawn_zombie( spawner, spawner.targetname, spawn_point ); + } - if ( isdefined( ai ) ) - { - ai.spawn_point = spawn_point; - level.zombie_screecher_count++; - } + if ( isdefined( ai ) ) + { + ai.spawn_point = spawn_point; + level.zombie_screecher_count++; + } - wait 5; - } + wait 5; + } } screecher_melee_damage( player ) { - melee_score = 0; - if ( player hasweapon( "tazer_knuckles_zm" ) ) - { - melee_score = 30; - } - else if ( player hasweapon( "bowie_knife_zm" ) ) - { - melee_score = 15; - } - else - { - melee_score = 10; - } + melee_score = 0; + if ( player hasweapon( "tazer_knuckles_zm" ) ) + { + melee_score = 30; + } + else if ( player hasweapon( "bowie_knife_zm" ) ) + { + melee_score = 15; + } + else + { + melee_score = 10; + } - if ( self.screecher_score > 0 ) - { - if ( melee_score > self.screecher_score ) - { - self.screecher_score = 0; - } - else - { - self.screecher_score -= melee_score; - } - } + if ( self.screecher_score > 0 ) + { + if ( melee_score > self.screecher_score ) + { + self.screecher_score = 0; + } + else + { + self.screecher_score -= melee_score; + } + } - if ( self.screecher_score <= 0 ) - { - self.player_score += melee_score; - } + if ( self.screecher_score <= 0 ) + { + 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"] ) - self.player_score = 30; - else - player thread do_player_general_vox( "general", "screecher_cut" ); + if ( level.zombie_vars[player.team]["zombie_insta_kill"] ) + self.player_score = 30; + else + player thread do_player_general_vox( "general", "screecher_cut" ); - self screecher_check_score(); + self screecher_check_score(); } screecher_detach( player ) { - self endon( "death" ); - self.state = "detached"; + self endon( "death" ); + self.state = "detached"; - if ( !isdefined( self.linked_ent ) ) - return; + if ( !isdefined( self.linked_ent ) ) + return; - if ( isdefined( player ) ) - { - player clientnotify( "scrEnd" ); + if ( isdefined( player ) ) + { + player clientnotify( "scrEnd" ); - player allowprone( 1 ); + player allowprone( 1 ); - player takeweapon( "screecher_arms_zm" ); + player takeweapon( "screecher_arms_zm" ); - // if ( !getdvarint( _hash_E7EF8EB7 ) ) - player stoppoisoning(); + // if ( !getdvarint( _hash_E7EF8EB7 ) ) + player stoppoisoning(); - if ( !player maps\mp\zombies\_zm_laststand::player_is_in_laststand() && !( isdefined( player.intermission ) && player.intermission ) ) - player decrement_is_drinking(); + if ( !player maps\mp\zombies\_zm_laststand::player_is_in_laststand() && !( isdefined( player.intermission ) && player.intermission ) ) + 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 ) ) - player switchtoweapon( player.screecher_weapon ); - else if ( !player maps\mp\zombies\_zm_laststand::player_is_in_laststand() ) - { - primaryweapons = player getweaponslistprimaries(); + 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 ); + else if ( !player maps\mp\zombies\_zm_laststand::player_is_in_laststand() ) + { + primaryweapons = player getweaponslistprimaries(); - if ( isdefined( primaryweapons ) && primaryweapons.size > 0 ) - player switchtoweapon( primaryweapons[0] ); - } + if ( isdefined( primaryweapons ) && primaryweapons.size > 0 ) + player switchtoweapon( primaryweapons[0] ); + } - player.screecher_weapon = undefined; - } + player.screecher_weapon = undefined; + } - self unlink(); - self setclientfield( "render_third_person", 0 ); + self unlink(); + self setclientfield( "render_third_person", 0 ); - if ( isdefined( self.linked_ent ) ) - { - self.linked_ent.screecher = undefined; - self.linked_ent setmovespeedscale( 1 ); - self.linked_ent = undefined; - } + if ( isdefined( self.linked_ent ) ) + { + self.linked_ent.screecher = undefined; + self.linked_ent setmovespeedscale( 1 ); + self.linked_ent = undefined; + } - self.green_light = player.green_light; - self animcustom( ::screecher_jump_down ); + self.green_light = player.green_light; + 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 ); - self animmode( "normal" ); - self.ignoreall = 1; - self setplayercollision( 1 ); + maps\mp\_visionset_mgr::vsmgr_deactivate( "overlay", "zm_ai_screecher_blur", player ); + self animmode( "normal" ); + self.ignoreall = 1; + self setplayercollision( 1 ); - if ( isdefined( level.screecher_should_burrow ) ) - { - if ( self [[ level.screecher_should_burrow ]]() ) - { - return; - } - } + if ( isdefined( level.screecher_should_burrow ) ) + { + if ( self [[ level.screecher_should_burrow ]]() ) + { + return; + } + } - self thread screecher_runaway(); + self thread screecher_runaway(); } screecher_cleanup() { - self waittill( "death", attacker ); + self waittill( "death", attacker ); - if ( isdefined( attacker ) && isplayer( attacker ) ) - { - if ( isdefined( self.damagelocation ) && isdefined( self.damagemod ) ) - level thread maps\mp\zombies\_zm_audio::player_zombie_kill_vox( self.damagelocation, attacker, self.damagemod, self ); - } + if ( isdefined( attacker ) && isplayer( attacker ) ) + { + if ( isdefined( self.damagelocation ) && isdefined( self.damagemod ) ) + level thread maps\mp\zombies\_zm_audio::player_zombie_kill_vox( self.damagelocation, attacker, self.damagemod, self ); + } - if ( isdefined( self.loopsoundent ) ) - { - self.loopsoundent delete(); - self.loopsoundent = undefined; - } + if ( isdefined( self.loopsoundent ) ) + { + self.loopsoundent delete(); + self.loopsoundent = undefined; + } - player = self.linked_ent; + player = self.linked_ent; - if ( isdefined( player ) ) - { - player playsound( "zmb_vocals_screecher_death" ); - player setmovespeedscale( 1 ); - maps\mp\_visionset_mgr::vsmgr_deactivate( "overlay", "zm_ai_screecher_blur", player ); + if ( isdefined( player ) ) + { + player playsound( "zmb_vocals_screecher_death" ); + player setmovespeedscale( 1 ); + maps\mp\_visionset_mgr::vsmgr_deactivate( "overlay", "zm_ai_screecher_blur", player ); - if ( isdefined( player.screecher_weapon ) ) - { - player clientnotify( "scrEnd" ); + if ( isdefined( player.screecher_weapon ) ) + { + player clientnotify( "scrEnd" ); - player allowprone( 1 ); + player allowprone( 1 ); - player takeweapon( "screecher_arms_zm" ); + player takeweapon( "screecher_arms_zm" ); - // if ( !getdvarint( _hash_E7EF8EB7 ) ) - player stoppoisoning(); + // if ( !getdvarint( _hash_E7EF8EB7 ) ) + player stoppoisoning(); - if ( !player maps\mp\zombies\_zm_laststand::player_is_in_laststand() && !( isdefined( player.intermission ) && player.intermission ) ) - player decrement_is_drinking(); + if ( !player maps\mp\zombies\_zm_laststand::player_is_in_laststand() && !( isdefined( player.intermission ) && player.intermission ) ) + player decrement_is_drinking(); - if ( player.screecher_weapon != "none" && is_player_valid( player ) ) - player switchtoweapon( player.screecher_weapon ); - else - { - primaryweapons = player getweaponslistprimaries(); + if ( player.screecher_weapon != "none" && is_player_valid( player ) ) + player switchtoweapon( player.screecher_weapon ); + else + { + primaryweapons = player getweaponslistprimaries(); - if ( isdefined( primaryweapons ) && primaryweapons.size > 0 ) - player switchtoweapon( primaryweapons[0] ); - } + if ( isdefined( primaryweapons ) && primaryweapons.size > 0 ) + player switchtoweapon( primaryweapons[0] ); + } - player.screecher_weapon = undefined; - } - } + player.screecher_weapon = undefined; + } + } - if ( isdefined( self.claw_fx ) ) - self.claw_fx destroy(); + if ( isdefined( self.claw_fx ) ) + self.claw_fx destroy(); - if ( isdefined( self.anchor ) ) - self.anchor delete(); + if ( isdefined( self.anchor ) ) + self.anchor delete(); - if ( isdefined( level.screecher_cleanup ) ) - self [[ level.screecher_cleanup ]](); + if ( isdefined( level.screecher_cleanup ) ) + self [[ level.screecher_cleanup ]](); - if ( level.zombie_screecher_count > 0 ) - { - level.zombie_screecher_count--; - } + if ( level.zombie_screecher_count > 0 ) + { + level.zombie_screecher_count--; + } } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_ai_sloth.gsc b/scripts/zm/replaced/_zm_ai_sloth.gsc index 4565d037..4d5cc3c6 100644 --- a/scripts/zm/replaced/_zm_ai_sloth.gsc +++ b/scripts/zm/replaced/_zm_ai_sloth.gsc @@ -26,294 +26,294 @@ sloth_init_start_funcs() { - self.start_funcs = []; - self.start_funcs["jail_idle"] = ::start_jail_idle; - self.start_funcs["jail_cower"] = ::start_jail_cower; - self.start_funcs["jail_open"] = ::start_jail_open; - self.start_funcs["jail_run"] = ::start_jail_run; - self.start_funcs["jail_wait"] = ::start_jail_wait; - self.start_funcs["jail_close"] = ::start_jail_close; - self.start_funcs["player_idle"] = ::start_player_idle; - self.start_funcs["roam"] = ::start_roam; - self.start_funcs["follow"] = ::start_follow; - self.start_funcs["mansion"] = ::start_mansion; - self.start_funcs["berserk"] = ::start_berserk; - self.start_funcs["eat"] = ::start_eat; - self.start_funcs["crash"] = ::start_crash; - self.start_funcs["gunshop_run"] = ::start_gunshop_run; - self.start_funcs["gunshop_candy"] = ::start_gunshop_candy; - self.start_funcs["table_eat"] = ::start_table_eat; - self.start_funcs["headbang"] = ::start_headbang; - self.start_funcs["smell"] = ::start_smell; - self.start_funcs["context"] = ::start_context; + self.start_funcs = []; + self.start_funcs["jail_idle"] = ::start_jail_idle; + self.start_funcs["jail_cower"] = ::start_jail_cower; + self.start_funcs["jail_open"] = ::start_jail_open; + self.start_funcs["jail_run"] = ::start_jail_run; + self.start_funcs["jail_wait"] = ::start_jail_wait; + self.start_funcs["jail_close"] = ::start_jail_close; + self.start_funcs["player_idle"] = ::start_player_idle; + self.start_funcs["roam"] = ::start_roam; + self.start_funcs["follow"] = ::start_follow; + self.start_funcs["mansion"] = ::start_mansion; + self.start_funcs["berserk"] = ::start_berserk; + self.start_funcs["eat"] = ::start_eat; + self.start_funcs["crash"] = ::start_crash; + self.start_funcs["gunshop_run"] = ::start_gunshop_run; + self.start_funcs["gunshop_candy"] = ::start_gunshop_candy; + self.start_funcs["table_eat"] = ::start_table_eat; + self.start_funcs["headbang"] = ::start_headbang; + self.start_funcs["smell"] = ::start_smell; + self.start_funcs["context"] = ::start_context; } sloth_init_update_funcs() { - self.update_funcs = []; - self.update_funcs["jail_idle"] = ::update_jail_idle; - self.update_funcs["jail_cower"] = ::update_jail_cower; - self.update_funcs["jail_open"] = ::update_jail_open; - self.update_funcs["jail_run"] = ::update_jail_run; - self.update_funcs["jail_wait"] = ::update_jail_wait; - self.update_funcs["jail_close"] = ::update_jail_close; - self.update_funcs["player_idle"] = ::update_player_idle; - self.update_funcs["roam"] = ::update_roam; - self.update_funcs["follow"] = ::update_follow; - self.update_funcs["mansion"] = ::update_mansion; - self.update_funcs["berserk"] = ::update_berserk; - self.update_funcs["eat"] = ::update_eat; - self.update_funcs["crash"] = ::update_crash; - self.update_funcs["gunshop_run"] = ::update_gunshop_run; - self.update_funcs["gunshop_candy"] = ::update_gunshop_candy; - self.update_funcs["table_eat"] = ::update_table_eat; - self.update_funcs["headbang"] = ::update_headbang; - self.update_funcs["smell"] = ::update_smell; - self.update_funcs["context"] = ::update_context; - self.locomotion_func = ::update_locomotion; + self.update_funcs = []; + self.update_funcs["jail_idle"] = ::update_jail_idle; + self.update_funcs["jail_cower"] = ::update_jail_cower; + self.update_funcs["jail_open"] = ::update_jail_open; + self.update_funcs["jail_run"] = ::update_jail_run; + self.update_funcs["jail_wait"] = ::update_jail_wait; + self.update_funcs["jail_close"] = ::update_jail_close; + self.update_funcs["player_idle"] = ::update_player_idle; + self.update_funcs["roam"] = ::update_roam; + self.update_funcs["follow"] = ::update_follow; + self.update_funcs["mansion"] = ::update_mansion; + self.update_funcs["berserk"] = ::update_berserk; + self.update_funcs["eat"] = ::update_eat; + self.update_funcs["crash"] = ::update_crash; + self.update_funcs["gunshop_run"] = ::update_gunshop_run; + self.update_funcs["gunshop_candy"] = ::update_gunshop_candy; + self.update_funcs["table_eat"] = ::update_table_eat; + self.update_funcs["headbang"] = ::update_headbang; + self.update_funcs["smell"] = ::update_smell; + self.update_funcs["context"] = ::update_context; + self.locomotion_func = ::update_locomotion; } start_jail_run( do_pain ) { - if ( self is_jail_state() ) - return false; + if ( self is_jail_state() ) + return false; - if ( self.state == "berserk" || self.state == "crash" ) - return false; + if ( self.state == "berserk" || self.state == "crash" ) + return false; - if ( self sloth_is_traversing() ) - return false; + if ( self sloth_is_traversing() ) + return false; - if ( self.state == "gunshop_candy" || self.state == "table_eat" ) - { - if ( isdefined( self.bench ) ) - { - if ( isdefined( level.weapon_bench_reset ) ) - self.bench [[ level.weapon_bench_reset ]](); - } - } + if ( self.state == "gunshop_candy" || self.state == "table_eat" ) + { + if ( isdefined( self.bench ) ) + { + if ( isdefined( level.weapon_bench_reset ) ) + self.bench [[ level.weapon_bench_reset ]](); + } + } - self stop_action(); - self thread sndchangebreathingstate( "happy" ); - self thread action_jail_run( self.jail_start.origin, do_pain ); + self stop_action(); + self thread sndchangebreathingstate( "happy" ); + self thread action_jail_run( self.jail_start.origin, do_pain ); - if ( self.state == "context" ) - { - if ( isdefined( self.context.interrupt ) ) - self [[ self.context.interrupt ]](); - } + if ( self.state == "context" ) + { + if ( isdefined( self.context.interrupt ) ) + self [[ self.context.interrupt ]](); + } - self sloth_init_roam_point(); - thread maps\mp\zombies\_zm_unitrigger::unregister_unitrigger( self.gift_trigger ); - return true; + self sloth_init_roam_point(); + thread maps\mp\zombies\_zm_unitrigger::unregister_unitrigger( self.gift_trigger ); + return true; } action_jail_run( pos, do_pain ) { - self.needs_action = 0; + self.needs_action = 0; - if ( isdefined( self.candy_model ) ) - self.candy_model ghost(); + if ( isdefined( self.candy_model ) ) + self.candy_model ghost(); - if ( isdefined( self.booze_model ) ) - self.booze_model ghost(); + if ( isdefined( self.booze_model ) ) + self.booze_model ghost(); - if ( is_true( do_pain ) ) - { - if ( !self sloth_is_traversing() && !is_true( self.is_pain ) ) - { - self.is_pain = 1; - self setanimstatefromasd( "zm_pain" ); - self.reset_asd = "zm_pain"; - self thread finish_pain(); - maps\mp\animscripts\zm_shared::donotetracks( "pain_anim" ); - self notify( "pain_done" ); - self.is_pain = 0; - } - } + if ( is_true( do_pain ) ) + { + if ( !self sloth_is_traversing() && !is_true( self.is_pain ) ) + { + self.is_pain = 1; + self setanimstatefromasd( "zm_pain" ); + self.reset_asd = "zm_pain"; + self thread finish_pain(); + maps\mp\animscripts\zm_shared::donotetracks( "pain_anim" ); + self notify( "pain_done" ); + self.is_pain = 0; + } + } - while ( true ) - { - if ( !self sloth_is_pain() ) - break; + while ( true ) + { + if ( !self sloth_is_pain() ) + break; - wait 0.1; - } + wait 0.1; + } - self.reset_asd = undefined; - self animmode( "normal" ); - self set_zombie_run_cycle( "run" ); - self.locomotion = "run"; - self thread sloth_retreat_vo(); - self check_behind_mansion(); + self.reset_asd = undefined; + self animmode( "normal" ); + self set_zombie_run_cycle( "run" ); + self.locomotion = "run"; + self thread sloth_retreat_vo(); + self check_behind_mansion(); - if ( isdefined( self.mansion_goal ) ) - { - self setgoalpos( self.mansion_goal.origin ); + if ( isdefined( self.mansion_goal ) ) + { + 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; - self.needs_action = 1; + self.needs_action = 1; } start_jail_wait() { - self stopanimscripted(); - self action_jail_wait(); - self thread sndchangebreathingstate( "happy" ); - return 1; + self stopanimscripted(); + self action_jail_wait(); + self thread sndchangebreathingstate( "happy" ); + return 1; } action_jail_wait() { - self.needs_action = 0; - self setgoalpos( self.origin ); - self.anchor.origin = self.origin; - self.anchor.angles = self.angles; - self linkto( self.anchor ); - self setanimstatefromasd( "zm_idle_protect" ); - self.needs_action = 1; + self.needs_action = 0; + self setgoalpos( self.origin ); + self.anchor.origin = self.origin; + self.anchor.angles = self.angles; + self linkto( self.anchor ); + self setanimstatefromasd( "zm_idle_protect" ); + self.needs_action = 1; } update_jail_idle() { - if ( is_true( self.open_jail ) ) - { - level notify( "cell_open" ); - self.open_jail = 0; - } + if ( is_true( self.open_jail ) ) + { + level notify( "cell_open" ); + self.open_jail = 0; + } - if ( is_true( level.cell_open ) ) - { - self stop_action(); - self sloth_set_state( "jail_idle" ); - } + if ( is_true( level.cell_open ) ) + { + self stop_action(); + self sloth_set_state( "jail_idle" ); + } } update_jail_wait() { - if (is_true(self.dance_action)) - { - return; - } + if (is_true(self.dance_action)) + { + return; + } - players = get_players(); + players = get_players(); - foreach ( player in players ) - { - if ( player maps\mp\zombies\_zm_zonemgr::entity_in_zone( "zone_underground_jail" ) ) - { - return; - } - } + foreach ( player in players ) + { + if ( player maps\mp\zombies\_zm_zonemgr::entity_in_zone( "zone_underground_jail" ) ) + { + return; + } + } - if ( self.needs_action ) - self sloth_set_state( "jail_close" ); + if ( self.needs_action ) + self sloth_set_state( "jail_close" ); } update_eat() { - if ( is_true( self.needs_action ) ) - { - self setclientfield( "sloth_eating", 0 ); + if ( is_true( self.needs_action ) ) + { + self setclientfield( "sloth_eating", 0 ); - if ( isdefined( self.candy_model ) ) - self.candy_model ghost(); + if ( isdefined( self.candy_model ) ) + self.candy_model ghost(); - context = self check_contextual_actions(); + context = self check_contextual_actions(); - if ( isdefined( context ) ) - { - self sloth_set_state( "context", context ); - return; - } + if ( isdefined( context ) ) + { + self sloth_set_state( "context", context ); + return; + } - self sloth_set_state( "roam" ); - } + self sloth_set_state( "roam" ); + } } sloth_check_ragdolls( ignore_zombie ) { - non_ragdoll = 0; - zombies = getaispeciesarray( level.zombie_team, "all" ); + non_ragdoll = 0; + zombies = getaispeciesarray( level.zombie_team, "all" ); - for ( i = 0; i < zombies.size; i++ ) - { - zombie = zombies[i]; + for ( i = 0; i < zombies.size; i++ ) + { + zombie = zombies[i]; - if ( is_true( zombie.is_sloth ) ) - continue; + if ( is_true( zombie.is_sloth ) ) + continue; - if ( isdefined( ignore_zombie ) && zombie == ignore_zombie ) - continue; + if ( isdefined( ignore_zombie ) && zombie == ignore_zombie ) + continue; - if ( isdefined( self.crawler ) && zombie == self.crawler ) - continue; + if ( isdefined( self.crawler ) && zombie == self.crawler ) + continue; - if ( self is_facing( zombie ) ) - { - dist = distancesquared( self.origin, zombie.origin ); + if ( self is_facing( zombie ) ) + { + dist = distancesquared( self.origin, zombie.origin ); - if ( dist < 4096 ) - { - if ( !self sloth_ragdoll_zombie( zombie ) ) - { - if ( !is_true( self.no_gib ) && non_ragdoll % 3 == 0 ) - { - zombie.force_gib = 1; - zombie.a.gib_ref = random( array( "guts", "right_arm", "left_arm", "head" ) ); - zombie thread maps\mp\animscripts\zm_death::do_gib(); - } + if ( dist < 4096 ) + { + if ( !self sloth_ragdoll_zombie( zombie ) ) + { + if ( !is_true( self.no_gib ) && non_ragdoll % 3 == 0 ) + { + zombie.force_gib = 1; + zombie.a.gib_ref = random( array( "guts", "right_arm", "left_arm", "head" ) ); + zombie thread maps\mp\animscripts\zm_death::do_gib(); + } - non_ragdoll++; - zombie dodamage( zombie.health * 10, zombie.origin ); - zombie playsound( "zmb_ai_sloth_attack_impact" ); - zombie.noragdoll = 1; - zombie.nodeathragdoll = 1; - } + non_ragdoll++; + zombie dodamage( zombie.health * 10, zombie.origin ); + zombie playsound( "zmb_ai_sloth_attack_impact" ); + zombie.noragdoll = 1; + zombie.nodeathragdoll = 1; + } - if ( isdefined( self.target_zombie ) && self.target_zombie == zombie ) - self.target_zombie = undefined; - } - } - } + if ( isdefined( self.target_zombie ) && self.target_zombie == zombie ) + self.target_zombie = undefined; + } + } + } } sloth_ragdoll_zombie( zombie ) { - if ( !isdefined( self.ragdolls ) ) - self.ragdolls = 0; + if ( !isdefined( self.ragdolls ) ) + self.ragdolls = 0; - if ( self.ragdolls < 4 ) - { - self.ragdolls++; - zombie dodamage( zombie.health * 10, zombie.origin ); - zombie playsound( "zmb_ai_sloth_attack_impact" ); - zombie startragdoll(); - zombie setclientfield( "sloth_ragdoll_zombie", 1 ); - self thread sloth_ragdoll_wait(); - return true; - } + if ( self.ragdolls < 4 ) + { + self.ragdolls++; + zombie dodamage( zombie.health * 10, zombie.origin ); + zombie playsound( "zmb_ai_sloth_attack_impact" ); + zombie startragdoll(); + zombie setclientfield( "sloth_ragdoll_zombie", 1 ); + self thread sloth_ragdoll_wait(); + return true; + } - return false; + return false; } wait_start_candy_booze( piece ) { - // remove + // remove } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_audio.gsc b/scripts/zm/replaced/_zm_audio.gsc index 7eef8b98..3f040823 100644 --- a/scripts/zm/replaced/_zm_audio.gsc +++ b/scripts/zm/replaced/_zm_audio.gsc @@ -10,14 +10,14 @@ create_and_play_dialog( category, type, response, force_variant, override ) { - waittime = 0.25; + waittime = 0.25; - if ( !isdefined( self.zmbvoxid ) ) - { - return; - } + if ( !isdefined( self.zmbvoxid ) ) + { + return; + } - if ( isdefined( self.dontspeak ) && self.dontspeak ) + if ( isdefined( self.dontspeak ) && self.dontspeak ) { return; } @@ -27,44 +27,44 @@ create_and_play_dialog( category, type, response, force_variant, override ) return; } - isresponse = 0; - alias_suffix = undefined; - index = undefined; - prefix = undefined; + isresponse = 0; + alias_suffix = undefined; + index = undefined; + prefix = undefined; - if ( !isdefined( level.vox.speaker[self.zmbvoxid].alias[category][type] ) ) - return; + if ( !isdefined( level.vox.speaker[self.zmbvoxid].alias[category][type] ) ) + return; - prefix = level.vox.speaker[self.zmbvoxid].prefix; - alias_suffix = level.vox.speaker[self.zmbvoxid].alias[category][type]; + prefix = level.vox.speaker[self.zmbvoxid].prefix; + alias_suffix = level.vox.speaker[self.zmbvoxid].alias[category][type]; - if ( self is_player() ) - { - if ( self.sessionstate != "playing" ) - return; + if ( self is_player() ) + { + if ( self.sessionstate != "playing" ) + return; - if ( self maps\mp\zombies\_zm_laststand::player_is_in_laststand() && ( type != "revive_down" || type != "revive_up" ) ) - return; + if ( self maps\mp\zombies\_zm_laststand::player_is_in_laststand() && ( type != "revive_down" || type != "revive_up" ) ) + return; - index = maps\mp\zombies\_zm_weapons::get_player_index( self ); - prefix = prefix + index + "_"; - } + index = maps\mp\zombies\_zm_weapons::get_player_index( self ); + prefix = prefix + index + "_"; + } - if ( isdefined( response ) ) - { - if ( isdefined( level.vox.speaker[self.zmbvoxid].response[category][type] ) ) - alias_suffix = response + level.vox.speaker[self.zmbvoxid].response[category][type]; + if ( isdefined( response ) ) + { + if ( isdefined( 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( level._audio_custom_player_playvox ) ) - self thread [[ level._audio_custom_player_playvox ]]( prefix, index, sound_to_play, waittime, category, type, override ); - else - self thread do_player_or_npc_playvox( prefix, index, sound_to_play, waittime, category, type, override, isresponse ); - } + if ( isdefined( sound_to_play ) ) + { + if ( isdefined( level._audio_custom_player_playvox ) ) + self thread [[ level._audio_custom_player_playvox ]]( prefix, index, sound_to_play, waittime, category, type, override ); + else + self thread do_player_or_npc_playvox( prefix, index, sound_to_play, waittime, category, type, override, isresponse ); + } } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_blockers.gsc b/scripts/zm/replaced/_zm_blockers.gsc index ab6fb07b..cdac97ee 100644 --- a/scripts/zm/replaced/_zm_blockers.gsc +++ b/scripts/zm/replaced/_zm_blockers.gsc @@ -16,170 +16,170 @@ door_buy() { - self waittill( "trigger", who, force ); + self waittill( "trigger", who, force ); - if ( isdefined( level.custom_door_buy_check ) ) - { - if ( !who [[ level.custom_door_buy_check ]]( self ) ) - return false; - } + if ( isdefined( level.custom_door_buy_check ) ) + { + if ( !who [[ level.custom_door_buy_check ]]( self ) ) + return false; + } - if ( getdvarint( "zombie_unlock_all" ) > 0 || isdefined( force ) && force ) - return true; + if ( getdvarint( "zombie_unlock_all" ) > 0 || isdefined( force ) && force ) + return true; - if ( !who usebuttonpressed() ) - return false; + if ( !who usebuttonpressed() ) + return false; - if ( who in_revive_trigger() ) - return false; + if ( who in_revive_trigger() ) + return false; - if ( is_player_valid( who ) ) - { - players = get_players(); - cost = self.zombie_cost; + if ( is_player_valid( who ) ) + { + players = get_players(); + cost = self.zombie_cost; - 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 ); + 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 ); - if ( self._door_open == 1 ) - self.purchaser = undefined; - else if ( who.score >= cost ) - { - who maps\mp\zombies\_zm_score::minus_to_player_score( cost, 1 ); - 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_player_stat( "doors_purchased" ); - self.purchaser = who; - } - else - { - play_sound_at_pos( "no_purchase", self.origin ); + if ( self._door_open == 1 ) + self.purchaser = undefined; + else if ( who.score >= cost ) + { + who maps\mp\zombies\_zm_score::minus_to_player_score( cost, 1 ); + 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_player_stat( "doors_purchased" ); + self.purchaser = who; + } + else + { + play_sound_at_pos( "no_purchase", self.origin ); - if ( isdefined( level.custom_generic_deny_vo_func ) ) - who thread [[ level.custom_generic_deny_vo_func ]]( 1 ); - else - who maps\mp\zombies\_zm_audio::create_and_play_dialog( "general", "door_deny" ); + if ( isdefined( level.custom_generic_deny_vo_func ) ) + who thread [[ level.custom_generic_deny_vo_func ]]( 1 ); + else + who maps\mp\zombies\_zm_audio::create_and_play_dialog( "general", "door_deny" ); - return false; - } - } + return false; + } + } - if ( isdefined( level._door_open_rumble_func ) ) - who thread [[ level._door_open_rumble_func ]](); + if ( isdefined( level._door_open_rumble_func ) ) + who thread [[ level._door_open_rumble_func ]](); - return true; + return true; } door_opened( cost, quick_close ) { - if ( isdefined( self.door_is_moving ) && self.door_is_moving ) - return; + if ( isdefined( self.door_is_moving ) && self.door_is_moving ) + return; play_sound_at_pos( "purchase", self.origin ); - self.has_been_opened = 1; - all_trigs = getentarray( self.target, "target" ); - self.door_is_moving = 1; + self.has_been_opened = 1; + all_trigs = getentarray( self.target, "target" ); + self.door_is_moving = 1; - foreach ( trig in all_trigs ) - { - trig.door_is_moving = 1; - trig trigger_off(); - trig.has_been_opened = 1; + foreach ( trig in all_trigs ) + { + trig.door_is_moving = 1; + trig trigger_off(); + trig.has_been_opened = 1; - if ( !isdefined( trig._door_open ) || trig._door_open == 0 ) - { - trig._door_open = 1; - trig notify( "door_opened" ); - level thread maps\mp\zombies\_zm_audio::sndmusicstingerevent( "door_open" ); - } - else - trig._door_open = 0; + if ( !isdefined( trig._door_open ) || trig._door_open == 0 ) + { + trig._door_open = 1; + trig notify( "door_opened" ); + level thread maps\mp\zombies\_zm_audio::sndmusicstingerevent( "door_open" ); + } + else + trig._door_open = 0; - if ( isdefined( trig.script_flag ) && trig._door_open == 1 ) - { - tokens = strtok( trig.script_flag, "," ); + if ( isdefined( trig.script_flag ) && trig._door_open == 1 ) + { + tokens = strtok( trig.script_flag, "," ); - for ( i = 0; i < tokens.size; i++ ) - flag_set( tokens[i] ); - } - else if ( isdefined( trig.script_flag ) && trig._door_open == 0 ) - { - tokens = strtok( trig.script_flag, "," ); + for ( i = 0; i < tokens.size; i++ ) + flag_set( tokens[i] ); + } + else if ( isdefined( trig.script_flag ) && trig._door_open == 0 ) + { + tokens = strtok( trig.script_flag, "," ); - for ( i = 0; i < tokens.size; i++ ) - flag_clear( tokens[i] ); - } + for ( i = 0; i < tokens.size; i++ ) + flag_clear( tokens[i] ); + } - if ( isdefined( quick_close ) && quick_close ) - { - trig set_hint_string( trig, "" ); - continue; - } + if ( isdefined( quick_close ) && quick_close ) + { + trig set_hint_string( trig, "" ); + continue; + } - if ( trig._door_open == 1 && flag( "door_can_close" ) ) - { - trig set_hint_string( trig, "default_buy_door_close" ); - continue; - } + if ( trig._door_open == 1 && flag( "door_can_close" ) ) + { + trig set_hint_string( trig, "default_buy_door_close" ); + continue; + } - if ( trig._door_open == 0 ) - trig set_hint_string( trig, "default_buy_door", cost ); - } + if ( trig._door_open == 0 ) + trig set_hint_string( trig, "default_buy_door", cost ); + } - level notify( "door_opened" ); + level notify( "door_opened" ); - if ( isdefined( self.doors ) ) - { - is_script_model_door = 0; - have_moving_clip_for_door = 0; - use_blocker_clip_for_pathing = 0; + if ( isdefined( self.doors ) ) + { + is_script_model_door = 0; + have_moving_clip_for_door = 0; + use_blocker_clip_for_pathing = 0; - foreach ( door in self.doors ) - { - if ( is_true( door.ignore_use_blocker_clip_for_pathing_check ) ) - continue; + foreach ( door in self.doors ) + { + if ( is_true( door.ignore_use_blocker_clip_for_pathing_check ) ) + continue; - if ( door.classname == "script_model" ) - { - is_script_model_door = 1; - continue; - } + if ( door.classname == "script_model" ) + { + is_script_model_door = 1; + continue; + } - 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; - } + 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; + } - 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 ); } - } + } - level.active_zone_names = maps\mp\zombies\_zm_zonemgr::get_active_zone_names(); - wait 1; - self.door_is_moving = 0; + level.active_zone_names = maps\mp\zombies\_zm_zonemgr::get_active_zone_names(); + wait 1; + self.door_is_moving = 0; - foreach ( trig in all_trigs ) - trig.door_is_moving = 0; + foreach ( trig in all_trigs ) + trig.door_is_moving = 0; - if ( isdefined( quick_close ) && quick_close ) - { - for ( i = 0; i < all_trigs.size; i++ ) - all_trigs[i] trigger_on(); + if ( isdefined( quick_close ) && quick_close ) + { + for ( i = 0; i < all_trigs.size; i++ ) + all_trigs[i] trigger_on(); - return; - } + return; + } - if ( flag( "door_can_close" ) ) - { - wait 2.0; + if ( flag( "door_can_close" ) ) + { + wait 2.0; - for ( i = 0; i < all_trigs.size; i++ ) - all_trigs[i] trigger_on(); - } + for ( i = 0; i < all_trigs.size; i++ ) + all_trigs[i] trigger_on(); + } } handle_post_board_repair_rewards( cost, zbarrier ) @@ -204,26 +204,26 @@ handle_post_board_repair_rewards( cost, zbarrier ) player_fails_blocker_repair_trigger_preamble( player, players, trigger, hold_required ) { - if ( !isdefined( trigger ) ) - return true; + if ( !isdefined( trigger ) ) + return true; - if ( !is_player_valid( player ) ) - return true; + if ( !is_player_valid( player ) ) + return true; - if ( players.size == 1 && isdefined( players[0].intermission ) && players[0].intermission == 1 ) - return true; + if ( players.size == 1 && isdefined( players[0].intermission ) && players[0].intermission == 1 ) + return true; - if ( hold_required && !player usebuttonpressed() ) - return true; + if ( hold_required && !player usebuttonpressed() ) + return true; - if ( !hold_required && !player use_button_held() ) - return true; + if ( !hold_required && !player use_button_held() ) + return true; - if ( player in_revive_trigger() ) - return true; + if ( player in_revive_trigger() ) + return true; if ( player issprinting() || player isthrowinggrenade() ) - return true; + return true; - return false; + return false; } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_buildables.gsc b/scripts/zm/replaced/_zm_buildables.gsc index 643735ae..e2826987 100644 --- a/scripts/zm/replaced/_zm_buildables.gsc +++ b/scripts/zm/replaced/_zm_buildables.gsc @@ -79,7 +79,7 @@ buildable_place_think() if ( self.stub.persistent == 4 ) { - self [[ self.stub.custom_completion_callback ]]( player_built ); + self [[ self.stub.custom_completion_callback ]]( player_built ); return; } @@ -182,209 +182,209 @@ buildable_place_think() self [[ level.zombie_include_buildables[ self.stub.equipname ].onbuyweapon ]]( player ); } - if ( isDefined( level.zombie_buildables[ self.stub.equipname ].bought ) ) - { - self.stub.hint_string = level.zombie_buildables[ self.stub.equipname ].bought; - } - else - { - if ( !maps\mp\zombies\_zm_weapons::limited_weapon_below_quota( self.stub.weaponname, undefined ) ) - { - self.stub.hint_string = &"ZOMBIE_GO_TO_THE_BOX_LIMITED"; - } - else - { - self.stub.hint_string = &"ZOMBIE_GO_TO_THE_BOX"; - } - } + if ( isDefined( level.zombie_buildables[ self.stub.equipname ].bought ) ) + { + self.stub.hint_string = level.zombie_buildables[ self.stub.equipname ].bought; + } + else + { + if ( !maps\mp\zombies\_zm_weapons::limited_weapon_below_quota( self.stub.weaponname, undefined ) ) + { + self.stub.hint_string = &"ZOMBIE_GO_TO_THE_BOX_LIMITED"; + } + else + { + self.stub.hint_string = &"ZOMBIE_GO_TO_THE_BOX"; + } + } self sethintstring( self.stub.hint_string ); 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 ) ) - { - if ( isDefined( self.stub.model ) ) { - self.stub.model notsolid(); - self.stub.model show(); - } - - 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.angles = self.stub.model.angles; - - if ( self.stub.weaponname == "jetgun_zm" ) + if ( isDefined( self.stub.model ) ) { - self.stub.stand_model setModel( "p6_zm_buildable_sq_electric_box" ); - self.stub.stand_model.origin += (0, 0, -23); - self.stub.stand_model.angles += (0, 90, 90); - } - } - - while ( self.stub.persistent == 1 ) - { - self waittill( "trigger", player ); - - if ( isDefined( player.screecher_weapon ) ) - { - continue; + self.stub.model notsolid(); + self.stub.model show(); } - if ( isDefined( self.stub.built ) && !self.stub.built ) + if ( !isDefined( self.stub.stand_model ) && maps\mp\zombies\_zm_equipment::is_limited_equipment( self.stub.weaponname ) ) { - self.stub.hint_string = ""; - self sethintstring( self.stub.hint_string ); - return; - } + self.stub.stand_model = spawn( "script_model", self.stub.model.origin ); + self.stub.stand_model.angles = self.stub.model.angles; - if ( player != self.parent_player ) - { - continue; - } - - if ( !is_player_valid( player ) ) - { - player thread ignore_triggers( 0.5 ); - } - - if ( player has_player_equipment( self.stub.weaponname ) ) - { - continue; - } - - if (player.score < self.stub.cost) - { - self play_sound_on_ent( "no_purchase" ); - player maps\mp\zombies\_zm_audio::create_and_play_dialog( "general", "no_money_weapon" ); - 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 ) ) - { - player maps\mp\zombies\_zm_score::minus_to_player_score( self.stub.cost ); - self play_sound_on_ent( "purchase" ); - - player maps\mp\zombies\_zm_equipment::equipment_buy( self.stub.weaponname ); - player giveweapon( self.stub.weaponname ); - player setweaponammoclip( self.stub.weaponname, 1 ); - - if ( maps\mp\zombies\_zm_equipment::is_limited_equipment( self.stub.weaponname ) ) + if ( self.stub.weaponname == "jetgun_zm" ) { - if ( isDefined( self.stub.model ) ) + self.stub.stand_model setModel( "p6_zm_buildable_sq_electric_box" ); + self.stub.stand_model.origin += (0, 0, -23); + self.stub.stand_model.angles += (0, 90, 90); + } + } + + while ( self.stub.persistent == 1 ) + { + self waittill( "trigger", player ); + + if ( isDefined( player.screecher_weapon ) ) + { + continue; + } + + if ( isDefined( self.stub.built ) && !self.stub.built ) + { + self.stub.hint_string = ""; + self sethintstring( self.stub.hint_string ); + return; + } + + if ( player != self.parent_player ) + { + continue; + } + + if ( !is_player_valid( player ) ) + { + player thread ignore_triggers( 0.5 ); + } + + if ( player has_player_equipment( self.stub.weaponname ) ) + { + continue; + } + + if (player.score < self.stub.cost) + { + self play_sound_on_ent( "no_purchase" ); + player maps\mp\zombies\_zm_audio::create_and_play_dialog( "general", "no_money_weapon" ); + 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 ) ) + { + player maps\mp\zombies\_zm_score::minus_to_player_score( self.stub.cost ); + self play_sound_on_ent( "purchase" ); + + player maps\mp\zombies\_zm_equipment::equipment_buy( self.stub.weaponname ); + player giveweapon( self.stub.weaponname ); + player setweaponammoclip( self.stub.weaponname, 1 ); + + if ( maps\mp\zombies\_zm_equipment::is_limited_equipment( self.stub.weaponname ) ) { - self.stub.model thread model_go_away(self.stub.weaponname); + if ( isDefined( self.stub.model ) ) + { + self.stub.model thread model_go_away(self.stub.weaponname); + } } - } - if ( isDefined( level.zombie_include_buildables[ self.stub.equipname ].onbuyweapon ) ) - { - self [[ level.zombie_include_buildables[ self.stub.equipname ].onbuyweapon ]]( player ); - } + if ( isDefined( level.zombie_include_buildables[ self.stub.equipname ].onbuyweapon ) ) + { + self [[ level.zombie_include_buildables[ self.stub.equipname ].onbuyweapon ]]( player ); + } - if ( self.stub.weaponname != "keys_zm" ) - { - player setactionslot( 1, "weapon", self.stub.weaponname ); - } + if ( self.stub.weaponname != "keys_zm" ) + { + player setactionslot( 1, "weapon", self.stub.weaponname ); + } - if ( isDefined( level.zombie_buildables[ self.stub.equipname ].bought ) ) - { - self.stub.hint_string = 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; + } + else + { + self.stub.hint_string = ""; + } + + self sethintstring( self.stub.hint_string ); + player maps\mp\zombies\_zm_buildables::track_buildables_pickedup( self.stub.weaponname ); + continue; } else { 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 ); - continue; - } - else - { - self.stub.hint_string = ""; - self sethintstring( self.stub.hint_string ); } } - } } player_can_build( buildable, continuing ) { - if ( !isdefined( buildable ) ) - return false; + if ( !isdefined( buildable ) ) + return false; - if ( isdefined( continuing ) && continuing ) - { - if ( buildable buildable_is_piece_built( buildable.pieces[0] ) ) - return false; - } - else if ( buildable buildable_is_piece_built_or_building( buildable.pieces[0] ) ) - return false; + if ( isdefined( continuing ) && continuing ) + { + if ( buildable buildable_is_piece_built( buildable.pieces[0] ) ) + return false; + } + else if ( buildable buildable_is_piece_built_or_building( buildable.pieces[0] ) ) + 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] ) ) - 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] ) ) + return false; - return true; + return true; } buildable_use_hold_think( player, bind_stub = self.stub ) { - self thread buildable_play_build_fx( player ); - self thread buildable_use_hold_think_internal( player, bind_stub ); - retval = self waittill_any_return( "build_succeed", "build_failed" ); + self thread buildable_play_build_fx( player ); + self thread buildable_use_hold_think_internal( player, bind_stub ); + retval = self waittill_any_return( "build_succeed", "build_failed" ); - if ( retval == "build_succeed" ) - return true; + if ( retval == "build_succeed" ) + return true; - return false; + return false; } buildable_use_hold_think_internal( player, bind_stub = self.stub ) { - wait 0.01; + wait 0.01; - if ( !isdefined( self ) ) - { - self notify( "build_failed" ); + if ( !isdefined( self ) ) + { + self notify( "build_failed" ); - if ( isdefined( player.buildableaudio ) ) - { - player.buildableaudio delete(); - player.buildableaudio = undefined; - } + if ( isdefined( player.buildableaudio ) ) + { + player.buildableaudio delete(); + player.buildableaudio = undefined; + } - return; - } + return; + } - if ( !isdefined( self.usetime ) ) - self.usetime = int( 3000 ); + if ( !isdefined( self.usetime ) ) + self.usetime = int( 3000 ); - self.build_time = self.usetime; - self.build_start_time = gettime(); - build_time = self.build_time; - build_start_time = self.build_start_time; - player disable_player_move_states( 1 ); - player increment_is_drinking(); - orgweapon = player getcurrentweapon(); - build_weapon = "zombie_builder_zm"; + self.build_time = self.usetime; + self.build_start_time = gettime(); + build_time = self.build_time; + build_start_time = self.build_start_time; + player disable_player_move_states( 1 ); + player increment_is_drinking(); + orgweapon = player getcurrentweapon(); + build_weapon = "zombie_builder_zm"; - if ( isdefined( bind_stub.build_weapon ) ) - build_weapon = bind_stub.build_weapon; + if ( isdefined( bind_stub.build_weapon ) ) + build_weapon = bind_stub.build_weapon; - player giveweapon( build_weapon ); - player switchtoweapon( build_weapon ); - 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 giveweapon( build_weapon ); + player switchtoweapon( build_weapon ); + 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 ); - if ( isdefined( level.buildable_build_custom_func ) ) - player thread [[ level.buildable_build_custom_func ]]( self.stub ); + if ( isdefined( level.buildable_build_custom_func ) ) + 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 ) - wait 0.05; + while ( isdefined( self ) && player player_continue_building( bind_stub.buildablezone, self.stub ) && gettime() - self.build_start_time < self.build_time ) + wait 0.05; - player notify( "buildable_progress_end" ); + player notify( "buildable_progress_end" ); if ( player hasWeapon( orgweapon ) ) { @@ -395,69 +395,69 @@ buildable_use_hold_think_internal( player, bind_stub = self.stub ) 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 ) - player decrement_is_drinking(); + if ( isdefined( player.is_drinking ) && player.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 ) - { - buildable_clear_piece_building( bind_stub.buildablezone.pieces[0] ); - self notify( "build_succeed" ); - } - else - { - if ( isdefined( player.buildableaudio ) ) - { - player.buildableaudio delete(); - player.buildableaudio = undefined; - } + 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] ); + self notify( "build_succeed" ); + } + else + { + if ( isdefined( player.buildableaudio ) ) + { + player.buildableaudio delete(); + player.buildableaudio = undefined; + } - buildable_clear_piece_building( bind_stub.buildablezone.pieces[0] ); - self notify( "build_failed" ); - } + buildable_clear_piece_building( bind_stub.buildablezone.pieces[0] ); + self notify( "build_failed" ); + } } player_continue_building( buildablezone, build_stub = buildablezone.stub ) { - if ( self maps\mp\zombies\_zm_laststand::player_is_in_laststand() || self in_revive_trigger() ) - return false; + if ( self maps\mp\zombies\_zm_laststand::player_is_in_laststand() || self in_revive_trigger() ) + return false; - if ( self isthrowinggrenade() ) - return false; + if ( self isthrowinggrenade() ) + return false; - if ( !self player_can_build( buildablezone, 1 ) ) - return false; + if ( !self player_can_build( buildablezone, 1 ) ) + return false; - if ( isdefined( self.screecher ) ) - return false; + if ( isdefined( self.screecher ) ) + return false; - if ( !self usebuttonpressed() ) - return false; + if ( !self usebuttonpressed() ) + return false; - if ( !buildablezone buildable_is_piece_building( buildablezone.pieces[0] ) ) - return false; + if ( !buildablezone buildable_is_piece_building( buildablezone.pieces[0] ) ) + 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" ) - { - torigin = build_stub unitrigger_origin(); - porigin = self geteye(); - radius_sq = 2.25 * build_stub.test_radius_sq; + if ( build_stub.script_unitrigger_type == "unitrigger_radius_use" ) + { + torigin = build_stub unitrigger_origin(); + porigin = self geteye(); + radius_sq = 2.25 * build_stub.test_radius_sq; - if ( distance2dsquared( torigin, porigin ) > radius_sq ) - return false; - } - else if ( !isdefined( trigger ) || !trigger istouching( self ) ) - return false; + if ( distance2dsquared( torigin, porigin ) > radius_sq ) + return false; + } + else if ( !isdefined( trigger ) || !trigger istouching( self ) ) + return false; - if ( isdefined( build_stub.require_look_at ) && build_stub.require_look_at && !self is_player_looking_at( trigger.origin, 0.4 ) ) - return false; + if ( isdefined( build_stub.require_look_at ) && build_stub.require_look_at && !self is_player_looking_at( trigger.origin, 0.4 ) ) + return false; - return true; + return true; } player_build( buildable, pieces ) @@ -467,85 +467,85 @@ player_build( buildable, pieces ) buildable buildable_set_piece_built( piece ); } - if ( isdefined( buildable.stub.model ) ) - { - for ( i = 0; i < buildable.pieces.size; i++ ) - { - if ( isdefined( buildable.pieces[i].part_name ) ) - { - buildable.stub.model notsolid(); + if ( isdefined( buildable.stub.model ) ) + { + for ( i = 0; i < buildable.pieces.size; i++ ) + { + if ( isdefined( buildable.pieces[i].part_name ) ) + { + buildable.stub.model notsolid(); - if ( !( isdefined( buildable.pieces[i].built ) && buildable.pieces[i].built ) ) - { - buildable.stub.model hidepart( buildable.pieces[i].part_name ); - continue; - } + if ( !( isdefined( buildable.pieces[i].built ) && buildable.pieces[i].built ) ) + { + buildable.stub.model hidepart( buildable.pieces[i].part_name ); + continue; + } - buildable.stub.model show(); - buildable.stub.model showpart( buildable.pieces[i].part_name ); - } - } - } + buildable.stub.model show(); + buildable.stub.model showpart( buildable.pieces[i].part_name ); + } + } + } - if ( isplayer( self ) ) - self track_buildable_pieces_built( buildable ); + if ( isplayer( self ) ) + self track_buildable_pieces_built( buildable ); - if ( buildable buildable_all_built() ) - { - self player_finish_buildable( buildable ); - buildable.stub buildablestub_finish_build( self ); + if ( buildable buildable_all_built() ) + { + self player_finish_buildable( buildable ); + buildable.stub buildablestub_finish_build( self ); - if ( isplayer( self ) ) - self track_buildables_built( buildable ); + if ( isplayer( self ) ) + self track_buildables_built( buildable ); - if ( isdefined( level.buildable_built_custom_func ) ) - self thread [[ level.buildable_built_custom_func ]]( buildable ); + if ( isdefined( level.buildable_built_custom_func ) ) + self thread [[ level.buildable_built_custom_func ]]( buildable ); - alias = sndbuildablecompletealias( buildable.buildable_name ); - self playsound( alias ); - } - else - { - self playsound( "zmb_buildable_piece_add" ); - assert( isdefined( level.zombie_buildables[buildable.buildable_name].building ), "Missing builing hint" ); + alias = sndbuildablecompletealias( buildable.buildable_name ); + self playsound( alias ); + } + else + { + self playsound( "zmb_buildable_piece_add" ); + assert( isdefined( level.zombie_buildables[buildable.buildable_name].building ), "Missing builing hint" ); - if ( isdefined( level.zombie_buildables[buildable.buildable_name].building ) ) - return 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 ""; + return ""; } player_progress_bar( start_time, build_time, building_prompt ) { - self.usebar = self createprimaryprogressbar(); - self.usebartext = self createprimaryprogressbartext(); + self.usebar = self createprimaryprogressbar(); + self.usebartext = self createprimaryprogressbartext(); - if ( isdefined( building_prompt ) ) - self.usebartext settext( building_prompt ); - else - self.usebartext settext( &"ZOMBIE_BUILDING" ); + if ( isdefined( building_prompt ) ) + self.usebartext settext( building_prompt ); + else + self.usebartext settext( &"ZOMBIE_BUILDING" ); - if ( isdefined( self ) && isdefined( start_time ) && isdefined( build_time ) ) - self player_progress_bar_update( start_time, build_time ); + if ( isdefined( self ) && isdefined( start_time ) && isdefined( build_time ) ) + self player_progress_bar_update( start_time, build_time ); - self.usebartext destroyelem(); - self.usebar destroyelem(); + self.usebartext destroyelem(); + self.usebar destroyelem(); } player_progress_bar_update( start_time, build_time ) { - self endon( "entering_last_stand" ); - self endon( "death" ); - self endon( "disconnect" ); - self endon( "buildable_progress_end" ); + self endon( "entering_last_stand" ); + self endon( "death" ); + self endon( "disconnect" ); + self endon( "buildable_progress_end" ); self.usebar updatebar( 0.01, 1000 / build_time ); - while ( isdefined( self ) && gettime() - start_time < build_time ) - { - wait 0.05; - } + while ( isdefined( self ) && gettime() - start_time < build_time ) + { + wait 0.05; + } } model_go_away(weaponname) @@ -563,18 +563,18 @@ model_go_away(weaponname) model_fly_away(weaponname) { origin = self.origin; - self moveto( self.origin + vectorscale( ( 0, 0, 1 ), 40.0 ), 3 ); - direction = self.origin; - direction = ( direction[1], direction[0], 0 ); + self moveto( self.origin + vectorscale( ( 0, 0, 1 ), 40.0 ), 3 ); + direction = self.origin; + direction = ( direction[1], direction[0], 0 ); - if ( direction[1] < 0 || direction[0] > 0 && direction[1] > 0 ) - direction = ( direction[0], direction[1] * -1, 0 ); - else if ( direction[0] < 0 ) - direction = ( direction[0] * -1, direction[1], 0 ); + if ( direction[1] < 0 || direction[0] > 0 && direction[1] > 0 ) + direction = ( direction[0], direction[1] * -1, 0 ); + else if ( direction[0] < 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.angles = (0, self.angles[1], 0); @@ -598,7 +598,7 @@ model_fly_away_think(weaponname) } 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 )) { @@ -606,6 +606,6 @@ model_fly_away_think(weaponname) } joker_model rotateto( joker_model.angles - (90, 0, 0), 0.5 ); - joker_model waittill( "rotatedone" ); + joker_model waittill( "rotatedone" ); } } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_buildables_pooled.gsc b/scripts/zm/replaced/_zm_buildables_pooled.gsc index 283f8694..03660a1a 100644 --- a/scripts/zm/replaced/_zm_buildables_pooled.gsc +++ b/scripts/zm/replaced/_zm_buildables_pooled.gsc @@ -5,65 +5,65 @@ add_buildable_to_pool( stub, poolname ) { - if ( !isdefined( level.buildablepools ) ) - level.buildablepools = []; + if ( !isdefined( level.buildablepools ) ) + level.buildablepools = []; - if ( !isdefined( level.buildablepools[poolname] ) ) - { - level.buildablepools[poolname] = spawnstruct(); - level.buildablepools[poolname].stubs = []; - } + if ( !isdefined( level.buildablepools[poolname] ) ) + { + level.buildablepools[poolname] = spawnstruct(); + level.buildablepools[poolname].stubs = []; + } - 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 ) ) - level.buildablepools[poolname].buildable_slot = stub.buildablestruct.buildable_slot; - else - assert( level.buildablepools[poolname].buildable_slot == stub.buildablestruct.buildable_slot ); + if ( !isdefined( level.buildablepools[poolname].buildable_slot ) ) + level.buildablepools[poolname].buildable_slot = stub.buildablestruct.buildable_slot; + else + assert( level.buildablepools[poolname].buildable_slot == stub.buildablestruct.buildable_slot ); - stub.buildable_pool = level.buildablepools[poolname]; - stub.original_prompt_and_visibility_func = stub.prompt_and_visibility_func; - stub.original_trigger_func = stub.trigger_func; - stub.prompt_and_visibility_func = ::pooledbuildabletrigger_update_prompt; - reregister_unitrigger( stub, ::pooled_buildable_place_think ); + stub.buildable_pool = level.buildablepools[poolname]; + stub.original_prompt_and_visibility_func = stub.prompt_and_visibility_func; + stub.original_trigger_func = stub.trigger_func; + stub.prompt_and_visibility_func = ::pooledbuildabletrigger_update_prompt; + reregister_unitrigger( stub, ::pooled_buildable_place_think ); } reregister_unitrigger( unitrigger_stub, new_trigger_func ) { - static = 0; + static = 0; - if ( isdefined( unitrigger_stub.in_zone ) ) - static = 1; + if ( isdefined( unitrigger_stub.in_zone ) ) + static = 1; - unregister_unitrigger( unitrigger_stub ); - unitrigger_stub.trigger_func = new_trigger_func; + unregister_unitrigger( unitrigger_stub ); + unitrigger_stub.trigger_func = new_trigger_func; - if ( static ) - register_static_unitrigger( unitrigger_stub, new_trigger_func, 0 ); - else - register_unitrigger( unitrigger_stub, new_trigger_func ); + if ( static ) + register_static_unitrigger( unitrigger_stub, new_trigger_func, 0 ); + else + register_unitrigger( unitrigger_stub, new_trigger_func ); } randomize_pooled_buildables( poolname ) { - level waittill( "buildables_setup" ); + level waittill( "buildables_setup" ); - if ( isdefined( level.buildablepools[poolname] ) ) - { - count = level.buildablepools[poolname].stubs.size; + if ( isdefined( level.buildablepools[poolname] ) ) + { + count = level.buildablepools[poolname].stubs.size; - if ( count > 1 ) - { - for ( i = 0; i < count; i++ ) - { + if ( count > 1 ) + { + for ( i = 0; i < count; i++ ) + { rand = randomint(count); - if ( rand != i ) + if ( rand != i ) { swap_buildable_fields( level.buildablepools[poolname].stubs[i], level.buildablepools[poolname].stubs[rand] ); } - } - } - } + } + } + } } pooledbuildabletrigger_update_prompt( player ) @@ -86,20 +86,20 @@ pooledbuildabletrigger_update_prompt( player ) pooledbuildablestub_update_prompt( player, trigger ) { - if ( !self anystub_update_prompt( player ) ) - return 0; + if ( !self anystub_update_prompt( player ) ) + return 0; - can_use = 1; + can_use = 1; - if ( isdefined( self.custom_buildablestub_update_prompt ) && !self [[ self.custom_buildablestub_update_prompt ]]( player ) ) - return 0; + if ( isdefined( self.custom_buildablestub_update_prompt ) && !self [[ self.custom_buildablestub_update_prompt ]]( player ) ) + return 0; - self.cursor_hint = "HINT_NOICON"; - self.cursor_hint_weapon = undefined; + self.cursor_hint = "HINT_NOICON"; + self.cursor_hint_weapon = undefined; piece = undefined; - if ( !( isdefined( self.built ) && self.built ) ) - { + if ( !( isdefined( self.built ) && self.built ) ) + { if (!is_true(self.solo_pool)) { if (level.buildables_available.size > 1) @@ -133,71 +133,71 @@ pooledbuildablestub_update_prompt( player, trigger ) 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; else self.hint_string = "Missing buildable hint"; - } - else - return trigger [[ self.original_prompt_and_visibility_func ]]( player ); + } + else + return trigger [[ self.original_prompt_and_visibility_func ]]( player ); - return 1; + return 1; } find_bench( bench_name ) { - return getent( bench_name, "targetname" ); + return getent( bench_name, "targetname" ); } swap_buildable_fields( stub1, stub2 ) { - temp = stub2.buildablezone; - stub2.buildablezone = stub1.buildablezone; - stub2.buildablezone.stub = stub2; - stub1.buildablezone = temp; - stub1.buildablezone.stub = stub1; - temp = stub2.buildablestruct; - stub2.buildablestruct = stub1.buildablestruct; - stub1.buildablestruct = temp; - temp = stub2.equipname; - stub2.equipname = stub1.equipname; - stub1.equipname = temp; - temp = stub2.hint_string; - stub2.hint_string = stub1.hint_string; - stub1.hint_string = temp; - temp = stub2.trigger_hintstring; - stub2.trigger_hintstring = stub1.trigger_hintstring; - stub1.trigger_hintstring = temp; - temp = stub2.persistent; - stub2.persistent = stub1.persistent; - stub1.persistent = temp; - temp = stub2.onbeginuse; - stub2.onbeginuse = stub1.onbeginuse; - stub1.onbeginuse = temp; - temp = stub2.oncantuse; - stub2.oncantuse = stub1.oncantuse; - stub1.oncantuse = temp; - temp = stub2.onenduse; - stub2.onenduse = stub1.onenduse; - stub1.onenduse = temp; - temp = stub2.target; - stub2.target = stub1.target; - stub1.target = temp; - temp = stub2.targetname; - stub2.targetname = stub1.targetname; - stub1.targetname = temp; - temp = stub2.weaponname; - stub2.weaponname = stub1.weaponname; - stub1.weaponname = temp; + temp = stub2.buildablezone; + stub2.buildablezone = stub1.buildablezone; + stub2.buildablezone.stub = stub2; + stub1.buildablezone = temp; + stub1.buildablezone.stub = stub1; + temp = stub2.buildablestruct; + stub2.buildablestruct = stub1.buildablestruct; + stub1.buildablestruct = temp; + temp = stub2.equipname; + stub2.equipname = stub1.equipname; + stub1.equipname = temp; + temp = stub2.hint_string; + stub2.hint_string = stub1.hint_string; + stub1.hint_string = temp; + temp = stub2.trigger_hintstring; + stub2.trigger_hintstring = stub1.trigger_hintstring; + stub1.trigger_hintstring = temp; + temp = stub2.persistent; + stub2.persistent = stub1.persistent; + stub1.persistent = temp; + temp = stub2.onbeginuse; + stub2.onbeginuse = stub1.onbeginuse; + stub1.onbeginuse = temp; + temp = stub2.oncantuse; + stub2.oncantuse = stub1.oncantuse; + stub1.oncantuse = temp; + temp = stub2.onenduse; + stub2.onenduse = stub1.onenduse; + stub1.onenduse = temp; + temp = stub2.target; + stub2.target = stub1.target; + stub1.target = temp; + temp = stub2.targetname; + stub2.targetname = stub1.targetname; + stub1.targetname = temp; + temp = stub2.weaponname; + stub2.weaponname = stub1.weaponname; + stub1.weaponname = temp; temp = stub2.cost; stub2.cost = stub1.cost; - stub1.cost = temp; - temp = stub2.original_prompt_and_visibility_func; - stub2.original_prompt_and_visibility_func = stub1.original_prompt_and_visibility_func; - stub1.original_prompt_and_visibility_func = temp; - bench1 = undefined; - bench2 = undefined; - transfer_pos_as_is = 1; + stub1.cost = temp; + temp = stub2.original_prompt_and_visibility_func; + stub2.original_prompt_and_visibility_func = stub1.original_prompt_and_visibility_func; + stub1.original_prompt_and_visibility_func = temp; + bench1 = undefined; + bench2 = undefined; + transfer_pos_as_is = 1; if ( isdefined( stub1.model.target ) && isdefined( stub2.model.target ) ) { @@ -223,22 +223,22 @@ swap_buildable_fields( stub1, stub2 ) stub1.model.target = temp; } - temp = stub2.model; - stub2.model = stub1.model; - stub1.model = temp; + temp = stub2.model; + stub2.model = stub1.model; + stub1.model = temp; if ( transfer_pos_as_is ) - { + { temp = []; - temp[0] = stub2.model.origin; - temp[1] = stub2.model.angles; - stub2.model.origin = stub1.model.origin; - stub2.model.angles = stub1.model.angles; - stub1.model.origin = temp[0]; - stub1.model.angles = temp[1]; + temp[0] = stub2.model.origin; + temp[1] = stub2.model.angles; + stub2.model.origin = stub1.model.origin; + stub2.model.angles = stub1.model.angles; + stub1.model.origin = temp[0]; + stub1.model.angles = temp[1]; swap_buildable_fields_model_offset(stub1, stub2); - } + } } swap_buildable_fields_model_offset(stub1, stub2) @@ -399,85 +399,85 @@ swap_buildable_fields_model_offset(stub1, stub2) pooled_buildable_place_think() { - self endon( "kill_trigger" ); + self endon( "kill_trigger" ); - if ( isdefined( self.stub.built ) && self.stub.built ) - return scripts\zm\replaced\_zm_buildables::buildable_place_think(); + if ( isdefined( self.stub.built ) && self.stub.built ) + return scripts\zm\replaced\_zm_buildables::buildable_place_think(); - while ( !( isdefined( self.stub.built ) && self.stub.built ) ) - { - self waittill( "trigger", player ); + while ( !( isdefined( self.stub.built ) && self.stub.built ) ) + { + self waittill( "trigger", player ); - if ( player != self.parent_player ) - continue; + if ( player != self.parent_player ) + continue; - if ( isdefined( player.screecher_weapon ) ) - continue; + if ( isdefined( player.screecher_weapon ) ) + continue; - if ( !is_player_valid( player ) ) - { - player thread ignore_triggers( 0.5 ); - continue; - } + if ( !is_player_valid( player ) ) + { + player thread ignore_triggers( 0.5 ); + continue; + } 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 ) - { - self.stub.hint_string = ""; - self sethintstring( self.stub.hint_string ); + 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 sethintstring( self.stub.hint_string ); - if ( isdefined( self.stub.oncantuse ) ) - self.stub [[ self.stub.oncantuse ]]( player ); + if ( isdefined( self.stub.oncantuse ) ) + 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 ) - { - self.stub.hint_string = ""; - self sethintstring( self.stub.hint_string ); + if ( !status ) + { + self.stub.hint_string = ""; + self sethintstring( self.stub.hint_string ); - if ( isdefined( bind_to.oncantuse ) ) - bind_to [[ bind_to.oncantuse ]]( player ); - } - else - { - if ( isdefined( bind_to.onbeginuse ) ) - self.stub [[ bind_to.onbeginuse ]]( player ); + if ( isdefined( bind_to.oncantuse ) ) + bind_to [[ bind_to.oncantuse ]]( player ); + } + else + { + if ( isdefined( bind_to.onbeginuse ) ) + self.stub [[ bind_to.onbeginuse ]]( player ); - result = self scripts\zm\replaced\_zm_buildables::buildable_use_hold_think( player, bind_to ); - team = player.pers["team"]; + result = self scripts\zm\replaced\_zm_buildables::buildable_use_hold_think( player, bind_to ); + team = player.pers["team"]; - if ( result ) - { - if ( isdefined( self.stub.bound_to_buildable ) && self.stub.bound_to_buildable != bind_to ) - result = 0; + if ( result ) + { + if ( isdefined( self.stub.bound_to_buildable ) && self.stub.bound_to_buildable != bind_to ) + result = 0; - if ( isdefined( bind_to.bound_to_buildable ) && self.stub != bind_to.bound_to_buildable ) - result = 0; - } + if ( isdefined( bind_to.bound_to_buildable ) && self.stub != bind_to.bound_to_buildable ) + result = 0; + } - if ( isdefined( bind_to.onenduse ) ) - self.stub [[ bind_to.onenduse ]]( team, player, result ); + if ( isdefined( bind_to.onenduse ) ) + self.stub [[ bind_to.onenduse ]]( team, player, result ); - if ( !result ) - continue; + if ( !result ) + continue; if ( bind_to != self.stub ) { swap_buildable_fields( self.stub, bind_to ); } - if ( isdefined( self.stub.onuse ) ) - self.stub [[ self.stub.onuse ]]( player ); + if ( isdefined( self.stub.onuse ) ) + 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 maps\mp\zombies\_zm_buildables::buildablestub_remove(); arrayremovevalue(level.buildables_available, self.stub.equipname); @@ -514,15 +514,15 @@ pooled_buildable_place_update_all() pooledbuildable_stub_for_equipname( equipname ) { foreach ( stub in self.stubs ) - { - if ( isdefined( stub.bound_to_buildable ) ) - continue; + { + if ( isdefined( stub.bound_to_buildable ) ) + continue; - if ( stub.equipname == equipname ) - return stub; - } + if ( stub.equipname == equipname ) + return stub; + } - return undefined; + return undefined; } choose_open_buildable( player ) diff --git a/scripts/zm/replaced/_zm_challenges.gsc b/scripts/zm/replaced/_zm_challenges.gsc index c427261e..b0d7a2c3 100644 --- a/scripts/zm/replaced/_zm_challenges.gsc +++ b/scripts/zm/replaced/_zm_challenges.gsc @@ -9,96 +9,96 @@ init() { - level._challenges = spawnstruct(); - stats_init(); - level.a_m_challenge_boards = []; - level.a_uts_challenge_boxes = []; - a_m_challenge_boxes = getentarray( "challenge_box", "targetname" ); - array_thread( a_m_challenge_boxes, ::box_init ); - onplayerconnect_callback( ::onplayerconnect ); - n_bits = getminbitcountfornum( 14 ); - registerclientfield( "toplayer", "challenge_complete_1", 14000, 1, "int" ); - registerclientfield( "toplayer", "challenge_complete_2", 14000, 1, "int" ); - registerclientfield( "toplayer", "challenge_complete_3", 14000, 1, "int" ); - registerclientfield( "toplayer", "challenge_complete_4", 14000, 1, "int" ); + level._challenges = spawnstruct(); + stats_init(); + level.a_m_challenge_boards = []; + level.a_uts_challenge_boxes = []; + a_m_challenge_boxes = getentarray( "challenge_box", "targetname" ); + array_thread( a_m_challenge_boxes, ::box_init ); + onplayerconnect_callback( ::onplayerconnect ); + n_bits = getminbitcountfornum( 14 ); + registerclientfield( "toplayer", "challenge_complete_1", 14000, 1, "int" ); + registerclientfield( "toplayer", "challenge_complete_2", 14000, 1, "int" ); + registerclientfield( "toplayer", "challenge_complete_3", 14000, 1, "int" ); + registerclientfield( "toplayer", "challenge_complete_4", 14000, 1, "int" ); } #using_animtree("fxanim_props_dlc4"); box_init() { - self useanimtree( #animtree ); - s_unitrigger_stub = spawnstruct(); - s_unitrigger_stub.origin = self.origin + ( 0, 0, 0 ); - s_unitrigger_stub.angles = self.angles; - s_unitrigger_stub.radius = 64; - s_unitrigger_stub.script_length = 64; - s_unitrigger_stub.script_width = 64; - s_unitrigger_stub.script_height = 64; - s_unitrigger_stub.cursor_hint = "HINT_NOICON"; - s_unitrigger_stub.hint_string = &""; - s_unitrigger_stub.script_unitrigger_type = "unitrigger_box_use"; - 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( "reward_timeout" ); - s_unitrigger_stub.b_busy = 0; - s_unitrigger_stub.m_box = self; - s_unitrigger_stub.b_disable_trigger = 0; + self useanimtree( #animtree ); + s_unitrigger_stub = spawnstruct(); + s_unitrigger_stub.origin = self.origin + ( 0, 0, 0 ); + s_unitrigger_stub.angles = self.angles; + s_unitrigger_stub.radius = 64; + s_unitrigger_stub.script_length = 64; + s_unitrigger_stub.script_width = 64; + s_unitrigger_stub.script_height = 64; + s_unitrigger_stub.cursor_hint = "HINT_NOICON"; + s_unitrigger_stub.hint_string = &""; + s_unitrigger_stub.script_unitrigger_type = "unitrigger_box_use"; + 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( "reward_timeout" ); + s_unitrigger_stub.b_busy = 0; + s_unitrigger_stub.m_box = self; + s_unitrigger_stub.b_disable_trigger = 0; - if ( isdefined( self.script_string ) ) - s_unitrigger_stub.str_location = self.script_string; + if ( isdefined( self.script_string ) ) + s_unitrigger_stub.str_location = self.script_string; - if ( isdefined( s_unitrigger_stub.m_box.target ) ) - { - s_unitrigger_stub.m_board = getent( s_unitrigger_stub.m_box.target, "targetname" ); - s_unitrigger_stub board_init( s_unitrigger_stub.m_board ); - } + if ( isdefined( s_unitrigger_stub.m_box.target ) ) + { + s_unitrigger_stub.m_board = getent( s_unitrigger_stub.m_box.target, "targetname" ); + s_unitrigger_stub board_init( s_unitrigger_stub.m_board ); + } - unitrigger_force_per_player_triggers( s_unitrigger_stub, 1 ); - 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 ); + unitrigger_force_per_player_triggers( s_unitrigger_stub, 1 ); + 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 ); } box_think() { - self endon( "kill_trigger" ); - s_team = level._challenges.s_team; + self endon( "kill_trigger" ); + s_team = level._challenges.s_team; - while ( true ) - { - self waittill( "trigger", player ); + while ( true ) + { + self waittill( "trigger", player ); - if ( !is_player_valid( player ) ) - continue; + if ( !is_player_valid( player ) ) + continue; - if ( self.stub.b_busy ) - { - current_weapon = player getcurrentweapon(); + if ( self.stub.b_busy ) + { + 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 ) - { - wait 0.1; - continue; - } + 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; + continue; + } - if ( self.stub ent_flag( "waiting_for_grab" ) ) - { - if ( !isdefined( self.stub.player_using ) ) - self.stub.player_using = player; + if ( self.stub ent_flag( "waiting_for_grab" ) ) + { + if ( !isdefined( self.stub.player_using ) ) + self.stub.player_using = player; - if ( player == self.stub.player_using ) - self.stub ent_flag_clear( "waiting_for_grab" ); - } + if ( player == self.stub.player_using ) + self.stub ent_flag_clear( "waiting_for_grab" ); + } - wait 0.05; - continue; - } + wait 0.05; + continue; + } - if ( self.b_can_open ) - { - self.stub.hint_string = &""; - self sethintstring( self.stub.hint_string ); - level thread open_box( player, self.stub ); - } - } + if ( self.b_can_open ) + { + self.stub.hint_string = &""; + self sethintstring( self.stub.hint_string ); + level thread open_box( player, self.stub ); + } + } } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_chugabud.gsc b/scripts/zm/replaced/_zm_chugabud.gsc index cf26309a..53704405 100644 --- a/scripts/zm/replaced/_zm_chugabud.gsc +++ b/scripts/zm/replaced/_zm_chugabud.gsc @@ -6,9 +6,9 @@ chugabud_laststand() { - self endon( "player_suicide" ); - self endon( "disconnect" ); - self endon( "chugabud_bleedout" ); + self endon( "player_suicide" ); + self endon( "disconnect" ); + self endon( "chugabud_bleedout" ); if ( isdefined( self.e_chugabud_corpse ) ) { @@ -16,267 +16,267 @@ chugabud_laststand() return; } - self maps\mp\zombies\_zm_laststand::increment_downed_stat(); - self.ignore_insta_kill = 1; - self.health = self.maxhealth; - self chugabud_save_loadout(); - self chugabud_fake_death(); - wait 3; + self maps\mp\zombies\_zm_laststand::increment_downed_stat(); + self.ignore_insta_kill = 1; + self.health = self.maxhealth; + self chugabud_save_loadout(); + self chugabud_fake_death(); + wait 3; - if ( isdefined( self.insta_killed ) && self.insta_killed || isdefined( self.disable_chugabud_corpse ) ) - create_corpse = 0; - else - create_corpse = 1; + if ( isdefined( self.insta_killed ) && self.insta_killed || isdefined( self.disable_chugabud_corpse ) ) + create_corpse = 0; + else + create_corpse = 1; - if ( create_corpse == 1 ) - { - if ( isdefined( level._chugabug_reject_corpse_override_func ) ) - { - reject_corpse = self [[ level._chugabug_reject_corpse_override_func ]]( self.origin ); + if ( create_corpse == 1 ) + { + if ( isdefined( level._chugabug_reject_corpse_override_func ) ) + { + reject_corpse = self [[ level._chugabug_reject_corpse_override_func ]]( self.origin ); - if ( reject_corpse ) - create_corpse = 0; - } - } + if ( reject_corpse ) + create_corpse = 0; + } + } - if ( create_corpse == 1 ) - { - self thread activate_chugabud_effects_and_audio(); - corpse = self chugabud_spawn_corpse(); - self.e_chugabud_corpse = corpse; - corpse.e_chugabud_player = self; - corpse thread chugabud_corpse_revive_icon( self ); - corpse thread chugabud_corpse_cleanup_on_spectator( self ); + if ( create_corpse == 1 ) + { + self thread activate_chugabud_effects_and_audio(); + corpse = self chugabud_spawn_corpse(); + self.e_chugabud_corpse = corpse; + corpse.e_chugabud_player = self; + corpse thread chugabud_corpse_revive_icon( self ); + corpse thread chugabud_corpse_cleanup_on_spectator( self ); corpse thread chugabud_corpse_cleanup_on_disconnect( self ); - if ( isdefined( level.whos_who_client_setup ) ) - corpse setclientfield( "clientfield_whos_who_clone_glow_shader", 1 ); - } + if ( isdefined( level.whos_who_client_setup ) ) + corpse setclientfield( "clientfield_whos_who_clone_glow_shader", 1 ); + } - self thread chugabud_fake_revive(); - wait 0.1; - self.ignore_insta_kill = undefined; - self.disable_chugabud_corpse = undefined; + self thread chugabud_fake_revive(); + wait 0.1; + self.ignore_insta_kill = undefined; + self.disable_chugabud_corpse = undefined; - if ( create_corpse == 0 ) - { - if ( is_player_valid( self ) ) - { - self.statusicon = ""; - } + if ( create_corpse == 0 ) + { + if ( is_player_valid( self ) ) + { + self.statusicon = ""; + } - self notify( "chugabud_effects_cleanup" ); - return; - } + self notify( "chugabud_effects_cleanup" ); + return; + } - bleedout_time = 30; - self thread chugabud_bleed_timeout( bleedout_time, corpse ); - self thread chugabud_handle_multiple_instances( corpse ); + bleedout_time = 30; + self thread chugabud_bleed_timeout( bleedout_time, 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 ) - self notify( "whos_who_self_revive" ); + if ( isdefined( e_reviver ) && e_reviver == self ) + self notify( "whos_who_self_revive" ); - self perk_abort_drinking( 0.1 ); - self maps\mp\zombies\_zm_perks::perk_set_max_health_if_jugg( "health_reboot", 1, 0 ); - self setorigin( corpse.origin ); - self setplayerangles( corpse.angles ); + self perk_abort_drinking( 0.1 ); + self maps\mp\zombies\_zm_perks::perk_set_max_health_if_jugg( "health_reboot", 1, 0 ); + self setorigin( corpse.origin ); + self setplayerangles( corpse.angles ); - if ( self player_is_in_laststand() ) - { - self thread chugabud_laststand_cleanup( corpse, "player_revived" ); - self enableweaponcycling(); - self enableoffhandweapons(); - self auto_revive( self, 1 ); - return; - } + if ( self player_is_in_laststand() ) + { + self thread chugabud_laststand_cleanup( corpse, "player_revived" ); + self enableweaponcycling(); + self enableoffhandweapons(); + self auto_revive( self, 1 ); + return; + } - self chugabud_laststand_cleanup( corpse, undefined ); + self chugabud_laststand_cleanup( corpse, undefined ); } chugabud_save_loadout() { - primaries = self getweaponslistprimaries(); - currentweapon = self getcurrentweapon(); - self.loadout = spawnstruct(); - self.loadout.player = self; - self.loadout.weapons = []; - self.loadout.score = self.score; - self.loadout.current_weapon = -1; + primaries = self getweaponslistprimaries(); + currentweapon = self getcurrentweapon(); + self.loadout = spawnstruct(); + self.loadout.player = self; + self.loadout.weapons = []; + self.loadout.score = self.score; + self.loadout.current_weapon = -1; - foreach ( index, weapon in primaries ) - { - self.loadout.weapons[index] = maps\mp\zombies\_zm_weapons::get_player_weapondata( self, weapon ); + foreach ( index, weapon in primaries ) + { + self.loadout.weapons[index] = maps\mp\zombies\_zm_weapons::get_player_weapondata( self, weapon ); - if ( weapon == currentweapon || self.loadout.weapons[index]["alt_name"] == currentweapon ) - self.loadout.current_weapon = index; - } + if ( weapon == currentweapon || self.loadout.weapons[index]["alt_name"] == currentweapon ) + self.loadout.current_weapon = index; + } - self.loadout.equipment = self get_player_equipment(); + self.loadout.equipment = self get_player_equipment(); - if ( isdefined( self.loadout.equipment ) ) - self equipment_take( self.loadout.equipment ); + if ( isdefined( 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" ) ) - { - self.loadout.hasclaymore = 1; - self.loadout.claymoreclip = self getweaponammoclip( "claymore_zm" ); - } + if ( self hasweapon( "claymore_zm" ) ) + { + self.loadout.hasclaymore = 1; + self.loadout.claymoreclip = self getweaponammoclip( "claymore_zm" ); + } - self.loadout.perks = chugabud_save_perks( self ); - self chugabud_save_grenades(); + self.loadout.perks = chugabud_save_perks( self ); + self chugabud_save_grenades(); - if ( maps\mp\zombies\_zm_weap_cymbal_monkey::cymbal_monkey_exists() ) - self.loadout.zombie_cymbal_monkey_count = self getweaponammoclip( "cymbal_monkey_zm" ); + if ( maps\mp\zombies\_zm_weap_cymbal_monkey::cymbal_monkey_exists() ) + self.loadout.zombie_cymbal_monkey_count = self getweaponammoclip( "cymbal_monkey_zm" ); } chugabud_save_perks( ent ) { - perk_array = ent get_perk_array( 1 ); + perk_array = ent get_perk_array( 1 ); - foreach ( perk in perk_array ) - { - if ( perk == "specialty_additionalprimaryweapon" ) - { - ent maps\mp\zombies\_zm::take_additionalprimaryweapon(); - } + foreach ( perk in perk_array ) + { + if ( perk == "specialty_additionalprimaryweapon" ) + { + ent maps\mp\zombies\_zm::take_additionalprimaryweapon(); + } - ent unsetperk( perk ); - } + ent unsetperk( perk ); + } - return perk_array; + return perk_array; } chugabud_fake_death() { - level notify( "fake_death" ); - self notify( "fake_death" ); - self takeallweapons(); - self allowstand( 0 ); - self allowcrouch( 0 ); - self allowprone( 1 ); + level notify( "fake_death" ); + self notify( "fake_death" ); + self takeallweapons(); + self allowstand( 0 ); + self allowcrouch( 0 ); + self allowprone( 1 ); self setstance( "prone" ); - self.ignoreme = 1; - self enableinvulnerability(); + self.ignoreme = 1; + self enableinvulnerability(); if ( self is_jumping() ) - { - while ( self is_jumping() ) - wait 0.05; - } + { + while ( self is_jumping() ) + wait 0.05; + } - self freezecontrols( 1 ); + self freezecontrols( 1 ); } chugabud_fake_revive() { - level notify( "fake_revive" ); - self notify( "fake_revive" ); - playsoundatposition( "evt_ww_disappear", self.origin ); - playfx( level._effect["chugabud_revive_fx"], self.origin ); - spawnpoint = chugabud_get_spawnpoint(); + level notify( "fake_revive" ); + self notify( "fake_revive" ); + playsoundatposition( "evt_ww_disappear", self.origin ); + playfx( level._effect["chugabud_revive_fx"], self.origin ); + spawnpoint = chugabud_get_spawnpoint(); - if ( isdefined( level._chugabud_post_respawn_override_func ) ) - self [[ level._chugabud_post_respawn_override_func ]]( spawnpoint.origin ); + if ( isdefined( level._chugabud_post_respawn_override_func ) ) + self [[ level._chugabud_post_respawn_override_func ]]( spawnpoint.origin ); - if ( isdefined( level.chugabud_force_corpse_position ) ) - { - if ( isdefined( self.e_chugabud_corpse ) ) - self.e_chugabud_corpse forceteleport( level.chugabud_force_corpse_position ); + if ( isdefined( level.chugabud_force_corpse_position ) ) + { + if ( isdefined( self.e_chugabud_corpse ) ) + 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 ) ) - { - spawnpoint.origin = level.chugabud_force_player_position; - level.chugabud_force_player_position = undefined; - } + if ( isdefined( level.chugabud_force_player_position ) ) + { + spawnpoint.origin = level.chugabud_force_player_position; + level.chugabud_force_player_position = undefined; + } - self allowstand( 1 ); - self allowcrouch( 1 ); - self allowprone( 1 ); - self setstance( "stand" ); + self allowstand( 1 ); + self allowcrouch( 1 ); + self allowprone( 1 ); + self setstance( "stand" ); self chugabud_give_loadout(); self seteverhadweaponall( 1 ); - self.score = self.loadout.score; - self.pers["score"] = self.loadout.score; + self.score = self.loadout.score; + self.pers["score"] = self.loadout.score; - self setorigin( spawnpoint.origin ); - self setplayerangles( spawnpoint.angles ); - playsoundatposition( "evt_ww_appear", spawnpoint.origin ); - playfx( level._effect["chugabud_revive_fx"], spawnpoint.origin ); + self setorigin( spawnpoint.origin ); + self setplayerangles( spawnpoint.angles ); + playsoundatposition( "evt_ww_appear", 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; - self.ignoreme = 0; + self.ignoreme = 0; - wait 1; + wait 1; - self disableinvulnerability(); + self disableinvulnerability(); } chugabud_give_loadout() { - self takeallweapons(); - loadout = self.loadout; - primaries = self getweaponslistprimaries(); + self takeallweapons(); + loadout = self.loadout; + primaries = self getweaponslistprimaries(); - if ( loadout.weapons.size > 1 || primaries.size > 1 ) - { - foreach ( weapon in primaries ) - self takeweapon( weapon ); - } + if ( loadout.weapons.size > 1 || primaries.size > 1 ) + { + foreach ( weapon in primaries ) + self takeweapon( weapon ); + } weapons_given = 0; - for ( i = 0; i < loadout.weapons.size; i++ ) - { - if ( !isdefined( loadout.weapons[i] ) ) - continue; + for ( i = 0; i < loadout.weapons.size; i++ ) + { + if ( !isdefined( loadout.weapons[i] ) ) + continue; - if ( loadout.weapons[i]["name"] == "none" ) - continue; + if ( loadout.weapons[i]["name"] == "none" ) + 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++; if (weapons_given >= 2) { break; } - } + } - if ( loadout.current_weapon >= 0 && isdefined( loadout.weapons[loadout.current_weapon]["name"] ) ) - self switchtoweapon( 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 giveweapon( "knife_zm" ); + self giveweapon( "knife_zm" ); 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; - loadout restore_weapons_for_chugabud( self ); - self chugabud_restore_claymore(); - self.score = loadout.score; - self.pers["score"] = loadout.score; + loadout restore_weapons_for_chugabud( self ); + self chugabud_restore_claymore(); + self.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 ( loadout.zombie_cymbal_monkey_count ) - { - self maps\mp\zombies\_zm_weap_cymbal_monkey::player_give_cymbal_monkey(); - self setweaponammoclip( "cymbal_monkey_zm", loadout.zombie_cymbal_monkey_count ); - } - } + if ( maps\mp\zombies\_zm_weap_cymbal_monkey::cymbal_monkey_exists() ) + { + if ( loadout.zombie_cymbal_monkey_count ) + { + self maps\mp\zombies\_zm_weap_cymbal_monkey::player_give_cymbal_monkey(); + self setweaponammoclip( "cymbal_monkey_zm", loadout.zombie_cymbal_monkey_count ); + } + } - self.loadout.weapons = undefined; + self.loadout.weapons = undefined; } chugabud_give_perks() @@ -284,137 +284,137 @@ chugabud_give_perks() loadout = self.loadout; if ( isdefined( loadout.perks ) && loadout.perks.size > 0 ) - { - for ( i = 0; i < loadout.perks.size; i++ ) - { - if ( self hasperk( loadout.perks[i] ) ) - continue; + { + for ( i = 0; i < loadout.perks.size; i++ ) + { + if ( self hasperk( loadout.perks[i] ) ) + continue; - if ( loadout.perks[i] == "specialty_quickrevive" && flag( "solo_game" ) ) - level.solo_game_free_player_quickrevive = 1; + if ( loadout.perks[i] == "specialty_quickrevive" && flag( "solo_game" ) ) + level.solo_game_free_player_quickrevive = 1; - if ( loadout.perks[i] == "specialty_finalstand" ) - continue; + if ( loadout.perks[i] == "specialty_finalstand" ) + continue; - maps\mp\zombies\_zm_perks::give_perk( loadout.perks[i] ); - } - } - self.loadout.perks = undefined; + maps\mp\zombies\_zm_perks::give_perk( loadout.perks[i] ); + } + } + self.loadout.perks = undefined; } chugabud_spawn_corpse() { - corpse = maps\mp\zombies\_zm_clone::spawn_player_clone( self, self.origin, undefined, self.whos_who_shader ); - corpse.angles = self.angles; - corpse maps\mp\zombies\_zm_clone::clone_give_weapon( "m1911_zm" ); - corpse maps\mp\zombies\_zm_clone::clone_animate( "laststand" ); - corpse thread maps\mp\zombies\_zm_laststand::revive_trigger_spawn(); - return corpse; + corpse = maps\mp\zombies\_zm_clone::spawn_player_clone( self, self.origin, undefined, self.whos_who_shader ); + corpse.angles = self.angles; + corpse maps\mp\zombies\_zm_clone::clone_give_weapon( "m1911_zm" ); + corpse maps\mp\zombies\_zm_clone::clone_animate( "laststand" ); + corpse thread maps\mp\zombies\_zm_laststand::revive_trigger_spawn(); + return corpse; } 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.hidewheninmenu = 1; hud.bar.hidewheninmenu = 1; hud.barframe.hidewheninmenu = 1; - hud.foreground = 1; + hud.foreground = 1; hud.bar.foreground = 1; hud.barframe.foreground = 1; - hud.sort = 1; + hud.sort = 1; hud.bar.sort = 2; hud.barframe.sort = 3; - hud.barframe destroy(); - hud thread scripts\zm\_zm_reimagined::destroy_on_intermission(); + hud.barframe destroy(); + hud thread scripts\zm\_zm_reimagined::destroy_on_intermission(); - hud updatebar(1); - hud.bar scaleovertime(delay, 1, hud.height); + hud updatebar(1); + hud.bar scaleovertime(delay, 1, hud.height); - return hud; + return hud; } chugabud_corpse_revive_icon( player ) { - self endon( "death" ); - height_offset = 30; - index = player.clientid; + self endon( "death" ); + height_offset = 30; + index = player.clientid; self.revive_waypoint_origin = spawn( "script_model", self.origin + (0, 0, height_offset) ); self.revive_waypoint_origin setmodel( "tag_origin" ); self.revive_waypoint_origin linkto( self ); - hud_elem = newhudelem(); - self.revive_hud_elem = hud_elem; - hud_elem.alpha = 1; - hud_elem.archived = 1; + hud_elem = newhudelem(); + self.revive_hud_elem = hud_elem; + hud_elem.alpha = 1; + hud_elem.archived = 1; hud_elem.hidewheninmenu = 1; - hud_elem.immunetodemogamehudsettings = 1; - hud_elem setwaypoint( 1, "specialty_chugabud_zombies" ); + hud_elem.immunetodemogamehudsettings = 1; + hud_elem setwaypoint( 1, "specialty_chugabud_zombies" ); hud_elem settargetent( self.revive_waypoint_origin ); } chugabud_corpse_cleanup( corpse, was_revived ) { - self notify( "chugabud_effects_cleanup" ); + self notify( "chugabud_effects_cleanup" ); - if ( was_revived ) - { - playsoundatposition( "evt_ww_appear", corpse.origin ); - playfx( level._effect["chugabud_revive_fx"], corpse.origin ); - } - else - { - playsoundatposition( "evt_ww_disappear", corpse.origin ); - playfx( level._effect["chugabud_bleedout_fx"], corpse.origin ); - self notify( "chugabud_bleedout" ); - } + if ( was_revived ) + { + playsoundatposition( "evt_ww_appear", corpse.origin ); + playfx( level._effect["chugabud_revive_fx"], corpse.origin ); + } + else + { + playsoundatposition( "evt_ww_disappear", corpse.origin ); + playfx( level._effect["chugabud_bleedout_fx"], corpse.origin ); + self notify( "chugabud_bleedout" ); + } - if ( isdefined( corpse.revivetrigger ) ) - { - corpse notify( "stop_revive_trigger" ); - corpse.revivetrigger delete(); - corpse.revivetrigger = undefined; - } + if ( isdefined( corpse.revivetrigger ) ) + { + corpse notify( "stop_revive_trigger" ); + corpse.revivetrigger delete(); + corpse.revivetrigger = undefined; + } - if ( isdefined( corpse.revive_hud_elem ) ) - { - corpse.revive_hud_elem destroy(); - corpse.revive_hud_elem = undefined; - } + if ( isdefined( corpse.revive_hud_elem ) ) + { + corpse.revive_hud_elem destroy(); + corpse.revive_hud_elem = undefined; + } if ( isdefined( corpse.revive_waypoint_origin ) ) - { - corpse.revive_waypoint_origin delete(); - corpse.revive_waypoint_origin = undefined; - } + { + corpse.revive_waypoint_origin delete(); + corpse.revive_waypoint_origin = undefined; + } - if ( isdefined( self.chugabud_bleed_timeout_hud ) ) - { - self.chugabud_bleed_timeout_hud destroy(); - self.chugabud_bleed_timeout_hud.bar destroy(); + if ( isdefined( self.chugabud_bleed_timeout_hud ) ) + { + self.chugabud_bleed_timeout_hud destroy(); + self.chugabud_bleed_timeout_hud.bar destroy(); self.chugabud_bleed_timeout_hud.barframe destroy(); - self.chugabud_bleed_timeout_hud = undefined; - } + self.chugabud_bleed_timeout_hud = undefined; + } - self.loadout = undefined; - wait 0.1; - corpse delete(); - self.e_chugabud_corpse = undefined; + self.loadout = undefined; + wait 0.1; + corpse delete(); + self.e_chugabud_corpse = undefined; - if ( is_player_valid( self ) ) - { - self.statusicon = ""; - } + if ( is_player_valid( self ) ) + { + self.statusicon = ""; + } } chugabud_handle_multiple_instances( corpse ) { - corpse endon( "death" ); + corpse endon( "death" ); self waittill( "chugabud_handle_multiple_instances" ); self thread chugabud_laststand_wait( corpse ); - self chugabud_corpse_cleanup( corpse, 0 ); + self chugabud_corpse_cleanup( corpse, 0 ); } chugabud_laststand_wait( corpse ) @@ -428,47 +428,47 @@ chugabud_corpse_cleanup_on_disconnect( player ) { self endon( "death" ); - player waittill( "disconnect" ); + player waittill( "disconnect" ); player chugabud_corpse_cleanup( self, 0 ); } chugabud_laststand_cleanup( corpse, str_notify ) { - if ( isdefined( str_notify ) ) - self waittill( str_notify ); + if ( isdefined( str_notify ) ) + self waittill( str_notify ); self setstance( "stand" ); self thread chugabud_leave_freeze(); self thread chugabud_revive_invincible(); self chugabud_give_perks(); - self chugabud_corpse_cleanup( corpse, 1 ); + self chugabud_corpse_cleanup( corpse, 1 ); } chugabud_leave_freeze() { - self endon( "disconnect" ); - level endon( "end_game" ); + self endon( "disconnect" ); + level endon( "end_game" ); - self freezecontrols( 1 ); + self freezecontrols( 1 ); - wait 0.5; + wait 0.5; - if ( !is_true( self.hostmigrationcontrolsfrozen ) ) - self freezecontrols( 0 ); + if ( !is_true( self.hostmigrationcontrolsfrozen ) ) + self freezecontrols( 0 ); } chugabud_revive_invincible() { - self endon( "disconnect" ); + self endon( "disconnect" ); level endon( "end_game" ); self.health = self.maxhealth; self enableinvulnerability(); - wait 2; + wait 2; - self disableinvulnerability(); + self disableinvulnerability(); } chugabud_bleed_timeout( delay, corpse ) @@ -477,7 +477,7 @@ chugabud_bleed_timeout( delay, corpse ) self endon( "disconnect" ); 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; diff --git a/scripts/zm/replaced/_zm_clone.gsc b/scripts/zm/replaced/_zm_clone.gsc index 36a222f7..167fee59 100644 --- a/scripts/zm/replaced/_zm_clone.gsc +++ b/scripts/zm/replaced/_zm_clone.gsc @@ -5,55 +5,55 @@ spawn_player_clone( player, origin = player.origin, forceweapon, forcemodel ) { - primaryweapons = player getweaponslistprimaries(); + primaryweapons = player getweaponslistprimaries(); - if ( isdefined( forceweapon ) ) - weapon = forceweapon; - else if ( primaryweapons.size ) - weapon = primaryweapons[0]; - else - weapon = player getcurrentweapon(); + if ( isdefined( forceweapon ) ) + weapon = forceweapon; + else if ( primaryweapons.size ) + weapon = primaryweapons[0]; + else + weapon = player getcurrentweapon(); - weaponmodel = getweaponmodel( weapon ); - spawner = getent( "fake_player_spawner", "targetname" ); + weaponmodel = getweaponmodel( weapon ); + spawner = getent( "fake_player_spawner", "targetname" ); - if ( isdefined( spawner ) ) - { - while ( getfreeactorcount() < 1 ) - { - wait 0.05; - } + if ( isdefined( spawner ) ) + { + while ( getfreeactorcount() < 1 ) + { + wait 0.05; + } - clone = spawner spawnactor(); - clone.origin = origin; - clone.isactor = 1; - } - else - { - clone = spawn( "script_model", origin ); - clone.isactor = 0; - } + clone = spawner spawnactor(); + clone.origin = origin; + clone.isactor = 1; + } + else + { + clone = spawn( "script_model", origin ); + clone.isactor = 0; + } - if ( isdefined( forcemodel ) ) - clone setmodel( forcemodel ); - else - { - clone setmodel( self.model ); + if ( isdefined( forcemodel ) ) + clone setmodel( forcemodel ); + else + { + clone setmodel( self.model ); - if ( isdefined( player.headmodel ) ) - { - clone.headmodel = player.headmodel; - clone attach( clone.headmodel, "", 1 ); - } - } + if ( isdefined( player.headmodel ) ) + { + clone.headmodel = player.headmodel; + clone attach( clone.headmodel, "", 1 ); + } + } - if ( weaponmodel != "" && weaponmodel != "none" ) - clone attach( weaponmodel, "tag_weapon_right" ); + if ( weaponmodel != "" && weaponmodel != "none" ) + clone attach( weaponmodel, "tag_weapon_right" ); - clone.team = player.team; - clone.is_inert = 1; - clone.zombie_move_speed = "walk"; - clone.script_noteworthy = "corpse_clone"; - clone.actor_damage_func = ::clone_damage_func; - return clone; + clone.team = player.team; + clone.is_inert = 1; + clone.zombie_move_speed = "walk"; + clone.script_noteworthy = "corpse_clone"; + clone.actor_damage_func = ::clone_damage_func; + return clone; } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_craftables.gsc b/scripts/zm/replaced/_zm_craftables.gsc index 0eaa08d9..06e7fd19 100644 --- a/scripts/zm/replaced/_zm_craftables.gsc +++ b/scripts/zm/replaced/_zm_craftables.gsc @@ -12,125 +12,125 @@ choose_open_craftable( player ) { - self endon( "kill_choose_open_craftable" ); - n_playernum = player getentitynumber(); - self.b_open_craftable_checking_input = 1; - b_got_input = 1; - hinttexthudelem = newclienthudelem( player ); - hinttexthudelem.alignx = "center"; - hinttexthudelem.aligny = "middle"; - hinttexthudelem.horzalign = "center"; - hinttexthudelem.vertalign = "bottom"; - hinttexthudelem.y = -100; + self endon( "kill_choose_open_craftable" ); + n_playernum = player getentitynumber(); + self.b_open_craftable_checking_input = 1; + b_got_input = 1; + hinttexthudelem = newclienthudelem( player ); + hinttexthudelem.alignx = "center"; + hinttexthudelem.aligny = "middle"; + hinttexthudelem.horzalign = "center"; + hinttexthudelem.vertalign = "bottom"; + hinttexthudelem.y = -100; - if ( player issplitscreen() ) - hinttexthudelem.y = -50; + if ( player issplitscreen() ) + hinttexthudelem.y = -50; - hinttexthudelem.foreground = 1; - hinttexthudelem.hidewheninmenu = 1; - hinttexthudelem.font = "default"; - hinttexthudelem.fontscale = 1.0; - hinttexthudelem.alpha = 1; - hinttexthudelem.color = ( 1, 1, 1 ); - hinttexthudelem settext( &"ZM_CRAFTABLES_CHANGE_BUILD" ); + hinttexthudelem.foreground = 1; + hinttexthudelem.hidewheninmenu = 1; + hinttexthudelem.font = "default"; + hinttexthudelem.fontscale = 1.0; + hinttexthudelem.alpha = 1; + hinttexthudelem.color = ( 1, 1, 1 ); + hinttexthudelem settext( &"ZM_CRAFTABLES_CHANGE_BUILD" ); - if ( !isdefined( self.opencraftablehudelem ) ) - self.opencraftablehudelem = []; + if ( !isdefined( self.opencraftablehudelem ) ) + self.opencraftablehudelem = []; - self.opencraftablehudelem[n_playernum] = hinttexthudelem; + self.opencraftablehudelem[n_playernum] = hinttexthudelem; - if ( self.n_open_craftable_choice < 0 ) - { - 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.hint_string = self.a_uts_open_craftables_available[self.n_open_craftable_choice].hint_string; - self.playertrigger[n_playernum] sethintstring( self.hint_string ); - } + if ( self.n_open_craftable_choice < 0 ) + { + 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.hint_string = self.a_uts_open_craftables_available[self.n_open_craftable_choice].hint_string; + self.playertrigger[n_playernum] sethintstring( self.hint_string ); + } - 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()) + 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()) { self.opencraftablehudelem[n_playernum].alpha = 0; wait 0.05; continue; } - self.opencraftablehudelem[n_playernum].alpha = 1; + self.opencraftablehudelem[n_playernum].alpha = 1; - if ( player actionslotonebuttonpressed() ) - { - self.n_open_craftable_choice++; - b_got_input = 1; - } - else if ( player actionslottwobuttonpressed() ) - { - self.n_open_craftable_choice--; - b_got_input = 1; - } + if ( player actionslotonebuttonpressed() ) + { + self.n_open_craftable_choice++; + b_got_input = 1; + } + else if ( player actionslottwobuttonpressed() ) + { + self.n_open_craftable_choice--; + b_got_input = 1; + } - if ( self.n_open_craftable_choice >= self.a_uts_open_craftables_available.size ) - 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; + if ( self.n_open_craftable_choice >= self.a_uts_open_craftables_available.size ) + 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; - if ( b_got_input ) - { - 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.playertrigger[n_playernum] sethintstring( self.hint_string ); - b_got_input = 0; - } + if ( b_got_input ) + { + 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.playertrigger[n_playernum] sethintstring( self.hint_string ); + b_got_input = 0; + } - wait 0.05; - } + wait 0.05; + } - self.b_open_craftable_checking_input = 0; - self.opencraftablehudelem[n_playernum] destroy(); - self.opencraftablehudelem[n_playernum] = undefined; + self.b_open_craftable_checking_input = 0; + self.opencraftablehudelem[n_playernum] destroy(); + self.opencraftablehudelem[n_playernum] = undefined; } craftable_use_hold_think_internal( player ) { - wait 0.01; + wait 0.01; - if ( !isdefined( self ) ) - { - self notify( "craft_failed" ); + if ( !isdefined( self ) ) + { + self notify( "craft_failed" ); - if ( isdefined( player.craftableaudio ) ) - { - player.craftableaudio delete(); - player.craftableaudio = undefined; - } + if ( isdefined( player.craftableaudio ) ) + { + player.craftableaudio delete(); + player.craftableaudio = undefined; + } - return; - } + return; + } - if ( !isdefined( self.usetime ) ) - self.usetime = int( 3000 ); + if ( !isdefined( self.usetime ) ) + self.usetime = int( 3000 ); - self.craft_time = self.usetime; - self.craft_start_time = gettime(); - craft_time = self.craft_time; - craft_start_time = self.craft_start_time; - player disable_player_move_states( 1 ); - player increment_is_drinking(); - orgweapon = player getcurrentweapon(); - player giveweapon( "zombie_builder_zm" ); - player switchtoweapon( "zombie_builder_zm" ); - self.stub.craftablespawn craftable_set_piece_crafting( player.current_craftable_piece ); - player thread player_progress_bar( craft_start_time, craft_time ); + self.craft_time = self.usetime; + self.craft_start_time = gettime(); + craft_time = self.craft_time; + craft_start_time = self.craft_start_time; + player disable_player_move_states( 1 ); + player increment_is_drinking(); + orgweapon = player getcurrentweapon(); + player giveweapon( "zombie_builder_zm" ); + player switchtoweapon( "zombie_builder_zm" ); + self.stub.craftablespawn craftable_set_piece_crafting( player.current_craftable_piece ); + player thread player_progress_bar( craft_start_time, craft_time ); - if ( isdefined( level.craftable_craft_custom_func ) ) - player thread [[ level.craftable_craft_custom_func ]]( self.stub ); + if ( isdefined( level.craftable_craft_custom_func ) ) + 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 ) - wait 0.05; + while ( isdefined( self ) && player player_continue_crafting( self.stub.craftablespawn ) && gettime() - self.craft_start_time < self.craft_time ) + wait 0.05; - player notify( "craftable_progress_end" ); + player notify( "craftable_progress_end" ); - if ( player hasWeapon( orgweapon ) ) + if ( player hasWeapon( orgweapon ) ) { player switchToWeapon( orgweapon ); } @@ -139,73 +139,73 @@ craftable_use_hold_think_internal( player ) 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 ) - player decrement_is_drinking(); + if ( isdefined( player.is_drinking ) && player.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 ) - { - self.stub.craftablespawn craftable_clear_piece_crafting( player.current_craftable_piece ); - self notify( "craft_succeed" ); - } - else - { - if ( isdefined( player.craftableaudio ) ) - { - player.craftableaudio delete(); - player.craftableaudio = undefined; - } + 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 notify( "craft_succeed" ); + } + else + { + if ( isdefined( player.craftableaudio ) ) + { + player.craftableaudio delete(); + player.craftableaudio = undefined; + } - self.stub.craftablespawn craftable_clear_piece_crafting( player.current_craftable_piece ); - self notify( "craft_failed" ); - } + self.stub.craftablespawn craftable_clear_piece_crafting( player.current_craftable_piece ); + self notify( "craft_failed" ); + } } player_progress_bar_update( start_time, craft_time ) { - self endon( "entering_last_stand" ); - self endon( "death" ); - self endon( "disconnect" ); - self endon( "craftable_progress_end" ); + self endon( "entering_last_stand" ); + self endon( "death" ); + self endon( "disconnect" ); + 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 ) - { - wait 0.05; - } + while ( isdefined( self ) && gettime() - start_time < craft_time ) + { + wait 0.05; + } } update_open_table_status() { - thread update_open_table_status_actual(); + thread update_open_table_status_actual(); } update_open_table_status_actual() { - wait 0.05; // wait for .crafted to be set + wait 0.05; // wait for .crafted to be set - b_open_craftables_remaining = 0; + b_open_craftables_remaining = 0; - 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() ) - { - b_open_craftables_remaining++; - } - } + 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() ) + { + b_open_craftables_remaining++; + } + } - if ( !b_open_craftables_remaining ) - { - foreach ( uts_craftable in level.a_uts_craftables ) - { - if ( uts_craftable.craftablespawn.craftable_name == "open_table" ) - { - thread maps\mp\zombies\_zm_unitrigger::unregister_unitrigger( uts_craftable ); - } - } - } + if ( !b_open_craftables_remaining ) + { + foreach ( uts_craftable in level.a_uts_craftables ) + { + if ( uts_craftable.craftablespawn.craftable_name == "open_table" ) + { + thread maps\mp\zombies\_zm_unitrigger::unregister_unitrigger( uts_craftable ); + } + } + } } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_equip_headchopper.gsc b/scripts/zm/replaced/_zm_equip_headchopper.gsc index a9ec5ece..50caedaa 100644 --- a/scripts/zm/replaced/_zm_equip_headchopper.gsc +++ b/scripts/zm/replaced/_zm_equip_headchopper.gsc @@ -17,393 +17,393 @@ init_anim_slice_times() { - level.headchopper_slice_times = []; - slice_times = getnotetracktimes( %o_zmb_chopper_slice_slow, "slice" ); - retract_times = getnotetracktimes( %o_zmb_chopper_slice_slow, "retract" ); - animlength = getanimlength( %o_zmb_chopper_slice_slow ); + level.headchopper_slice_times = []; + slice_times = getnotetracktimes( %o_zmb_chopper_slice_slow, "slice" ); + retract_times = getnotetracktimes( %o_zmb_chopper_slice_slow, "retract" ); + animlength = getanimlength( %o_zmb_chopper_slice_slow ); - i = 0; - foreach ( frac in slice_times ) - { - if ( i != 6 ) - { - i++; - continue; - } + i = 0; + foreach ( frac in slice_times ) + { + if ( i != 6 ) + { + i++; + continue; + } - level.headchopper_slice_times[level.headchopper_slice_times.size] = animlength * frac; - i++; - } + level.headchopper_slice_times[level.headchopper_slice_times.size] = animlength * frac; + i++; + } - i = 0; - foreach ( frac in retract_times ) - { - if ( i == 0 || i == 6 ) - { - i++; - continue; - } + i = 0; + foreach ( frac in retract_times ) + { + if ( i == 0 || i == 6 ) + { + i++; + continue; + } - level.headchopper_slice_times[level.headchopper_slice_times.size] = animlength * frac; - i++; - } + level.headchopper_slice_times[level.headchopper_slice_times.size] = animlength * frac; + i++; + } } headchopperthink( weapon, electricradius, armed ) { - self endon( "death" ); - self endon( "disconnect" ); - self endon( "equip_headchopper_zm_taken" ); - weapon endon( "death" ); - radiussquared = electricradius * electricradius; - traceposition = weapon getcentroid() + anglestoforward( flat_angle( weapon.angles ) ) * -15; - trace = bullettrace( traceposition, traceposition + vectorscale( ( 0, 0, -1 ), 48.0 ), 1, weapon ); - trigger_origin = weapon gettagorigin( "TAG_SAW" ); - trigger = spawn( "trigger_box", trigger_origin, 1, 16, 128, 64 ); - trigger.origin += anglestoup( weapon.angles ) * 32.0; - trigger.angles = weapon.angles; - trigger enablelinkto(); - trigger linkto( weapon ); - weapon.trigger = trigger; - weapon thread headchopperthinkcleanup( trigger ); - direction_forward = anglestoforward( flat_angle( weapon.angles ) + vectorscale( ( -1, 0, 0 ), 60.0 ) ); - direction_vector = vectorscale( direction_forward, 1024 ); - direction_origin = weapon.origin + direction_vector; - home_angles = weapon.angles; - weapon.is_armed = 0; - self thread headchopper_fx( weapon ); - self thread headchopper_animate( weapon, armed ); + self endon( "death" ); + self endon( "disconnect" ); + self endon( "equip_headchopper_zm_taken" ); + weapon endon( "death" ); + radiussquared = electricradius * electricradius; + traceposition = weapon getcentroid() + anglestoforward( flat_angle( weapon.angles ) ) * -15; + trace = bullettrace( traceposition, traceposition + vectorscale( ( 0, 0, -1 ), 48.0 ), 1, weapon ); + trigger_origin = weapon gettagorigin( "TAG_SAW" ); + trigger = spawn( "trigger_box", trigger_origin, 1, 16, 128, 64 ); + trigger.origin += anglestoup( weapon.angles ) * 32.0; + trigger.angles = weapon.angles; + trigger enablelinkto(); + trigger linkto( weapon ); + weapon.trigger = trigger; + weapon thread headchopperthinkcleanup( trigger ); + direction_forward = anglestoforward( flat_angle( weapon.angles ) + vectorscale( ( -1, 0, 0 ), 60.0 ) ); + direction_vector = vectorscale( direction_forward, 1024 ); + direction_origin = weapon.origin + direction_vector; + home_angles = weapon.angles; + weapon.is_armed = 0; + self thread headchopper_fx( weapon ); + self thread headchopper_animate( weapon, armed ); - while ( !( isdefined( weapon.is_armed ) && weapon.is_armed ) ) - wait 0.5; + while ( !( isdefined( weapon.is_armed ) && weapon.is_armed ) ) + wait 0.5; - weapon.chop_targets = []; - self thread targeting_thread( weapon, trigger ); + weapon.chop_targets = []; + self thread targeting_thread( weapon, trigger ); - while ( isdefined( weapon ) ) - { - wait_for_targets( weapon ); + while ( isdefined( weapon ) ) + { + wait_for_targets( weapon ); - if ( isdefined( weapon.chop_targets ) && weapon.chop_targets.size > 0 ) - { - is_slicing = 1; - slice_count = 0; + if ( isdefined( weapon.chop_targets ) && weapon.chop_targets.size > 0 ) + { + is_slicing = 1; + slice_count = 0; - weapon.headchopper_kills++; + weapon.headchopper_kills++; - while ( isdefined( is_slicing ) && is_slicing ) - { - weapon notify( "chop", 1 ); - weapon.is_armed = 0; - weapon.zombies_only = 1; + while ( isdefined( is_slicing ) && is_slicing ) + { + weapon notify( "chop", 1 ); + weapon.is_armed = 0; + weapon.zombies_only = 1; - self headchopper_add_chop_ents( weapon, trigger ); + self headchopper_add_chop_ents( weapon, trigger ); - foreach ( ent in weapon.chop_targets ) - self thread headchopperattack( weapon, ent ); + foreach ( ent in weapon.chop_targets ) + self thread headchopperattack( weapon, ent ); - weapon.chop_targets = []; - weapon waittill_any( "slicing", "end" ); + weapon.chop_targets = []; + weapon waittill_any( "slicing", "end" ); - slice_count++; - is_slicing = weapon.is_slicing; - } + slice_count++; + is_slicing = weapon.is_slicing; + } - weapon notify( "slice_done" ); + weapon notify( "slice_done" ); - while ( !( isdefined( weapon.is_armed ) && weapon.is_armed ) ) - wait 0.05; + while ( !( isdefined( weapon.is_armed ) && weapon.is_armed ) ) + wait 0.05; - if ( weapon.headchopper_kills >= 10 ) - { - self thread headchopper_expired( weapon ); - return; - } - } - else - wait 0.1; - } + if ( weapon.headchopper_kills >= 10 ) + { + self thread headchopper_expired( weapon ); + return; + } + } + else + wait 0.1; + } } targeting_thread( weapon, trigger ) { - self endon( "death" ); - self endon( "disconnect" ); - self endon( "equip_headchopper_zm_taken" ); - weapon endon( "death" ); - weapon.zombies_only = 1; + self endon( "death" ); + self endon( "disconnect" ); + self endon( "equip_headchopper_zm_taken" ); + weapon endon( "death" ); + weapon.zombies_only = 1; - while ( isdefined( weapon ) ) - { - if ( weapon.is_armed || isdefined( weapon.is_slicing ) && weapon.is_slicing ) - { - if ( isdefined( weapon.is_slicing ) && weapon.is_slicing ) - weapon waittill( "slice_done" ); + while ( isdefined( weapon ) ) + { + if ( weapon.is_armed || isdefined( weapon.is_slicing ) && weapon.is_slicing ) + { + if ( isdefined( weapon.is_slicing ) && weapon.is_slicing ) + weapon waittill( "slice_done" ); - self headchopper_add_chop_ents( weapon, trigger ); + self headchopper_add_chop_ents( weapon, trigger ); - if ( !weapon.zombies_only ) - weapon notify( "hi_priority_target" ); - } + if ( !weapon.zombies_only ) + weapon notify( "hi_priority_target" ); + } - wait 0.05; - } + wait 0.05; + } } headchopper_add_chop_ents( weapon, trigger ) { - zombies = getaiarray( level.zombie_team ); + zombies = getaiarray( level.zombie_team ); - foreach ( zombie in zombies ) - { - if ( !isdefined( zombie ) || !isalive( zombie ) ) - continue; + foreach ( zombie in zombies ) + { + if ( !isdefined( zombie ) || !isalive( zombie ) ) + continue; - if ( isdefined( zombie.ignore_headchopper ) && zombie.ignore_headchopper ) - continue; + if ( isdefined( zombie.ignore_headchopper ) && zombie.ignore_headchopper ) + continue; - if ( zombie istouching( trigger ) ) - weapon headchopper_add_chop_ent( zombie ); - } + if ( zombie istouching( trigger ) ) + weapon headchopper_add_chop_ent( zombie ); + } - players = get_players(); + players = get_players(); - foreach ( player in players ) - { - if ( is_player_valid( player ) && player istouching( trigger ) ) - { - weapon headchopper_add_chop_ent( player ); - weapon.zombies_only = 0; - } - } + foreach ( player in players ) + { + if ( is_player_valid( player ) && player istouching( trigger ) ) + { + weapon headchopper_add_chop_ent( player ); + weapon.zombies_only = 0; + } + } } wait_for_targets( weapon ) { - weapon endon( "hi_priority_target" ); + weapon endon( "hi_priority_target" ); - while ( isdefined( weapon ) ) - { - if ( isdefined( weapon.chop_targets ) && weapon.chop_targets.size > 0 ) - { - return; - } + while ( isdefined( weapon ) ) + { + if ( isdefined( weapon.chop_targets ) && weapon.chop_targets.size > 0 ) + { + return; + } - wait 0.05; - } + wait 0.05; + } } headchopperattack( weapon, ent ) { - self endon( "death" ); - self endon( "disconnect" ); - self endon( "equip_headchopper_zm_taken" ); - weapon endon( "death" ); + self endon( "death" ); + self endon( "disconnect" ); + self endon( "equip_headchopper_zm_taken" ); + weapon endon( "death" ); - if ( !isdefined( ent ) || !isalive( ent ) ) - return; + if ( !isdefined( ent ) || !isalive( ent ) ) + return; - eye_position = ent geteye(); - head_position = eye_position[2] + 13; - foot_position = ent.origin[2]; - length_head_to_toe = abs( head_position - foot_position ); - 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_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; - trace_point = undefined; + eye_position = ent geteye(); + head_position = eye_position[2] + 13; + foot_position = ent.origin[2]; + length_head_to_toe = abs( head_position - foot_position ); + 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_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; + trace_point = undefined; - if ( isdefined( is_headchop ) && is_headchop ) - trace_point = eye_position; - else if ( isdefined( is_torsochop ) && is_torsochop ) - trace_point = ent.origin + ( 0, 0, length_head_to_toe_25_percent * 2 ); - else - trace_point = ent.origin + ( 0, 0, length_head_to_toe_25_percent ); + if ( isdefined( is_headchop ) && is_headchop ) + trace_point = eye_position; + else if ( isdefined( is_torsochop ) && is_torsochop ) + trace_point = ent.origin + ( 0, 0, length_head_to_toe_25_percent * 2 ); + else + trace_point = ent.origin + ( 0, 0, length_head_to_toe_25_percent ); - fwdangles = anglestoup( weapon.angles ); - tracefwd = bullettrace( weapon.origin + fwdangles * 5, trace_point, 0, weapon, 1, 1 ); + fwdangles = anglestoup( weapon.angles ); + tracefwd = bullettrace( weapon.origin + fwdangles * 5, trace_point, 0, weapon, 1, 1 ); - if ( !isdefined( tracefwd ) || !isdefined( tracefwd["position"] ) || tracefwd["position"] != trace_point ) - return; + if ( !isdefined( tracefwd ) || !isdefined( tracefwd["position"] ) || tracefwd["position"] != trace_point ) + return; - if ( isplayer( ent ) ) - { - if ( isdefined( is_headchop ) && is_headchop ) - { - radiusdamage( ent.origin + (0, 0, 5), 10, 50, 50, weapon, "MOD_MELEE" ); - } - else - { - radiusdamage( ent.origin + (0, 0, 5), 10, 25, 25, weapon, "MOD_MELEE" ); - } - } - else - { - if ( !( isdefined( is_headchop ) && is_headchop ) || !( isdefined( is_headchop ) && is_headchop ) && !( isdefined( ent.has_legs ) && ent.has_legs ) ) - { - headchop_height = 25; + if ( isplayer( ent ) ) + { + if ( isdefined( is_headchop ) && is_headchop ) + { + radiusdamage( ent.origin + (0, 0, 5), 10, 50, 50, weapon, "MOD_MELEE" ); + } + else + { + radiusdamage( ent.origin + (0, 0, 5), 10, 25, 25, weapon, "MOD_MELEE" ); + } + } + else + { + if ( !( isdefined( is_headchop ) && is_headchop ) || !( isdefined( is_headchop ) && is_headchop ) && !( isdefined( ent.has_legs ) && ent.has_legs ) ) + { + headchop_height = 25; - if ( !( isdefined( ent.has_legs ) && ent.has_legs ) ) - headchop_height = 35; + if ( !( isdefined( ent.has_legs ) && ent.has_legs ) ) + 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( ent.no_gib ) && ent.no_gib ) ) - ent maps\mp\zombies\_zm_spawner::zombie_head_gib(); + if ( isdefined( is_headchop ) && is_headchop ) + { + if ( !( isdefined( ent.no_gib ) && ent.no_gib ) ) + ent maps\mp\zombies\_zm_spawner::zombie_head_gib(); - ent dodamage( ent.health + 666, weapon.origin ); - ent.headchopper_last_damage_time = gettime(); - ent playsound( "zmb_exp_jib_headchopper_zombie" ); - self thread headchopper_kill_vo( ent ); - } - else if ( isdefined( is_torsochop ) && is_torsochop ) - { - if ( ent.health <= 20 ) - { - ent playsound( "zmb_exp_jib_headchopper_zombie" ); - self thread headchopper_kill_vo( ent ); - } + ent dodamage( ent.health + 666, weapon.origin ); + ent.headchopper_last_damage_time = gettime(); + ent playsound( "zmb_exp_jib_headchopper_zombie" ); + self thread headchopper_kill_vo( ent ); + } + else if ( isdefined( is_torsochop ) && is_torsochop ) + { + if ( ent.health <= 20 ) + { + ent playsound( "zmb_exp_jib_headchopper_zombie" ); + self thread headchopper_kill_vo( ent ); + } - ent dodamage( 20, weapon.origin ); - ent.headchopper_last_damage_time = gettime(); - } - else if ( isdefined( is_footchop ) && is_footchop ) - { - if ( !( isdefined( ent.no_gib ) && ent.no_gib ) ) - { - ent.a.gib_ref = "no_legs"; - ent thread maps\mp\animscripts\zm_death::do_gib(); - ent.has_legs = 0; - ent allowedstances( "crouch" ); - ent setphysparams( 15, 0, 24 ); - ent allowpitchangle( 1 ); - ent setpitchorient(); - ent thread maps\mp\animscripts\zm_run::needsdelayedupdate(); + ent dodamage( 20, weapon.origin ); + ent.headchopper_last_damage_time = gettime(); + } + else if ( isdefined( is_footchop ) && is_footchop ) + { + if ( !( isdefined( ent.no_gib ) && ent.no_gib ) ) + { + ent.a.gib_ref = "no_legs"; + ent thread maps\mp\animscripts\zm_death::do_gib(); + ent.has_legs = 0; + ent allowedstances( "crouch" ); + ent setphysparams( 15, 0, 24 ); + ent allowpitchangle( 1 ); + ent setpitchorient(); + ent thread maps\mp\animscripts\zm_run::needsdelayedupdate(); - if ( isdefined( ent.crawl_anim_override ) ) - ent [[ ent.crawl_anim_override ]](); - } + if ( isdefined( ent.crawl_anim_override ) ) + ent [[ ent.crawl_anim_override ]](); + } - if ( ent.health <= 10 ) - { - ent playsound( "zmb_exp_jib_headchopper_zombie" ); - self thread headchopper_kill_vo( ent ); - } + if ( ent.health <= 10 ) + { + ent playsound( "zmb_exp_jib_headchopper_zombie" ); + self thread headchopper_kill_vo( ent ); + } - ent dodamage( 10, weapon.origin ); - ent.headchopper_last_damage_time = gettime(); - } - } + ent dodamage( 10, weapon.origin ); + ent.headchopper_last_damage_time = gettime(); + } + } } setupwatchers() { - self waittill( "weapon_watchers_created" ); + self waittill( "weapon_watchers_created" ); - watcher = maps\mp\gametypes_zm\_weaponobjects::getweaponobjectwatcher( "equip_headchopper" ); - watcher.onspawnretrievetriggers = ::equipment_onspawnretrievableweaponobject; + watcher = maps\mp\gametypes_zm\_weaponobjects::getweaponobjectwatcher( "equip_headchopper" ); + watcher.onspawnretrievetriggers = ::equipment_onspawnretrievableweaponobject; } equipment_onspawnretrievableweaponobject( watcher, player ) { - self.plant_parent = self; - iswallmount = isdefined( level.placeable_equipment_type[self.name] ) && level.placeable_equipment_type[self.name] == "wallmount"; + self.plant_parent = self; + 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 ( iswallmount || !getdvarint( "tu11_zombie_turret_placement_ignores_bodies" ) ) - { - self waittill( "stationary" ); + if ( !isdefined( player.turret_placement ) || !player.turret_placement["result"] ) + { + if ( iswallmount || !getdvarint( "tu11_zombie_turret_placement_ignores_bodies" ) ) + { + self waittill( "stationary" ); - waittillframeend; + waittillframeend; - if ( iswallmount ) - { - if ( isdefined( player.planted_wallmount_on_a_zombie ) && player.planted_wallmount_on_a_zombie ) - { - equip_name = self.name; - equipment_disappear_fx( self.origin, undefined, self.angles ); - self delete(); + if ( iswallmount ) + { + if ( isdefined( player.planted_wallmount_on_a_zombie ) && player.planted_wallmount_on_a_zombie ) + { + equip_name = self.name; + equipment_disappear_fx( self.origin, undefined, self.angles ); + self delete(); - 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_give( equip_name ); - player.do_not_display_equipment_pickup_hint = undefined; + 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_give( equip_name ); + player.do_not_display_equipment_pickup_hint = undefined; - player.planted_wallmount_on_a_zombie = undefined; - return; - } - } - } - else - { - self.plant_parent = player; - self.origin = player.origin; - self.angles = player.angles; - wait_network_frame(); - } - } + player.planted_wallmount_on_a_zombie = undefined; + return; + } + } + } + else + { + self.plant_parent = player; + self.origin = player.origin; + self.angles = player.angles; + wait_network_frame(); + } + } - equipment = watcher.name + "_zm"; + equipment = watcher.name + "_zm"; - if ( isdefined( player.current_equipment ) && player.current_equipment == equipment ) - player equipment_to_deployed( equipment ); + if ( isdefined( player.current_equipment ) && player.current_equipment == equipment ) + player equipment_to_deployed( equipment ); - if ( isdefined( level.zombie_equipment[equipment].place_fn ) ) - { - if ( isdefined( player.turret_placement ) && player.turret_placement["result"] ) - { - plant_origin = player.turret_placement["origin"]; - plant_angles = player.turret_placement["angles"]; - } - else if ( isdefined( level.placeable_equipment_type[self.name] ) && level.placeable_equipment_type[self.name] == "wallmount" ) - { - plant_origin = self.origin; - plant_angles = self.angles; - } - else - { - plant_origin = self.origin; - plant_angles = self.angles; - } + if ( isdefined( level.zombie_equipment[equipment].place_fn ) ) + { + if ( isdefined( player.turret_placement ) && player.turret_placement["result"] ) + { + plant_origin = player.turret_placement["origin"]; + plant_angles = player.turret_placement["angles"]; + } + else if ( isdefined( level.placeable_equipment_type[self.name] ) && level.placeable_equipment_type[self.name] == "wallmount" ) + { + plant_origin = self.origin; + plant_angles = self.angles; + } + else + { + plant_origin = self.origin; + plant_angles = self.angles; + } - if ( isdefined( level.check_force_deploy_origin ) ) - { - if ( player [[ level.check_force_deploy_origin ]]( self, plant_origin, plant_angles ) ) - { - plant_origin = player.origin; - plant_angles = player.angles; - self.plant_parent = player; - } - } - else if ( isdefined( level.check_force_deploy_z ) ) - { - if ( player [[ level.check_force_deploy_z ]]( self, plant_origin, plant_angles ) ) - plant_origin = ( plant_origin[0], plant_origin[1], player.origin[2] + 10 ); - } + if ( isdefined( level.check_force_deploy_origin ) ) + { + if ( player [[ level.check_force_deploy_origin ]]( self, plant_origin, plant_angles ) ) + { + plant_origin = player.origin; + plant_angles = player.angles; + self.plant_parent = player; + } + } + else if ( isdefined( level.check_force_deploy_z ) ) + { + if ( player [[ level.check_force_deploy_z ]]( self, plant_origin, plant_angles ) ) + plant_origin = ( plant_origin[0], plant_origin[1], player.origin[2] + 10 ); + } - if ( isdefined( iswallmount ) && iswallmount ) - self ghost(); + if ( isdefined( iswallmount ) && iswallmount ) + 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 ) ) - { - replacement.owner = player; - replacement.original_owner = player; - replacement.name = self.name; - player notify( "equipment_placed", replacement, self.name ); + if ( isdefined( replacement ) ) + { + replacement.owner = player; + replacement.original_owner = player; + replacement.name = self.name; + player notify( "equipment_placed", replacement, self.name ); - if ( isdefined( level.equipment_planted ) ) - player [[ level.equipment_planted ]]( replacement, equipment, self.plant_parent ); + if ( isdefined( level.equipment_planted ) ) + 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 ) ) - self delete(); - } + if ( isdefined( self ) ) + self delete(); + } } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_equip_springpad.gsc b/scripts/zm/replaced/_zm_equip_springpad.gsc index 65c7e665..58f578bd 100644 --- a/scripts/zm/replaced/_zm_equip_springpad.gsc +++ b/scripts/zm/replaced/_zm_equip_springpad.gsc @@ -11,181 +11,181 @@ springpadthink( weapon, electricradius, armed ) { - self endon( "death" ); - self endon( "disconnect" ); - self endon( "equip_springpad_zm_taken" ); - weapon endon( "death" ); - radiussquared = electricradius * electricradius; - trigger = spawn( "trigger_box", weapon getcentroid(), 1, 48, 48, 32 ); - trigger.origin += anglestoforward( flat_angle( weapon.angles ) ) * -15; - trigger.angles = weapon.angles; - trigger enablelinkto(); - trigger linkto( weapon ); - weapon.trigger = trigger; - weapon thread springpadthinkcleanup( trigger ); - direction_forward = anglestoforward( flat_angle( weapon.angles ) + vectorscale( ( -1, 0, 0 ), 60.0 ) ); - direction_vector = vectorscale( direction_forward, 1024 ); - direction_origin = weapon.origin + direction_vector; - home_angles = weapon.angles; - weapon.is_armed = 0; - self thread springpad_fx( weapon ); - self thread springpad_animate( weapon, armed ); + self endon( "death" ); + self endon( "disconnect" ); + self endon( "equip_springpad_zm_taken" ); + weapon endon( "death" ); + radiussquared = electricradius * electricradius; + trigger = spawn( "trigger_box", weapon getcentroid(), 1, 48, 48, 32 ); + trigger.origin += anglestoforward( flat_angle( weapon.angles ) ) * -15; + trigger.angles = weapon.angles; + trigger enablelinkto(); + trigger linkto( weapon ); + weapon.trigger = trigger; + weapon thread springpadthinkcleanup( trigger ); + direction_forward = anglestoforward( flat_angle( weapon.angles ) + vectorscale( ( -1, 0, 0 ), 60.0 ) ); + direction_vector = vectorscale( direction_forward, 1024 ); + direction_origin = weapon.origin + direction_vector; + home_angles = weapon.angles; + weapon.is_armed = 0; + self thread springpad_fx( weapon ); + self thread springpad_animate( weapon, armed ); - weapon waittill( "armed" ); + weapon waittill( "armed" ); - weapon.is_armed = 1; - weapon.fling_targets = []; - self thread targeting_thread( weapon, trigger ); + weapon.is_armed = 1; + weapon.fling_targets = []; + self thread targeting_thread( weapon, trigger ); - while ( isdefined( weapon ) ) - { - wait_for_targets( weapon ); + while ( isdefined( weapon ) ) + { + wait_for_targets( weapon ); - if ( isdefined( weapon.fling_targets ) && weapon.fling_targets.size > 0 ) - { - weapon notify( "fling", weapon.zombies_only ); - weapon.is_armed = 0; - weapon.zombies_only = 1; + if ( isdefined( weapon.fling_targets ) && weapon.fling_targets.size > 0 ) + { + weapon notify( "fling", weapon.zombies_only ); + weapon.is_armed = 0; + weapon.zombies_only = 1; - weapon.springpad_kills++; + weapon.springpad_kills++; - foreach ( ent in weapon.fling_targets ) - { - if ( isplayer( ent ) ) - { - ent thread player_fling( weapon.origin + vectorscale( ( 0, 0, 1 ), 30.0 ), weapon.angles, direction_vector, weapon ); - continue; - } + foreach ( ent in weapon.fling_targets ) + { + if ( isplayer( ent ) ) + { + ent thread player_fling( weapon.origin + vectorscale( ( 0, 0, 1 ), 30.0 ), weapon.angles, direction_vector, weapon ); + continue; + } - if ( isdefined( ent ) && isdefined( ent.custom_springpad_fling ) ) - { - if ( !isdefined( self.num_zombies_flung ) ) - self.num_zombies_flung = 0; + if ( isdefined( ent ) && isdefined( ent.custom_springpad_fling ) ) + { + if ( !isdefined( self.num_zombies_flung ) ) + self.num_zombies_flung = 0; - self.num_zombies_flung++; - self notify( "zombie_flung" ); - ent thread [[ ent.custom_springpad_fling ]]( weapon, self ); - continue; - } + self.num_zombies_flung++; + self notify( "zombie_flung" ); + ent thread [[ ent.custom_springpad_fling ]]( weapon, self ); + continue; + } - if ( isdefined( ent ) ) - { - if ( !isdefined( self.num_zombies_flung ) ) - self.num_zombies_flung = 0; + if ( isdefined( ent ) ) + { + if ( !isdefined( self.num_zombies_flung ) ) + self.num_zombies_flung = 0; - self.num_zombies_flung++; - self notify( "zombie_flung" ); + self.num_zombies_flung++; + self notify( "zombie_flung" ); - if ( !isdefined( weapon.fling_scaler ) ) - weapon.fling_scaler = 1; + if ( !isdefined( weapon.fling_scaler ) ) + weapon.fling_scaler = 1; - if ( isdefined( weapon.direction_vec_override ) ) - direction_vector = weapon.direction_vec_override; + if ( isdefined( weapon.direction_vec_override ) ) + direction_vector = weapon.direction_vec_override; - ent dodamage( ent.health + 666, ent.origin ); - ent startragdoll(); - ent launchragdoll( direction_vector / 4 * weapon.fling_scaler ); - } - } + ent dodamage( ent.health + 666, ent.origin ); + ent startragdoll(); + 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 ) - { - self thread springpad_expired( weapon ); - return; - } - } - else - wait 0.1; - } + if ( weapon.springpad_kills >= 15 ) + { + self thread springpad_expired( weapon ); + return; + } + } + else + wait 0.1; + } } player_fling( origin, angles, velocity, weapon ) { - torigin = ( self.origin[0], self.origin[1], origin[2] ); - aorigin = ( origin + torigin ) * 0.5; - trace = physicstrace( origin, torigin, vectorscale( ( -1, -1, 0 ), 15.0 ), ( 15, 15, 30 ), self ); + torigin = ( self.origin[0], self.origin[1], origin[2] ); + aorigin = ( origin + torigin ) * 0.5; + trace = physicstrace( origin, torigin, vectorscale( ( -1, -1, 0 ), 15.0 ), ( 15, 15, 30 ), self ); - self setorigin( aorigin ); - wait_network_frame(); - self setvelocity( velocity ); + self setorigin( aorigin ); + wait_network_frame(); + self setvelocity( velocity ); } wait_for_targets( weapon ) { - weapon endon( "hi_priority_target" ); + weapon endon( "hi_priority_target" ); - while ( isdefined( weapon ) ) - { - if ( isdefined( weapon.fling_targets ) && weapon.fling_targets.size > 0 ) - { - return; - } + while ( isdefined( weapon ) ) + { + if ( isdefined( weapon.fling_targets ) && weapon.fling_targets.size > 0 ) + { + return; + } - wait 0.05; - } + wait 0.05; + } } #using_animtree("zombie_springpad"); springpad_animate( weapon, armed ) { - self endon( "death" ); - self endon( "disconnect" ); - self endon( "equip_springpad_zm_taken" ); - weapon endon( "death" ); - weapon useanimtree( #animtree ); - f_animlength = getanimlength( %o_zombie_buildable_tramplesteam_reset_zombie ); - r_animlength = getanimlength( %o_zombie_buildable_tramplesteam_reset ); - l_animlength = getanimlength( %o_zombie_buildable_tramplesteam_launch ); - weapon thread springpad_audio(); - prearmed = 0; + self endon( "death" ); + self endon( "disconnect" ); + self endon( "equip_springpad_zm_taken" ); + weapon endon( "death" ); + weapon useanimtree( #animtree ); + f_animlength = getanimlength( %o_zombie_buildable_tramplesteam_reset_zombie ); + r_animlength = getanimlength( %o_zombie_buildable_tramplesteam_reset ); + l_animlength = getanimlength( %o_zombie_buildable_tramplesteam_launch ); + weapon thread springpad_audio(); + prearmed = 0; - if ( isdefined( armed ) && armed ) - prearmed = 1; + if ( isdefined( armed ) && armed ) + prearmed = 1; - fast_reset = 0; + fast_reset = 0; - while ( isdefined( weapon ) ) - { - if ( !prearmed ) - { - if ( fast_reset ) - { - weapon setanim( %o_zombie_buildable_tramplesteam_reset_zombie ); - weapon thread playspringpadresetaudio( f_animlength ); - wait( f_animlength ); - } - else - { - weapon setanim( %o_zombie_buildable_tramplesteam_reset ); - weapon thread playspringpadresetaudio( r_animlength ); - wait( r_animlength ); - } - } - else - wait 0.05; + while ( isdefined( weapon ) ) + { + if ( !prearmed ) + { + if ( fast_reset ) + { + weapon setanim( %o_zombie_buildable_tramplesteam_reset_zombie ); + weapon thread playspringpadresetaudio( f_animlength ); + wait( f_animlength ); + } + else + { + weapon setanim( %o_zombie_buildable_tramplesteam_reset ); + weapon thread playspringpadresetaudio( r_animlength ); + wait( r_animlength ); + } + } + else + wait 0.05; - prearmed = 0; - weapon notify( "armed" ); - fast_reset = 1; + prearmed = 0; + weapon notify( "armed" ); + fast_reset = 1; - if ( isdefined( weapon ) ) - { - weapon setanim( %o_zombie_buildable_tramplesteam_compressed_idle ); + if ( isdefined( weapon ) ) + { + weapon setanim( %o_zombie_buildable_tramplesteam_compressed_idle ); - weapon waittill( "fling", fast ); - } + weapon waittill( "fling", fast ); + } - if ( isdefined( weapon ) ) - { - weapon setanim( %o_zombie_buildable_tramplesteam_launch ); - wait( l_animlength ); - } - } + if ( isdefined( weapon ) ) + { + weapon setanim( %o_zombie_buildable_tramplesteam_launch ); + wait( l_animlength ); + } + } } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_equipment.gsc b/scripts/zm/replaced/_zm_equipment.gsc index a0363da3..84649c10 100644 --- a/scripts/zm/replaced/_zm_equipment.gsc +++ b/scripts/zm/replaced/_zm_equipment.gsc @@ -95,48 +95,48 @@ item_watch_damage() item_damage( damage ) { - if ( isdefined( self.isriotshield ) && self.isriotshield ) - { - if ( isdefined( level.riotshield_damage_callback ) && isdefined( self.owner ) ) - self.owner [[ level.riotshield_damage_callback ]]( damage, 0 ); - else if ( isdefined( level.deployed_riotshield_damage_callback ) ) - self [[ level.deployed_riotshield_damage_callback ]]( damage ); - } - else if ( isdefined( self.owner ) ) + if ( isdefined( self.isriotshield ) && self.isriotshield ) + { + if ( isdefined( level.riotshield_damage_callback ) && isdefined( self.owner ) ) + self.owner [[ level.riotshield_damage_callback ]]( damage, 0 ); + else if ( isdefined( level.deployed_riotshield_damage_callback ) ) + self [[ level.deployed_riotshield_damage_callback ]]( damage ); + } + else if ( isdefined( self.owner ) ) { self.owner player_damage_equipment( self.equipname, damage, self.origin, self.stub ); } - else - { - if ( !isdefined( self.damage ) ) - self.damage = 0; + else + { + if ( !isdefined( self.damage ) ) + self.damage = 0; - self.damage += damage; + self.damage += damage; - if ( self.damage >= 1500 ) - self thread maps\mp\zombies\_zm_equipment::dropped_equipment_destroy( 1 ); - } + if ( self.damage >= 1500 ) + self thread maps\mp\zombies\_zm_equipment::dropped_equipment_destroy( 1 ); + } } player_damage_equipment( equipment, damage, origin, stub ) { - if ( !isdefined( self.equipment_damage ) ) - self.equipment_damage = []; + if ( !isdefined( self.equipment_damage ) ) + self.equipment_damage = []; - if ( !isdefined( self.equipment_damage[equipment] ) ) - self.equipment_damage[equipment] = 0; + if ( !isdefined( self.equipment_damage[equipment] ) ) + 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 ); - if ( isdefined( level.placeable_equipment_destroy_fn[equipment] ) ) - self [[ level.placeable_equipment_destroy_fn[equipment] ]](); - else - equipment_disappear_fx( origin ); + if ( isdefined( level.placeable_equipment_destroy_fn[equipment] ) ) + self [[ level.placeable_equipment_destroy_fn[equipment] ]](); + else + equipment_disappear_fx( origin ); - self equipment_release( equipment ); - } + self equipment_release( equipment ); + } } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_gametype.gsc b/scripts/zm/replaced/_zm_gametype.gsc index eb72c4f6..ebe8aa97 100644 --- a/scripts/zm/replaced/_zm_gametype.gsc +++ b/scripts/zm/replaced/_zm_gametype.gsc @@ -221,173 +221,173 @@ hide_gump_loading_for_hotjoiners() menu_onmenuresponse() { - self endon( "disconnect" ); + self endon( "disconnect" ); - for (;;) - { - self waittill( "menuresponse", menu, response ); + for (;;) + { + self waittill( "menuresponse", menu, response ); - if ( response == "back" ) - { - self closemenu(); - self closeingamemenu(); - - if ( level.console ) - { - if ( menu == game["menu_changeclass"] || menu == game["menu_changeclass_offline"] || menu == game["menu_team"] || menu == game["menu_controls"] ) - { - if ( self.pers["team"] == "allies" ) - self openmenu( game["menu_class"] ); - - if ( self.pers["team"] == "axis" ) - self openmenu( game["menu_class"] ); - } - } - - continue; - } - - if ( menu == game["menu_team"] ) - { + if ( response == "back" ) + { self closemenu(); - self closeingamemenu(); + self closeingamemenu(); + + if ( level.console ) + { + if ( menu == game["menu_changeclass"] || menu == game["menu_changeclass_offline"] || menu == game["menu_team"] || menu == game["menu_controls"] ) + { + if ( self.pers["team"] == "allies" ) + self openmenu( game["menu_class"] ); + + if ( self.pers["team"] == "axis" ) + self openmenu( game["menu_class"] ); + } + } + + continue; + } + + if ( menu == game["menu_team"] ) + { + self closemenu(); + self closeingamemenu(); self thread do_team_change(); continue; - } + } - if ( response == "changeclass_marines" ) - { - self closemenu(); - self closeingamemenu(); - self openmenu( game["menu_changeclass_allies"] ); - continue; - } + if ( response == "changeclass_marines" ) + { + self closemenu(); + self closeingamemenu(); + self openmenu( game["menu_changeclass_allies"] ); + continue; + } - if ( response == "changeclass_opfor" ) - { - self closemenu(); - self closeingamemenu(); - self openmenu( game["menu_changeclass_axis"] ); - continue; - } + if ( response == "changeclass_opfor" ) + { + self closemenu(); + self closeingamemenu(); + self openmenu( game["menu_changeclass_axis"] ); + continue; + } - if ( response == "changeclass_wager" ) - { - self closemenu(); - self closeingamemenu(); - self openmenu( game["menu_changeclass_wager"] ); - continue; - } + if ( response == "changeclass_wager" ) + { + self closemenu(); + self closeingamemenu(); + self openmenu( game["menu_changeclass_wager"] ); + continue; + } - if ( response == "changeclass_custom" ) - { - self closemenu(); - self closeingamemenu(); - self openmenu( game["menu_changeclass_custom"] ); - continue; - } + if ( response == "changeclass_custom" ) + { + self closemenu(); + self closeingamemenu(); + self openmenu( game["menu_changeclass_custom"] ); + continue; + } - if ( response == "changeclass_barebones" ) - { - self closemenu(); - self closeingamemenu(); - self openmenu( game["menu_changeclass_barebones"] ); - continue; - } + if ( response == "changeclass_barebones" ) + { + self closemenu(); + self closeingamemenu(); + self openmenu( game["menu_changeclass_barebones"] ); + continue; + } - if ( response == "changeclass_marines_splitscreen" ) - self openmenu( "changeclass_marines_splitscreen" ); + if ( response == "changeclass_marines_splitscreen" ) + self openmenu( "changeclass_marines_splitscreen" ); - if ( response == "changeclass_opfor_splitscreen" ) - self openmenu( "changeclass_opfor_splitscreen" ); + if ( response == "changeclass_opfor_splitscreen" ) + self openmenu( "changeclass_opfor_splitscreen" ); - if ( response == "endgame" ) - { - if ( self issplitscreen() ) - { - level.skipvote = 1; + if ( response == "endgame" ) + { + if ( self issplitscreen() ) + { + level.skipvote = 1; - if ( !( isdefined( level.gameended ) && level.gameended ) ) - { - 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_player_stat( "deaths" ); - self maps\mp\zombies\_zm_pers_upgrades_functions::pers_upgrade_jugg_player_death_stat(); - level.host_ended_game = 1; - maps\mp\zombies\_zm_game_module::freeze_players( 1 ); - level notify( "end_game" ); - } - } + if ( !( isdefined( level.gameended ) && level.gameended ) ) + { + 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_player_stat( "deaths" ); + self maps\mp\zombies\_zm_pers_upgrades_functions::pers_upgrade_jugg_player_death_stat(); + level.host_ended_game = 1; + maps\mp\zombies\_zm_game_module::freeze_players( 1 ); + level notify( "end_game" ); + } + } - continue; - } + continue; + } - if ( response == "restart_level_zm" ) - { - 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_player_stat( "deaths" ); - self maps\mp\zombies\_zm_pers_upgrades_functions::pers_upgrade_jugg_player_death_stat(); - missionfailed(); - } + if ( response == "restart_level_zm" ) + { + 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_player_stat( "deaths" ); + self maps\mp\zombies\_zm_pers_upgrades_functions::pers_upgrade_jugg_player_death_stat(); + missionfailed(); + } - if ( response == "killserverpc" ) - { - level thread maps\mp\gametypes_zm\_globallogic::killserverpc(); - continue; - } + if ( response == "killserverpc" ) + { + level thread maps\mp\gametypes_zm\_globallogic::killserverpc(); + continue; + } - if ( response == "endround" ) - { - if ( !( isdefined( level.gameended ) && level.gameended ) ) - { - self maps\mp\gametypes_zm\_globallogic::gamehistoryplayerquit(); - self maps\mp\zombies\_zm_laststand::add_weighted_down(); - self closemenu(); - self closeingamemenu(); - level.host_ended_game = 1; - maps\mp\zombies\_zm_game_module::freeze_players( 1 ); - level notify( "end_game" ); - } + if ( response == "endround" ) + { + if ( !( isdefined( level.gameended ) && level.gameended ) ) + { + self maps\mp\gametypes_zm\_globallogic::gamehistoryplayerquit(); + self maps\mp\zombies\_zm_laststand::add_weighted_down(); + self closemenu(); + self closeingamemenu(); + level.host_ended_game = 1; + maps\mp\zombies\_zm_game_module::freeze_players( 1 ); + level notify( "end_game" ); + } - continue; - } + continue; + } - if ( menu == game["menu_team"] && level.allow_teamchange == "1" ) - { - switch ( response ) - { - case "allies": - self [[ level.allies ]](); - break; - case "axis": - self [[ level.teammenu ]]( response ); - break; - case "autoassign": - self [[ level.autoassign ]]( 1 ); - break; - case "spectator": - self [[ level.spectator ]](); - break; - } + if ( menu == game["menu_team"] && level.allow_teamchange == "1" ) + { + switch ( response ) + { + case "allies": + self [[ level.allies ]](); + break; + case "axis": + self [[ level.teammenu ]]( response ); + break; + case "autoassign": + self [[ level.autoassign ]]( 1 ); + break; + case "spectator": + self [[ level.spectator ]](); + break; + } - 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"] ) - { - self closemenu(); - self closeingamemenu(); + 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 closeingamemenu(); - if ( level.rankedmatch && issubstr( response, "custom" ) ) - { + if ( level.rankedmatch && issubstr( response, "custom" ) ) + { - } + } - self.selectedclass = 1; - self [[ level.class ]]( response ); - } - } + self.selectedclass = 1; + self [[ level.class ]]( response ); + } + } } do_team_change() diff --git a/scripts/zm/replaced/_zm_laststand.gsc b/scripts/zm/replaced/_zm_laststand.gsc index a6e85ffb..5dca5675 100644 --- a/scripts/zm/replaced/_zm_laststand.gsc +++ b/scripts/zm/replaced/_zm_laststand.gsc @@ -47,14 +47,14 @@ revive_do_revive( playerbeingrevived, revivergun ) 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 setpoint("CENTER", undefined, level.primaryprogressbarx, beingrevivedprogressbar_y); - playerbeingrevived_player.beingrevivedprogressbar.bar.color = (0.5, 0.5, 1); - playerbeingrevived_player.beingrevivedprogressbar.hidewheninmenu = 1; - playerbeingrevived_player.beingrevivedprogressbar.bar.hidewheninmenu = 1; - playerbeingrevived_player.beingrevivedprogressbar.barframe.hidewheninmenu = 1; + playerbeingrevived_player.beingrevivedprogressbar setpoint("CENTER", undefined, level.primaryprogressbarx, beingrevivedprogressbar_y); + playerbeingrevived_player.beingrevivedprogressbar.bar.color = (0.5, 0.5, 1); + playerbeingrevived_player.beingrevivedprogressbar.hidewheninmenu = 1; + playerbeingrevived_player.beingrevivedprogressbar.bar.hidewheninmenu = 1; + playerbeingrevived_player.beingrevivedprogressbar.barframe.hidewheninmenu = 1; playerbeingrevived_player.beingrevivedprogressbar.sort = 1; playerbeingrevived_player.beingrevivedprogressbar.bar.sort = 2; playerbeingrevived_player.beingrevivedprogressbar.barframe.sort = 3; @@ -65,10 +65,10 @@ revive_do_revive( playerbeingrevived, revivergun ) if ( !isDefined( self.reviveprogressbar ) ) { self.reviveprogressbar = self createprimaryprogressbar(); - self.reviveprogressbar.bar.color = (0.5, 0.5, 1); + self.reviveprogressbar.bar.color = (0.5, 0.5, 1); self.reviveprogressbar.foreground = 1; - self.reviveprogressbar.bar.foreground = 1; - self.reviveprogressbar.barframe.foreground = 1; + self.reviveprogressbar.bar.foreground = 1; + self.reviveprogressbar.barframe.foreground = 1; self.reviveprogressbar.sort = 1; self.reviveprogressbar.bar.sort = 2; self.reviveprogressbar.barframe.sort = 3; @@ -91,7 +91,7 @@ revive_do_revive( playerbeingrevived, revivergun ) self.is_reviving_any++; self thread laststand_clean_up_reviving_any( playerbeingrevived_player ); 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 ) ) { @@ -146,7 +146,7 @@ revive_do_revive( playerbeingrevived, revivergun ) } } - if ( isDefined( playerbeingrevived_player.beingrevivedprogressbar ) ) + if ( isDefined( playerbeingrevived_player.beingrevivedprogressbar ) ) { if ( !flag( "wait_and_revive" ) ) { @@ -291,7 +291,7 @@ revive_give_back_weapons( gun ) { revive_tool = level.revive_tool; if ( is_true( self.afterlife ) ) - { + { revive_tool = level.afterlife_revive_tool; } @@ -304,20 +304,20 @@ revive_give_back_weapons( gun ) return; } - if ( cur_wep != revive_tool && is_true( self.revive_weapon_changed ) ) - { - return; - } + if ( cur_wep != revive_tool && is_true( self.revive_weapon_changed ) ) + { + return; + } if ( self hasWeapon( "item_meat_zm" ) ) - { - return; - } + { + return; + } if ( self hasWeapon( "screecher_arms_zm" ) ) - { - return; - } + { + return; + } if ( gun != "none" && gun != "equip_gasmask_zm" && gun != "lower_equip_gasmask_zm" && self hasweapon( gun ) ) { @@ -401,43 +401,43 @@ revive_hud_think() auto_revive( reviver, dont_enable_weapons ) { - if ( isdefined( self.revivetrigger ) ) - { - self.revivetrigger.auto_revive = 1; + if ( isdefined( self.revivetrigger ) ) + { + self.revivetrigger.auto_revive = 1; - if ( self.revivetrigger.beingrevived == 1 ) - { - while ( true ) - { - if ( self.revivetrigger.beingrevived == 0 ) - break; + if ( self.revivetrigger.beingrevived == 1 ) + { + while ( true ) + { + if ( self.revivetrigger.beingrevived == 0 ) + break; - wait_network_frame(); - } - } + wait_network_frame(); + } + } - self.revivetrigger.auto_trigger = 0; - } + self.revivetrigger.auto_trigger = 0; + } - self reviveplayer(); - self maps\mp\zombies\_zm_perks::perk_set_max_health_if_jugg( "health_reboot", 1, 0 ); - setclientsysstate( "lsm", "0", self ); - self notify( "stop_revive_trigger" ); + self reviveplayer(); + self maps\mp\zombies\_zm_perks::perk_set_max_health_if_jugg( "health_reboot", 1, 0 ); + setclientsysstate( "lsm", "0", self ); + self notify( "stop_revive_trigger" ); - if ( isdefined( self.revivetrigger ) ) - { - self.revivetrigger delete(); - self.revivetrigger = undefined; - } + if ( isdefined( self.revivetrigger ) ) + { + self.revivetrigger delete(); + self.revivetrigger = undefined; + } - self cleanup_suicide_hud(); + self cleanup_suicide_hud(); - if ( !isdefined( dont_enable_weapons ) || dont_enable_weapons == 0 ) - self laststand_enable_player_weapons(); + if ( !isdefined( dont_enable_weapons ) || dont_enable_weapons == 0 ) + self laststand_enable_player_weapons(); - self allowjump( 1 ); - self.ignoreme = 0; - self.laststand = undefined; + self allowjump( 1 ); + self.ignoreme = 0; + self.laststand = undefined; valid_reviver = 1; if ( is_gametype_active( "zgrief" ) && reviver == self ) @@ -445,80 +445,80 @@ auto_revive( reviver, dont_enable_weapons ) valid_reviver = 0; } - if ( valid_reviver ) - { - reviver.revives++; - reviver maps\mp\zombies\_zm_stats::increment_client_stat( "revives" ); - reviver maps\mp\zombies\_zm_stats::increment_player_stat( "revives" ); - self recordplayerrevivezombies( reviver ); - maps\mp\_demo::bookmark( "zm_player_revived", gettime(), self, reviver ); - } + if ( valid_reviver ) + { + reviver.revives++; + reviver maps\mp\zombies\_zm_stats::increment_client_stat( "revives" ); + reviver maps\mp\zombies\_zm_stats::increment_player_stat( "revives" ); + self recordplayerrevivezombies( 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 ) { - self notify( "entering_last_stand" ); + self notify( "entering_last_stand" ); - if ( isdefined( level._game_module_player_laststand_callback ) ) - self [[ level._game_module_player_laststand_callback ]]( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ); + if ( isdefined( level._game_module_player_laststand_callback ) ) + self [[ level._game_module_player_laststand_callback ]]( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ); - if ( self player_is_in_laststand() ) - return; + if ( self player_is_in_laststand() ) + return; - if ( isdefined( self.in_zombify_call ) && self.in_zombify_call ) - return; + if ( isdefined( self.in_zombify_call ) && self.in_zombify_call ) + 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 ) ) - [[ level.playerlaststand_func ]]( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ); + if ( isdefined( level.playerlaststand_func ) ) + [[ level.playerlaststand_func ]]( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ); - self.health = 1; - self.laststand = 1; - self.ignoreme = 1; - self thread maps\mp\gametypes_zm\_gameobjects::onplayerlaststand(); - self thread maps\mp\zombies\_zm_buildables::onplayerlaststand(); + self.health = 1; + self.laststand = 1; + self.ignoreme = 1; + self thread maps\mp\gametypes_zm\_gameobjects::onplayerlaststand(); + self thread maps\mp\zombies\_zm_buildables::onplayerlaststand(); - if ( !( isdefined( self.no_revive_trigger ) && self.no_revive_trigger ) ) - self revive_trigger_spawn(); - else - self undolaststand(); + if ( !( isdefined( self.no_revive_trigger ) && self.no_revive_trigger ) ) + self revive_trigger_spawn(); + else + self undolaststand(); - if ( isdefined( self.is_zombie ) && self.is_zombie ) - { - self takeallweapons(); + if ( isdefined( self.is_zombie ) && self.is_zombie ) + { + self takeallweapons(); - if ( isdefined( attacker ) && isplayer( attacker ) && attacker != self ) - attacker notify( "killed_a_zombie_player", einflictor, self, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ); - } - else - { - self laststand_disable_player_weapons(); - self laststand_give_pistol(); - } + if ( isdefined( attacker ) && isplayer( attacker ) && attacker != self ) + attacker notify( "killed_a_zombie_player", einflictor, self, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ); + } + else + { + self laststand_disable_player_weapons(); + self laststand_give_pistol(); + } - if ( isdefined( level.playersuicideallowed ) && level.playersuicideallowed && get_players().size > 1 ) - { - if ( !isdefined( level.canplayersuicide ) || self [[ level.canplayersuicide ]]() ) - self thread suicide_trigger_spawn(); - } + if ( isdefined( level.playersuicideallowed ) && level.playersuicideallowed && get_players().size > 1 ) + { + if ( !isdefined( level.canplayersuicide ) || self [[ level.canplayersuicide ]]() ) + self thread suicide_trigger_spawn(); + } - if ( level.laststandgetupallowed ) - self thread laststand_getup(); - else - { - bleedout_time = getdvarfloat( "player_lastStandBleedoutTime" ); - self thread laststand_bleedout( bleedout_time ); - } + if ( level.laststandgetupallowed ) + self thread laststand_getup(); + else + { + bleedout_time = getdvarfloat( "player_lastStandBleedoutTime" ); + self thread laststand_bleedout( bleedout_time ); + } - if ( "zcleansed" != level.gametype ) - maps\mp\_demo::bookmark( "zm_player_downed", gettime(), self ); + if ( "zcleansed" != level.gametype ) + maps\mp\_demo::bookmark( "zm_player_downed", gettime(), self ); - self notify( "player_downed" ); - self thread refire_player_downed(); - self thread cleanup_laststand_on_disconnect(); + self notify( "player_downed" ); + self thread refire_player_downed(); + self thread cleanup_laststand_on_disconnect(); } revive_hud_create() @@ -528,17 +528,17 @@ revive_hud_create() return; } - self.revive_hud = newclienthudelem( self ); - self.revive_hud.alignx = "center"; - self.revive_hud.aligny = "middle"; - self.revive_hud.horzalign = "center"; - self.revive_hud.vertalign = "bottom"; - self.revive_hud.foreground = 1; - self.revive_hud.font = "default"; - self.revive_hud.fontscale = 1.5; - self.revive_hud.alpha = 0; - self.revive_hud.color = ( 1, 1, 1 ); - self.revive_hud.hidewheninmenu = 1; - self.revive_hud settext( "" ); - self.revive_hud.y = -160; + self.revive_hud = newclienthudelem( self ); + self.revive_hud.alignx = "center"; + self.revive_hud.aligny = "middle"; + self.revive_hud.horzalign = "center"; + self.revive_hud.vertalign = "bottom"; + self.revive_hud.foreground = 1; + self.revive_hud.font = "default"; + self.revive_hud.fontscale = 1.5; + self.revive_hud.alpha = 0; + self.revive_hud.color = ( 1, 1, 1 ); + self.revive_hud.hidewheninmenu = 1; + self.revive_hud settext( "" ); + self.revive_hud.y = -160; } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_magicbox.gsc b/scripts/zm/replaced/_zm_magicbox.gsc index 1c00a19f..8910a315 100644 --- a/scripts/zm/replaced/_zm_magicbox.gsc +++ b/scripts/zm/replaced/_zm_magicbox.gsc @@ -66,357 +66,357 @@ treasure_chest_init( start_chest_name ) init_starting_chest_location( start_chest_name ) { - level.chest_index = 0; - start_chest_found = 0; + level.chest_index = 0; + start_chest_found = 0; - if ( level.chests.size == 1 ) - { - start_chest_found = 1; + if ( level.chests.size == 1 ) + { + start_chest_found = 1; - if ( isdefined( level.chests[level.chest_index].zbarrier ) ) - level.chests[level.chest_index].zbarrier set_magic_box_zbarrier_state( "initial" ); - } - else - { - for ( i = 0; i < level.chests.size; i++ ) - { - if ( isdefined( level.random_pandora_box_start ) && level.random_pandora_box_start == 1 ) - { - if ( start_chest_found || isdefined( level.chests[i].start_exclude ) && level.chests[i].start_exclude == 1 ) - level.chests[i] hide_chest(); - else - { - level.chests = array_swap( level.chests, level.chest_index, i ); - level.chests[level.chest_index].hidden = 0; + if ( isdefined( level.chests[level.chest_index].zbarrier ) ) + level.chests[level.chest_index].zbarrier set_magic_box_zbarrier_state( "initial" ); + } + else + { + for ( i = 0; i < level.chests.size; i++ ) + { + if ( isdefined( level.random_pandora_box_start ) && level.random_pandora_box_start == 1 ) + { + if ( start_chest_found || isdefined( level.chests[i].start_exclude ) && level.chests[i].start_exclude == 1 ) + level.chests[i] hide_chest(); + else + { + level.chests = array_swap( level.chests, level.chest_index, i ); + level.chests[level.chest_index].hidden = 0; - if ( isdefined( level.chests[level.chest_index].zbarrier ) ) - level.chests[level.chest_index].zbarrier set_magic_box_zbarrier_state( "initial" ); + if ( isdefined( level.chests[level.chest_index].zbarrier ) ) + level.chests[level.chest_index].zbarrier set_magic_box_zbarrier_state( "initial" ); - start_chest_found = 1; - } + start_chest_found = 1; + } - continue; - } + continue; + } - if ( start_chest_found || !isdefined( level.chests[i].script_noteworthy ) || !issubstr( level.chests[i].script_noteworthy, start_chest_name ) ) - { - level.chests[i] hide_chest(); - continue; - } + if ( start_chest_found || !isdefined( level.chests[i].script_noteworthy ) || !issubstr( level.chests[i].script_noteworthy, start_chest_name ) ) + { + level.chests[i] hide_chest(); + continue; + } - level.chests = array_swap( level.chests, level.chest_index, i ); - level.chests[level.chest_index].hidden = 0; + level.chests = array_swap( level.chests, level.chest_index, i ); + level.chests[level.chest_index].hidden = 0; - if ( isdefined( level.chests[level.chest_index].zbarrier ) ) - level.chests[level.chest_index].zbarrier set_magic_box_zbarrier_state( "initial" ); + if ( isdefined( level.chests[level.chest_index].zbarrier ) ) + level.chests[level.chest_index].zbarrier set_magic_box_zbarrier_state( "initial" ); - start_chest_found = 1; - } - } + start_chest_found = 1; + } + } - if ( !isdefined( level.pandora_show_func ) ) - level.pandora_show_func = ::default_pandora_show_func; + if ( !isdefined( level.pandora_show_func ) ) + level.pandora_show_func = ::default_pandora_show_func; - level.chests[level.chest_index] thread [[ level.pandora_show_func ]](); + level.chests[level.chest_index] thread [[ level.pandora_show_func ]](); } treasure_chest_think() { - self endon( "kill_chest_think" ); - user = undefined; - user_cost = undefined; - self.box_rerespun = undefined; - self.weapon_out = undefined; - self thread unregister_unitrigger_on_kill_think(); + self endon( "kill_chest_think" ); + user = undefined; + user_cost = undefined; + self.box_rerespun = undefined; + self.weapon_out = undefined; + self thread unregister_unitrigger_on_kill_think(); - while ( true ) - { - if ( !isdefined( self.forced_user ) ) - { - self waittill( "trigger", user ); + while ( true ) + { + if ( !isdefined( self.forced_user ) ) + { + self waittill( "trigger", user ); - if ( user == level ) - continue; - } - else - user = self.forced_user; + if ( user == level ) + continue; + } + else + user = self.forced_user; - if ( user in_revive_trigger() ) - { - wait 0.1; - continue; - } + if ( user in_revive_trigger() ) + { + wait 0.1; + continue; + } - if ( user.is_drinking > 0 ) - { - wait 0.1; - continue; - } + if ( user.is_drinking > 0 ) + { + wait 0.1; + continue; + } - if ( isdefined( self.disabled ) && self.disabled ) - { - wait 0.1; - continue; - } + if ( isdefined( self.disabled ) && self.disabled ) + { + wait 0.1; + continue; + } - if ( user getcurrentweapon() == "none" ) - { - wait 0.1; - continue; - } + if ( user getcurrentweapon() == "none" ) + { + wait 0.1; + continue; + } - reduced_cost = undefined; + reduced_cost = undefined; - if ( is_player_valid( user ) && user maps\mp\zombies\_zm_pers_upgrades_functions::is_pers_double_points_active() ) - reduced_cost = int( self.zombie_cost / 2 ); + if ( is_player_valid( user ) && user maps\mp\zombies\_zm_pers_upgrades_functions::is_pers_double_points_active() ) + reduced_cost = int( self.zombie_cost / 2 ); - if ( isdefined( level.using_locked_magicbox ) && level.using_locked_magicbox && ( isdefined( self.is_locked ) && self.is_locked ) ) - { - if ( user.score >= level.locked_magic_box_cost ) - { - user maps\mp\zombies\_zm_score::minus_to_player_score( level.locked_magic_box_cost ); - self.zbarrier set_magic_box_zbarrier_state( "unlocking" ); - self.unitrigger_stub run_visibility_function_for_all_triggers(); - } - else - user maps\mp\zombies\_zm_audio::create_and_play_dialog( "general", "no_money_box" ); + if ( isdefined( level.using_locked_magicbox ) && level.using_locked_magicbox && ( isdefined( self.is_locked ) && self.is_locked ) ) + { + if ( user.score >= level.locked_magic_box_cost ) + { + user maps\mp\zombies\_zm_score::minus_to_player_score( level.locked_magic_box_cost ); + self.zbarrier set_magic_box_zbarrier_state( "unlocking" ); + self.unitrigger_stub run_visibility_function_for_all_triggers(); + } + else + user maps\mp\zombies\_zm_audio::create_and_play_dialog( "general", "no_money_box" ); - wait 0.1; - continue; - } - else if ( isdefined( self.auto_open ) && is_player_valid( user ) ) - { - if ( !isdefined( self.no_charge ) ) - { - user maps\mp\zombies\_zm_score::minus_to_player_score( self.zombie_cost ); - user_cost = self.zombie_cost; - } - else - user_cost = 0; + wait 0.1; + continue; + } + else if ( isdefined( self.auto_open ) && is_player_valid( user ) ) + { + if ( !isdefined( self.no_charge ) ) + { + user maps\mp\zombies\_zm_score::minus_to_player_score( self.zombie_cost ); + user_cost = self.zombie_cost; + } + else + user_cost = 0; - self.chest_user = user; - break; - } - else if ( is_player_valid( user ) && user.score >= self.zombie_cost ) - { - user maps\mp\zombies\_zm_score::minus_to_player_score( self.zombie_cost ); - user_cost = self.zombie_cost; - self.chest_user = user; - break; - } - else if ( isdefined( reduced_cost ) && user.score >= reduced_cost ) - { - user maps\mp\zombies\_zm_score::minus_to_player_score( reduced_cost ); - user_cost = reduced_cost; - self.chest_user = user; - break; - } - else if ( user.score < self.zombie_cost ) - { - play_sound_at_pos( "no_purchase", self.origin ); - user maps\mp\zombies\_zm_audio::create_and_play_dialog( "general", "no_money_box" ); - continue; - } + self.chest_user = user; + break; + } + else if ( is_player_valid( user ) && user.score >= self.zombie_cost ) + { + user maps\mp\zombies\_zm_score::minus_to_player_score( self.zombie_cost ); + user_cost = self.zombie_cost; + self.chest_user = user; + break; + } + else if ( isdefined( reduced_cost ) && user.score >= reduced_cost ) + { + user maps\mp\zombies\_zm_score::minus_to_player_score( reduced_cost ); + user_cost = reduced_cost; + self.chest_user = user; + break; + } + else if ( user.score < self.zombie_cost ) + { + play_sound_at_pos( "no_purchase", self.origin ); + user maps\mp\zombies\_zm_audio::create_and_play_dialog( "general", "no_money_box" ); + continue; + } - wait 0.05; - } + wait 0.05; + } - flag_set( "chest_has_been_used" ); - maps\mp\_demo::bookmark( "zm_player_use_magicbox", gettime(), user ); - user maps\mp\zombies\_zm_stats::increment_client_stat( "use_magicbox" ); - user maps\mp\zombies\_zm_stats::increment_player_stat( "use_magicbox" ); + flag_set( "chest_has_been_used" ); + maps\mp\_demo::bookmark( "zm_player_use_magicbox", gettime(), user ); + user maps\mp\zombies\_zm_stats::increment_client_stat( "use_magicbox" ); + user maps\mp\zombies\_zm_stats::increment_player_stat( "use_magicbox" ); - if ( isdefined( level._magic_box_used_vo ) ) - user thread [[ level._magic_box_used_vo ]](); + if ( isdefined( level._magic_box_used_vo ) ) + user thread [[ level._magic_box_used_vo ]](); - self thread watch_for_emp_close(); + self thread watch_for_emp_close(); - if ( isdefined( level.using_locked_magicbox ) && level.using_locked_magicbox ) - self thread maps\mp\zombies\_zm_magicbox_lock::watch_for_lock(); + if ( isdefined( level.using_locked_magicbox ) && level.using_locked_magicbox ) + self thread maps\mp\zombies\_zm_magicbox_lock::watch_for_lock(); - self._box_open = 1; - self._box_opened_by_fire_sale = 0; + self._box_open = 1; + self._box_opened_by_fire_sale = 0; - if ( isdefined( level.zombie_vars["zombie_powerup_fire_sale_on"] ) && level.zombie_vars["zombie_powerup_fire_sale_on"] && !isdefined( self.auto_open ) && self [[ level._zombiemode_check_firesale_loc_valid_func ]]() ) - self._box_opened_by_fire_sale = 1; + if ( isdefined( level.zombie_vars["zombie_powerup_fire_sale_on"] ) && level.zombie_vars["zombie_powerup_fire_sale_on"] && !isdefined( self.auto_open ) && self [[ level._zombiemode_check_firesale_loc_valid_func ]]() ) + self._box_opened_by_fire_sale = 1; - if ( isdefined( self.chest_lid ) ) - self.chest_lid thread treasure_chest_lid_open(); + if ( isdefined( self.chest_lid ) ) + self.chest_lid thread treasure_chest_lid_open(); - if ( isdefined( self.zbarrier ) ) - { - play_sound_at_pos( "open_chest", self.origin ); - play_sound_at_pos( "music_chest", self.origin ); - self.zbarrier set_magic_box_zbarrier_state( "open" ); - } + if ( isdefined( self.zbarrier ) ) + { + play_sound_at_pos( "open_chest", self.origin ); + play_sound_at_pos( "music_chest", self.origin ); + self.zbarrier set_magic_box_zbarrier_state( "open" ); + } - self.timedout = 0; - self.weapon_out = 1; - self.zbarrier thread treasure_chest_weapon_spawn( self, user ); - self.zbarrier thread treasure_chest_glowfx(); - thread maps\mp\zombies\_zm_unitrigger::unregister_unitrigger( self.unitrigger_stub ); - self.zbarrier waittill_any( "randomization_done", "box_hacked_respin" ); + self.timedout = 0; + self.weapon_out = 1; + self.zbarrier thread treasure_chest_weapon_spawn( self, user ); + self.zbarrier thread treasure_chest_glowfx(); + thread maps\mp\zombies\_zm_unitrigger::unregister_unitrigger( self.unitrigger_stub ); + self.zbarrier waittill_any( "randomization_done", "box_hacked_respin" ); - if ( flag( "moving_chest_now" ) && !self._box_opened_by_fire_sale && isdefined( user_cost ) ) - user maps\mp\zombies\_zm_score::add_to_player_score( user_cost, 0 ); + if ( flag( "moving_chest_now" ) && !self._box_opened_by_fire_sale && isdefined( user_cost ) ) + user maps\mp\zombies\_zm_score::add_to_player_score( user_cost, 0 ); - if ( flag( "moving_chest_now" ) && !level.zombie_vars["zombie_powerup_fire_sale_on"] && !self._box_opened_by_fire_sale ) - self thread treasure_chest_move( self.chest_user ); - else - { - self.grab_weapon_hint = 1; - self.grab_weapon_name = self.zbarrier.weapon_string; - self.chest_user = user; - thread maps\mp\zombies\_zm_unitrigger::register_static_unitrigger( self.unitrigger_stub, ::magicbox_unitrigger_think ); + if ( flag( "moving_chest_now" ) && !level.zombie_vars["zombie_powerup_fire_sale_on"] && !self._box_opened_by_fire_sale ) + self thread treasure_chest_move( self.chest_user ); + else + { + self.grab_weapon_hint = 1; + self.grab_weapon_name = self.zbarrier.weapon_string; + self.chest_user = user; + thread maps\mp\zombies\_zm_unitrigger::register_static_unitrigger( self.unitrigger_stub, ::magicbox_unitrigger_think ); - if ( isdefined( self.zbarrier ) && !is_true( self.zbarrier.closed_by_emp ) ) - self thread treasure_chest_timeout(); + if ( isdefined( self.zbarrier ) && !is_true( self.zbarrier.closed_by_emp ) ) + self thread treasure_chest_timeout(); - while ( !( isdefined( self.closed_by_emp ) && self.closed_by_emp ) ) - { - self waittill( "trigger", grabber ); + while ( !( isdefined( self.closed_by_emp ) && self.closed_by_emp ) ) + { + self waittill( "trigger", grabber ); - self.weapon_out = undefined; + self.weapon_out = undefined; - if ( isdefined( level.magic_box_grab_by_anyone ) && level.magic_box_grab_by_anyone ) - { - if ( isplayer( grabber ) ) - user = grabber; - } + if ( isdefined( level.magic_box_grab_by_anyone ) && level.magic_box_grab_by_anyone ) + { + if ( isplayer( grabber ) ) + user = grabber; + } - if ( isdefined( level.pers_upgrade_box_weapon ) && level.pers_upgrade_box_weapon ) - self maps\mp\zombies\_zm_pers_upgrades_functions::pers_upgrade_box_weapon_used( user, grabber ); + if ( isdefined( level.pers_upgrade_box_weapon ) && level.pers_upgrade_box_weapon ) + self maps\mp\zombies\_zm_pers_upgrades_functions::pers_upgrade_box_weapon_used( user, grabber ); - if ( isdefined( grabber.is_drinking ) && grabber.is_drinking > 0 ) - { - wait 0.1; - continue; - } + if ( isdefined( grabber.is_drinking ) && grabber.is_drinking > 0 ) + { + wait 0.1; + continue; + } - if ( grabber == user && user getcurrentweapon() == "none" ) - { - wait 0.1; - continue; - } + if ( grabber == user && user getcurrentweapon() == "none" ) + { + wait 0.1; + continue; + } - if ( grabber != level && ( isdefined( self.box_rerespun ) && self.box_rerespun ) ) - user = grabber; + if ( grabber != level && ( isdefined( self.box_rerespun ) && self.box_rerespun ) ) + user = grabber; - if ( grabber == user || grabber == level ) - { - self.box_rerespun = undefined; - current_weapon = "none"; + if ( grabber == user || grabber == level ) + { + self.box_rerespun = undefined; + current_weapon = "none"; - if ( is_player_valid( user ) ) - current_weapon = user getcurrentweapon(); + if ( is_player_valid( user ) ) + current_weapon = user getcurrentweapon(); - if ( grabber == user && is_player_valid( user ) && !( user.is_drinking > 0 ) && !is_melee_weapon( current_weapon ) && !is_placeable_mine( current_weapon ) && !is_equipment( current_weapon ) && level.revive_tool != current_weapon ) - { - bbprint( "zombie_uses", "playername %s playerscore %d round %d cost %d name %s x %f y %f z %f type %s", user.name, user.score, level.round_number, self.zombie_cost, self.zbarrier.weapon_string, self.origin, "magic_accept" ); - self notify( "user_grabbed_weapon" ); - user notify( "user_grabbed_weapon" ); - user thread treasure_chest_give_weapon( self.zbarrier.weapon_string ); - maps\mp\_demo::bookmark( "zm_player_grabbed_magicbox", gettime(), user ); - user maps\mp\zombies\_zm_stats::increment_client_stat( "grabbed_from_magicbox" ); - user maps\mp\zombies\_zm_stats::increment_player_stat( "grabbed_from_magicbox" ); - break; - } - else if ( grabber == level ) - { - unacquire_weapon_toggle( self.zbarrier.weapon_string ); - self.timedout = 1; + if ( grabber == user && is_player_valid( user ) && !( user.is_drinking > 0 ) && !is_melee_weapon( current_weapon ) && !is_placeable_mine( current_weapon ) && !is_equipment( current_weapon ) && level.revive_tool != current_weapon ) + { + bbprint( "zombie_uses", "playername %s playerscore %d round %d cost %d name %s x %f y %f z %f type %s", user.name, user.score, level.round_number, self.zombie_cost, self.zbarrier.weapon_string, self.origin, "magic_accept" ); + self notify( "user_grabbed_weapon" ); + user notify( "user_grabbed_weapon" ); + user thread treasure_chest_give_weapon( self.zbarrier.weapon_string ); + maps\mp\_demo::bookmark( "zm_player_grabbed_magicbox", gettime(), user ); + user maps\mp\zombies\_zm_stats::increment_client_stat( "grabbed_from_magicbox" ); + user maps\mp\zombies\_zm_stats::increment_player_stat( "grabbed_from_magicbox" ); + break; + } + else if ( grabber == level ) + { + unacquire_weapon_toggle( self.zbarrier.weapon_string ); + self.timedout = 1; - if ( is_player_valid( user ) ) - bbprint( "zombie_uses", "playername %s playerscore %d round %d cost %d name %s x %f y %f z %f type %S", user.name, user.score, level.round_number, self.zombie_cost, self.zbarrier.weapon_string, self.origin, "magic_reject" ); + if ( is_player_valid( user ) ) + bbprint( "zombie_uses", "playername %s playerscore %d round %d cost %d name %s x %f y %f z %f type %S", user.name, user.score, level.round_number, self.zombie_cost, self.zbarrier.weapon_string, self.origin, "magic_reject" ); - break; - } - } + break; + } + } - wait 0.05; - } + wait 0.05; + } - self.grab_weapon_hint = 0; - self.zbarrier notify( "weapon_grabbed" ); + self.grab_weapon_hint = 0; + self.zbarrier notify( "weapon_grabbed" ); - if ( !( isdefined( self._box_opened_by_fire_sale ) && self._box_opened_by_fire_sale ) ) - level.chest_accessed += 1; + if ( !( isdefined( self._box_opened_by_fire_sale ) && self._box_opened_by_fire_sale ) ) + level.chest_accessed += 1; - if ( level.chest_moves > 0 && isdefined( level.pulls_since_last_ray_gun ) ) - level.pulls_since_last_ray_gun += 1; + if ( level.chest_moves > 0 && isdefined( level.pulls_since_last_ray_gun ) ) + level.pulls_since_last_ray_gun += 1; - if ( isdefined( level.pulls_since_last_tesla_gun ) ) - level.pulls_since_last_tesla_gun += 1; + if ( isdefined( level.pulls_since_last_tesla_gun ) ) + level.pulls_since_last_tesla_gun += 1; - thread maps\mp\zombies\_zm_unitrigger::unregister_unitrigger( self.unitrigger_stub ); + thread maps\mp\zombies\_zm_unitrigger::unregister_unitrigger( self.unitrigger_stub ); - if ( isdefined( self.chest_lid ) ) - self.chest_lid thread treasure_chest_lid_close( self.timedout ); + if ( isdefined( self.chest_lid ) ) + self.chest_lid thread treasure_chest_lid_close( self.timedout ); - if ( isdefined( self.zbarrier ) ) - { - self.zbarrier set_magic_box_zbarrier_state( "close" ); - play_sound_at_pos( "close_chest", self.origin ); + if ( isdefined( self.zbarrier ) ) + { + self.zbarrier set_magic_box_zbarrier_state( "close" ); + play_sound_at_pos( "close_chest", self.origin ); - self.zbarrier waittill( "closed" ); + self.zbarrier waittill( "closed" ); - wait 1; - } - else - wait 3.0; + wait 1; + } + else + wait 3.0; - if ( isdefined( level.zombie_vars["zombie_powerup_fire_sale_on"] ) && level.zombie_vars["zombie_powerup_fire_sale_on"] && self [[ level._zombiemode_check_firesale_loc_valid_func ]]() || self == level.chests[level.chest_index] ) - thread maps\mp\zombies\_zm_unitrigger::register_static_unitrigger( self.unitrigger_stub, ::magicbox_unitrigger_think ); - } + if ( isdefined( level.zombie_vars["zombie_powerup_fire_sale_on"] ) && level.zombie_vars["zombie_powerup_fire_sale_on"] && self [[ level._zombiemode_check_firesale_loc_valid_func ]]() || self == level.chests[level.chest_index] ) + thread maps\mp\zombies\_zm_unitrigger::register_static_unitrigger( self.unitrigger_stub, ::magicbox_unitrigger_think ); + } - self._box_open = 0; - self._box_opened_by_fire_sale = 0; - self.chest_user = undefined; - self notify( "chest_accessed" ); - self thread treasure_chest_think(); + self._box_open = 0; + self._box_opened_by_fire_sale = 0; + self.chest_user = undefined; + self notify( "chest_accessed" ); + self thread treasure_chest_think(); } treasure_chest_weapon_spawn( chest, player, respin ) { - if ( isdefined( level.using_locked_magicbox ) && level.using_locked_magicbox ) - { - self.owner endon( "box_locked" ); - self thread maps\mp\zombies\_zm_magicbox_lock::clean_up_locked_box(); - } + if ( isdefined( level.using_locked_magicbox ) && level.using_locked_magicbox ) + { + self.owner endon( "box_locked" ); + self thread maps\mp\zombies\_zm_magicbox_lock::clean_up_locked_box(); + } - self endon( "box_hacked_respin" ); - self thread clean_up_hacked_box(); - assert( isdefined( player ) ); - self.weapon_string = undefined; - rand = undefined; - number_cycles = 37; + self endon( "box_hacked_respin" ); + self thread clean_up_hacked_box(); + assert( isdefined( player ) ); + self.weapon_string = undefined; + rand = undefined; + number_cycles = 37; - if ( isdefined( level.custom_magicbox_float_height ) ) + if ( isdefined( level.custom_magicbox_float_height ) ) v_float = anglestoup( self.angles ) * level.custom_magicbox_float_height; else v_float = anglestoup( self.angles ) * 40; - if ( isdefined( level.custom_magic_box_weapon_wait ) ) - [[ level.custom_magic_box_weapon_wait ]](); + if ( isdefined( level.custom_magic_box_weapon_wait ) ) + [[ level.custom_magic_box_weapon_wait ]](); - start_origin = self.origin; - end_origin = self.origin + v_float; - angles = self.angles + (0, 180, 0); + start_origin = self.origin; + end_origin = self.origin + v_float; + angles = self.angles + (0, 180, 0); - if (level.script == "zm_tomb") - { - v_move = anglestoright( self.angles ) * -20; - start_origin = self.origin + v_float + v_move; - angles = self.angles; - } + if (level.script == "zm_tomb") + { + v_move = anglestoright( self.angles ) * -20; + start_origin = self.origin + v_float + v_move; + angles = self.angles; + } - // angle is opposite of what it should be on upside down box - if (angles[2] < 0) - { - angles = (angles[0], angles[1], -360 - angles[2] ); - } + // angle is opposite of what it should be on upside down box + if (angles[2] < 0) + { + angles = (angles[0], angles[1], -360 - angles[2] ); + } - dw_offset = (anglesToForward(angles) * -3) + (anglesToRight(angles) * -3) + (anglesToUp(angles) * -3); + dw_offset = (anglesToForward(angles) * -3) + (anglesToRight(angles) * -3) + (anglesToUp(angles) * -3); self.weapon_model = spawn("script_model", start_origin); self.weapon_model.angles = angles; @@ -424,13 +424,13 @@ treasure_chest_weapon_spawn( chest, player, respin ) self.weapon_model_dw.angles = self.weapon_model.angles; self.weapon_model_dw hide(); - self.weapon_model moveto( end_origin, 3, 2, 0.9 ); + self.weapon_model moveto( end_origin, 3, 2, 0.9 ); self.weapon_model_dw moveto( end_origin + dw_offset, 3, 2, 0.9 ); - for ( i = 0; i < number_cycles; i++ ) - { - rand = treasure_chest_chooseweightedrandomweapon( player, rand, 0 ); - modelname = getweaponmodel( rand ); + for ( i = 0; i < number_cycles; i++ ) + { + rand = treasure_chest_chooseweightedrandomweapon( player, rand, 0 ); + modelname = getweaponmodel( rand ); if ( isdefined( self.weapon_model ) ) { @@ -447,258 +447,258 @@ treasure_chest_weapon_spawn( chest, player, respin ) } } - if ( i < 20 ) - { - wait 0.05; - } - else if ( i < 30 ) - { - wait 0.1; - } - else if ( i < 35 ) - { - wait 0.2; - } - else - { - wait 0.3; - } - } + if ( i < 20 ) + { + wait 0.05; + } + else if ( i < 30 ) + { + wait 0.1; + } + else if ( i < 35 ) + { + wait 0.2; + } + else + { + wait 0.3; + } + } - wait 0.1; + wait 0.1; - if ( getdvar( "magic_chest_movable" ) == "1" && !( isdefined( chest._box_opened_by_fire_sale ) && chest._box_opened_by_fire_sale ) && !( isdefined( level.zombie_vars["zombie_powerup_fire_sale_on"] ) && level.zombie_vars["zombie_powerup_fire_sale_on"] && self [[ level._zombiemode_check_firesale_loc_valid_func ]]() ) ) - { - random = randomint( 100 ); + if ( getdvar( "magic_chest_movable" ) == "1" && !( isdefined( chest._box_opened_by_fire_sale ) && chest._box_opened_by_fire_sale ) && !( isdefined( level.zombie_vars["zombie_powerup_fire_sale_on"] ) && level.zombie_vars["zombie_powerup_fire_sale_on"] && self [[ level._zombiemode_check_firesale_loc_valid_func ]]() ) ) + { + random = randomint( 100 ); - if ( !isdefined( level.chest_min_move_usage ) ) - level.chest_min_move_usage = 4; + if ( !isdefined( level.chest_min_move_usage ) ) + level.chest_min_move_usage = 4; - if ( level.chest_accessed < level.chest_min_move_usage ) - chance_of_joker = -1; - else - { - chance_of_joker = level.chest_accessed + 20; + if ( level.chest_accessed < level.chest_min_move_usage ) + chance_of_joker = -1; + else + { + chance_of_joker = level.chest_accessed + 20; - if ( level.chest_moves == 0 && level.chest_accessed >= 8 ) - chance_of_joker = 100; + if ( level.chest_moves == 0 && level.chest_accessed >= 8 ) + chance_of_joker = 100; - if ( level.chest_accessed >= 4 && level.chest_accessed < 8 ) - { - if ( random < 15 ) - chance_of_joker = 100; - else - chance_of_joker = -1; - } + if ( level.chest_accessed >= 4 && level.chest_accessed < 8 ) + { + if ( random < 15 ) + chance_of_joker = 100; + else + chance_of_joker = -1; + } - if ( level.chest_moves > 0 ) - { - if ( level.chest_accessed >= 8 && level.chest_accessed < 13 ) - { - if ( random < 30 ) - chance_of_joker = 100; - else - chance_of_joker = -1; - } + if ( level.chest_moves > 0 ) + { + if ( level.chest_accessed >= 8 && level.chest_accessed < 13 ) + { + if ( random < 30 ) + chance_of_joker = 100; + else + chance_of_joker = -1; + } - if ( level.chest_accessed >= 13 ) - { - if ( random < 50 ) - chance_of_joker = 100; - else - chance_of_joker = -1; - } - } - } + if ( level.chest_accessed >= 13 ) + { + if ( random < 50 ) + chance_of_joker = 100; + else + chance_of_joker = -1; + } + } + } - if ( isdefined( chest.no_fly_away ) ) - chance_of_joker = -1; + if ( isdefined( chest.no_fly_away ) ) + chance_of_joker = -1; - if ( isdefined( level._zombiemode_chest_joker_chance_override_func ) ) - chance_of_joker = [[ level._zombiemode_chest_joker_chance_override_func ]]( chance_of_joker ); + if ( isdefined( level._zombiemode_chest_joker_chance_override_func ) ) + chance_of_joker = [[ level._zombiemode_chest_joker_chance_override_func ]]( chance_of_joker ); - if ( chance_of_joker > random ) - { - self.weapon_string = undefined; + if ( chance_of_joker > random ) + { + self.weapon_string = undefined; - joker_angles = angles - vectorscale( ( 0, 1, 0 ), 90.0 ); - if ( angles[2] < 0 ) - { - joker_angles = angles + vectorscale( ( 0, 1, 0 ), 90.0 ); - } + joker_angles = angles - vectorscale( ( 0, 1, 0 ), 90.0 ); + if ( angles[2] < 0 ) + { + joker_angles = angles + vectorscale( ( 0, 1, 0 ), 90.0 ); + } - // delete and respawn the joker model so that it faces the correct angle right away - origin = self.weapon_model.origin; - self.weapon_model delete(); - self.weapon_model = spawn("script_model", origin); + // delete and respawn the joker model so that it faces the correct angle right away + origin = self.weapon_model.origin; + self.weapon_model delete(); + self.weapon_model = spawn("script_model", origin); self.weapon_model.angles = joker_angles; self.weapon_model setmodel( level.chest_joker_model ); - self.weapon_model_dw hide(); + self.weapon_model_dw hide(); - self.chest_moving = 1; - flag_set( "moving_chest_now" ); - level.chest_accessed = 0; - level.chest_moves++; - } - } + self.chest_moving = 1; + flag_set( "moving_chest_now" ); + level.chest_accessed = 0; + level.chest_moves++; + } + } if ( !is_true( self.chest_moving ) ) - { - if ( isdefined( player.pers_upgrades_awarded["box_weapon"] ) && player.pers_upgrades_awarded["box_weapon"] ) - rand = maps\mp\zombies\_zm_pers_upgrades_functions::pers_treasure_chest_choosespecialweapon( player ); - else - rand = treasure_chest_chooseweightedrandomweapon( player, rand ); + { + if ( isdefined( player.pers_upgrades_awarded["box_weapon"] ) && player.pers_upgrades_awarded["box_weapon"] ) + rand = maps\mp\zombies\_zm_pers_upgrades_functions::pers_treasure_chest_choosespecialweapon( player ); + else + rand = treasure_chest_chooseweightedrandomweapon( player, rand ); - modelname = getweaponmodel( rand ); - self.weapon_string = rand; + modelname = getweaponmodel( rand ); + self.weapon_string = rand; self.weapon_model useweaponmodel( rand, modelname ); - if ( weapondualwieldweaponname( rand ) != "none" ) - { - self.weapon_model_dw useweaponmodel( weapondualwieldweaponname( rand ), modelname ); + if ( weapondualwieldweaponname( rand ) != "none" ) + { + self.weapon_model_dw useweaponmodel( weapondualwieldweaponname( rand ), modelname ); self.weapon_model_dw show(); - } - else - { - self.weapon_model_dw hide(); - } - } + } + else + { + self.weapon_model_dw hide(); + } + } - self notify( "randomization_done" ); + self notify( "randomization_done" ); - if ( flag( "moving_chest_now" ) && !( level.zombie_vars["zombie_powerup_fire_sale_on"] && self [[ level._zombiemode_check_firesale_loc_valid_func ]]() ) ) - { - if ( isdefined( level.chest_joker_custom_movement ) ) - self [[ level.chest_joker_custom_movement ]](); - else - { - wait 0.5; - level notify( "weapon_fly_away_start" ); - wait 2; + if ( flag( "moving_chest_now" ) && !( level.zombie_vars["zombie_powerup_fire_sale_on"] && self [[ level._zombiemode_check_firesale_loc_valid_func ]]() ) ) + { + if ( isdefined( level.chest_joker_custom_movement ) ) + self [[ level.chest_joker_custom_movement ]](); + else + { + wait 0.5; + level notify( "weapon_fly_away_start" ); + wait 2; - if ( isdefined( self.weapon_model ) ) - { - v_fly_away = self.origin + anglestoup( self.angles ) * 500; - self.weapon_model moveto( v_fly_away, 4, 3 ); - } + if ( isdefined( self.weapon_model ) ) + { + v_fly_away = self.origin + anglestoup( self.angles ) * 500; + self.weapon_model moveto( v_fly_away, 4, 3 ); + } - if ( isdefined( self.weapon_model_dw ) ) - { - v_fly_away = self.origin + anglestoup( self.angles ) * 500; - self.weapon_model_dw moveto( v_fly_away, 4, 3 ); - } + if ( isdefined( self.weapon_model_dw ) ) + { + v_fly_away = self.origin + anglestoup( self.angles ) * 500; + self.weapon_model_dw moveto( v_fly_away, 4, 3 ); + } - self.weapon_model waittill( "movedone" ); + self.weapon_model waittill( "movedone" ); - self.weapon_model delete(); + self.weapon_model delete(); - if ( isdefined( self.weapon_model_dw ) ) - { - self.weapon_model_dw delete(); - self.weapon_model_dw = undefined; - } + if ( isdefined( self.weapon_model_dw ) ) + { + self.weapon_model_dw delete(); + self.weapon_model_dw = undefined; + } - self notify( "box_moving" ); - level notify( "weapon_fly_away_end" ); - } - } - else - { - acquire_weapon_toggle( rand, player ); + self notify( "box_moving" ); + level notify( "weapon_fly_away_end" ); + } + } + else + { + acquire_weapon_toggle( rand, player ); - if ( rand == "tesla_gun_zm" || rand == "ray_gun_zm" ) - { - if ( rand == "ray_gun_zm" ) - level.pulls_since_last_ray_gun = 0; + if ( rand == "tesla_gun_zm" || rand == "ray_gun_zm" ) + { + if ( rand == "ray_gun_zm" ) + level.pulls_since_last_ray_gun = 0; - if ( rand == "tesla_gun_zm" ) - { - level.pulls_since_last_tesla_gun = 0; - level.player_seen_tesla_gun = 1; - } - } + if ( rand == "tesla_gun_zm" ) + { + level.pulls_since_last_tesla_gun = 0; + level.player_seen_tesla_gun = 1; + } + } - if ( !isdefined( respin ) ) - { - if ( isdefined( chest.box_hacks["respin"] ) ) - self [[ chest.box_hacks["respin"] ]]( chest, player ); - } - else if ( isdefined( chest.box_hacks["respin_respin"] ) ) - self [[ chest.box_hacks["respin_respin"] ]]( chest, player ); + if ( !isdefined( respin ) ) + { + if ( isdefined( chest.box_hacks["respin"] ) ) + self [[ chest.box_hacks["respin"] ]]( chest, player ); + } + else if ( isdefined( chest.box_hacks["respin_respin"] ) ) + self [[ chest.box_hacks["respin_respin"] ]]( chest, player ); - if ( isdefined( level.custom_magic_box_timer_til_despawn ) ) - self.weapon_model thread [[ level.custom_magic_box_timer_til_despawn ]]( self ); - else - self.weapon_model thread timer_til_despawn( v_float ); + if ( isdefined( level.custom_magic_box_timer_til_despawn ) ) + self.weapon_model thread [[ level.custom_magic_box_timer_til_despawn ]]( self ); + else + self.weapon_model thread timer_til_despawn( v_float ); - if ( isdefined( self.weapon_model_dw ) ) - { - if ( isdefined( level.custom_magic_box_timer_til_despawn ) ) - self.weapon_model_dw thread [[ level.custom_magic_box_timer_til_despawn ]]( self ); - else - self.weapon_model_dw thread timer_til_despawn( v_float ); - } + if ( isdefined( self.weapon_model_dw ) ) + { + if ( isdefined( level.custom_magic_box_timer_til_despawn ) ) + self.weapon_model_dw thread [[ level.custom_magic_box_timer_til_despawn ]]( self ); + else + self.weapon_model_dw thread timer_til_despawn( v_float ); + } - self waittill( "weapon_grabbed" ); + self waittill( "weapon_grabbed" ); - if ( !chest.timedout ) - { - if ( isdefined( self.weapon_model ) ) - self.weapon_model delete(); + if ( !chest.timedout ) + { + if ( isdefined( self.weapon_model ) ) + self.weapon_model delete(); - if ( isdefined( self.weapon_model_dw ) ) - self.weapon_model_dw delete(); - } - } + if ( isdefined( self.weapon_model_dw ) ) + self.weapon_model_dw delete(); + } + } - self.weapon_string = undefined; - self notify( "box_spin_done" ); + self.weapon_string = undefined; + self notify( "box_spin_done" ); } treasure_chest_chooseweightedrandomweapon( player, prev_weapon, add_to_acquired = 1 ) { - keys = array_randomize( getarraykeys( level.zombie_weapons ) ); + keys = array_randomize( getarraykeys( level.zombie_weapons ) ); - if ( isdefined( level.customrandomweaponweights ) ) - keys = player [[ level.customrandomweaponweights ]]( keys ); + if ( isdefined( level.customrandomweaponweights ) ) + keys = player [[ level.customrandomweaponweights ]]( keys ); - pap_triggers = getentarray( "specialty_weapupgrade", "script_noteworthy" ); + pap_triggers = getentarray( "specialty_weapupgrade", "script_noteworthy" ); if (!isDefined(player.random_weapons_acquired)) { player.random_weapons_acquired = []; } - for ( i = 0; i < keys.size; i++ ) - { - if ( treasure_chest_canplayerreceiveweapon( player, keys[i], pap_triggers ) ) + for ( i = 0; i < keys.size; i++ ) + { + if ( treasure_chest_canplayerreceiveweapon( player, keys[i], pap_triggers ) ) { if (!isInArray(player.random_weapons_acquired, keys[i])) { - if (isDefined(prev_weapon) && prev_weapon == keys[i]) - { - continue; - } + if (isDefined(prev_weapon) && prev_weapon == keys[i]) + { + continue; + } - if (add_to_acquired) - { - player.random_weapons_acquired[player.random_weapons_acquired.size] = keys[i]; - } + if (add_to_acquired) + { + player.random_weapons_acquired[player.random_weapons_acquired.size] = keys[i]; + } return keys[i]; } } - } + } - if (isDefined(prev_weapon)) - { - if (add_to_acquired) - { - player.random_weapons_acquired[player.random_weapons_acquired.size] = prev_weapon; - } + if (isDefined(prev_weapon)) + { + if (add_to_acquired) + { + player.random_weapons_acquired[player.random_weapons_acquired.size] = prev_weapon; + } - return prev_weapon; - } + return prev_weapon; + } if (player.random_weapons_acquired.size > 0) { @@ -706,7 +706,7 @@ treasure_chest_chooseweightedrandomweapon( player, prev_weapon, add_to_acquired return treasure_chest_chooseweightedrandomweapon(player); } - return keys[0]; + return keys[0]; } treasure_chest_move( player_vox ) @@ -756,33 +756,33 @@ treasure_chest_move( player_vox ) default_box_move_logic() { - index = -1; + index = -1; - for ( i = 0; i < level.chests.size; i++ ) - { - if ( issubstr( level.chests[i].script_noteworthy, "move" + ( level.chest_moves + 1 ) ) && i != level.chest_index ) - { - index = i; - break; - } - } + for ( i = 0; i < level.chests.size; i++ ) + { + if ( issubstr( level.chests[i].script_noteworthy, "move" + ( level.chest_moves + 1 ) ) && i != level.chest_index ) + { + index = i; + break; + } + } - if ( index != -1 ) - level.chest_index = index; - else - level.chest_index++; + if ( index != -1 ) + level.chest_index = index; + else + level.chest_index++; - if ( level.chest_index >= level.chests.size ) - { - temp_chest_name = level.chests[level.chest_index - 1].script_noteworthy; - level.chest_index = 0; - level.chests = array_randomize( level.chests ); + if ( level.chest_index >= level.chests.size ) + { + temp_chest_name = level.chests[level.chest_index - 1].script_noteworthy; + level.chest_index = 0; + level.chests = array_randomize( level.chests ); - if ( temp_chest_name == level.chests[level.chest_index].script_noteworthy ) - { - level.chests = array_swap( level.chests, level.chest_index, 1 ); - } - } + if ( temp_chest_name == level.chests[level.chest_index].script_noteworthy ) + { + level.chests = array_swap( level.chests, level.chest_index, 1 ); + } + } } treasure_chest_timeout() @@ -807,127 +807,127 @@ timer_til_despawn( v_float ) decide_hide_show_hint( endon_notify, second_endon_notify, onlyplayer ) { - self endon( "death" ); + self endon( "death" ); - if ( isdefined( endon_notify ) ) - self endon( endon_notify ); + if ( isdefined( endon_notify ) ) + self endon( endon_notify ); - if ( isdefined( second_endon_notify ) ) - self endon( second_endon_notify ); + if ( isdefined( second_endon_notify ) ) + self endon( second_endon_notify ); - if ( !isdefined( level._weapon_show_hint_choke ) ) - level thread weapon_show_hint_choke(); + if ( !isdefined( level._weapon_show_hint_choke ) ) + level thread weapon_show_hint_choke(); - use_choke = 0; + use_choke = 0; - if ( isdefined( level._use_choke_weapon_hints ) && level._use_choke_weapon_hints == 1 ) - use_choke = 1; + if ( isdefined( level._use_choke_weapon_hints ) && level._use_choke_weapon_hints == 1 ) + use_choke = 1; - is_grenade = 0; + is_grenade = 0; if ( isDefined( self.zombie_weapon_upgrade ) && weaponType( self.zombie_weapon_upgrade ) == "grenade" ) { is_grenade = 1; } - while ( true ) - { - last_update = gettime(); + while ( true ) + { + last_update = gettime(); - if ( isdefined( self.chest_user ) && !isdefined( self.box_rerespun ) ) - { - if ( is_melee_weapon( self.chest_user getcurrentweapon() ) || is_placeable_mine( self.chest_user getcurrentweapon() ) || self.chest_user hacker_active() ) - self setinvisibletoplayer( self.chest_user ); - else - self setvisibletoplayer( self.chest_user ); - } - else if ( isdefined( onlyplayer ) ) - { - if ( is_grenade || onlyplayer can_buy_weapon() ) - self setinvisibletoplayer( onlyplayer, 0 ); - else - self setinvisibletoplayer( onlyplayer, 1 ); - } - else - { - players = get_players(); + if ( isdefined( self.chest_user ) && !isdefined( self.box_rerespun ) ) + { + if ( is_melee_weapon( self.chest_user getcurrentweapon() ) || is_placeable_mine( self.chest_user getcurrentweapon() ) || self.chest_user hacker_active() ) + self setinvisibletoplayer( self.chest_user ); + else + self setvisibletoplayer( self.chest_user ); + } + else if ( isdefined( onlyplayer ) ) + { + if ( is_grenade || onlyplayer can_buy_weapon() ) + self setinvisibletoplayer( onlyplayer, 0 ); + else + self setinvisibletoplayer( onlyplayer, 1 ); + } + else + { + players = get_players(); - for ( i = 0; i < players.size; i++ ) - { - if ( is_grenade || players[i] can_buy_weapon() ) - { - self setinvisibletoplayer( players[i], 0 ); - continue; - } + for ( i = 0; i < players.size; i++ ) + { + if ( is_grenade || players[i] can_buy_weapon() ) + { + self setinvisibletoplayer( players[i], 0 ); + continue; + } - self setinvisibletoplayer( players[i], 1 ); - } - } + self setinvisibletoplayer( players[i], 1 ); + } + } - if ( use_choke ) - { - while ( level._weapon_show_hint_choke > 4 && gettime() < last_update + 150 ) - wait 0.05; - } - else - wait 0.1; + if ( use_choke ) + { + while ( level._weapon_show_hint_choke > 4 && gettime() < last_update + 150 ) + wait 0.05; + } + else + wait 0.1; - level._weapon_show_hint_choke++; - } + level._weapon_show_hint_choke++; + } } trigger_visible_to_player( player ) { - self setinvisibletoplayer( player ); - visible = 1; + self setinvisibletoplayer( player ); + visible = 1; - if ( isdefined( self.stub.trigger_target.chest_user ) && !isdefined( self.stub.trigger_target.box_rerespun ) ) - { - if ( player != self.stub.trigger_target.chest_user || is_melee_weapon( self.stub.trigger_target.chest_user getcurrentweapon() ) || is_placeable_mine( self.stub.trigger_target.chest_user getcurrentweapon() ) || self.stub.trigger_target.chest_user hacker_active() ) - visible = 0; - } - else - { - is_chest = 0; - foreach ( chest in level.chests ) - { - if ( self.stub.trigger_target == chest ) - { - is_chest = 1; - break; - } - } + if ( isdefined( self.stub.trigger_target.chest_user ) && !isdefined( self.stub.trigger_target.box_rerespun ) ) + { + if ( player != self.stub.trigger_target.chest_user || is_melee_weapon( self.stub.trigger_target.chest_user getcurrentweapon() ) || is_placeable_mine( self.stub.trigger_target.chest_user getcurrentweapon() ) || self.stub.trigger_target.chest_user hacker_active() ) + visible = 0; + } + else + { + is_chest = 0; + foreach ( chest in level.chests ) + { + if ( self.stub.trigger_target == chest ) + { + is_chest = 1; + break; + } + } - if ( !is_chest && !player can_buy_weapon( ) ) - { - visible = 0; - } - } + if ( !is_chest && !player can_buy_weapon( ) ) + { + visible = 0; + } + } - if ( !visible ) - return false; + if ( !visible ) + return false; - self setvisibletoplayer( player ); - return true; + self setvisibletoplayer( player ); + return true; } can_buy_weapon() { - if ( isdefined( self.is_drinking ) && self.is_drinking > 0 ) - return false; + if ( isdefined( self.is_drinking ) && self.is_drinking > 0 ) + return false; - if ( self hacker_active() ) - return false; + if ( self hacker_active() ) + return false; - current_weapon = self getcurrentweapon(); + current_weapon = self getcurrentweapon(); - if ( is_melee_weapon( current_weapon ) || is_placeable_mine( current_weapon ) || is_equipment_that_blocks_purchase( current_weapon ) ) - return false; + if ( is_melee_weapon( current_weapon ) || is_placeable_mine( current_weapon ) || is_equipment_that_blocks_purchase( current_weapon ) ) + return false; - if ( self in_revive_trigger() ) - return false; + if ( self in_revive_trigger() ) + return false; - if ( current_weapon == "none" ) - return false; + if ( current_weapon == "none" ) + return false; - return true; + return true; } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_melee_weapon.gsc b/scripts/zm/replaced/_zm_melee_weapon.gsc index 4326f3f8..538f53f6 100644 --- a/scripts/zm/replaced/_zm_melee_weapon.gsc +++ b/scripts/zm/replaced/_zm_melee_weapon.gsc @@ -16,9 +16,9 @@ change_melee_weapon( weapon_name, current_weapon ) had_ballistic = 0; had_ballistic_upgraded = 0; ballistic_was_primary = 0; - old_ballistic = undefined; - ballistic_ammo_clip = 0; - ballistic_ammo_stock = 0; + old_ballistic = undefined; + ballistic_ammo_clip = 0; + ballistic_ammo_stock = 0; primaryweapons = self getweaponslistprimaries(); i = 0; while ( i < primaryweapons.size ) @@ -31,10 +31,10 @@ change_melee_weapon( weapon_name, current_weapon ) { ballistic_was_primary = 1; } - old_ballistic = primary_weapon; + old_ballistic = primary_weapon; ballistic_ammo_clip = self getWeaponAmmoClip( primary_weapon ); - ballistic_ammo_stock = self getWeaponAmmoStock( primary_weapon ); - self notify( "zmb_lost_knife" ); + ballistic_ammo_stock = self getWeaponAmmoStock( primary_weapon ); + self notify( "zmb_lost_knife" ); self takeweapon( primary_weapon ); unacquire_weapon_toggle( primary_weapon ); if ( issubstr( primary_weapon, "upgraded" ) ) @@ -64,7 +64,7 @@ change_melee_weapon( weapon_name, current_weapon ) } self giveweapon( new_ballistic, 0 ); } - self giveMaxAmmo( new_ballistic ); + self giveMaxAmmo( new_ballistic ); self seteverhadweaponall( 1 ); } return current_weapon; @@ -72,28 +72,28 @@ change_melee_weapon( weapon_name, current_weapon ) 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 ) ) - self thread [[ flourish_fn ]](); + if ( isdefined( flourish_fn ) ) + self thread [[ flourish_fn ]](); self thread do_melee_weapon_change( 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 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.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 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 ); - if ( self maps\mp\zombies\_zm_laststand::player_is_in_laststand() || isdefined( self.intermission ) && self.intermission ) - return; + if ( self maps\mp\zombies\_zm_laststand::player_is_in_laststand() || isdefined( self.intermission ) && self.intermission ) + return; self.pre_temp_weapon = undefined; - if ( !( isdefined( level._allow_melee_weapon_switching ) && level._allow_melee_weapon_switching ) ) - { - if ( isdefined( trigger ) ) - trigger setinvisibletoplayer( self ); + if ( !( isdefined( level._allow_melee_weapon_switching ) && level._allow_melee_weapon_switching ) ) + { + if ( isdefined( trigger ) ) + trigger setinvisibletoplayer( self ); - self trigger_hide_all(); - } + self trigger_hide_all(); + } } do_melee_weapon_change( weapon_name ) @@ -106,46 +106,46 @@ do_melee_weapon_change( weapon_name ) self waittill_any( "weapon_change", "weapon_change_complete" ); 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 ) { - assert( !is_zombie_perk_bottle( gun ) ); - assert( gun != level.revive_tool ); - self enable_player_move_states(); + assert( !is_zombie_perk_bottle( gun ) ); + assert( gun != level.revive_tool ); + self enable_player_move_states(); self takeweapon( flourish_weapon_name ); if ( self maps\mp\zombies\_zm_laststand::player_is_in_laststand() || isdefined( self.intermission ) && self.intermission ) - { - self.lastactiveweapon = self.pre_temp_weapon; - return; - } + { + self.lastactiveweapon = self.pre_temp_weapon; + return; + } - if ( self is_multiple_drinking() ) - { - self decrement_is_drinking(); - return; - } - else if ( is_melee_weapon( gun ) ) - { - self switchtoweapon( weapon_name ); - self decrement_is_drinking(); - return; - } - else if ( gun != "none" && !is_placeable_mine( gun ) && !is_equipment( gun ) ) - self switchtoweapon( gun ); - else - { - primaryweapons = self getweaponslistprimaries(); + if ( self is_multiple_drinking() ) + { + self decrement_is_drinking(); + return; + } + else if ( is_melee_weapon( gun ) ) + { + self switchtoweapon( weapon_name ); + self decrement_is_drinking(); + return; + } + else if ( gun != "none" && !is_placeable_mine( gun ) && !is_equipment( gun ) ) + self switchtoweapon( gun ); + else + { + primaryweapons = self getweaponslistprimaries(); - if ( isdefined( primaryweapons ) && primaryweapons.size > 0 ) - self switchtoweapon( primaryweapons[0] ); - } + if ( isdefined( primaryweapons ) && primaryweapons.size > 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 ) ) - self decrement_is_drinking(); + if ( !self maps\mp\zombies\_zm_laststand::player_is_in_laststand() && !( isdefined( self.intermission ) && self.intermission ) ) + self decrement_is_drinking(); } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_perk_electric_cherry.gsc b/scripts/zm/replaced/_zm_perk_electric_cherry.gsc index e49718fb..fd403d79 100644 --- a/scripts/zm/replaced/_zm_perk_electric_cherry.gsc +++ b/scripts/zm/replaced/_zm_perk_electric_cherry.gsc @@ -10,33 +10,33 @@ electric_cherry_laststand() { - visionsetlaststand( "zombie_last_stand", 1 ); + visionsetlaststand( "zombie_last_stand", 1 ); - if ( isdefined( self ) ) - { - playfx( level._effect["electric_cherry_explode"], self.origin ); - self playsound( "zmb_cherry_explode" ); - self notify( "electric_cherry_start" ); - wait 0.05; - a_zombies = get_round_enemy_array(); - a_zombies = get_array_of_closest( self.origin, a_zombies, undefined, undefined, 500 ); + if ( isdefined( self ) ) + { + playfx( level._effect["electric_cherry_explode"], self.origin ); + self playsound( "zmb_cherry_explode" ); + self notify( "electric_cherry_start" ); + wait 0.05; + a_zombies = get_round_enemy_array(); + a_zombies = get_array_of_closest( self.origin, a_zombies, undefined, undefined, 500 ); - for ( i = 0; i < a_zombies.size; i++ ) - { - if ( isalive( self ) ) - { - a_zombies[i] thread electric_cherry_death_fx(); + for ( i = 0; i < a_zombies.size; i++ ) + { + if ( isalive( self ) ) + { + a_zombies[i] thread electric_cherry_death_fx(); - if ( isdefined( self.cherry_kills ) ) - self.cherry_kills++; + if ( isdefined( 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; - a_zombies[i] dodamage( a_zombies[i].health + 1000, self.origin, self, self, "none" ); - } - } + wait 0.1; + a_zombies[i] dodamage( a_zombies[i].health + 1000, self.origin, self, self, "none" ); + } + } - self notify( "electric_cherry_end" ); - } + self notify( "electric_cherry_end" ); + } } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_perk_random.gsc b/scripts/zm/replaced/_zm_perk_random.gsc index 4f8edfb8..4023c988 100644 --- a/scripts/zm/replaced/_zm_perk_random.gsc +++ b/scripts/zm/replaced/_zm_perk_random.gsc @@ -11,63 +11,63 @@ machine_selector() { - while ( true ) - { - level waittill( "random_perk_moving" ); + while ( true ) + { + level waittill( "random_perk_moving" ); - machines = getentarray( "random_perk_machine", "targetname" ); + machines = getentarray( "random_perk_machine", "targetname" ); - if ( machines.size == 1 ) - { - new_machine = machines[0]; - new_machine thread machine_think(); - continue; - } + if ( machines.size == 1 ) + { + new_machine = machines[0]; + new_machine thread machine_think(); + continue; + } - do - new_machine = machines[randomint( machines.size )]; - while ( new_machine == level.random_perk_start_machine ); + do + new_machine = machines[randomint( machines.size )]; + while ( new_machine == level.random_perk_start_machine ); - level.random_perk_start_machine = new_machine; - new_machine thread machine_think(); - } + level.random_perk_start_machine = new_machine; + new_machine thread machine_think(); + } } trigger_visible_to_player( player ) { - self setinvisibletoplayer( player ); - visible = 1; + self setinvisibletoplayer( player ); + visible = 1; - if ( isdefined( self.stub.trigger_target.machine_user ) ) - { - if ( player != self.stub.trigger_target.machine_user ) - visible = 0; - } - else if ( !player can_buy_perk() ) - visible = 0; + if ( isdefined( self.stub.trigger_target.machine_user ) ) + { + if ( player != self.stub.trigger_target.machine_user ) + visible = 0; + } + else if ( !player can_buy_perk() ) + visible = 0; - if ( !visible ) - return false; + if ( !visible ) + return false; - self setvisibletoplayer( player ); - return true; + self setvisibletoplayer( player ); + return true; } can_buy_perk() { - if ( isdefined( self.is_drinking ) && self.is_drinking > 0 ) - return false; + if ( isdefined( self.is_drinking ) && self.is_drinking > 0 ) + return false; - current_weapon = self getcurrentweapon(); + current_weapon = self getcurrentweapon(); - if ( is_equipment_that_blocks_purchase( current_weapon ) ) - return false; + if ( is_equipment_that_blocks_purchase( current_weapon ) ) + return false; - if ( self in_revive_trigger() ) - return false; + if ( self in_revive_trigger() ) + return false; - if ( current_weapon == "none" ) - return false; + if ( current_weapon == "none" ) + return false; - return true; + return true; } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_perk_vulture.gsc b/scripts/zm/replaced/_zm_perk_vulture.gsc index 06523275..88e76e8b 100644 --- a/scripts/zm/replaced/_zm_perk_vulture.gsc +++ b/scripts/zm/replaced/_zm_perk_vulture.gsc @@ -14,21 +14,21 @@ _is_player_in_zombie_stink( a_points ) { - velocity = self getVelocity() * (1, 1, 0); + velocity = self getVelocity() * (1, 1, 0); speed = length(velocity); - if (self getStance() == "stand" && speed != 0) - { - return 0; - } + if (self getStance() == "stand" && speed != 0) + { + return 0; + } - b_is_in_stink = 0; + b_is_in_stink = 0; - for ( i = 0; i < a_points.size; i++ ) - { - if ( distancesquared( a_points[i].origin, self.origin ) < 4900 ) - b_is_in_stink = 1; - } + for ( i = 0; i < a_points.size; i++ ) + { + if ( distancesquared( a_points[i].origin, self.origin ) < 4900 ) + b_is_in_stink = 1; + } - return b_is_in_stink; + return b_is_in_stink; } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_perks.gsc b/scripts/zm/replaced/_zm_perks.gsc index d97e6efb..09f730c5 100644 --- a/scripts/zm/replaced/_zm_perks.gsc +++ b/scripts/zm/replaced/_zm_perks.gsc @@ -6,350 +6,350 @@ init() { - level.additionalprimaryweapon_limit = 3; - level.perk_purchase_limit = 4; + level.additionalprimaryweapon_limit = 3; + level.perk_purchase_limit = 4; - if ( !level.createfx_enabled ) - perks_register_clientfield(); + if ( !level.createfx_enabled ) + perks_register_clientfield(); - if ( !level.enable_magic ) - return; + if ( !level.enable_magic ) + return; - initialize_custom_perk_arrays(); - perk_machine_spawn_init(); - vending_weapon_upgrade_trigger = []; - vending_triggers = getentarray( "zombie_vending", "targetname" ); + initialize_custom_perk_arrays(); + perk_machine_spawn_init(); + vending_weapon_upgrade_trigger = []; + vending_triggers = getentarray( "zombie_vending", "targetname" ); - for ( i = 0; i < vending_triggers.size; i++ ) - { - if ( isdefined( vending_triggers[i].script_noteworthy ) && vending_triggers[i].script_noteworthy == "specialty_weapupgrade" ) - { - vending_weapon_upgrade_trigger[vending_weapon_upgrade_trigger.size] = vending_triggers[i]; - arrayremovevalue( vending_triggers, vending_triggers[i] ); - } - } + for ( i = 0; i < vending_triggers.size; i++ ) + { + if ( isdefined( vending_triggers[i].script_noteworthy ) && vending_triggers[i].script_noteworthy == "specialty_weapupgrade" ) + { + vending_weapon_upgrade_trigger[vending_weapon_upgrade_trigger.size] = vending_triggers[i]; + arrayremovevalue( vending_triggers, vending_triggers[i] ); + } + } - old_packs = getentarray( "zombie_vending_upgrade", "targetname" ); + old_packs = getentarray( "zombie_vending_upgrade", "targetname" ); - for ( i = 0; i < old_packs.size; i++ ) - vending_weapon_upgrade_trigger[vending_weapon_upgrade_trigger.size] = old_packs[i]; + for ( i = 0; i < old_packs.size; i++ ) + vending_weapon_upgrade_trigger[vending_weapon_upgrade_trigger.size] = old_packs[i]; - flag_init( "pack_machine_in_use" ); + flag_init( "pack_machine_in_use" ); - if ( vending_triggers.size < 1 ) - return; + if ( vending_triggers.size < 1 ) + return; - if ( vending_weapon_upgrade_trigger.size >= 1 ) - array_thread( vending_weapon_upgrade_trigger, ::vending_weapon_upgrade ); + if ( vending_weapon_upgrade_trigger.size >= 1 ) + array_thread( vending_weapon_upgrade_trigger, ::vending_weapon_upgrade ); - level.machine_assets = []; + level.machine_assets = []; - if ( !isdefined( level.custom_vending_precaching ) ) - level.custom_vending_precaching = ::default_vending_precaching; + if ( !isdefined( level.custom_vending_precaching ) ) + level.custom_vending_precaching = ::default_vending_precaching; - [[ level.custom_vending_precaching ]](); + [[ level.custom_vending_precaching ]](); - if ( !isdefined( level.packapunch_timeout ) ) - level.packapunch_timeout = 15; + if ( !isdefined( level.packapunch_timeout ) ) + level.packapunch_timeout = 15; - set_zombie_var( "zombie_perk_cost", 2000 ); - set_zombie_var( "zombie_perk_juggernaut_health", 160 ); - set_zombie_var( "zombie_perk_juggernaut_health_upgrade", 190 ); - array_thread( vending_triggers, ::vending_trigger_think ); - array_thread( vending_triggers, ::electric_perks_dialog ); + set_zombie_var( "zombie_perk_cost", 2000 ); + set_zombie_var( "zombie_perk_juggernaut_health", 160 ); + set_zombie_var( "zombie_perk_juggernaut_health_upgrade", 190 ); + array_thread( vending_triggers, ::vending_trigger_think ); + array_thread( vending_triggers, ::electric_perks_dialog ); - if ( isdefined( level.zombiemode_using_doubletap_perk ) && level.zombiemode_using_doubletap_perk ) - level thread turn_doubletap_on(); + if ( isdefined( level.zombiemode_using_doubletap_perk ) && level.zombiemode_using_doubletap_perk ) + level thread turn_doubletap_on(); - if ( isdefined( level.zombiemode_using_marathon_perk ) && level.zombiemode_using_marathon_perk ) - level thread turn_marathon_on(); + if ( isdefined( level.zombiemode_using_marathon_perk ) && level.zombiemode_using_marathon_perk ) + level thread turn_marathon_on(); - if ( isdefined( level.zombiemode_using_juggernaut_perk ) && level.zombiemode_using_juggernaut_perk ) - level thread turn_jugger_on(); + if ( isdefined( level.zombiemode_using_juggernaut_perk ) && level.zombiemode_using_juggernaut_perk ) + level thread turn_jugger_on(); - if ( isdefined( level.zombiemode_using_revive_perk ) && level.zombiemode_using_revive_perk ) - level thread turn_revive_on(); + if ( isdefined( level.zombiemode_using_revive_perk ) && level.zombiemode_using_revive_perk ) + level thread turn_revive_on(); - if ( isdefined( level.zombiemode_using_sleightofhand_perk ) && level.zombiemode_using_sleightofhand_perk ) - level thread turn_sleight_on(); + if ( isdefined( level.zombiemode_using_sleightofhand_perk ) && level.zombiemode_using_sleightofhand_perk ) + level thread turn_sleight_on(); - if ( isdefined( level.zombiemode_using_deadshot_perk ) && level.zombiemode_using_deadshot_perk ) - level thread turn_deadshot_on(); + if ( isdefined( level.zombiemode_using_deadshot_perk ) && level.zombiemode_using_deadshot_perk ) + level thread turn_deadshot_on(); - if ( isdefined( level.zombiemode_using_tombstone_perk ) && level.zombiemode_using_tombstone_perk ) - level thread turn_tombstone_on(); + if ( isdefined( level.zombiemode_using_tombstone_perk ) && level.zombiemode_using_tombstone_perk ) + level thread turn_tombstone_on(); - if ( isdefined( level.zombiemode_using_additionalprimaryweapon_perk ) && level.zombiemode_using_additionalprimaryweapon_perk ) - level thread turn_additionalprimaryweapon_on(); + if ( isdefined( level.zombiemode_using_additionalprimaryweapon_perk ) && level.zombiemode_using_additionalprimaryweapon_perk ) + level thread turn_additionalprimaryweapon_on(); - if ( isdefined( level.zombiemode_using_chugabud_perk ) && level.zombiemode_using_chugabud_perk ) - level thread turn_chugabud_on(); + if ( isdefined( level.zombiemode_using_chugabud_perk ) && level.zombiemode_using_chugabud_perk ) + level thread turn_chugabud_on(); - if ( level._custom_perks.size > 0 ) - { - a_keys = getarraykeys( level._custom_perks ); + if ( level._custom_perks.size > 0 ) + { + a_keys = getarraykeys( level._custom_perks ); - for ( i = 0; i < a_keys.size; i++ ) - { - if ( isdefined( level._custom_perks[a_keys[i]].perk_machine_thread ) ) - level thread [[ level._custom_perks[a_keys[i]].perk_machine_thread ]](); - } - } + for ( i = 0; i < a_keys.size; i++ ) + { + if ( isdefined( level._custom_perks[a_keys[i]].perk_machine_thread ) ) + level thread [[ level._custom_perks[a_keys[i]].perk_machine_thread ]](); + } + } - if ( isdefined( level._custom_turn_packapunch_on ) ) - level thread [[ level._custom_turn_packapunch_on ]](); - else - level thread turn_packapunch_on(); + if ( isdefined( level._custom_turn_packapunch_on ) ) + level thread [[ level._custom_turn_packapunch_on ]](); + else + level thread turn_packapunch_on(); - if ( isdefined( level.quantum_bomb_register_result_func ) ) - [[ level.quantum_bomb_register_result_func ]]( "give_nearest_perk", ::quantum_bomb_give_nearest_perk_result, 10, ::quantum_bomb_give_nearest_perk_validation ); + if ( isdefined( level.quantum_bomb_register_result_func ) ) + [[ level.quantum_bomb_register_result_func ]]( "give_nearest_perk", ::quantum_bomb_give_nearest_perk_result, 10, ::quantum_bomb_give_nearest_perk_validation ); - level thread perk_hostmigration(); + level thread perk_hostmigration(); } vending_trigger_think() { - self endon( "death" ); - wait 0.01; - perk = self.script_noteworthy; - solo = 0; - start_on = 0; - level.revive_machine_is_solo = 0; + self endon( "death" ); + wait 0.01; + perk = self.script_noteworthy; + solo = 0; + start_on = 0; + level.revive_machine_is_solo = 0; - if ( isdefined( perk ) && ( perk == "specialty_quickrevive" || perk == "specialty_quickrevive_upgrade" ) ) - { - flag_wait( "start_zombie_round_logic" ); - solo = use_solo_revive(); - self endon( "stop_quickrevive_logic" ); - level.quick_revive_trigger = self; + if ( isdefined( perk ) && ( perk == "specialty_quickrevive" || perk == "specialty_quickrevive_upgrade" ) ) + { + flag_wait( "start_zombie_round_logic" ); + solo = use_solo_revive(); + self endon( "stop_quickrevive_logic" ); + level.quick_revive_trigger = self; - if ( solo ) - { - if ( !is_true( level.revive_machine_is_solo ) ) - { - start_on = 1; - players = get_players(); + if ( solo ) + { + if ( !is_true( level.revive_machine_is_solo ) ) + { + start_on = 1; + players = get_players(); - foreach ( player in players ) - { - if ( !isdefined( player.lives ) ) - player.lives = 0; - } + foreach ( player in players ) + { + if ( !isdefined( player.lives ) ) + player.lives = 0; + } - level maps\mp\zombies\_zm::set_default_laststand_pistol( 1 ); - } + level maps\mp\zombies\_zm::set_default_laststand_pistol( 1 ); + } - level.revive_machine_is_solo = 1; - } - } + level.revive_machine_is_solo = 1; + } + } - self sethintstring( &"ZOMBIE_NEED_POWER" ); - self setcursorhint( "HINT_NOICON" ); - self usetriggerrequirelookat(); - cost = level.zombie_vars["zombie_perk_cost"]; + self sethintstring( &"ZOMBIE_NEED_POWER" ); + self setcursorhint( "HINT_NOICON" ); + self usetriggerrequirelookat(); + cost = level.zombie_vars["zombie_perk_cost"]; - switch ( perk ) - { - case "specialty_armorvest_upgrade": - case "specialty_armorvest": - cost = 2500; - break; - case "specialty_quickrevive_upgrade": - case "specialty_quickrevive": - if ( solo ) - cost = 500; - else - cost = 1500; + switch ( perk ) + { + case "specialty_armorvest_upgrade": + case "specialty_armorvest": + cost = 2500; + break; + case "specialty_quickrevive_upgrade": + case "specialty_quickrevive": + if ( solo ) + cost = 500; + else + cost = 1500; - break; - case "specialty_fastreload_upgrade": - case "specialty_fastreload": - cost = 3000; - break; - case "specialty_rof_upgrade": - case "specialty_rof": - cost = 2000; - break; - case "specialty_longersprint_upgrade": - case "specialty_longersprint": - cost = 2000; - break; - case "specialty_deadshot_upgrade": - case "specialty_deadshot": - cost = 1500; - break; - case "specialty_additionalprimaryweapon_upgrade": - case "specialty_additionalprimaryweapon": - cost = 4000; - break; - } + break; + case "specialty_fastreload_upgrade": + case "specialty_fastreload": + cost = 3000; + break; + case "specialty_rof_upgrade": + case "specialty_rof": + cost = 2000; + break; + case "specialty_longersprint_upgrade": + case "specialty_longersprint": + cost = 2000; + break; + case "specialty_deadshot_upgrade": + case "specialty_deadshot": + cost = 1500; + break; + case "specialty_additionalprimaryweapon_upgrade": + case "specialty_additionalprimaryweapon": + cost = 4000; + break; + } - if ( isdefined( level._custom_perks[perk] ) && isdefined( level._custom_perks[perk].cost ) ) - cost = level._custom_perks[perk].cost; + if ( isdefined( level._custom_perks[perk] ) && isdefined( level._custom_perks[perk].cost ) ) + cost = level._custom_perks[perk].cost; - self.cost = cost; + self.cost = cost; - if ( !start_on ) - { - notify_name = perk + "_power_on"; + if ( !start_on ) + { + notify_name = perk + "_power_on"; - level waittill( notify_name ); - } + level waittill( notify_name ); + } - start_on = 0; + start_on = 0; - if ( !isdefined( level._perkmachinenetworkchoke ) ) - level._perkmachinenetworkchoke = 0; - else - level._perkmachinenetworkchoke++; + if ( !isdefined( level._perkmachinenetworkchoke ) ) + level._perkmachinenetworkchoke = 0; + else + level._perkmachinenetworkchoke++; - for ( i = 0; i < level._perkmachinenetworkchoke; i++ ) - wait_network_frame(); + for ( i = 0; i < level._perkmachinenetworkchoke; i++ ) + wait_network_frame(); - self thread maps\mp\zombies\_zm_audio::perks_a_cola_jingle_timer(); - self thread check_player_has_perk( perk ); + self thread maps\mp\zombies\_zm_audio::perks_a_cola_jingle_timer(); + self thread check_player_has_perk( perk ); - switch ( perk ) - { - case "specialty_armorvest_upgrade": - case "specialty_armorvest": - self sethintstring( &"ZOMBIE_PERK_JUGGERNAUT", cost ); - break; - case "specialty_quickrevive_upgrade": - case "specialty_quickrevive": - if ( solo ) - self sethintstring( &"ZOMBIE_PERK_QUICKREVIVE_SOLO", cost ); - else - self sethintstring( &"ZOMBIE_PERK_QUICKREVIVE", cost ); + switch ( perk ) + { + case "specialty_armorvest_upgrade": + case "specialty_armorvest": + self sethintstring( &"ZOMBIE_PERK_JUGGERNAUT", cost ); + break; + case "specialty_quickrevive_upgrade": + case "specialty_quickrevive": + if ( solo ) + self sethintstring( &"ZOMBIE_PERK_QUICKREVIVE_SOLO", cost ); + else + self sethintstring( &"ZOMBIE_PERK_QUICKREVIVE", cost ); - break; - case "specialty_fastreload_upgrade": - case "specialty_fastreload": - self sethintstring( &"ZOMBIE_PERK_FASTRELOAD", cost ); - break; - case "specialty_rof_upgrade": - case "specialty_rof": - self sethintstring( &"ZOMBIE_PERK_DOUBLETAP", cost ); - break; - case "specialty_longersprint_upgrade": - case "specialty_longersprint": - self sethintstring( &"ZOMBIE_PERK_MARATHON", cost ); - break; - case "specialty_deadshot_upgrade": - case "specialty_deadshot": - self sethintstring( &"ZOMBIE_PERK_DEADSHOT", cost ); - break; - case "specialty_additionalprimaryweapon_upgrade": - case "specialty_additionalprimaryweapon": - self sethintstring( &"ZOMBIE_PERK_ADDITIONALPRIMARYWEAPON", cost ); - break; - case "specialty_scavenger_upgrade": - case "specialty_scavenger": - self sethintstring( &"ZOMBIE_PERK_TOMBSTONE", cost ); - break; - case "specialty_finalstand_upgrade": - case "specialty_finalstand": - self sethintstring( &"ZOMBIE_PERK_CHUGABUD", cost ); - break; - default: - self sethintstring( perk + " Cost: " + level.zombie_vars["zombie_perk_cost"] ); - } + break; + case "specialty_fastreload_upgrade": + case "specialty_fastreload": + self sethintstring( &"ZOMBIE_PERK_FASTRELOAD", cost ); + break; + case "specialty_rof_upgrade": + case "specialty_rof": + self sethintstring( &"ZOMBIE_PERK_DOUBLETAP", cost ); + break; + case "specialty_longersprint_upgrade": + case "specialty_longersprint": + self sethintstring( &"ZOMBIE_PERK_MARATHON", cost ); + break; + case "specialty_deadshot_upgrade": + case "specialty_deadshot": + self sethintstring( &"ZOMBIE_PERK_DEADSHOT", cost ); + break; + case "specialty_additionalprimaryweapon_upgrade": + case "specialty_additionalprimaryweapon": + self sethintstring( &"ZOMBIE_PERK_ADDITIONALPRIMARYWEAPON", cost ); + break; + case "specialty_scavenger_upgrade": + case "specialty_scavenger": + self sethintstring( &"ZOMBIE_PERK_TOMBSTONE", cost ); + break; + case "specialty_finalstand_upgrade": + case "specialty_finalstand": + self sethintstring( &"ZOMBIE_PERK_CHUGABUD", cost ); + break; + default: + self sethintstring( perk + " Cost: " + level.zombie_vars["zombie_perk_cost"] ); + } - if ( isdefined( level._custom_perks[perk] ) && isdefined( level._custom_perks[perk].hint_string ) ) - self sethintstring( level._custom_perks[perk].hint_string, cost ); + if ( isdefined( level._custom_perks[perk] ) && isdefined( level._custom_perks[perk].hint_string ) ) + self sethintstring( level._custom_perks[perk].hint_string, cost ); - for (;;) - { - self waittill( "trigger", player ); + for (;;) + { + self waittill( "trigger", player ); - index = maps\mp\zombies\_zm_weapons::get_player_index( player ); + index = maps\mp\zombies\_zm_weapons::get_player_index( player ); - if ( player maps\mp\zombies\_zm_laststand::player_is_in_laststand() || isdefined( player.intermission ) && player.intermission ) - continue; + if ( player maps\mp\zombies\_zm_laststand::player_is_in_laststand() || isdefined( player.intermission ) && player.intermission ) + continue; - if ( player in_revive_trigger() ) - continue; + if ( player in_revive_trigger() ) + continue; - if ( player isthrowinggrenade() ) - { - wait 0.1; - continue; - } + if ( player isthrowinggrenade() ) + { + wait 0.1; + continue; + } - if ( player isswitchingweapons() ) - { - wait 0.1; - continue; - } + if ( player isswitchingweapons() ) + { + wait 0.1; + continue; + } - if ( player.is_drinking > 0 ) - { - wait 0.1; - continue; - } + if ( player.is_drinking > 0 ) + { + wait 0.1; + continue; + } - if ( player hasperk( perk ) || player has_perk_paused( perk ) ) - { - cheat = 0; + if ( player hasperk( perk ) || player has_perk_paused( perk ) ) + { + cheat = 0; - if ( cheat != 1 ) - { - self playsound( "evt_perk_deny" ); - player maps\mp\zombies\_zm_audio::create_and_play_dialog( "general", "perk_deny", undefined, 1 ); - continue; - } - } + if ( cheat != 1 ) + { + self playsound( "evt_perk_deny" ); + player maps\mp\zombies\_zm_audio::create_and_play_dialog( "general", "perk_deny", undefined, 1 ); + continue; + } + } - if ( isdefined( level.custom_perk_validation ) ) - { - valid = self [[ level.custom_perk_validation ]]( player ); + if ( isdefined( level.custom_perk_validation ) ) + { + valid = self [[ level.custom_perk_validation ]]( player ); - if ( !valid ) - continue; - } + if ( !valid ) + continue; + } - current_cost = cost; + current_cost = cost; - if ( player maps\mp\zombies\_zm_pers_upgrades_functions::is_pers_double_points_active() ) - current_cost = player maps\mp\zombies\_zm_pers_upgrades_functions::pers_upgrade_double_points_cost( current_cost ); + if ( player maps\mp\zombies\_zm_pers_upgrades_functions::is_pers_double_points_active() ) + current_cost = player maps\mp\zombies\_zm_pers_upgrades_functions::pers_upgrade_double_points_cost( current_cost ); - if ( player.score < current_cost ) - { - self playsound( "evt_perk_deny" ); - player maps\mp\zombies\_zm_audio::create_and_play_dialog( "general", "perk_deny", undefined, 0 ); - continue; - } + if ( player.score < current_cost ) + { + self playsound( "evt_perk_deny" ); + player maps\mp\zombies\_zm_audio::create_and_play_dialog( "general", "perk_deny", undefined, 0 ); + continue; + } - if ( player.num_perks >= player get_player_perk_purchase_limit() ) - { - self playsound( "evt_perk_deny" ); - player maps\mp\zombies\_zm_audio::create_and_play_dialog( "general", "sigh" ); - continue; - } + if ( player.num_perks >= player get_player_perk_purchase_limit() ) + { + self playsound( "evt_perk_deny" ); + player maps\mp\zombies\_zm_audio::create_and_play_dialog( "general", "sigh" ); + continue; + } - sound = "evt_bottle_dispense"; - playsoundatposition( sound, self.origin ); - player maps\mp\zombies\_zm_score::minus_to_player_score( current_cost, 1 ); - player.perk_purchased = perk; - self thread maps\mp\zombies\_zm_audio::play_jingle_or_stinger( self.script_label ); - self thread vending_trigger_post_think( player, perk ); - } + sound = "evt_bottle_dispense"; + playsoundatposition( sound, self.origin ); + player maps\mp\zombies\_zm_score::minus_to_player_score( current_cost, 1 ); + player.perk_purchased = perk; + self thread maps\mp\zombies\_zm_audio::play_jingle_or_stinger( self.script_label ); + self thread vending_trigger_post_think( player, perk ); + } } vending_trigger_post_think( player, perk ) { - player endon( "disconnect" ); - player endon( "end_game" ); - player endon( "perk_abort_drinking" ); - player.pre_temp_weapon = player perk_give_bottle_begin( perk ); - evt = player waittill_any_return( "fake_death", "death", "player_downed", "weapon_change_complete" ); + player endon( "disconnect" ); + player endon( "end_game" ); + player endon( "perk_abort_drinking" ); + player.pre_temp_weapon = player perk_give_bottle_begin( perk ); + evt = player waittill_any_return( "fake_death", "death", "player_downed", "weapon_change_complete" ); - if ( evt == "weapon_change_complete" ) - player thread wait_give_perk( perk, 1 ); + if ( evt == "weapon_change_complete" ) + player thread wait_give_perk( perk, 1 ); - player perk_give_bottle_end( player.pre_temp_weapon, perk ); + player perk_give_bottle_end( player.pre_temp_weapon, perk ); - 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.lastactiveweapon = player.pre_temp_weapon; return; @@ -357,309 +357,309 @@ vending_trigger_post_think( player, perk ) player.pre_temp_weapon = undefined; - player notify( "burp" ); + player notify( "burp" ); - if ( isdefined( level.pers_upgrade_cash_back ) && level.pers_upgrade_cash_back ) - player maps\mp\zombies\_zm_pers_upgrades_functions::cash_back_player_drinks_perk(); + if ( isdefined( level.pers_upgrade_cash_back ) && level.pers_upgrade_cash_back ) + player maps\mp\zombies\_zm_pers_upgrades_functions::cash_back_player_drinks_perk(); - if ( isdefined( level.pers_upgrade_perk_lose ) && level.pers_upgrade_perk_lose ) - player thread maps\mp\zombies\_zm_pers_upgrades_functions::pers_upgrade_perk_lose_bought(); + if ( isdefined( level.pers_upgrade_perk_lose ) && level.pers_upgrade_perk_lose ) + player thread maps\mp\zombies\_zm_pers_upgrades_functions::pers_upgrade_perk_lose_bought(); - if ( isdefined( level.perk_bought_func ) ) - player [[ level.perk_bought_func ]]( perk ); + if ( isdefined( level.perk_bought_func ) ) + player [[ level.perk_bought_func ]]( perk ); - player.perk_purchased = undefined; + player.perk_purchased = undefined; - if ( is_false( self.power_on ) ) - { - wait 1; - perk_pause( self.script_noteworthy ); - } + if ( is_false( self.power_on ) ) + { + wait 1; + perk_pause( self.script_noteworthy ); + } - bbprint( "zombie_uses", "playername %s playerscore %d round %d name %s x %f y %f z %f type %s", player.name, player.score, level.round_number, perk, self.origin, "perk" ); + bbprint( "zombie_uses", "playername %s playerscore %d round %d name %s x %f y %f z %f type %s", player.name, player.score, level.round_number, perk, self.origin, "perk" ); } perk_give_bottle_end( gun, perk ) { - self endon( "perk_abort_drinking" ); - assert( !is_zombie_perk_bottle( gun ) ); - assert( gun != level.revive_tool ); - self enable_player_move_states(); - weapon = ""; + self endon( "perk_abort_drinking" ); + assert( !is_zombie_perk_bottle( gun ) ); + assert( gun != level.revive_tool ); + self enable_player_move_states(); + weapon = ""; - switch ( perk ) - { - case "specialty_rof_upgrade": - case "specialty_rof": - weapon = level.machine_assets["doubletap"].weapon; - break; - case "specialty_longersprint_upgrade": - case "specialty_longersprint": - weapon = level.machine_assets["marathon"].weapon; - break; - case "specialty_flakjacket_upgrade": - case "specialty_flakjacket": - weapon = level.machine_assets["divetonuke"].weapon; - break; - case "specialty_armorvest_upgrade": - case "specialty_armorvest": - weapon = level.machine_assets["juggernog"].weapon; - self.jugg_used = 1; - break; - case "specialty_quickrevive_upgrade": - case "specialty_quickrevive": - weapon = level.machine_assets["revive"].weapon; - break; - case "specialty_fastreload_upgrade": - case "specialty_fastreload": - weapon = level.machine_assets["speedcola"].weapon; - self.speed_used = 1; - break; - case "specialty_deadshot_upgrade": - case "specialty_deadshot": - weapon = level.machine_assets["deadshot"].weapon; - break; - case "specialty_additionalprimaryweapon_upgrade": - case "specialty_additionalprimaryweapon": - weapon = level.machine_assets["additionalprimaryweapon"].weapon; - break; - case "specialty_scavenger_upgrade": - case "specialty_scavenger": - weapon = level.machine_assets["tombstone"].weapon; - break; - case "specialty_finalstand_upgrade": - case "specialty_finalstand": - weapon = level.machine_assets["whoswho"].weapon; - break; - } + switch ( perk ) + { + case "specialty_rof_upgrade": + case "specialty_rof": + weapon = level.machine_assets["doubletap"].weapon; + break; + case "specialty_longersprint_upgrade": + case "specialty_longersprint": + weapon = level.machine_assets["marathon"].weapon; + break; + case "specialty_flakjacket_upgrade": + case "specialty_flakjacket": + weapon = level.machine_assets["divetonuke"].weapon; + break; + case "specialty_armorvest_upgrade": + case "specialty_armorvest": + weapon = level.machine_assets["juggernog"].weapon; + self.jugg_used = 1; + break; + case "specialty_quickrevive_upgrade": + case "specialty_quickrevive": + weapon = level.machine_assets["revive"].weapon; + break; + case "specialty_fastreload_upgrade": + case "specialty_fastreload": + weapon = level.machine_assets["speedcola"].weapon; + self.speed_used = 1; + break; + case "specialty_deadshot_upgrade": + case "specialty_deadshot": + weapon = level.machine_assets["deadshot"].weapon; + break; + case "specialty_additionalprimaryweapon_upgrade": + case "specialty_additionalprimaryweapon": + weapon = level.machine_assets["additionalprimaryweapon"].weapon; + break; + case "specialty_scavenger_upgrade": + case "specialty_scavenger": + weapon = level.machine_assets["tombstone"].weapon; + break; + case "specialty_finalstand_upgrade": + case "specialty_finalstand": + weapon = level.machine_assets["whoswho"].weapon; + break; + } - if ( isdefined( level._custom_perks[perk] ) && isdefined( level._custom_perks[perk].perk_bottle ) ) - weapon = level._custom_perks[perk].perk_bottle; + if ( isdefined( level._custom_perks[perk] ) && isdefined( level._custom_perks[perk].perk_bottle ) ) + weapon = level._custom_perks[perk].perk_bottle; - if ( self maps\mp\zombies\_zm_laststand::player_is_in_laststand() || isdefined( self.intermission ) && self.intermission ) - { - self takeweapon( weapon ); - return; - } + if ( self maps\mp\zombies\_zm_laststand::player_is_in_laststand() || isdefined( self.intermission ) && self.intermission ) + { + self takeweapon( weapon ); + return; + } - self takeweapon( weapon ); + self takeweapon( weapon ); - if ( self is_multiple_drinking() ) - { - self decrement_is_drinking(); - return; - } - else if ( gun != "none" && !is_equipment_that_blocks_purchase( gun ) ) - { - self switchtoweapon( gun ); + if ( self is_multiple_drinking() ) + { + self decrement_is_drinking(); + return; + } + else if ( gun != "none" && !is_equipment_that_blocks_purchase( gun ) ) + { + self switchtoweapon( gun ); - if ( is_melee_weapon( gun ) ) - { - self decrement_is_drinking(); - return; - } - } - else - { - primaryweapons = self getweaponslistprimaries(); + if ( is_melee_weapon( gun ) ) + { + self decrement_is_drinking(); + return; + } + } + else + { + primaryweapons = self getweaponslistprimaries(); - if ( isdefined( primaryweapons ) && primaryweapons.size > 0 ) - self switchtoweapon( primaryweapons[0] ); - } + if ( isdefined( primaryweapons ) && primaryweapons.size > 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 ) ) - self decrement_is_drinking(); + if ( !self maps\mp\zombies\_zm_laststand::player_is_in_laststand() && !( isdefined( self.intermission ) && self.intermission ) ) + self decrement_is_drinking(); } vending_weapon_upgrade() { - level endon( "Pack_A_Punch_off" ); - wait 0.01; - perk_machine = getent( self.target, "targetname" ); - self.perk_machine = perk_machine; - perk_machine_sound = getentarray( "perksacola", "targetname" ); - packa_rollers = spawn( "script_origin", self.origin ); - packa_timer = spawn( "script_origin", self.origin ); - packa_rollers linkto( self ); - packa_timer linkto( self ); + level endon( "Pack_A_Punch_off" ); + wait 0.01; + perk_machine = getent( self.target, "targetname" ); + self.perk_machine = perk_machine; + perk_machine_sound = getentarray( "perksacola", "targetname" ); + packa_rollers = spawn( "script_origin", self.origin ); + packa_timer = spawn( "script_origin", self.origin ); + packa_rollers linkto( self ); + packa_timer linkto( self ); - if ( isdefined( perk_machine.target ) ) - perk_machine.wait_flag = getent( perk_machine.target, "targetname" ); + if ( isdefined( perk_machine.target ) ) + perk_machine.wait_flag = getent( perk_machine.target, "targetname" ); - pap_is_buildable = self is_buildable(); + pap_is_buildable = self is_buildable(); - if ( pap_is_buildable ) - { - self trigger_off(); - perk_machine hide(); + if ( pap_is_buildable ) + { + self trigger_off(); + perk_machine hide(); - if ( isdefined( perk_machine.wait_flag ) ) - perk_machine.wait_flag hide(); + if ( isdefined( perk_machine.wait_flag ) ) + perk_machine.wait_flag hide(); - wait_for_buildable( "pap" ); - self trigger_on(); - perk_machine show(); + wait_for_buildable( "pap" ); + self trigger_on(); + perk_machine show(); - if ( isdefined( perk_machine.wait_flag ) ) - perk_machine.wait_flag show(); - } + if ( isdefined( perk_machine.wait_flag ) ) + perk_machine.wait_flag show(); + } - self usetriggerrequirelookat(); - self sethintstring( &"ZOMBIE_NEED_POWER" ); - self setcursorhint( "HINT_NOICON" ); - power_off = !self maps\mp\zombies\_zm_power::pap_is_on(); + self usetriggerrequirelookat(); + self sethintstring( &"ZOMBIE_NEED_POWER" ); + self setcursorhint( "HINT_NOICON" ); + power_off = !self maps\mp\zombies\_zm_power::pap_is_on(); - if ( power_off ) - { - pap_array = []; - pap_array[0] = perk_machine; - level thread do_initial_power_off_callback( pap_array, "packapunch" ); + if ( power_off ) + { + pap_array = []; + pap_array[0] = perk_machine; + level thread do_initial_power_off_callback( pap_array, "packapunch" ); - level waittill( "Pack_A_Punch_on" ); - } + level waittill( "Pack_A_Punch_on" ); + } - self enable_trigger(); + self enable_trigger(); - if ( isdefined( level.machine_assets["packapunch"].power_on_callback ) ) - perk_machine thread [[ level.machine_assets["packapunch"].power_on_callback ]](); + if ( isdefined( level.machine_assets["packapunch"].power_on_callback ) ) + perk_machine thread [[ level.machine_assets["packapunch"].power_on_callback ]](); - self thread vending_machine_trigger_think(); - perk_machine playloopsound( "zmb_perks_packa_loop" ); - self thread shutoffpapsounds( perk_machine, packa_rollers, packa_timer ); - self thread vending_weapon_upgrade_cost(); + self thread vending_machine_trigger_think(); + perk_machine playloopsound( "zmb_perks_packa_loop" ); + self thread shutoffpapsounds( perk_machine, packa_rollers, packa_timer ); + self thread vending_weapon_upgrade_cost(); - for (;;) - { - self.pack_player = undefined; + for (;;) + { + self.pack_player = undefined; - self waittill( "trigger", player ); + self waittill( "trigger", player ); - index = maps\mp\zombies\_zm_weapons::get_player_index( player ); - current_weapon = player getcurrentweapon(); + index = maps\mp\zombies\_zm_weapons::get_player_index( player ); + current_weapon = player getcurrentweapon(); - if ( "microwavegun_zm" == current_weapon ) - current_weapon = "microwavegundw_zm"; + if ( "microwavegun_zm" == current_weapon ) + current_weapon = "microwavegundw_zm"; - current_weapon = player maps\mp\zombies\_zm_weapons::switch_from_alt_weapon( current_weapon ); + current_weapon = player maps\mp\zombies\_zm_weapons::switch_from_alt_weapon( current_weapon ); - if ( isdefined( level.custom_pap_validation ) ) - { - valid = self [[ level.custom_pap_validation ]]( player ); + if ( isdefined( level.custom_pap_validation ) ) + { + valid = self [[ level.custom_pap_validation ]]( player ); - if ( !valid ) - continue; - } + if ( !valid ) + continue; + } - if ( !player maps\mp\zombies\_zm_magicbox::can_buy_weapon() || player maps\mp\zombies\_zm_laststand::player_is_in_laststand() || isdefined( player.intermission ) && player.intermission || player isthrowinggrenade() || !player maps\mp\zombies\_zm_weapons::can_upgrade_weapon( current_weapon ) ) - { - wait 0.1; - continue; - } + if ( !player maps\mp\zombies\_zm_magicbox::can_buy_weapon() || player maps\mp\zombies\_zm_laststand::player_is_in_laststand() || isdefined( player.intermission ) && player.intermission || player isthrowinggrenade() || !player maps\mp\zombies\_zm_weapons::can_upgrade_weapon( current_weapon ) ) + { + wait 0.1; + continue; + } - if ( player isswitchingweapons() ) - { - wait 0.1; + if ( player isswitchingweapons() ) + { + wait 0.1; - if ( player isswitchingweapons() ) - continue; - } + if ( player isswitchingweapons() ) + continue; + } - if ( !maps\mp\zombies\_zm_weapons::is_weapon_or_base_included( current_weapon ) ) - continue; + if ( !maps\mp\zombies\_zm_weapons::is_weapon_or_base_included( current_weapon ) ) + continue; - current_cost = self.cost; - player.restore_ammo = undefined; - player.restore_clip = undefined; - player.restore_stock = undefined; - player_restore_clip_size = undefined; - player.restore_max = undefined; - upgrade_as_attachment = will_upgrade_weapon_as_attachment( current_weapon ); + current_cost = self.cost; + player.restore_ammo = undefined; + player.restore_clip = undefined; + player.restore_stock = undefined; + player_restore_clip_size = undefined; + player.restore_max = undefined; + upgrade_as_attachment = will_upgrade_weapon_as_attachment( current_weapon ); - if ( upgrade_as_attachment ) - { - current_cost = self.attachment_cost; - player.restore_ammo = 1; - player.restore_clip = player getweaponammoclip( current_weapon ); - player.restore_clip_size = weaponclipsize( current_weapon ); - player.restore_stock = player getweaponammostock( current_weapon ); - player.restore_max = weaponmaxammo( current_weapon ); - } + if ( upgrade_as_attachment ) + { + current_cost = self.attachment_cost; + player.restore_ammo = 1; + player.restore_clip = player getweaponammoclip( current_weapon ); + player.restore_clip_size = weaponclipsize( current_weapon ); + player.restore_stock = player getweaponammostock( current_weapon ); + player.restore_max = weaponmaxammo( current_weapon ); + } - if ( player maps\mp\zombies\_zm_pers_upgrades_functions::is_pers_double_points_active() ) - current_cost = player maps\mp\zombies\_zm_pers_upgrades_functions::pers_upgrade_double_points_cost( current_cost ); + if ( player maps\mp\zombies\_zm_pers_upgrades_functions::is_pers_double_points_active() ) + current_cost = player maps\mp\zombies\_zm_pers_upgrades_functions::pers_upgrade_double_points_cost( current_cost ); - if ( !upgrade_as_attachment && player.score < current_cost ) - { - self playsound( "evt_perk_deny" ); + if ( !upgrade_as_attachment && player.score < current_cost ) + { + self playsound( "evt_perk_deny" ); - if ( isdefined( level.custom_pap_deny_vo_func ) ) - player [[ level.custom_pap_deny_vo_func ]](); - else - player maps\mp\zombies\_zm_audio::create_and_play_dialog( "general", "perk_deny", undefined, 0 ); + if ( isdefined( level.custom_pap_deny_vo_func ) ) + player [[ level.custom_pap_deny_vo_func ]](); + else + player maps\mp\zombies\_zm_audio::create_and_play_dialog( "general", "perk_deny", undefined, 0 ); - continue; - } + continue; + } - self.pack_player = player; - flag_set( "pack_machine_in_use" ); - maps\mp\_demo::bookmark( "zm_player_use_packapunch", gettime(), player ); - player maps\mp\zombies\_zm_stats::increment_client_stat( "use_pap" ); - player maps\mp\zombies\_zm_stats::increment_player_stat( "use_pap" ); - self thread destroy_weapon_in_blackout( player ); - self thread destroy_weapon_on_disconnect( player ); + self.pack_player = player; + flag_set( "pack_machine_in_use" ); + maps\mp\_demo::bookmark( "zm_player_use_packapunch", gettime(), player ); + player maps\mp\zombies\_zm_stats::increment_client_stat( "use_pap" ); + player maps\mp\zombies\_zm_stats::increment_player_stat( "use_pap" ); + self thread destroy_weapon_in_blackout( player ); + self thread destroy_weapon_on_disconnect( player ); if ( !upgrade_as_attachment ) { player maps\mp\zombies\_zm_score::minus_to_player_score( current_cost, 1 ); } - sound = "evt_bottle_dispense"; - playsoundatposition( sound, self.origin ); - self thread maps\mp\zombies\_zm_audio::play_jingle_or_stinger( "mus_perks_packa_sting" ); - player maps\mp\zombies\_zm_audio::create_and_play_dialog( "weapon_pickup", "upgrade_wait" ); - self disable_trigger(); + sound = "evt_bottle_dispense"; + playsoundatposition( sound, self.origin ); + self thread maps\mp\zombies\_zm_audio::play_jingle_or_stinger( "mus_perks_packa_sting" ); + player maps\mp\zombies\_zm_audio::create_and_play_dialog( "weapon_pickup", "upgrade_wait" ); + self disable_trigger(); self sethintstring( "" ); - if ( !( isdefined( upgrade_as_attachment ) && upgrade_as_attachment ) ) - player thread do_player_general_vox( "general", "pap_wait", 10, 100 ); - else - player thread do_player_general_vox( "general", "pap_wait2", 10, 100 ); + if ( !( isdefined( upgrade_as_attachment ) && upgrade_as_attachment ) ) + player thread do_player_general_vox( "general", "pap_wait", 10, 100 ); + else + player thread do_player_general_vox( "general", "pap_wait2", 10, 100 ); - player thread do_knuckle_crack(); - self.current_weapon = current_weapon; - upgrade_name = maps\mp\zombies\_zm_weapons::get_upgrade_weapon( current_weapon, upgrade_as_attachment ); - player third_person_weapon_upgrade( current_weapon, upgrade_name, packa_rollers, perk_machine, self ); - self enable_trigger(); - self sethintstring( &"ZOMBIE_GET_UPGRADED" ); + player thread do_knuckle_crack(); + self.current_weapon = current_weapon; + upgrade_name = maps\mp\zombies\_zm_weapons::get_upgrade_weapon( current_weapon, upgrade_as_attachment ); + player third_person_weapon_upgrade( current_weapon, upgrade_name, packa_rollers, perk_machine, self ); + self enable_trigger(); + self sethintstring( &"ZOMBIE_GET_UPGRADED" ); - if ( isdefined( player ) ) - { - self setinvisibletoall(); - self setvisibletoplayer( player ); - self thread wait_for_player_to_take( player, current_weapon, packa_timer, upgrade_as_attachment ); - } + if ( isdefined( player ) ) + { + self setinvisibletoall(); + self setvisibletoplayer( player ); + self thread wait_for_player_to_take( player, current_weapon, packa_timer, upgrade_as_attachment ); + } - self thread wait_for_timeout( current_weapon, packa_timer, player ); - self waittill_any( "pap_timeout", "pap_taken", "pap_player_disconnected" ); - self.current_weapon = ""; + self thread wait_for_timeout( current_weapon, packa_timer, player ); + self waittill_any( "pap_timeout", "pap_taken", "pap_player_disconnected" ); + self.current_weapon = ""; - if ( isdefined( self.worldgun ) && isdefined( self.worldgun.worldgundw ) ) - self.worldgun.worldgundw delete(); + if ( isdefined( self.worldgun ) && isdefined( self.worldgun.worldgundw ) ) + self.worldgun.worldgundw delete(); - if ( isdefined( self.worldgun ) ) - self.worldgun delete(); + if ( isdefined( self.worldgun ) ) + self.worldgun delete(); - if ( isdefined( level.zombiemode_reusing_pack_a_punch ) && level.zombiemode_reusing_pack_a_punch ) - self sethintstring( &"ZOMBIE_PERK_PACKAPUNCH_ATT", self.cost ); - else - self sethintstring( &"ZOMBIE_PERK_PACKAPUNCH", self.cost ); + if ( isdefined( level.zombiemode_reusing_pack_a_punch ) && level.zombiemode_reusing_pack_a_punch ) + self sethintstring( &"ZOMBIE_PERK_PACKAPUNCH_ATT", self.cost ); + else + self sethintstring( &"ZOMBIE_PERK_PACKAPUNCH", self.cost ); - self setvisibletoall(); - self.pack_player = undefined; - flag_clear( "pack_machine_in_use" ); - } + self setvisibletoall(); + self.pack_player = undefined; + flag_clear( "pack_machine_in_use" ); + } } destroy_weapon_in_blackout( player ) @@ -745,10 +745,10 @@ give_perk( perk, bought ) self.hasperkspecialtychugabud = 1; self notify( "perk_chugabud_activated" ); } - if ( perk == "specialty_additionalprimaryweapon" ) - { - self scripts\zm\replaced\_zm::restore_additionalprimaryweapon(); - } + if ( perk == "specialty_additionalprimaryweapon" ) + { + self scripts\zm\replaced\_zm::restore_additionalprimaryweapon(); + } if ( isDefined( level._custom_perks[ perk ] ) && isDefined( level._custom_perks[ perk ].player_thread_give ) ) { self thread [[ level._custom_perks[ perk ].player_thread_give ]](); @@ -800,27 +800,27 @@ perk_think( perk ) switch( perk ) { - case "specialty_armorvest": - self setmaxhealth( self.premaxhealth ); - break; - case "specialty_additionalprimaryweapon": - if ( result == perk_str ) - { - self maps\mp\zombies\_zm::take_additionalprimaryweapon(); - } - break; - case "specialty_deadshot": - if ( !is_true( level.disable_deadshot_clientfield ) ) - { - self setclientfieldtoplayer( "deadshot_perk", 0 ); - } - break; - case "specialty_deadshot_upgrade": - if ( !is_true( level.disable_deadshot_clientfield ) ) - { - self setclientfieldtoplayer( "deadshot_perk", 0 ); - } - break; + case "specialty_armorvest": + self setmaxhealth( self.premaxhealth ); + break; + case "specialty_additionalprimaryweapon": + if ( result == perk_str ) + { + self maps\mp\zombies\_zm::take_additionalprimaryweapon(); + } + break; + case "specialty_deadshot": + if ( !is_true( level.disable_deadshot_clientfield ) ) + { + self setclientfieldtoplayer( "deadshot_perk", 0 ); + } + break; + case "specialty_deadshot_upgrade": + if ( !is_true( level.disable_deadshot_clientfield ) ) + { + self setclientfieldtoplayer( "deadshot_perk", 0 ); + } + break; } if ( isDefined( level._custom_perks[ perk ] ) && isDefined( level._custom_perks[ perk ].player_thread_take ) ) { @@ -836,9 +836,9 @@ perk_think( perk ) { arrayremovevalue( self.perks_active, perk, 0 ); } - if ( isDefined( self.disabled_perks ) && isDefined( self.disabled_perks[perk] ) ) + if ( isDefined( self.disabled_perks ) && isDefined( self.disabled_perks[perk] ) ) { - self.disabled_perks[perk] = undefined; + self.disabled_perks[perk] = undefined; } self notify( "perk_lost" ); } @@ -921,44 +921,44 @@ perk_set_max_health_if_jugg( perk, set_premaxhealth, clamp_health_to_max_health set_perk_clientfield( perk, state ) { - switch ( perk ) - { - case "specialty_additionalprimaryweapon": - self setclientfieldtoplayer( "perk_additional_primary_weapon", state ); - break; - case "specialty_deadshot": - self setclientfieldtoplayer( "perk_dead_shot", state ); - break; - case "specialty_flakjacket": - self setclientfieldtoplayer( "perk_dive_to_nuke", state ); - break; - case "specialty_rof": - self setclientfieldtoplayer( "perk_double_tap", state ); - break; - case "specialty_armorvest": - self setclientfieldtoplayer( "perk_juggernaut", state ); - break; - case "specialty_movefaster": - self setclientfieldtoplayer( "perk_marathon", state ); - break; - case "specialty_quickrevive": - self setclientfieldtoplayer( "perk_quick_revive", state ); - break; - case "specialty_fastreload": - self setclientfieldtoplayer( "perk_sleight_of_hand", state ); - break; - case "specialty_scavenger": - self setclientfieldtoplayer( "perk_tombstone", state ); - break; - case "specialty_finalstand": - self setclientfieldtoplayer( "perk_chugabud", state ); - break; - default: - break; - } + switch ( perk ) + { + case "specialty_additionalprimaryweapon": + self setclientfieldtoplayer( "perk_additional_primary_weapon", state ); + break; + case "specialty_deadshot": + self setclientfieldtoplayer( "perk_dead_shot", state ); + break; + case "specialty_flakjacket": + self setclientfieldtoplayer( "perk_dive_to_nuke", state ); + break; + case "specialty_rof": + self setclientfieldtoplayer( "perk_double_tap", state ); + break; + case "specialty_armorvest": + self setclientfieldtoplayer( "perk_juggernaut", state ); + break; + case "specialty_movefaster": + self setclientfieldtoplayer( "perk_marathon", state ); + break; + case "specialty_quickrevive": + self setclientfieldtoplayer( "perk_quick_revive", state ); + break; + case "specialty_fastreload": + self setclientfieldtoplayer( "perk_sleight_of_hand", state ); + break; + case "specialty_scavenger": + self setclientfieldtoplayer( "perk_tombstone", state ); + break; + case "specialty_finalstand": + self setclientfieldtoplayer( "perk_chugabud", state ); + break; + default: + break; + } - if ( isdefined( level._custom_perks[perk] ) && isdefined( level._custom_perks[perk].clientfield_set ) ) - self [[ level._custom_perks[perk].clientfield_set ]]( state ); + if ( isdefined( level._custom_perks[perk] ) && isdefined( level._custom_perks[perk].clientfield_set ) ) + self [[ level._custom_perks[perk].clientfield_set ]]( state ); } initialize_custom_perk_arrays() @@ -1013,7 +1013,7 @@ initialize_custom_perk_arrays() struct.scr_zm_map_start_location = "processing"; move_perk_machine("zm_buried", "street", "specialty_fastreload", struct); - if(getDvar("g_gametype") == "zgrief" && getDvarIntDefault("ui_gametype_pro", 0)) + if(getDvar("g_gametype") == "zgrief" && getDvarIntDefault("ui_gametype_pro", 0)) { remove_pap_machine(); } @@ -1139,146 +1139,146 @@ turn_movefaster_on() turn_tombstone_on() { - level endon( "tombstone_removed" ); + level endon( "tombstone_removed" ); - while ( true ) - { - machine = getentarray( "vending_tombstone", "targetname" ); - machine_triggers = getentarray( "vending_tombstone", "target" ); + while ( true ) + { + machine = getentarray( "vending_tombstone", "targetname" ); + machine_triggers = getentarray( "vending_tombstone", "target" ); - for ( i = 0; i < machine.size; i++ ) - machine[i] setmodel( level.machine_assets["tombstone"].off_model ); + for ( i = 0; i < machine.size; i++ ) + machine[i] setmodel( level.machine_assets["tombstone"].off_model ); - level thread do_initial_power_off_callback( machine, "tombstone" ); - array_thread( machine_triggers, ::set_power_on, 0 ); + level thread do_initial_power_off_callback( machine, "tombstone" ); + array_thread( machine_triggers, ::set_power_on, 0 ); - level waittill( "tombstone_on" ); + level waittill( "tombstone_on" ); - for ( i = 0; i < machine.size; i++ ) - { - machine[i] setmodel( level.machine_assets["tombstone"].on_model ); - machine[i] vibrate( vectorscale( ( 0, -1, 0 ), 100.0 ), 0.3, 0.4, 3 ); - machine[i] playsound( "zmb_perks_power_on" ); - machine[i] thread perk_fx( "tombstone_light" ); - machine[i] thread play_loop_on_machine(); - } + for ( i = 0; i < machine.size; i++ ) + { + machine[i] setmodel( level.machine_assets["tombstone"].on_model ); + machine[i] vibrate( vectorscale( ( 0, -1, 0 ), 100.0 ), 0.3, 0.4, 3 ); + machine[i] playsound( "zmb_perks_power_on" ); + machine[i] thread perk_fx( "tombstone_light" ); + machine[i] thread play_loop_on_machine(); + } - level notify( "specialty_scavenger_power_on" ); - array_thread( machine_triggers, ::set_power_on, 1 ); + level notify( "specialty_scavenger_power_on" ); + array_thread( machine_triggers, ::set_power_on, 1 ); - if ( isdefined( level.machine_assets["tombstone"].power_on_callback ) ) - array_thread( machine, level.machine_assets["tombstone"].power_on_callback ); + if ( isdefined( level.machine_assets["tombstone"].power_on_callback ) ) + array_thread( machine, level.machine_assets["tombstone"].power_on_callback ); - level waittill( "tombstone_off" ); + level waittill( "tombstone_off" ); - if ( isdefined( level.machine_assets["tombstone"].power_off_callback ) ) - array_thread( machine, level.machine_assets["tombstone"].power_off_callback ); + if ( isdefined( level.machine_assets["tombstone"].power_off_callback ) ) + array_thread( machine, level.machine_assets["tombstone"].power_off_callback ); - array_thread( machine, ::turn_perk_off ); - players = get_players(); - } + array_thread( machine, ::turn_perk_off ); + players = get_players(); + } } wait_for_player_to_take( player, weapon, packa_timer, upgrade_as_attachment ) { - current_weapon = self.current_weapon; - upgrade_name = self.upgrade_name; - upgrade_weapon = upgrade_name; - self endon( "pap_timeout" ); - level endon( "Pack_A_Punch_off" ); + current_weapon = self.current_weapon; + upgrade_name = self.upgrade_name; + upgrade_weapon = upgrade_name; + self endon( "pap_timeout" ); + level endon( "Pack_A_Punch_off" ); - while ( true ) - { - packa_timer playloopsound( "zmb_perks_packa_ticktock" ); + while ( true ) + { + packa_timer playloopsound( "zmb_perks_packa_ticktock" ); - self waittill( "trigger", trigger_player ); + self waittill( "trigger", trigger_player ); - if ( isdefined( level.pap_grab_by_anyone ) && level.pap_grab_by_anyone ) - player = trigger_player; + if ( isdefined( level.pap_grab_by_anyone ) && level.pap_grab_by_anyone ) + player = trigger_player; - packa_timer stoploopsound( 0.05 ); + packa_timer stoploopsound( 0.05 ); - if ( trigger_player == player ) - { - player maps\mp\zombies\_zm_stats::increment_client_stat( "pap_weapon_grabbed" ); - player maps\mp\zombies\_zm_stats::increment_player_stat( "pap_weapon_grabbed" ); - current_weapon = player getcurrentweapon(); + if ( trigger_player == player ) + { + player maps\mp\zombies\_zm_stats::increment_client_stat( "pap_weapon_grabbed" ); + player maps\mp\zombies\_zm_stats::increment_player_stat( "pap_weapon_grabbed" ); + 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() ) - { - maps\mp\_demo::bookmark( "zm_player_grabbed_packapunch", gettime(), player ); - self notify( "pap_taken" ); - player notify( "pap_taken" ); - player.pap_used = 1; + 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() ) + { + maps\mp\_demo::bookmark( "zm_player_grabbed_packapunch", gettime(), player ); + self notify( "pap_taken" ); + player notify( "pap_taken" ); + player.pap_used = 1; - if ( !( isdefined( upgrade_as_attachment ) && upgrade_as_attachment ) ) - player thread do_player_general_vox( "general", "pap_arm", 15, 100 ); - else - player thread do_player_general_vox( "general", "pap_arm2", 15, 100 ); + if ( !( isdefined( upgrade_as_attachment ) && upgrade_as_attachment ) ) + player thread do_player_general_vox( "general", "pap_arm", 15, 100 ); + else + player thread do_player_general_vox( "general", "pap_arm2", 15, 100 ); - weapon_limit = get_player_weapon_limit( player ); - player maps\mp\zombies\_zm_weapons::take_fallback_weapon(); - primaries = player getweaponslistprimaries(); + weapon_limit = get_player_weapon_limit( player ); + player maps\mp\zombies\_zm_weapons::take_fallback_weapon(); + primaries = player getweaponslistprimaries(); - if ( isdefined( primaries ) && primaries.size >= weapon_limit ) - player maps\mp\zombies\_zm_weapons::weapon_give( upgrade_weapon ); - else - { - player giveweapon( upgrade_weapon, 0, player maps\mp\zombies\_zm_weapons::get_pack_a_punch_weapon_options( upgrade_weapon ) ); - player givestartammo( upgrade_weapon ); - player notify("weapon_ammo_change"); - } + if ( isdefined( primaries ) && primaries.size >= weapon_limit ) + player maps\mp\zombies\_zm_weapons::weapon_give( upgrade_weapon ); + else + { + player giveweapon( upgrade_weapon, 0, player maps\mp\zombies\_zm_weapons::get_pack_a_punch_weapon_options( upgrade_weapon ) ); + player givestartammo( upgrade_weapon ); + player notify("weapon_ammo_change"); + } - player switchtoweapon( upgrade_weapon ); + player switchtoweapon( upgrade_weapon ); - if ( isdefined( player.restore_ammo ) && player.restore_ammo ) - { - new_clip = player.restore_clip + weaponclipsize( upgrade_weapon ) - player.restore_clip_size; - new_stock = player.restore_stock + weaponmaxammo( upgrade_weapon ) - player.restore_max; - player setweaponammostock( upgrade_weapon, new_stock ); - player setweaponammoclip( upgrade_weapon, new_clip ); - } + if ( isdefined( player.restore_ammo ) && player.restore_ammo ) + { + new_clip = player.restore_clip + weaponclipsize( upgrade_weapon ) - player.restore_clip_size; + new_stock = player.restore_stock + weaponmaxammo( upgrade_weapon ) - player.restore_max; + player setweaponammostock( upgrade_weapon, new_stock ); + player setweaponammoclip( upgrade_weapon, new_clip ); + } - player.restore_ammo = undefined; - player.restore_clip = undefined; - player.restore_stock = undefined; - player.restore_max = undefined; - player.restore_clip_size = undefined; - player maps\mp\zombies\_zm_weapons::play_weapon_vo( upgrade_weapon ); - return; - } - } + player.restore_ammo = undefined; + player.restore_clip = undefined; + player.restore_stock = undefined; + player.restore_max = undefined; + player.restore_clip_size = undefined; + player maps\mp\zombies\_zm_weapons::play_weapon_vo( upgrade_weapon ); + return; + } + } - wait 0.05; - } + wait 0.05; + } } check_player_has_perk( perk ) { - self endon( "death" ); + self endon( "death" ); - dist = 16384; + dist = 16384; - while ( true ) - { - players = get_players(); + while ( true ) + { + players = get_players(); - for ( i = 0; i < players.size; i++ ) - { - if ( distancesquared( players[i].origin, self.origin ) < dist ) - { - if ( !players[i] hasperk( perk ) && !players[i] has_perk_paused( perk ) && !players[i] in_revive_trigger() && !is_equipment_that_blocks_purchase( players[i] getcurrentweapon() ) && !players[i] hacker_active() && !players[i].is_drinking ) - { - self setinvisibletoplayer( players[i], 0 ); - continue; - } + for ( i = 0; i < players.size; i++ ) + { + if ( distancesquared( players[i].origin, self.origin ) < dist ) + { + if ( !players[i] hasperk( perk ) && !players[i] has_perk_paused( perk ) && !players[i] in_revive_trigger() && !is_equipment_that_blocks_purchase( players[i] getcurrentweapon() ) && !players[i] hacker_active() && !players[i].is_drinking ) + { + self setinvisibletoplayer( players[i], 0 ); + continue; + } - self setinvisibletoplayer( players[i], 1 ); - } - } + self setinvisibletoplayer( players[i], 1 ); + } + } - wait 0.05; - } + wait 0.05; + } } perk_pause( perk ) diff --git a/scripts/zm/replaced/_zm_pers_upgrades.gsc b/scripts/zm/replaced/_zm_pers_upgrades.gsc index 5f48d11d..d0611753 100644 --- a/scripts/zm/replaced/_zm_pers_upgrades.gsc +++ b/scripts/zm/replaced/_zm_pers_upgrades.gsc @@ -10,5 +10,5 @@ is_pers_system_disabled() { - return true; + return true; } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_pers_upgrades_system.gsc b/scripts/zm/replaced/_zm_pers_upgrades_system.gsc index 555578b5..4199f4eb 100644 --- a/scripts/zm/replaced/_zm_pers_upgrades_system.gsc +++ b/scripts/zm/replaced/_zm_pers_upgrades_system.gsc @@ -4,5 +4,5 @@ check_pers_upgrade( pers_upgrade ) { - return 0; + return 0; } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_powerup_zombie_blood.gsc b/scripts/zm/replaced/_zm_powerup_zombie_blood.gsc index 965755ba..8ea9752e 100644 --- a/scripts/zm/replaced/_zm_powerup_zombie_blood.gsc +++ b/scripts/zm/replaced/_zm_powerup_zombie_blood.gsc @@ -7,124 +7,124 @@ zombie_blood_powerup( m_powerup, e_player ) { - e_player notify( "zombie_blood" ); - e_player endon( "zombie_blood" ); - e_player endon( "disconnect" ); - e_player thread powerup_vo( "zombie_blood" ); - e_player._show_solo_hud = 1; + e_player notify( "zombie_blood" ); + e_player endon( "zombie_blood" ); + e_player endon( "disconnect" ); + e_player thread powerup_vo( "zombie_blood" ); + e_player._show_solo_hud = 1; - if (is_true(e_player.zombie_vars["zombie_powerup_zombie_blood_on"])) - { - e_player.zombie_vars["zombie_powerup_zombie_blood_time"] += 30; - } - else - { - e_player.zombie_vars["zombie_powerup_zombie_blood_time"] = 30; - } + if (is_true(e_player.zombie_vars["zombie_powerup_zombie_blood_on"])) + { + e_player.zombie_vars["zombie_powerup_zombie_blood_time"] += 30; + } + else + { + e_player.zombie_vars["zombie_powerup_zombie_blood_time"] = 30; + } - e_player.zombie_vars["zombie_powerup_zombie_blood_on"] = 1; - 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( "overlay", "zm_powerup_zombie_blood_overlay", e_player ); - e_player setclientfield( "player_zombie_blood_fx", 1 ); - __new = []; + e_player.zombie_vars["zombie_powerup_zombie_blood_on"] = 1; + 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( "overlay", "zm_powerup_zombie_blood_overlay", e_player ); + e_player setclientfield( "player_zombie_blood_fx", 1 ); + __new = []; - foreach ( __key, __value in level.a_zombie_blood_entities ) - { - if ( isdefined( __value ) ) - { - if ( isstring( __key ) ) - { - __new[__key] = __value; - continue; - } + foreach ( __key, __value in level.a_zombie_blood_entities ) + { + if ( isdefined( __value ) ) + { + if ( isstring( __key ) ) + { + __new[__key] = __value; + continue; + } - __new[__new.size] = __value; - } - } + __new[__new.size] = __value; + } + } - level.a_zombie_blood_entities = __new; + level.a_zombie_blood_entities = __new; - foreach ( e_zombie_blood in level.a_zombie_blood_entities ) - { - if ( isdefined( e_zombie_blood.e_unique_player ) ) - { - if ( e_zombie_blood.e_unique_player == e_player ) - e_zombie_blood setvisibletoplayer( e_player ); + foreach ( e_zombie_blood in level.a_zombie_blood_entities ) + { + if ( isdefined( e_zombie_blood.e_unique_player ) ) + { + if ( e_zombie_blood.e_unique_player == 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 ) ) - { - v_origin = e_player gettagorigin( "J_Eyeball_LE" ); - v_angles = e_player gettagangles( "J_Eyeball_LE" ); - m_fx = spawn( "script_model", v_origin ); - m_fx setmodel( "tag_origin" ); - m_fx.angles = v_angles; - m_fx linkto( e_player, "J_Eyeball_LE", ( 0, 0, 0 ), ( 0, 0, 0 ) ); - m_fx thread fx_disconnect_watch( e_player ); - playfxontag( level._effect["zombie_blood"], m_fx, "tag_origin" ); - e_player.m_fx = m_fx; - e_player.m_fx playloopsound( "zmb_zombieblood_3rd_loop", 1 ); + if ( !isdefined( e_player.m_fx ) ) + { + v_origin = e_player gettagorigin( "J_Eyeball_LE" ); + v_angles = e_player gettagangles( "J_Eyeball_LE" ); + m_fx = spawn( "script_model", v_origin ); + m_fx setmodel( "tag_origin" ); + m_fx.angles = v_angles; + m_fx linkto( e_player, "J_Eyeball_LE", ( 0, 0, 0 ), ( 0, 0, 0 ) ); + m_fx thread fx_disconnect_watch( e_player ); + playfxontag( level._effect["zombie_blood"], m_fx, "tag_origin" ); + e_player.m_fx = m_fx; + e_player.m_fx playloopsound( "zmb_zombieblood_3rd_loop", 1 ); - if ( isdefined( level.str_zombie_blood_model ) ) - { - e_player.hero_model = e_player.model; - e_player setmodel( level.str_zombie_blood_model ); - } - } + if ( isdefined( level.str_zombie_blood_model ) ) + { + e_player.hero_model = e_player.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 ) - { - wait 0.05; - e_player.zombie_vars["zombie_powerup_zombie_blood_time"] -= 0.05; - } + while ( e_player.zombie_vars["zombie_powerup_zombie_blood_time"] >= 0 ) + { + wait 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 ) ) - e_player playsound( "vox_plr_" + e_player.characterindex + "_exert_grunt_" + randomintrange( 0, 3 ) ); + if ( isdefined( e_player.characterindex ) ) + e_player playsound( "vox_plr_" + e_player.characterindex + "_exert_grunt_" + randomintrange( 0, 3 ) ); - 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( "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_time"] = 30; - e_player._show_solo_hud = 0; - e_player setclientfield( "player_zombie_blood_fx", 0 ); + 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( "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_time"] = 30; + e_player._show_solo_hud = 0; + e_player setclientfield( "player_zombie_blood_fx", 0 ); e_player.early_exit = undefined; - __new = []; + __new = []; - foreach ( __key, __value in level.a_zombie_blood_entities ) - { - if ( isdefined( __value ) ) - { - if ( isstring( __key ) ) - { - __new[__key] = __value; - continue; - } + foreach ( __key, __value in level.a_zombie_blood_entities ) + { + if ( isdefined( __value ) ) + { + if ( isstring( __key ) ) + { + __new[__key] = __value; + continue; + } - __new[__new.size] = __value; - } - } + __new[__new.size] = __value; + } + } - level.a_zombie_blood_entities = __new; + level.a_zombie_blood_entities = __new; - foreach ( e_zombie_blood in level.a_zombie_blood_entities ) - e_zombie_blood setinvisibletoplayer( e_player ); + foreach ( e_zombie_blood in level.a_zombie_blood_entities ) + e_zombie_blood setinvisibletoplayer( e_player ); - if ( isdefined( e_player.hero_model ) ) - { - e_player setmodel( e_player.hero_model ); - e_player.hero_model = undefined; - } + if ( isdefined( e_player.hero_model ) ) + { + e_player setmodel( e_player.hero_model ); + e_player.hero_model = undefined; + } } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_powerups.gsc b/scripts/zm/replaced/_zm_powerups.gsc index 503177ff..c91f51c6 100644 --- a/scripts/zm/replaced/_zm_powerups.gsc +++ b/scripts/zm/replaced/_zm_powerups.gsc @@ -4,81 +4,81 @@ powerup_drop( drop_point ) { - if ( level.powerup_drop_count >= level.zombie_vars["zombie_powerup_drop_max_per_round"] ) - { - return; - } + if ( level.powerup_drop_count >= level.zombie_vars["zombie_powerup_drop_max_per_round"] ) + { + return; + } - if ( !isdefined( level.zombie_include_powerups ) || level.zombie_include_powerups.size == 0 ) - return; + if ( !isdefined( level.zombie_include_powerups ) || level.zombie_include_powerups.size == 0 ) + return; - rand_drop = randomint( 100 ); + rand_drop = randomint( 100 ); powerup_chance = 2; - if ( rand_drop >= powerup_chance ) - { - if ( !level.zombie_vars["zombie_drop_item"] ) - return; + if ( rand_drop >= powerup_chance ) + { + if ( !level.zombie_vars["zombie_drop_item"] ) + return; - debug = "score"; - } - else - debug = "random"; + debug = "score"; + } + else + debug = "random"; - playable_area = getentarray( "player_volume", "script_noteworthy" ); - 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 ) ); - valid_drop = 0; + playable_area = getentarray( "player_volume", "script_noteworthy" ); + 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 ) ); + valid_drop = 0; - for ( i = 0; i < playable_area.size; i++ ) - { - if ( powerup istouching( playable_area[i] ) ) - valid_drop = 1; - } + for ( i = 0; i < playable_area.size; i++ ) + { + if ( powerup istouching( playable_area[i] ) ) + valid_drop = 1; + } - if ( valid_drop && level.rare_powerups_active ) - { - pos = ( drop_point[0], drop_point[1], drop_point[2] + 42 ); + if ( valid_drop && level.rare_powerups_active ) + { + pos = ( drop_point[0], drop_point[1], drop_point[2] + 42 ); - if ( check_for_rare_drop_override( pos ) ) - { - level.zombie_vars["zombie_drop_item"] = 0; - valid_drop = 0; - } - } + if ( check_for_rare_drop_override( pos ) ) + { + level.zombie_vars["zombie_drop_item"] = 0; + valid_drop = 0; + } + } - if ( !valid_drop ) - { - level.powerup_drop_count--; - powerup delete(); - return; - } + if ( !valid_drop ) + { + level.powerup_drop_count--; + powerup delete(); + return; + } - powerup powerup_setup(); - print_powerup_drop( powerup.powerup_name, debug ); - powerup thread powerup_timeout(); - powerup thread powerup_wobble(); - powerup thread powerup_grab(); - powerup thread powerup_move(); - powerup thread powerup_emp(); - level.zombie_vars["zombie_drop_item"] = 0; - level notify( "powerup_dropped", powerup ); + powerup powerup_setup(); + print_powerup_drop( powerup.powerup_name, debug ); + powerup thread powerup_timeout(); + powerup thread powerup_wobble(); + powerup thread powerup_grab(); + powerup thread powerup_move(); + powerup thread powerup_emp(); + level.zombie_vars["zombie_drop_item"] = 0; + level notify( "powerup_dropped", powerup ); } get_next_powerup() { - powerup = level.zombie_powerup_array[level.zombie_powerup_index]; - level.zombie_powerup_index++; + powerup = level.zombie_powerup_array[level.zombie_powerup_index]; + level.zombie_powerup_index++; - if ( level.zombie_powerup_index >= level.zombie_powerup_array.size ) - { - level.zombie_powerup_index = 0; - randomize_powerups(); + if ( level.zombie_powerup_index >= level.zombie_powerup_array.size ) + { + level.zombie_powerup_index = 0; + randomize_powerups(); level thread play_fx_on_powerup_dropped(); - } + } - return powerup; + return powerup; } play_fx_on_powerup_dropped() @@ -104,195 +104,195 @@ play_fx_on_powerup_dropped() powerup_grab( powerup_team ) { - if ( isdefined( self ) && self.zombie_grabbable ) - { - self thread powerup_zombie_grab( powerup_team ); - return; - } + if ( isdefined( self ) && self.zombie_grabbable ) + { + self thread powerup_zombie_grab( powerup_team ); + return; + } - self endon( "powerup_timedout" ); - self endon( "powerup_grabbed" ); - range_squared = 4096; + self endon( "powerup_timedout" ); + self endon( "powerup_grabbed" ); + range_squared = 4096; - while ( isdefined( self ) ) - { - players = array_randomize(get_players()); + while ( isdefined( self ) ) + { + players = array_randomize(get_players()); - 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() ) ) - continue; + 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() ) ) + 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() ) - 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() ) + continue; if ( players[i].sessionstate != "playing" ) continue; - ignore_range = 0; + ignore_range = 0; - if ( isdefined( players[i].ignore_range_powerup ) && players[i].ignore_range_powerup == self ) - { - players[i].ignore_range_powerup = undefined; - ignore_range = 1; - } + if ( isdefined( players[i].ignore_range_powerup ) && players[i].ignore_range_powerup == self ) + { + players[i].ignore_range_powerup = undefined; + ignore_range = 1; + } - if ( distancesquared( players[i] getCentroid(), self.origin ) < range_squared || ignore_range ) - { - if ( isdefined( level._powerup_grab_check ) ) - { - if ( !self [[ level._powerup_grab_check ]]( players[i] ) ) - continue; - } + if ( distancesquared( players[i] getCentroid(), self.origin ) < range_squared || ignore_range ) + { + if ( isdefined( level._powerup_grab_check ) ) + { + if ( !self [[ level._powerup_grab_check ]]( players[i] ) ) + continue; + } self.power_up_grab_player = players[i]; - if ( isdefined( level.zombie_powerup_grab_func ) ) - level thread [[ level.zombie_powerup_grab_func ]](); - else - { - switch ( self.powerup_name ) - { - case "nuke": - level thread nuke_powerup( self, players[i].team ); - players[i] thread powerup_vo( "nuke" ); - zombies = getaiarray( level.zombie_team ); - players[i].zombie_nuked = arraysort( zombies, self.origin ); - players[i] notify( "nuke_triggered" ); - break; - case "full_ammo": - level thread full_ammo_powerup( self, players[i] ); - players[i] thread powerup_vo( "full_ammo" ); - break; - case "double_points": - level thread double_points_powerup( self, players[i] ); - players[i] thread powerup_vo( "double_points" ); - break; - case "insta_kill": - level thread insta_kill_powerup( self, players[i] ); - players[i] thread powerup_vo( "insta_kill" ); - break; - case "carpenter": - if ( is_classic() ) - players[i] thread maps\mp\zombies\_zm_pers_upgrades::persistent_carpenter_ability_check(); + if ( isdefined( level.zombie_powerup_grab_func ) ) + level thread [[ level.zombie_powerup_grab_func ]](); + else + { + switch ( self.powerup_name ) + { + case "nuke": + level thread nuke_powerup( self, players[i].team ); + players[i] thread powerup_vo( "nuke" ); + zombies = getaiarray( level.zombie_team ); + players[i].zombie_nuked = arraysort( zombies, self.origin ); + players[i] notify( "nuke_triggered" ); + break; + case "full_ammo": + level thread full_ammo_powerup( self, players[i] ); + players[i] thread powerup_vo( "full_ammo" ); + break; + case "double_points": + level thread double_points_powerup( self, players[i] ); + players[i] thread powerup_vo( "double_points" ); + break; + case "insta_kill": + level thread insta_kill_powerup( self, players[i] ); + players[i] thread powerup_vo( "insta_kill" ); + break; + case "carpenter": + if ( is_classic() ) + players[i] thread maps\mp\zombies\_zm_pers_upgrades::persistent_carpenter_ability_check(); - if ( isdefined( level.use_new_carpenter_func ) ) - level thread [[ level.use_new_carpenter_func ]]( self.origin ); - else - level thread start_carpenter( self.origin ); + if ( isdefined( level.use_new_carpenter_func ) ) + level thread [[ level.use_new_carpenter_func ]]( self.origin ); + else + level thread start_carpenter( self.origin ); - players[i] thread powerup_vo( "carpenter" ); - break; - case "fire_sale": - level thread start_fire_sale( self ); - players[i] thread powerup_vo( "firesale" ); - break; - case "bonfire_sale": - level thread start_bonfire_sale( self ); - players[i] thread powerup_vo( "firesale" ); - break; - case "minigun": - level thread minigun_weapon_powerup( players[i] ); - players[i] thread powerup_vo( "minigun" ); - break; - case "free_perk": - level thread free_perk_powerup( self ); - break; - case "tesla": - level thread tesla_weapon_powerup( players[i] ); - players[i] thread powerup_vo( "tesla" ); - break; - case "random_weapon": - if ( !level random_weapon_powerup( self, players[i] ) ) - continue; - break; - case "bonus_points_player": - level thread bonus_points_player_powerup( self, players[i] ); - players[i] thread powerup_vo( "bonus_points_solo" ); - break; - case "bonus_points_team": - level thread bonus_points_team_powerup( self ); - players[i] thread powerup_vo( "bonus_points_team" ); - break; - case "teller_withdrawl": - level thread teller_withdrawl( self, players[i] ); - break; - default: - if ( isdefined( level._zombiemode_powerup_grab ) ) - level thread [[ level._zombiemode_powerup_grab ]]( self, players[i] ); - break; - } - } + players[i] thread powerup_vo( "carpenter" ); + break; + case "fire_sale": + level thread start_fire_sale( self ); + players[i] thread powerup_vo( "firesale" ); + break; + case "bonfire_sale": + level thread start_bonfire_sale( self ); + players[i] thread powerup_vo( "firesale" ); + break; + case "minigun": + level thread minigun_weapon_powerup( players[i] ); + players[i] thread powerup_vo( "minigun" ); + break; + case "free_perk": + level thread free_perk_powerup( self ); + break; + case "tesla": + level thread tesla_weapon_powerup( players[i] ); + players[i] thread powerup_vo( "tesla" ); + break; + case "random_weapon": + if ( !level random_weapon_powerup( self, players[i] ) ) + continue; + break; + case "bonus_points_player": + level thread bonus_points_player_powerup( self, players[i] ); + players[i] thread powerup_vo( "bonus_points_solo" ); + break; + case "bonus_points_team": + level thread bonus_points_team_powerup( self ); + players[i] thread powerup_vo( "bonus_points_team" ); + break; + case "teller_withdrawl": + level thread teller_withdrawl( self, players[i] ); + break; + default: + if ( isdefined( level._zombiemode_powerup_grab ) ) + level thread [[ level._zombiemode_powerup_grab ]]( self, players[i] ); + 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 ) ) - { - 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_client_stat( self.powerup_name + "_pickedup" ); - players[i] maps\mp\zombies\_zm_stats::increment_player_stat( self.powerup_name + "_pickedup" ); - } + 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_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_player_stat( self.powerup_name + "_pickedup" ); + } - if ( self.solo ) - { - playfx( level._effect["powerup_grabbed_solo"], self.origin ); - playfx( level._effect["powerup_grabbed_wave_solo"], self.origin ); - } - else if ( self.caution ) - { - playfx( level._effect["powerup_grabbed_caution"], self.origin ); - playfx( level._effect["powerup_grabbed_wave_caution"], self.origin ); - } - else - { - playfx( level._effect["powerup_grabbed"], self.origin ); - playfx( level._effect["powerup_grabbed_wave"], self.origin ); - } + if ( self.solo ) + { + playfx( level._effect["powerup_grabbed_solo"], self.origin ); + playfx( level._effect["powerup_grabbed_wave_solo"], self.origin ); + } + else if ( self.caution ) + { + playfx( level._effect["powerup_grabbed_caution"], self.origin ); + playfx( level._effect["powerup_grabbed_wave_caution"], self.origin ); + } + else + { + playfx( level._effect["powerup_grabbed"], self.origin ); + playfx( level._effect["powerup_grabbed_wave"], self.origin ); + } - if ( isdefined( self.stolen ) && self.stolen ) - level notify( "monkey_see_monkey_dont_achieved" ); + if ( isdefined( self.stolen ) && self.stolen ) + level notify( "monkey_see_monkey_dont_achieved" ); - if ( isdefined( self.grabbed_level_notify ) ) - level notify( self.grabbed_level_notify ); + if ( isdefined( self.grabbed_level_notify ) ) + level notify( self.grabbed_level_notify ); - self.claimed = 1; - wait 0.1; - playsoundatposition( "zmb_powerup_grabbed", self.origin ); - self stoploopsound(); - self hide(); + self.claimed = 1; + wait 0.1; + playsoundatposition( "zmb_powerup_grabbed", self.origin ); + self stoploopsound(); + self hide(); - if ( self.powerup_name != "fire_sale" ) - { - if ( isdefined( self.power_up_grab_player ) ) - { - if ( isdefined( level.powerup_intro_vox ) ) - { - level thread [[ level.powerup_intro_vox ]]( self ); - return; - } - else if ( isdefined( level.powerup_vo_available ) ) - { - can_say_vo = [[ level.powerup_vo_available ]](); + if ( self.powerup_name != "fire_sale" ) + { + if ( isdefined( self.power_up_grab_player ) ) + { + if ( isdefined( level.powerup_intro_vox ) ) + { + level thread [[ level.powerup_intro_vox ]]( self ); + return; + } + else if ( isdefined( level.powerup_vo_available ) ) + { + can_say_vo = [[ level.powerup_vo_available ]](); - if ( !can_say_vo ) - { - self powerup_delete(); - self notify( "powerup_grabbed" ); - return; - } - } - } - } + if ( !can_say_vo ) + { + self powerup_delete(); + self notify( "powerup_grabbed" ); + return; + } + } + } + } - level thread maps\mp\zombies\_zm_audio_announcer::leaderdialog( self.powerup_name, self.power_up_grab_player.pers["team"] ); - self powerup_delete(); - self notify( "powerup_grabbed" ); - } - } + level thread maps\mp\zombies\_zm_audio_announcer::leaderdialog( self.powerup_name, self.power_up_grab_player.pers["team"] ); + self powerup_delete(); + self notify( "powerup_grabbed" ); + } + } - wait 0.1; - } + wait 0.1; + } } full_ammo_powerup( drop_item, player ) @@ -390,32 +390,32 @@ full_ammo_powerup( drop_item, player ) full_ammo_on_hud( drop_item, player_team ) { - self endon( "disconnect" ); - 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.sort = 0.5; - hudelem.alpha = 0; - hudelem fadeovertime( 0.5 ); - hudelem.alpha = 1; + self endon( "disconnect" ); + 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.sort = 0.5; + hudelem.alpha = 0; + hudelem fadeovertime( 0.5 ); + hudelem.alpha = 1; - if ( isdefined( drop_item ) ) - hudelem.label = drop_item.hint; + if ( isdefined( drop_item ) ) + 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 ) { - players = get_players( player_team ); - players[0] playsoundtoteam( "zmb_full_ammo", player_team ); - wait 0.5; - move_fade_time = 1.5; - self fadeovertime( move_fade_time ); - self moveovertime( move_fade_time ); - self.y = 270; - self.alpha = 0; - wait( move_fade_time ); - self destroyelem(); + players = get_players( player_team ); + players[0] playsoundtoteam( "zmb_full_ammo", player_team ); + wait 0.5; + move_fade_time = 1.5; + self fadeovertime( move_fade_time ); + self moveovertime( move_fade_time ); + self.y = 270; + self.alpha = 0; + wait( move_fade_time ); + self destroyelem(); } empty_clip_powerup( drop_item, player ) @@ -495,48 +495,48 @@ nuke_powerup( drop_item, player_team ) zombies_nuked = []; for ( i = 0; i < zombies.size; i++ ) - { - if ( isdefined( zombies[i].ignore_nuke ) && zombies[i].ignore_nuke ) - continue; + { + if ( isdefined( zombies[i].ignore_nuke ) && zombies[i].ignore_nuke ) + continue; - if ( isdefined( zombies[i].marked_for_death ) && zombies[i].marked_for_death ) - continue; + if ( isdefined( zombies[i].marked_for_death ) && zombies[i].marked_for_death ) + continue; - if ( isdefined( zombies[i].nuke_damage_func ) ) - { - zombies[i] thread [[ zombies[i].nuke_damage_func ]](); - continue; - } + if ( isdefined( zombies[i].nuke_damage_func ) ) + { + zombies[i] thread [[ zombies[i].nuke_damage_func ]](); + continue; + } - if ( is_magic_bullet_shield_enabled( zombies[i] ) ) - continue; + if ( is_magic_bullet_shield_enabled( zombies[i] ) ) + continue; - zombies[i].marked_for_death = 1; - zombies[i].nuked = 1; - zombies_nuked[zombies_nuked.size] = zombies[i]; - } + zombies[i].marked_for_death = 1; + zombies[i].nuked = 1; + zombies_nuked[zombies_nuked.size] = zombies[i]; + } for ( i = 0; i < zombies_nuked.size; i++ ) - { - if ( !isdefined( zombies_nuked[i] ) ) - continue; + { + if ( !isdefined( zombies_nuked[i] ) ) + continue; - if ( is_magic_bullet_shield_enabled( zombies_nuked[i] ) ) - continue; + if ( is_magic_bullet_shield_enabled( zombies_nuked[i] ) ) + continue; - if ( i < 5 && !zombies_nuked[i].isdog ) - zombies_nuked[i] thread maps\mp\animscripts\zm_death::flame_death_fx(); + if ( i < 5 && !zombies_nuked[i].isdog ) + zombies_nuked[i] thread maps\mp\animscripts\zm_death::flame_death_fx(); - if ( !zombies_nuked[i].isdog ) - { - if ( !( isdefined( zombies_nuked[i].no_gib ) && zombies_nuked[i].no_gib ) ) - zombies_nuked[i] maps\mp\zombies\_zm_spawner::zombie_head_gib(); + if ( !zombies_nuked[i].isdog ) + { + 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] playsound( "evt_nuked" ); - } + zombies_nuked[i] playsound( "evt_nuked" ); + } zombies_nuked[i] dodamage( zombies_nuked[i].health + 666, zombies_nuked[i].origin ); - } + } players = get_players( player_team ); for ( i = 0; i < players.size; i++ ) @@ -779,20 +779,20 @@ start_fire_sale( item ) { 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"] ) ) - { - level.zombie_vars["zombie_powerup_fire_sale_time"] += 30; - return; - } + 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; + return; + } - level notify( "powerup fire sale" ); - level endon( "powerup fire sale" ); - level.zombie_vars["zombie_powerup_fire_sale_on"] = 1; - level thread toggle_fire_sale_on(); + level notify( "powerup fire sale" ); + level endon( "powerup fire sale" ); + level.zombie_vars["zombie_powerup_fire_sale_on"] = 1; + 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 ) - wait 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; - level.zombie_vars["zombie_powerup_fire_sale_on"] = 0; - level notify( "fire_sale_off" ); + level.zombie_vars["zombie_powerup_fire_sale_on"] = 0; + level notify( "fire_sale_off" ); } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_riotshield.gsc b/scripts/zm/replaced/_zm_riotshield.gsc index fd4c6b58..f2460662 100644 --- a/scripts/zm/replaced/_zm_riotshield.gsc +++ b/scripts/zm/replaced/_zm_riotshield.gsc @@ -9,139 +9,139 @@ doriotshielddeploy( origin, angles ) { - self endon( "death" ); - self endon( "disconnect" ); - self endon( "start_riotshield_deploy" ); - self notify( "deployed_riotshield" ); - self maps\mp\zombies\_zm_buildables::track_placed_buildables( level.riotshield_name ); + self endon( "death" ); + self endon( "disconnect" ); + self endon( "start_riotshield_deploy" ); + self notify( "deployed_riotshield" ); + self maps\mp\zombies\_zm_buildables::track_placed_buildables( 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 ); + if ( isdefined( self.current_equipment ) && self.current_equipment == level.riotshield_name ) + self maps\mp\zombies\_zm_equipment::equipment_to_deployed( level.riotshield_name ); - zoffset = level.riotshield_placement_zoffset; - shield_ent = self spawnriotshieldcover( origin + ( 0, 0, zoffset ), angles ); - item_ent = deployriotshield( self, shield_ent ); - primaries = self getweaponslistprimaries(); + zoffset = level.riotshield_placement_zoffset; + shield_ent = self spawnriotshieldcover( origin + ( 0, 0, zoffset ), angles ); + item_ent = deployriotshield( self, shield_ent ); + 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 ) ) - self [[ level.equipment_planted ]]( shield_ent, level.riotshield_name, self ); + if ( isdefined( level.equipment_planted ) ) + self [[ level.equipment_planted ]]( shield_ent, level.riotshield_name, self ); - if ( isdefined( level.equipment_safe_to_drop ) ) - { - if ( !self [[ level.equipment_safe_to_drop ]]( shield_ent ) ) - { - self notify( "destroy_riotshield" ); - shield_ent delete(); - item_ent delete(); - return; - } - } + if ( isdefined( level.equipment_safe_to_drop ) ) + { + if ( !self [[ level.equipment_safe_to_drop ]]( shield_ent ) ) + { + self notify( "destroy_riotshield" ); + shield_ent delete(); + item_ent delete(); + return; + } + } - self.riotshieldretrievetrigger = item_ent; - self.riotshieldentity = shield_ent; - self thread watchdeployedriotshieldents(); - self thread deleteshieldondamage( self.riotshieldentity ); - self thread deleteshieldmodelonweaponpickup( self.riotshieldretrievetrigger ); - self thread deleteriotshieldonplayerdeath(); - self thread watchshieldtriggervisibility( self.riotshieldretrievetrigger ); - self.riotshieldentity thread watchdeployedriotshielddamage(); - return shield_ent; + self.riotshieldretrievetrigger = item_ent; + self.riotshieldentity = shield_ent; + self thread watchdeployedriotshieldents(); + self thread deleteshieldondamage( self.riotshieldentity ); + self thread deleteshieldmodelonweaponpickup( self.riotshieldretrievetrigger ); + self thread deleteriotshieldonplayerdeath(); + self thread watchshieldtriggervisibility( self.riotshieldretrievetrigger ); + self.riotshieldentity thread watchdeployedriotshielddamage(); + return shield_ent; } trackriotshield() { - self endon( "death" ); - self endon( "disconnect" ); - self.hasriotshield = self hasweapon( level.riotshield_name ); - self.hasriotshieldequipped = self getcurrentweapon() == level.riotshield_name; - self.shield_placement = 0; + self endon( "death" ); + self endon( "disconnect" ); + self.hasriotshield = self hasweapon( level.riotshield_name ); + self.hasriotshieldequipped = self getcurrentweapon() == level.riotshield_name; + self.shield_placement = 0; - if ( self.hasriotshield ) - { - if ( self.hasriotshieldequipped ) - { - self.shield_placement = 1; - self updateriotshieldmodel(); - } - else - { - self.shield_placement = 2; - self updateriotshieldmodel(); - } - } + if ( self.hasriotshield ) + { + if ( self.hasriotshieldequipped ) + { + self.shield_placement = 1; + self updateriotshieldmodel(); + } + else + { + self.shield_placement = 2; + self updateriotshieldmodel(); + } + } - for (;;) - { - self waittill( "weapon_change", newweapon ); + for (;;) + { + self waittill( "weapon_change", newweapon ); - foreach (wep in self getWeaponsListPrimaries()) - { - if (wep == newweapon) - { - self.riotshield_prev_wep = newweapon; - break; - } - } + foreach (wep in self getWeaponsListPrimaries()) + { + if (wep == newweapon) + { + self.riotshield_prev_wep = newweapon; + break; + } + } - if ( newweapon == level.riotshield_name ) - { - if ( self.hasriotshieldequipped ) - continue; + if ( newweapon == level.riotshield_name ) + { + if ( self.hasriotshieldequipped ) + continue; - if ( isdefined( self.riotshieldentity ) ) - self notify( "destroy_riotshield" ); + if ( isdefined( self.riotshieldentity ) ) + self notify( "destroy_riotshield" ); - self.shield_placement = 1; - self updateriotshieldmodel(); + self.shield_placement = 1; + self updateriotshieldmodel(); - self.hasriotshield = 1; - self.hasriotshieldequipped = 1; - continue; - } + self.hasriotshield = 1; + self.hasriotshieldequipped = 1; + continue; + } - if ( self ismantling() && newweapon == "none" ) - continue; + if ( self ismantling() && newweapon == "none" ) + continue; - if ( self.hasriotshieldequipped ) - { - assert( self.hasriotshield ); - self.hasriotshield = self hasweapon( level.riotshield_name ); + if ( self.hasriotshieldequipped ) + { + assert( self.hasriotshield ); + 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 ) - self.shield_placement = 2; - else if ( isdefined( self.shield_ent ) ) - assert( self.shield_placement == 3 ); - else - self.shield_placement = 0; + } + else if ( self.hasriotshield ) + self.shield_placement = 2; + else if ( isdefined( self.shield_ent ) ) + assert( self.shield_placement == 3 ); + else + self.shield_placement = 0; - self updateriotshieldmodel(); - self.hasriotshieldequipped = 0; - continue; - } + self updateriotshieldmodel(); + self.hasriotshieldequipped = 0; + continue; + } - if ( self.hasriotshield ) - { - if ( !self hasweapon( level.riotshield_name ) ) - { - self.shield_placement = 0; - self updateriotshieldmodel(); - self.hasriotshield = 0; - } + if ( self.hasriotshield ) + { + if ( !self hasweapon( level.riotshield_name ) ) + { + self.shield_placement = 0; + self updateriotshieldmodel(); + self.hasriotshield = 0; + } - continue; - } + continue; + } - if ( self hasweapon( level.riotshield_name ) ) - { - self.shield_placement = 2; - self updateriotshieldmodel(); - self.hasriotshield = 1; - } - } + if ( self hasweapon( level.riotshield_name ) ) + { + self.shield_placement = 2; + self updateriotshieldmodel(); + self.hasriotshield = 1; + } + } } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_riotshield_prison.gsc b/scripts/zm/replaced/_zm_riotshield_prison.gsc index 9f82691b..bab26a56 100644 --- a/scripts/zm/replaced/_zm_riotshield_prison.gsc +++ b/scripts/zm/replaced/_zm_riotshield_prison.gsc @@ -9,139 +9,139 @@ doriotshielddeploy( origin, angles ) { - self endon( "death" ); - self endon( "disconnect" ); - self endon( "start_riotshield_deploy" ); - self notify( "deployed_riotshield" ); - self maps\mp\zombies\_zm_buildables::track_placed_buildables( level.riotshield_name ); + self endon( "death" ); + self endon( "disconnect" ); + self endon( "start_riotshield_deploy" ); + self notify( "deployed_riotshield" ); + self maps\mp\zombies\_zm_buildables::track_placed_buildables( 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 ); + if ( isdefined( self.current_equipment ) && self.current_equipment == level.riotshield_name ) + self maps\mp\zombies\_zm_equipment::equipment_to_deployed( level.riotshield_name ); - zoffset = level.riotshield_placement_zoffset; - shield_ent = self spawnriotshieldcover( origin + ( 0, 0, zoffset ), angles ); - item_ent = deployriotshield( self, shield_ent ); - primaries = self getweaponslistprimaries(); + zoffset = level.riotshield_placement_zoffset; + shield_ent = self spawnriotshieldcover( origin + ( 0, 0, zoffset ), angles ); + item_ent = deployriotshield( self, shield_ent ); + 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 ) ) - self [[ level.equipment_planted ]]( shield_ent, level.riotshield_name, self ); + if ( isdefined( level.equipment_planted ) ) + self [[ level.equipment_planted ]]( shield_ent, level.riotshield_name, self ); - if ( isdefined( level.equipment_safe_to_drop ) ) - { - if ( !self [[ level.equipment_safe_to_drop ]]( shield_ent ) ) - { - self notify( "destroy_riotshield" ); - shield_ent delete(); - item_ent delete(); - return; - } - } + if ( isdefined( level.equipment_safe_to_drop ) ) + { + if ( !self [[ level.equipment_safe_to_drop ]]( shield_ent ) ) + { + self notify( "destroy_riotshield" ); + shield_ent delete(); + item_ent delete(); + return; + } + } - self.riotshieldretrievetrigger = item_ent; - self.riotshieldentity = shield_ent; - self thread watchdeployedriotshieldents(); - self thread deleteshieldondamage( self.riotshieldentity ); - self thread deleteshieldmodelonweaponpickup( self.riotshieldretrievetrigger ); - self thread deleteriotshieldonplayerdeath(); - self thread watchshieldtriggervisibility( self.riotshieldretrievetrigger ); - self.riotshieldentity thread watchdeployedriotshielddamage(); - return shield_ent; + self.riotshieldretrievetrigger = item_ent; + self.riotshieldentity = shield_ent; + self thread watchdeployedriotshieldents(); + self thread deleteshieldondamage( self.riotshieldentity ); + self thread deleteshieldmodelonweaponpickup( self.riotshieldretrievetrigger ); + self thread deleteriotshieldonplayerdeath(); + self thread watchshieldtriggervisibility( self.riotshieldretrievetrigger ); + self.riotshieldentity thread watchdeployedriotshielddamage(); + return shield_ent; } trackriotshield() { - self endon( "death" ); - self endon( "disconnect" ); - self.hasriotshield = self hasweapon( level.riotshield_name ); - self.hasriotshieldequipped = self getcurrentweapon() == level.riotshield_name; - self.shield_placement = 0; + self endon( "death" ); + self endon( "disconnect" ); + self.hasriotshield = self hasweapon( level.riotshield_name ); + self.hasriotshieldequipped = self getcurrentweapon() == level.riotshield_name; + self.shield_placement = 0; - if ( self.hasriotshield ) - { - if ( self.hasriotshieldequipped ) - { - self.shield_placement = 1; - self updateriotshieldmodel(); - } - else - { - self.shield_placement = 2; - self updateriotshieldmodel(); - } - } + if ( self.hasriotshield ) + { + if ( self.hasriotshieldequipped ) + { + self.shield_placement = 1; + self updateriotshieldmodel(); + } + else + { + self.shield_placement = 2; + self updateriotshieldmodel(); + } + } - for (;;) - { - self waittill( "weapon_change", newweapon ); + for (;;) + { + self waittill( "weapon_change", newweapon ); - foreach (wep in self getWeaponsListPrimaries()) - { - if (wep == newweapon) - { - self.riotshield_prev_wep = newweapon; - break; - } - } + foreach (wep in self getWeaponsListPrimaries()) + { + if (wep == newweapon) + { + self.riotshield_prev_wep = newweapon; + break; + } + } - if ( newweapon == level.riotshield_name ) - { - if ( self.hasriotshieldequipped ) - continue; + if ( newweapon == level.riotshield_name ) + { + if ( self.hasriotshieldequipped ) + continue; - if ( isdefined( self.riotshieldentity ) ) - self notify( "destroy_riotshield" ); + if ( isdefined( self.riotshieldentity ) ) + self notify( "destroy_riotshield" ); - self.shield_placement = 1; - self updateriotshieldmodel(); + self.shield_placement = 1; + self updateriotshieldmodel(); - self.hasriotshield = 1; - self.hasriotshieldequipped = 1; - continue; - } + self.hasriotshield = 1; + self.hasriotshieldequipped = 1; + continue; + } - if ( self ismantling() && newweapon == "none" ) - continue; + if ( self ismantling() && newweapon == "none" ) + continue; - if ( self.hasriotshieldequipped ) - { - assert( self.hasriotshield ); - self.hasriotshield = self hasweapon( level.riotshield_name ); + if ( self.hasriotshieldequipped ) + { + assert( self.hasriotshield ); + 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 ) - self.shield_placement = 2; - else if ( isdefined( self.shield_ent ) ) - assert( self.shield_placement == 3 ); - else - self.shield_placement = 0; + } + else if ( self.hasriotshield ) + self.shield_placement = 2; + else if ( isdefined( self.shield_ent ) ) + assert( self.shield_placement == 3 ); + else + self.shield_placement = 0; - self updateriotshieldmodel(); - self.hasriotshieldequipped = 0; - continue; - } + self updateriotshieldmodel(); + self.hasriotshieldequipped = 0; + continue; + } - if ( self.hasriotshield ) - { - if ( !self hasweapon( level.riotshield_name ) ) - { - self.shield_placement = 0; - self updateriotshieldmodel(); - self.hasriotshield = 0; - } + if ( self.hasriotshield ) + { + if ( !self hasweapon( level.riotshield_name ) ) + { + self.shield_placement = 0; + self updateriotshieldmodel(); + self.hasriotshield = 0; + } - continue; - } + continue; + } - if ( self hasweapon( level.riotshield_name ) ) - { - self.shield_placement = 2; - self updateriotshieldmodel(); - self.hasriotshield = 1; - } - } + if ( self hasweapon( level.riotshield_name ) ) + { + self.shield_placement = 2; + self updateriotshieldmodel(); + self.hasriotshield = 1; + } + } } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_riotshield_tomb.gsc b/scripts/zm/replaced/_zm_riotshield_tomb.gsc index 674b68cf..d66f602c 100644 --- a/scripts/zm/replaced/_zm_riotshield_tomb.gsc +++ b/scripts/zm/replaced/_zm_riotshield_tomb.gsc @@ -9,139 +9,139 @@ doriotshielddeploy( origin, angles ) { - self endon( "death" ); - self endon( "disconnect" ); - self endon( "start_riotshield_deploy" ); - self notify( "deployed_riotshield" ); - self maps\mp\zombies\_zm_buildables::track_placed_buildables( level.riotshield_name ); + self endon( "death" ); + self endon( "disconnect" ); + self endon( "start_riotshield_deploy" ); + self notify( "deployed_riotshield" ); + self maps\mp\zombies\_zm_buildables::track_placed_buildables( 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 ); + if ( isdefined( self.current_equipment ) && self.current_equipment == level.riotshield_name ) + self maps\mp\zombies\_zm_equipment::equipment_to_deployed( level.riotshield_name ); - zoffset = level.riotshield_placement_zoffset; - shield_ent = self spawnriotshieldcover( origin + ( 0, 0, zoffset ), angles ); - item_ent = deployriotshield( self, shield_ent ); - primaries = self getweaponslistprimaries(); + zoffset = level.riotshield_placement_zoffset; + shield_ent = self spawnriotshieldcover( origin + ( 0, 0, zoffset ), angles ); + item_ent = deployriotshield( self, shield_ent ); + 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 ) ) - self [[ level.equipment_planted ]]( shield_ent, level.riotshield_name, self ); + if ( isdefined( level.equipment_planted ) ) + self [[ level.equipment_planted ]]( shield_ent, level.riotshield_name, self ); - if ( isdefined( level.equipment_safe_to_drop ) ) - { - if ( !self [[ level.equipment_safe_to_drop ]]( shield_ent ) ) - { - self notify( "destroy_riotshield" ); - shield_ent delete(); - item_ent delete(); - return; - } - } + if ( isdefined( level.equipment_safe_to_drop ) ) + { + if ( !self [[ level.equipment_safe_to_drop ]]( shield_ent ) ) + { + self notify( "destroy_riotshield" ); + shield_ent delete(); + item_ent delete(); + return; + } + } - self.riotshieldretrievetrigger = item_ent; - self.riotshieldentity = shield_ent; - self thread watchdeployedriotshieldents(); - self thread deleteshieldondamage( self.riotshieldentity ); - self thread deleteshieldmodelonweaponpickup( self.riotshieldretrievetrigger ); - self thread deleteriotshieldonplayerdeath(); - self thread watchshieldtriggervisibility( self.riotshieldretrievetrigger ); - self.riotshieldentity thread watchdeployedriotshielddamage(); - return shield_ent; + self.riotshieldretrievetrigger = item_ent; + self.riotshieldentity = shield_ent; + self thread watchdeployedriotshieldents(); + self thread deleteshieldondamage( self.riotshieldentity ); + self thread deleteshieldmodelonweaponpickup( self.riotshieldretrievetrigger ); + self thread deleteriotshieldonplayerdeath(); + self thread watchshieldtriggervisibility( self.riotshieldretrievetrigger ); + self.riotshieldentity thread watchdeployedriotshielddamage(); + return shield_ent; } trackriotshield() { - self endon( "death" ); - self endon( "disconnect" ); - self.hasriotshield = self hasweapon( level.riotshield_name ); - self.hasriotshieldequipped = self getcurrentweapon() == level.riotshield_name; - self.shield_placement = 0; + self endon( "death" ); + self endon( "disconnect" ); + self.hasriotshield = self hasweapon( level.riotshield_name ); + self.hasriotshieldequipped = self getcurrentweapon() == level.riotshield_name; + self.shield_placement = 0; - if ( self.hasriotshield ) - { - if ( self.hasriotshieldequipped ) - { - self.shield_placement = 1; - self updateriotshieldmodel(); - } - else - { - self.shield_placement = 2; - self updateriotshieldmodel(); - } - } + if ( self.hasriotshield ) + { + if ( self.hasriotshieldequipped ) + { + self.shield_placement = 1; + self updateriotshieldmodel(); + } + else + { + self.shield_placement = 2; + self updateriotshieldmodel(); + } + } - for (;;) - { - self waittill( "weapon_change", newweapon ); + for (;;) + { + self waittill( "weapon_change", newweapon ); - foreach (wep in self getWeaponsListPrimaries()) - { - if (wep == newweapon) - { - self.riotshield_prev_wep = newweapon; - break; - } - } + foreach (wep in self getWeaponsListPrimaries()) + { + if (wep == newweapon) + { + self.riotshield_prev_wep = newweapon; + break; + } + } - if ( newweapon == level.riotshield_name ) - { - if ( self.hasriotshieldequipped ) - continue; + if ( newweapon == level.riotshield_name ) + { + if ( self.hasriotshieldequipped ) + continue; - if ( isdefined( self.riotshieldentity ) ) - self notify( "destroy_riotshield" ); + if ( isdefined( self.riotshieldentity ) ) + self notify( "destroy_riotshield" ); - self.shield_placement = 1; - self updateriotshieldmodel(); + self.shield_placement = 1; + self updateriotshieldmodel(); - self.hasriotshield = 1; - self.hasriotshieldequipped = 1; - continue; - } + self.hasriotshield = 1; + self.hasriotshieldequipped = 1; + continue; + } - if ( self ismantling() && newweapon == "none" ) - continue; + if ( self ismantling() && newweapon == "none" ) + continue; - if ( self.hasriotshieldequipped ) - { - assert( self.hasriotshield ); - self.hasriotshield = self hasweapon( level.riotshield_name ); + if ( self.hasriotshieldequipped ) + { + assert( self.hasriotshield ); + 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 ) - self.shield_placement = 2; - else if ( isdefined( self.shield_ent ) ) - assert( self.shield_placement == 3 ); - else - self.shield_placement = 0; + } + else if ( self.hasriotshield ) + self.shield_placement = 2; + else if ( isdefined( self.shield_ent ) ) + assert( self.shield_placement == 3 ); + else + self.shield_placement = 0; - self updateriotshieldmodel(); - self.hasriotshieldequipped = 0; - continue; - } + self updateriotshieldmodel(); + self.hasriotshieldequipped = 0; + continue; + } - if ( self.hasriotshield ) - { - if ( !self hasweapon( level.riotshield_name ) ) - { - self.shield_placement = 0; - self updateriotshieldmodel(); - self.hasriotshield = 0; - } + if ( self.hasriotshield ) + { + if ( !self hasweapon( level.riotshield_name ) ) + { + self.shield_placement = 0; + self updateriotshieldmodel(); + self.hasriotshield = 0; + } - continue; - } + continue; + } - if ( self hasweapon( level.riotshield_name ) ) - { - self.shield_placement = 2; - self updateriotshieldmodel(); - self.hasriotshield = 1; - } - } + if ( self hasweapon( level.riotshield_name ) ) + { + self.shield_placement = 2; + self updateriotshieldmodel(); + self.hasriotshield = 1; + } + } } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_score.gsc b/scripts/zm/replaced/_zm_score.gsc index 51c921b9..39fca3f7 100644 --- a/scripts/zm/replaced/_zm_score.gsc +++ b/scripts/zm/replaced/_zm_score.gsc @@ -13,7 +13,7 @@ add_to_player_score( points, add_to_total ) { return; } - points = int(points); // points must be an int + points = int(points); // points must be an int self.score += points; self.pers[ "score" ] = self.score; if ( add_to_total ) @@ -29,42 +29,42 @@ minus_to_player_score( points ) { return; } - points = int(points); // points must be an int + points = int(points); // points must be an int self.score -= points; self.pers[ "score" ] = self.score; } player_add_points_kill_bonus( mod, hit_location ) { - if ( mod == "MOD_MELEE" ) - { - self score_cf_increment_info( "death_melee" ); - return level.zombie_vars["zombie_score_bonus_melee"]; - } + if ( mod == "MOD_MELEE" ) + { + self score_cf_increment_info( "death_melee" ); + return level.zombie_vars["zombie_score_bonus_melee"]; + } - if ( mod == "MOD_BURNED" ) - { - self score_cf_increment_info( "death_torso" ); - return level.zombie_vars["zombie_score_bonus_burn"]; - } + if ( mod == "MOD_BURNED" ) + { + self score_cf_increment_info( "death_torso" ); + return level.zombie_vars["zombie_score_bonus_burn"]; + } - score = 0; + score = 0; - if ( isdefined( hit_location ) ) - { - switch ( hit_location ) - { - case "helmet": - case "head": - case "neck": - self score_cf_increment_info( "death_head" ); - score = level.zombie_vars["zombie_score_bonus_head"]; - break; - default: - self score_cf_increment_info( "death_normal" ); - break; - } - } + if ( isdefined( hit_location ) ) + { + switch ( hit_location ) + { + case "helmet": + case "head": + case "neck": + self score_cf_increment_info( "death_head" ); + score = level.zombie_vars["zombie_score_bonus_head"]; + break; + default: + self score_cf_increment_info( "death_normal" ); + break; + } + } - return score; + return score; } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_spawner.gsc b/scripts/zm/replaced/_zm_spawner.gsc index 84218b8f..b778054f 100644 --- a/scripts/zm/replaced/_zm_spawner.gsc +++ b/scripts/zm/replaced/_zm_spawner.gsc @@ -69,11 +69,11 @@ zombie_damage( mod, hit_location, hit_origin, player, amount, team ) damage = 2000; } - max_damage = 9000; - if(damage > max_damage) - { - damage = max_damage; - } + max_damage = 9000; + if(damage > max_damage) + { + damage = max_damage; + } if ( isDefined( self.zombie_damage_claymore_func ) ) { @@ -96,11 +96,11 @@ zombie_damage( mod, hit_location, hit_origin, player, amount, team ) damage = 500; } - max_damage = 1500; - if(damage > max_damage) - { - damage = max_damage; - } + max_damage = 1500; + if(damage > max_damage) + { + damage = max_damage; + } if ( isDefined( player ) && isalive( player ) ) { @@ -121,11 +121,11 @@ zombie_damage( mod, hit_location, hit_origin, player, amount, team ) damage = 1000; } - max_damage = 3000; - if(damage > max_damage) - { - damage = max_damage; - } + max_damage = 3000; + if(damage > max_damage) + { + damage = max_damage; + } if ( isDefined( player ) && isalive( player ) ) { @@ -171,128 +171,128 @@ zombie_damage( mod, hit_location, hit_origin, player, amount, team ) zombie_gib_on_damage() { - while ( true ) - { - self waittill( "damage", amount, attacker, direction_vec, point, type, tagname, modelname, partname, weaponname ); + while ( true ) + { + self waittill( "damage", amount, attacker, direction_vec, point, type, tagname, modelname, partname, weaponname ); - if ( !isdefined( self ) ) - return; + if ( !isdefined( self ) ) + return; - if ( !self zombie_should_gib( amount, attacker, type ) ) - continue; + if ( !self zombie_should_gib( amount, attacker, type ) ) + continue; - if ( self head_should_gib( attacker, type, point ) && type != "MOD_BURNED" ) - { - self zombie_head_gib( attacker, type ); - continue; - } + if ( self head_should_gib( attacker, type, point ) && type != "MOD_BURNED" ) + { + self zombie_head_gib( attacker, type ); + continue; + } - if ( !self.gibbed ) - { - if ( self maps\mp\animscripts\zm_utility::damagelocationisany( "head", "helmet", "neck" ) ) - continue; + if ( !self.gibbed ) + { + if ( self maps\mp\animscripts\zm_utility::damagelocationisany( "head", "helmet", "neck" ) ) + continue; - refs = []; + refs = []; - switch ( self.damagelocation ) - { - case "torso_upper": - case "torso_lower": - refs[refs.size] = "guts"; - refs[refs.size] = "right_arm"; - break; - case "right_hand": - case "right_arm_upper": - case "right_arm_lower": - refs[refs.size] = "right_arm"; - break; - case "left_hand": - case "left_arm_upper": - case "left_arm_lower": - refs[refs.size] = "left_arm"; - break; - case "right_leg_upper": - case "right_leg_lower": - case "right_foot": - if ( self.health <= 0 ) - { - refs[refs.size] = "right_leg"; - refs[refs.size] = "right_leg"; - refs[refs.size] = "right_leg"; - refs[refs.size] = "no_legs"; - } + switch ( self.damagelocation ) + { + case "torso_upper": + case "torso_lower": + refs[refs.size] = "guts"; + refs[refs.size] = "right_arm"; + break; + case "right_hand": + case "right_arm_upper": + case "right_arm_lower": + refs[refs.size] = "right_arm"; + break; + case "left_hand": + case "left_arm_upper": + case "left_arm_lower": + refs[refs.size] = "left_arm"; + break; + case "right_leg_upper": + case "right_leg_lower": + case "right_foot": + if ( self.health <= 0 ) + { + refs[refs.size] = "right_leg"; + refs[refs.size] = "right_leg"; + refs[refs.size] = "right_leg"; + refs[refs.size] = "no_legs"; + } - break; - case "left_leg_upper": - case "left_leg_lower": - case "left_foot": - if ( self.health <= 0 ) - { - refs[refs.size] = "left_leg"; - refs[refs.size] = "left_leg"; - refs[refs.size] = "left_leg"; - refs[refs.size] = "no_legs"; - } + break; + case "left_leg_upper": + case "left_leg_lower": + case "left_foot": + if ( self.health <= 0 ) + { + refs[refs.size] = "left_leg"; + refs[refs.size] = "left_leg"; + refs[refs.size] = "left_leg"; + refs[refs.size] = "no_legs"; + } - break; - default: - if ( self.damagelocation == "none" ) - { - if ( type == "MOD_GRENADE" || type == "MOD_GRENADE_SPLASH" || type == "MOD_PROJECTILE" || type == "MOD_PROJECTILE_SPLASH" ) - { - refs = self derive_damage_refs( point ); - break; - } - } - else - { - refs[refs.size] = "guts"; - refs[refs.size] = "right_arm"; - refs[refs.size] = "left_arm"; - refs[refs.size] = "right_leg"; - refs[refs.size] = "left_leg"; - refs[refs.size] = "no_legs"; - break; - } - } + break; + default: + if ( self.damagelocation == "none" ) + { + if ( type == "MOD_GRENADE" || type == "MOD_GRENADE_SPLASH" || type == "MOD_PROJECTILE" || type == "MOD_PROJECTILE_SPLASH" ) + { + refs = self derive_damage_refs( point ); + break; + } + } + else + { + refs[refs.size] = "guts"; + refs[refs.size] = "right_arm"; + refs[refs.size] = "left_arm"; + refs[refs.size] = "right_leg"; + refs[refs.size] = "left_leg"; + refs[refs.size] = "no_legs"; + break; + } + } - if ( isdefined( level.custom_derive_damage_refs ) ) - refs = self [[ level.custom_derive_damage_refs ]]( refs, point, weaponname ); + if ( isdefined( level.custom_derive_damage_refs ) ) + refs = self [[ level.custom_derive_damage_refs ]]( refs, point, weaponname ); - if ( refs.size ) - { - self.a.gib_ref = maps\mp\animscripts\zm_death::get_random( refs ); + if ( refs.size ) + { + 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 ) - { - self.has_legs = 0; - self allowedstances( "crouch" ); - self setphysparams( 15, 0, 24 ); - self allowpitchangle( 1 ); - self setpitchorient(); - health = self.health; - health *= 0.1; - self thread maps\mp\animscripts\zm_run::needsdelayedupdate(); + 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 allowedstances( "crouch" ); + self setphysparams( 15, 0, 24 ); + self allowpitchangle( 1 ); + self setpitchorient(); + health = self.health; + health *= 0.1; + self thread maps\mp\animscripts\zm_run::needsdelayedupdate(); if (level.scr_zm_ui_gametype == "zgrief") { self thread bleedout_watcher(); } - if ( isdefined( self.crawl_anim_override ) ) - self [[ self.crawl_anim_override ]](); - } - } + if ( isdefined( self.crawl_anim_override ) ) + self [[ self.crawl_anim_override ]](); + } + } - if ( self.health > 0 ) - { - self thread maps\mp\animscripts\zm_death::do_gib(); + if ( self.health > 0 ) + { + self thread maps\mp\animscripts\zm_death::do_gib(); - if ( isdefined( level.gib_on_damage ) ) - self thread [[ level.gib_on_damage ]](); - } - } - } + if ( isdefined( level.gib_on_damage ) ) + self thread [[ level.gib_on_damage ]](); + } + } + } } bleedout_watcher() @@ -355,35 +355,35 @@ head_should_gib( attacker, type, point ) weapon = attacker getcurrentweapon(); - if ( type != "MOD_RIFLE_BULLET" && type != "MOD_PISTOL_BULLET" ) - { - if ( type == "MOD_GRENADE" || type == "MOD_GRENADE_SPLASH" ) - { - if ( ( distance( point, self gettagorigin( "j_head" ) ) > 55 ) || ( self.health > 0 ) ) - { - return 0; - } - else - { - return 1; - } - } - else if ( type == "MOD_PROJECTILE" ) - { - if ( ( distance( point, self gettagorigin( "j_head" ) ) > 10 ) || ( self.health > 0 ) ) - { - return 0; - } - else - { - return 1; - } - } - else if ( weaponclass( weapon ) != "spread" ) - { - return 0; - } - } + if ( type != "MOD_RIFLE_BULLET" && type != "MOD_PISTOL_BULLET" ) + { + if ( type == "MOD_GRENADE" || type == "MOD_GRENADE_SPLASH" ) + { + if ( ( distance( point, self gettagorigin( "j_head" ) ) > 55 ) || ( self.health > 0 ) ) + { + return 0; + } + else + { + return 1; + } + } + else if ( type == "MOD_PROJECTILE" ) + { + if ( ( distance( point, self gettagorigin( "j_head" ) ) > 10 ) || ( self.health > 0 ) ) + { + return 0; + } + else + { + return 1; + } + } + else if ( weaponclass( weapon ) != "spread" ) + { + return 0; + } + } if ( !self maps\mp\animscripts\zm_utility::damagelocationisany( "head", "helmet", "neck" ) ) { @@ -395,7 +395,7 @@ head_should_gib( attacker, type, point ) return 0; } - self zombie_hat_gib( attacker, type ); + self zombie_hat_gib( attacker, type ); if ( self.health > 0 ) { @@ -407,13 +407,13 @@ head_should_gib( attacker, type, point ) zombie_can_drop_powerups( zombie ) { - if ( !flag( "zombie_drop_powerups" ) ) - return false; + if ( !flag( "zombie_drop_powerups" ) ) + return false; - if ( isdefined( zombie.no_powerups ) && zombie.no_powerups ) - return false; + if ( isdefined( zombie.no_powerups ) && zombie.no_powerups ) + return false; - return true; + return true; } zombie_complete_emerging_into_playable_area() @@ -423,8 +423,8 @@ zombie_complete_emerging_into_playable_area() self setphysparams( 15, 0, 60 ); } - self.completed_emerging_into_playable_area = 1; - self notify( "completed_emerging_into_playable_area" ); - self.no_powerups = 0; - self thread zombie_free_cam_allowed(); + self.completed_emerging_into_playable_area = 1; + self notify( "completed_emerging_into_playable_area" ); + self.no_powerups = 0; + self thread zombie_free_cam_allowed(); } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_sq.gsc b/scripts/zm/replaced/_zm_sq.gsc index 377fad61..54225c1e 100644 --- a/scripts/zm/replaced/_zm_sq.gsc +++ b/scripts/zm/replaced/_zm_sq.gsc @@ -4,25 +4,25 @@ navcomputer_waitfor_navcard() { - trig_pos = getstruct( "sq_common_key", "targetname" ); - navcomputer_use_trig = spawn( "trigger_radius_use", trig_pos.origin, 0, 48, 48 ); + trig_pos = getstruct( "sq_common_key", "targetname" ); + navcomputer_use_trig = spawn( "trigger_radius_use", trig_pos.origin, 0, 48, 48 ); navcomputer_use_trig.cost = 100000; - navcomputer_use_trig setcursorhint( "HINT_NOICON" ); - navcomputer_use_trig sethintstring( &"ZOMBIE_NAVCARD_USE", " [Cost: " + navcomputer_use_trig.cost + "]" ); - navcomputer_use_trig triggerignoreteam(); + navcomputer_use_trig setcursorhint( "HINT_NOICON" ); + navcomputer_use_trig sethintstring( &"ZOMBIE_NAVCARD_USE", " [Cost: " + navcomputer_use_trig.cost + "]" ); + navcomputer_use_trig triggerignoreteam(); - while ( true ) - { - navcomputer_use_trig waittill( "trigger", who ); + while ( true ) + { + navcomputer_use_trig waittill( "trigger", who ); - if ( isplayer( who ) && is_player_valid( who ) ) - { - if ( who.score >= navcomputer_use_trig.cost ) - { + if ( isplayer( who ) && is_player_valid( who ) ) + { + if ( who.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 playsound( "zmb_sq_navcard_success" ); + navcomputer_use_trig sethintstring( &"ZOMBIE_NAVCARD_SUCCESS" ); + navcomputer_use_trig playsound( "zmb_sq_navcard_success" ); players = get_players(); foreach (player in players) @@ -32,52 +32,52 @@ navcomputer_waitfor_navcard() level notify( "end_game" ); - return; - } + return; + } else { - navcomputer_use_trig playsound( "zmb_sq_navcard_fail" ); + navcomputer_use_trig playsound( "zmb_sq_navcard_fail" ); } - } - } + } + } } sq_give_player_all_perks() { - perks = []; + perks = []; - if ( isDefined( level._random_perk_machine_perk_list ) ) - { - perks = array_randomize( level._random_perk_machine_perk_list ); - } - else - { - machines = array_randomize( getentarray( "zombie_vending", "targetname" ) ); - for ( i = 0; i < machines.size; i++ ) - { - if ( machines[i].script_noteworthy == "specialty_weapupgrade" ) - continue; + if ( isDefined( level._random_perk_machine_perk_list ) ) + { + perks = array_randomize( level._random_perk_machine_perk_list ); + } + else + { + machines = array_randomize( getentarray( "zombie_vending", "targetname" ) ); + for ( i = 0; i < machines.size; i++ ) + { + if ( machines[i].script_noteworthy == "specialty_weapupgrade" ) + continue; - perks[perks.size] = machines[i].script_noteworthy; - } - } + perks[perks.size] = machines[i].script_noteworthy; + } + } - foreach ( perk in perks ) - { - if ( isdefined( self.perk_purchased ) && self.perk_purchased == perk ) - continue; + foreach ( perk in perks ) + { + if ( isdefined( self.perk_purchased ) && self.perk_purchased == perk ) + continue; - if ( self hasperk( perk ) || self maps\mp\zombies\_zm_perks::has_perk_paused( perk ) ) - continue; + if ( self hasperk( perk ) || self maps\mp\zombies\_zm_perks::has_perk_paused( perk ) ) + continue; - self maps\mp\zombies\_zm_perks::give_perk( perk, 0 ); - wait 0.25; - } + self maps\mp\zombies\_zm_perks::give_perk( perk, 0 ); + wait 0.25; + } } sq_complete_time_hud() { - hud = newHudElem(); + hud = newHudElem(); hud.alignx = "center"; hud.aligny = "top"; hud.horzalign = "user_center"; @@ -90,22 +90,22 @@ sq_complete_time_hud() hud.foreground = 1; hud.label = &"Quest Complete! Time: "; - hud endon("death"); + hud endon("death"); - hud thread scripts\zm\_zm_reimagined::destroy_on_intermission(); + hud thread scripts\zm\_zm_reimagined::destroy_on_intermission(); - fade_time = 0.5; + fade_time = 0.5; hud fadeOverTime(fade_time); hud.alpha = 1; - time = int((getTime() - level.timer_hud_start_time) / 1000); + time = int((getTime() - level.timer_hud_start_time) / 1000); - hud thread scripts\zm\_zm_reimagined::set_time_frozen(time, "forever"); + hud thread scripts\zm\_zm_reimagined::set_time_frozen(time, "forever"); - wait 10; + wait 10; - hud fadeOverTime(fade_time); + hud fadeOverTime(fade_time); hud.alpha = 0; wait fade_time; diff --git a/scripts/zm/replaced/_zm_stats.gsc b/scripts/zm/replaced/_zm_stats.gsc index 73fd27b1..ae0b7618 100644 --- a/scripts/zm/replaced/_zm_stats.gsc +++ b/scripts/zm/replaced/_zm_stats.gsc @@ -9,11 +9,11 @@ set_global_stat( stat_name, value ) { - if ( is_true( level.zm_disable_recording_stats ) ) - return; + if ( is_true( level.zm_disable_recording_stats ) ) + return; if ( issubstr( tolower( stat_name ), "sq_" ) || issubstr( tolower( stat_name ), "navcard_" ) ) value = 0; - self setdstat( "PlayerStatsList", stat_name, "StatValue", value ); + self setdstat( "PlayerStatsList", stat_name, "StatValue", value ); } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_traps.gsc b/scripts/zm/replaced/_zm_traps.gsc index 2accb791..c0a7e6b3 100644 --- a/scripts/zm/replaced/_zm_traps.gsc +++ b/scripts/zm/replaced/_zm_traps.gsc @@ -9,8 +9,8 @@ player_elec_damage() if ( !isDefined( self.is_burning ) && is_player_valid( self ) ) { - self.is_burning = 1; - shocktime = 1.25; + self.is_burning = 1; + shocktime = 1.25; if ( is_true( level.trap_electric_visionset_registered ) ) { @@ -23,10 +23,10 @@ player_elec_damage() self shellshock( "electrocution", shocktime ); 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; - self.is_burning = undefined; + self.is_burning = undefined; } } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_utility.gsc b/scripts/zm/replaced/_zm_utility.gsc index 38802a5f..0466392d 100644 --- a/scripts/zm/replaced/_zm_utility.gsc +++ b/scripts/zm/replaced/_zm_utility.gsc @@ -12,11 +12,11 @@ init_player_offhand_weapons() } } - init_player_lethal_grenade(); - init_player_tactical_grenade(); - init_player_placeable_mine(); - init_player_melee_weapon(); - init_player_equipment(); + init_player_lethal_grenade(); + init_player_tactical_grenade(); + init_player_placeable_mine(); + init_player_melee_weapon(); + init_player_equipment(); } is_headshot( sweapon, shitloc, smeansofdeath ) @@ -36,35 +36,35 @@ is_headshot( sweapon, shitloc, smeansofdeath ) shock_onpain() { - self endon( "death" ); - self endon( "disconnect" ); - self notify( "stop_shock_onpain" ); - self endon( "stop_shock_onpain" ); + self endon( "death" ); + self endon( "disconnect" ); + self notify( "stop_shock_onpain" ); + self endon( "stop_shock_onpain" ); - if ( getdvar( "blurpain" ) == "" ) - setdvar( "blurpain", "on" ); + if ( getdvar( "blurpain" ) == "" ) + setdvar( "blurpain", "on" ); - while ( true ) - { - oldhealth = self.health; + while ( true ) + { + 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 ) - continue; + if ( isdefined( level.shock_onpain ) && !level.shock_onpain ) + continue; - if ( isdefined( self.shock_onpain ) && !self.shock_onpain ) - continue; + if ( isdefined( self.shock_onpain ) && !self.shock_onpain ) + continue; - if ( self.health < 1 ) - continue; + if ( self.health < 1 ) + continue; - 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 ( mod == "MOD_PROJECTILE" || mod == "MOD_PROJECTILE_SPLASH" || mod == "MOD_GRENADE_SPLASH" || mod == "MOD_GRENADE" || mod == "MOD_EXPLOSIVE" ) + { + if ( is_true( self.is_burning ) ) + { self shock_onexplosion( damage, "lava", "lava_small" ); - } + } else if ( mod == "MOD_EXPLOSIVE" ) { self shock_onexplosion( damage ); @@ -73,12 +73,12 @@ shock_onpain() { self shellshock( "pain", 0.5 ); } - } - else if ( getdvar( "blurpain" ) == "on" ) + } + else if ( getdvar( "blurpain" ) == "on" ) { self shellshock( "pain", 0.5 ); } - } + } } create_zombie_point_of_interest_attractor_positions( num_attract_dists, diff_per_dist, attractor_width ) @@ -164,96 +164,96 @@ create_zombie_point_of_interest_attractor_positions( num_attract_dists, diff_per check_point_in_life_brush( origin ) { - life_brushes = getentarray( "life_brush", "script_noteworthy" ); + life_brushes = getentarray( "life_brush", "script_noteworthy" ); - if ( !isdefined( life_brushes ) ) - return false; + if ( !isdefined( life_brushes ) ) + return false; - check_model = spawn( "script_model", origin + vectorscale( ( 0, 0, 1 ), 40.0 ) ); - valid_point = 0; + check_model = spawn( "script_model", origin + vectorscale( ( 0, 0, 1 ), 40.0 ) ); + valid_point = 0; - for ( i = 0; i < life_brushes.size; i++ ) - { - if ( check_model istouching( life_brushes[i] ) ) + for ( i = 0; i < life_brushes.size; i++ ) + { + if ( check_model istouching( life_brushes[i] ) ) { valid_point = 1; break; } - } + } - check_model delete(); - return valid_point; + check_model delete(); + return valid_point; } check_point_in_kill_brush( origin ) { - kill_brushes = getentarray( "kill_brush", "script_noteworthy" ); + kill_brushes = getentarray( "kill_brush", "script_noteworthy" ); - if ( !isdefined( kill_brushes ) ) - return false; + if ( !isdefined( kill_brushes ) ) + return false; - check_model = spawn( "script_model", origin + vectorscale( ( 0, 0, 1 ), 40.0 ) ); - valid_point = 0; + check_model = spawn( "script_model", origin + vectorscale( ( 0, 0, 1 ), 40.0 ) ); + valid_point = 0; - for ( i = 0; i < kill_brushes.size; i++ ) - { - if ( check_model istouching( kill_brushes[i] ) ) + for ( i = 0; i < kill_brushes.size; i++ ) + { + if ( check_model istouching( kill_brushes[i] ) ) { valid_point = 1; break; } - } + } - check_model delete(); - return valid_point; + check_model delete(); + return valid_point; } get_current_zone( return_zone ) { - flag_wait( "zones_initialized" ); + flag_wait( "zones_initialized" ); if ( isDefined( self.prev_zone ) ) { 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 ) { return self.prev_zone; } - return self.prev_zone_name; + return self.prev_zone_name; } } } - for ( z = 0; z < level.zone_keys.size; z++ ) - { - zone_name = level.zone_keys[z]; - zone = level.zones[zone_name]; + for ( z = 0; z < level.zone_keys.size; z++ ) + { + zone_name = level.zone_keys[z]; + zone = level.zones[zone_name]; - for ( i = 0; i < zone.volumes.size; i++ ) - { - if ( self istouching( zone.volumes[i] ) ) - { + for ( i = 0; i < zone.volumes.size; i++ ) + { + if ( self istouching( zone.volumes[i] ) ) + { self.prev_zone = zone; self.prev_zone_name = zone_name; - if ( isdefined( return_zone ) && return_zone ) + if ( isdefined( return_zone ) && return_zone ) { return zone; } - return zone_name; - } - } - } + return zone_name; + } + } + } self.prev_zone = undefined; self.prev_zone_name = undefined; - return undefined; + return undefined; } is_temporary_zombie_weapon( str_weapon ) @@ -263,12 +263,12 @@ is_temporary_zombie_weapon( str_weapon ) 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 0.1; + wait 0.1; } track_players_intersection_tracker() diff --git a/scripts/zm/replaced/_zm_weap_ballistic_knife.gsc b/scripts/zm/replaced/_zm_weap_ballistic_knife.gsc index 7b8d9788..b486fb5f 100644 --- a/scripts/zm/replaced/_zm_weap_ballistic_knife.gsc +++ b/scripts/zm/replaced/_zm_weap_ballistic_knife.gsc @@ -10,14 +10,14 @@ on_spawn( watcher, player ) player endon( "zmb_lost_knife" ); 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 ); - if( is_upgraded && isDefined( prey ) && isplayer( prey ) && prey.team == player.team && prey maps\mp\zombies\_zm_laststand::player_is_in_laststand() ) - { - return; - } + if( is_upgraded && isDefined( prey ) && isplayer( prey ) && prey.team == player.team && prey maps\mp\zombies\_zm_laststand::player_is_in_laststand() ) + { + return; + } if ( isDefined( endpos ) ) { @@ -27,7 +27,7 @@ on_spawn( watcher, player ) retrievable_model.owner = player; retrievable_model.angles = angles; retrievable_model.name = watcher.weapon; - isfriendly = 0; + isfriendly = 0; if ( isDefined( prey ) ) { if ( isplayer( prey ) ) @@ -38,11 +38,11 @@ on_spawn( watcher, player ) { isfriendly = 1; } - if ( isfriendly ) - { - retrievable_model physicslaunch( normal, ( randomint( 10 ), randomint( 10 ), randomint( 10 ) ) ); - normal = ( 0, 0, 1 ); - } + if ( isfriendly ) + { + retrievable_model physicslaunch( normal, ( randomint( 10 ), randomint( 10 ), randomint( 10 ) ) ); + normal = ( 0, 0, 1 ); + } else { retrievable_model linkto( prey, bone ); @@ -51,14 +51,14 @@ on_spawn( watcher, player ) } watcher.objectarray[ watcher.objectarray.size ] = retrievable_model; retrievable_model thread drop_knives_to_ground( player ); - if( isfriendly ) - { - player notify( "ballistic_knife_stationary", retrievable_model, normal ); - } - else - { - player notify( "ballistic_knife_stationary", retrievable_model, normal, prey ); - } + if( isfriendly ) + { + player notify( "ballistic_knife_stationary", retrievable_model, normal ); + } + else + { + player notify( "ballistic_knife_stationary", retrievable_model, normal, prey ); + } } } @@ -83,30 +83,30 @@ watch_use_trigger( trigger, model, callback, weapon, playersoundonuse, npcsoundo { continue; } - if ( isDefined( trigger.owner ) && player != trigger.owner ) + if ( isDefined( trigger.owner ) && player != trigger.owner ) { continue; } - if ( player getcurrentweapon() == weapon && player getweaponammostock( weapon ) >= weaponmaxammo( weapon ) ) - { - continue; - } - if ( !autorecover && !is_true( trigger.force_pickup ) ) - { - if( player.throwinggrenade || player meleebuttonpressed() ) - { - continue; - } - } - if ( isDefined( playersoundonuse ) ) - { - player playlocalsound( playersoundonuse ); - } - if ( isDefined( npcsoundonuse ) ) - { - player playsound( npcsoundonuse ); - } - player thread [[ callback ]]( weapon, model, trigger ); - return; + if ( player getcurrentweapon() == weapon && player getweaponammostock( weapon ) >= weaponmaxammo( weapon ) ) + { + continue; + } + if ( !autorecover && !is_true( trigger.force_pickup ) ) + { + if( player.throwinggrenade || player meleebuttonpressed() ) + { + continue; + } + } + if ( isDefined( playersoundonuse ) ) + { + player playlocalsound( playersoundonuse ); + } + if ( isDefined( npcsoundonuse ) ) + { + player playsound( npcsoundonuse ); + } + player thread [[ callback ]]( weapon, model, trigger ); + return; } } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_weap_beacon.gsc b/scripts/zm/replaced/_zm_weap_beacon.gsc index b955eec8..c4141b08 100644 --- a/scripts/zm/replaced/_zm_weap_beacon.gsc +++ b/scripts/zm/replaced/_zm_weap_beacon.gsc @@ -11,200 +11,200 @@ player_throw_beacon( grenade, num_attractors, max_attract_dist, attract_dist_diff ) { - self endon( "disconnect" ); - self endon( "starting_beacon_watch" ); + self endon( "disconnect" ); + self endon( "starting_beacon_watch" ); - if ( isdefined( grenade ) ) - { - grenade endon( "death" ); + if ( isdefined( grenade ) ) + { + grenade endon( "death" ); - if ( self maps\mp\zombies\_zm_laststand::player_is_in_laststand() ) - { - if ( isdefined( grenade.damagearea ) ) - grenade.damagearea delete(); + if ( self maps\mp\zombies\_zm_laststand::player_is_in_laststand() ) + { + if ( isdefined( grenade.damagearea ) ) + grenade.damagearea delete(); - grenade delete(); - return; - } + grenade delete(); + return; + } - grenade hide(); - model = spawn( "script_model", grenade.origin ); - model endon( "weapon_beacon_timeout" ); - model setmodel( "t6_wpn_zmb_homing_beacon_world" ); - model useanimtree( #animtree ); - model linkto( grenade ); - model.angles = grenade.angles; - model thread beacon_cleanup( grenade ); - model.owner = self; - clone = undefined; + grenade hide(); + model = spawn( "script_model", grenade.origin ); + model endon( "weapon_beacon_timeout" ); + model setmodel( "t6_wpn_zmb_homing_beacon_world" ); + model useanimtree( #animtree ); + model linkto( grenade ); + model.angles = grenade.angles; + model thread beacon_cleanup( grenade ); + model.owner = self; + clone = undefined; - if ( isdefined( level.beacon_dual_view ) && level.beacon_dual_view ) - { - 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 ); - model.simulacrum = clone; - clone maps\mp\zombies\_zm_clone::clone_animate( "idle" ); - clone thread clone_player_angles( self ); - clone notsolid(); - clone ghost(); - } + if ( isdefined( level.beacon_dual_view ) && level.beacon_dual_view ) + { + 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 ); + model.simulacrum = clone; + clone maps\mp\zombies\_zm_clone::clone_animate( "idle" ); + clone thread clone_player_angles( self ); + clone notsolid(); + clone ghost(); + } - grenade thread watch_for_dud( model, clone ); - info = spawnstruct(); - info.sound_attractors = []; - grenade thread monitor_zombie_groans( info ); + grenade thread watch_for_dud( model, clone ); + info = spawnstruct(); + info.sound_attractors = []; + grenade thread monitor_zombie_groans( info ); - grenade waittill( "stationary" ); + grenade waittill( "stationary" ); - if ( isdefined( level.grenade_planted ) ) - self thread [[ level.grenade_planted ]]( grenade, model ); + if ( isdefined( level.grenade_planted ) ) + self thread [[ level.grenade_planted ]]( grenade, model ); - if ( isdefined( grenade ) ) - { - if ( isdefined( model ) ) - { - model thread weapon_beacon_anims(); + if ( isdefined( grenade ) ) + { + if ( isdefined( model ) ) + { + model thread weapon_beacon_anims(); - if ( !( isdefined( grenade.backlinked ) && grenade.backlinked ) ) - { - model unlink(); - model.origin = grenade.origin; - model.angles = grenade.angles; - } - } + if ( !( isdefined( grenade.backlinked ) && grenade.backlinked ) ) + { + model unlink(); + model.origin = grenade.origin; + model.angles = grenade.angles; + } + } - if ( isdefined( clone ) ) - { - clone forceteleport( grenade.origin, grenade.angles ); - clone thread hide_owner( self ); - grenade thread proximity_detonate( self ); - clone show(); - clone setinvisibletoall(); - clone setvisibletoteam( level.zombie_team ); - } + if ( isdefined( clone ) ) + { + clone forceteleport( grenade.origin, grenade.angles ); + clone thread hide_owner( self ); + grenade thread proximity_detonate( self ); + clone show(); + clone setinvisibletoall(); + clone setvisibletoteam( level.zombie_team ); + } - grenade resetmissiledetonationtime(); - model setclientfield( "play_beacon_fx", 1 ); - valid_poi = check_point_in_enabled_zone( grenade.origin, undefined, undefined ); + grenade resetmissiledetonationtime(); + model setclientfield( "play_beacon_fx", 1 ); + valid_poi = check_point_in_enabled_zone( grenade.origin, undefined, undefined ); - if ( isdefined( level.check_valid_poi ) ) - valid_poi = grenade [[ level.check_valid_poi ]]( valid_poi ); + if ( isdefined( level.check_valid_poi ) ) + valid_poi = grenade [[ level.check_valid_poi ]]( valid_poi ); - if ( valid_poi ) - { - grenade create_zombie_point_of_interest( max_attract_dist, num_attractors, 10000 ); - grenade.attract_to_origin = 1; - grenade thread create_zombie_point_of_interest_attractor_positions( 4, attract_dist_diff ); - grenade thread wait_for_attractor_positions_complete(); - grenade thread do_beacon_sound( model, info ); - model thread wait_and_explode( grenade ); - model.time_thrown = gettime(); + if ( valid_poi ) + { + grenade create_zombie_point_of_interest( max_attract_dist, num_attractors, 10000 ); + grenade.attract_to_origin = 1; + grenade thread create_zombie_point_of_interest_attractor_positions( 4, attract_dist_diff ); + grenade thread wait_for_attractor_positions_complete(); + grenade thread do_beacon_sound( model, info ); + model thread wait_and_explode( grenade ); + model.time_thrown = gettime(); - while ( isdefined( level.weapon_beacon_busy ) && level.weapon_beacon_busy ) - { - wait 0.1; - continue; - } + while ( isdefined( level.weapon_beacon_busy ) && level.weapon_beacon_busy ) + { + wait 0.1; + continue; + } - if ( flag( "three_robot_round" ) && flag( "fire_link_enabled" ) ) - model thread start_artillery_launch_ee( grenade ); - else - model thread start_artillery_launch_normal( grenade ); + if ( flag( "three_robot_round" ) && flag( "fire_link_enabled" ) ) + model thread start_artillery_launch_ee( grenade ); + else + model thread start_artillery_launch_normal( grenade ); - level.beacons[level.beacons.size] = grenade; - } - else - { - grenade.script_noteworthy = undefined; - self thread grenade_stolen_by_sam( grenade, model, clone ); - } - } - else - { - grenade.script_noteworthy = undefined; - self thread grenade_stolen_by_sam( grenade, model, clone ); - } - } + level.beacons[level.beacons.size] = grenade; + } + else + { + grenade.script_noteworthy = undefined; + self thread grenade_stolen_by_sam( grenade, model, clone ); + } + } + else + { + grenade.script_noteworthy = undefined; + self thread grenade_stolen_by_sam( grenade, model, clone ); + } + } } grenade_stolen_by_sam( ent_grenade, ent_model, ent_actor ) { - if ( !isdefined( ent_model ) ) - return; + if ( !isdefined( ent_model ) ) + return; - direction = ent_model.origin; - direction = ( direction[1], direction[0], 0 ); + direction = ent_model.origin; + direction = ( direction[1], direction[0], 0 ); - if ( direction[1] < 0 || direction[0] > 0 && direction[1] > 0 ) - direction = ( direction[0], direction[1] * -1, 0 ); - else if ( direction[0] < 0 ) - direction = ( direction[0] * -1, direction[1], 0 ); + if ( direction[1] < 0 || direction[0] > 0 && direction[1] > 0 ) + direction = ( direction[0], direction[1] * -1, 0 ); + else if ( direction[0] < 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" ); - ent_model movez( 60, 1.0, 0.25, 0.25 ); - ent_model vibrate( direction, 1.5, 2.5, 1.0 ); + playfxontag( level._effect["grenade_samantha_steal"], ent_model, "tag_origin" ); + ent_model movez( 60, 1.0, 0.25, 0.25 ); + ent_model vibrate( direction, 1.5, 2.5, 1.0 ); - ent_model waittill( "movedone" ); + ent_model waittill( "movedone" ); - if ( isdefined( self.damagearea ) ) - self.damagearea delete(); + if ( isdefined( self.damagearea ) ) + self.damagearea delete(); - ent_model delete(); + ent_model delete(); - if ( isdefined( ent_actor ) ) - ent_actor delete(); + if ( isdefined( ent_actor ) ) + ent_actor delete(); - if ( isdefined( ent_grenade ) ) - { - if ( isdefined( ent_grenade.damagearea ) ) - ent_grenade.damagearea delete(); + if ( isdefined( ent_grenade ) ) + { + if ( isdefined( ent_grenade.damagearea ) ) + ent_grenade.damagearea delete(); - ent_grenade delete(); - } + ent_grenade delete(); + } } wait_and_do_weapon_beacon_damage( index ) { - wait 3.0; - v_damage_origin = self.a_v_land_spots[index]; - level.n_weap_beacon_zombie_thrown_count = 0; - a_zombies_to_kill = []; - a_zombies = getaispeciesarray( "axis", "all" ); + wait 3.0; + v_damage_origin = self.a_v_land_spots[index]; + level.n_weap_beacon_zombie_thrown_count = 0; + a_zombies_to_kill = []; + a_zombies = getaispeciesarray( "axis", "all" ); - foreach ( zombie in a_zombies ) - { - n_distance = distance( zombie.origin, v_damage_origin ); + foreach ( zombie in a_zombies ) + { + n_distance = distance( zombie.origin, v_damage_origin ); - if ( n_distance <= 200 ) - { - a_zombies_to_kill[a_zombies_to_kill.size] = zombie; - } - } + if ( n_distance <= 200 ) + { + a_zombies_to_kill[a_zombies_to_kill.size] = zombie; + } + } - if ( index == 0 ) - { - radiusdamage( self.origin + vectorscale( ( 0, 0, 1 ), 12.0 ), 10, 1, 1, self.owner, "MOD_GRENADE_SPLASH", "beacon_zm" ); - self ghost(); - self stopanimscripted( 0 ); - } + if ( index == 0 ) + { + radiusdamage( self.origin + vectorscale( ( 0, 0, 1 ), 12.0 ), 10, 1, 1, self.owner, "MOD_GRENADE_SPLASH", "beacon_zm" ); + self ghost(); + self stopanimscripted( 0 ); + } - level thread weap_beacon_zombie_death( self, a_zombies_to_kill ); - self thread weap_beacon_rumble(); + level thread weap_beacon_zombie_death( self, a_zombies_to_kill ); + self thread weap_beacon_rumble(); } weap_beacon_zombie_death( model, a_zombies_to_kill ) { - for ( i = 0; i < a_zombies_to_kill.size; i++ ) - { - zombie = a_zombies_to_kill[i]; + for ( i = 0; i < a_zombies_to_kill.size; i++ ) + { + zombie = a_zombies_to_kill[i]; - if ( !isdefined( zombie ) || !isalive( zombie ) ) - continue; + if ( !isdefined( zombie ) || !isalive( zombie ) ) + continue; - zombie thread set_beacon_damage(); - 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 set_beacon_damage(); + zombie dodamage( zombie.health, zombie.origin, model.owner, model.owner, "none", "MOD_GRENADE_SPLASH", 0, "beacon_zm" ); + zombie thread weapon_beacon_launch_ragdoll(); + } } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_weap_blundersplat.gsc b/scripts/zm/replaced/_zm_weap_blundersplat.gsc index 368de498..d87051ef 100644 --- a/scripts/zm/replaced/_zm_weap_blundersplat.gsc +++ b/scripts/zm/replaced/_zm_weap_blundersplat.gsc @@ -9,117 +9,117 @@ wait_for_blundersplat_fired() { - self endon( "disconnect" ); + self endon( "disconnect" ); - self waittill( "spawned_player" ); + self waittill( "spawned_player" ); - for (;;) - { - self waittill( "weapon_fired", str_weapon ); + for (;;) + { + self waittill( "weapon_fired", str_weapon ); - if ( str_weapon == "blundersplat_zm" ) - { - _titus_locate_target( 1, 0 ); - wait_network_frame(); - _titus_locate_target( 1, 1 ); - wait_network_frame(); - _titus_locate_target( 1, 2 ); - wait_network_frame(); - } - } + if ( str_weapon == "blundersplat_zm" ) + { + _titus_locate_target( 1, 0 ); + wait_network_frame(); + _titus_locate_target( 1, 1 ); + wait_network_frame(); + _titus_locate_target( 1, 2 ); + wait_network_frame(); + } + } } wait_for_blundersplat_upgraded_fired() { - self endon( "disconnect" ); + self endon( "disconnect" ); - self waittill( "spawned_player" ); + self waittill( "spawned_player" ); - for (;;) - { - self waittill( "weapon_fired", str_weapon ); + for (;;) + { + self waittill( "weapon_fired", str_weapon ); - if ( str_weapon == "blundersplat_upgraded_zm" ) - { - _titus_locate_target( 0, 0 ); - wait_network_frame(); - _titus_locate_target( 0, 1 ); - wait_network_frame(); - _titus_locate_target( 0, 2 ); - wait_network_frame(); - } - } + if ( str_weapon == "blundersplat_upgraded_zm" ) + { + _titus_locate_target( 0, 0 ); + wait_network_frame(); + _titus_locate_target( 0, 1 ); + wait_network_frame(); + _titus_locate_target( 0, 2 ); + wait_network_frame(); + } + } } _titus_locate_target( is_not_upgraded = 1, count ) { - fire_angles = self getplayerangles(); - fire_origin = self getplayercamerapos(); + fire_angles = self getplayerangles(); + fire_origin = self getplayercamerapos(); - if ( is_not_upgraded ) - n_fuse_timer = randomfloatrange( 1.0, 2.5 ); - else - n_fuse_timer = randomfloatrange( 3.0, 4.0 ); + if ( is_not_upgraded ) + n_fuse_timer = randomfloatrange( 1.0, 2.5 ); + else + n_fuse_timer = randomfloatrange( 3.0, 4.0 ); - n_spread = 5; - if (isads(self)) - { - n_spread *= 0.5; - } - else if (self hasPerk("specialty_deadshot")) - { - n_spread *= getdvarfloat("perk_weapSpreadMultiplier"); - } + n_spread = 5; + if (isads(self)) + { + n_spread *= 0.5; + } + else if (self hasPerk("specialty_deadshot")) + { + n_spread *= getdvarfloat("perk_weapSpreadMultiplier"); + } - if (count == 1) - { - fire_angles += (0, n_spread, 0); - } - else if (count == 2) - { - fire_angles -= (0, n_spread, 0); - } + if (count == 1) + { + fire_angles += (0, n_spread, 0); + } + else if (count == 2) + { + fire_angles -= (0, n_spread, 0); + } - vec = anglestoforward( fire_angles ); - trace_end = fire_origin + vec * 20000; - trace = bullettrace( fire_origin, trace_end, 1, self ); - offsetpos = trace["position"]; - e_dart = magicbullet( "blundersplat_bullet_zm", fire_origin, offsetpos, self ); - e_dart thread _titus_reset_grenade_fuse( n_fuse_timer ); + vec = anglestoforward( fire_angles ); + trace_end = fire_origin + vec * 20000; + trace = bullettrace( fire_origin, trace_end, 1, self ); + offsetpos = trace["position"]; + e_dart = magicbullet( "blundersplat_bullet_zm", fire_origin, offsetpos, self ); + 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 ) { - self waittill( "death" ); + self waittill( "death" ); - a_grenades = getentarray( "grenade", "classname" ); + a_grenades = getentarray( "grenade", "classname" ); - foreach ( e_grenade in a_grenades ) - { - 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_time = n_fuse_timer; - e_grenade resetmissiledetonationtime( n_fuse_timer ); + foreach ( e_grenade in a_grenades ) + { + 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_time = n_fuse_timer; + e_grenade resetmissiledetonationtime( n_fuse_timer ); - if ( is_not_upgraded ) - e_grenade create_zombie_point_of_interest( 250, 15, 10000 ); - else - e_grenade create_zombie_point_of_interest( 500, 30, 10000 ); + if ( is_not_upgraded ) + e_grenade create_zombie_point_of_interest( 250, 15, 10000 ); + else + e_grenade create_zombie_point_of_interest( 500, 30, 10000 ); - return; - } - } + return; + } + } } _titus_target_animate_and_die( n_fuse_timer, inflictor ) { - self endon( "death" ); - self endon( "titus_target_timeout" ); - self thread _titus_target_timeout( n_fuse_timer ); - self thread _titus_check_for_target_death( inflictor ); - self thread _blundersplat_target_acid_stun_anim(); - wait( n_fuse_timer ); - self notify( "killed_by_a_blundersplat", inflictor ); - self dodamage( self.health + 1000, self.origin, inflictor ); + self endon( "death" ); + self endon( "titus_target_timeout" ); + self thread _titus_target_timeout( n_fuse_timer ); + self thread _titus_check_for_target_death( inflictor ); + self thread _blundersplat_target_acid_stun_anim(); + wait( n_fuse_timer ); + self notify( "killed_by_a_blundersplat", inflictor ); + self dodamage( self.health + 1000, self.origin, inflictor ); } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_weap_claymore.gsc b/scripts/zm/replaced/_zm_weap_claymore.gsc index 7fe40605..e0b27937 100644 --- a/scripts/zm/replaced/_zm_weap_claymore.gsc +++ b/scripts/zm/replaced/_zm_weap_claymore.gsc @@ -37,10 +37,10 @@ buy_claymores() { play_sound_at_pos( "purchase", self.origin ); who maps\mp\zombies\_zm_score::minus_to_player_score( self.zombie_cost ); - if ( !who is_player_placeable_mine( "claymore_zm" ) ) - { - who thread show_claymore_hint( "claymore_purchased" ); - } + if ( !who is_player_placeable_mine( "claymore_zm" ) ) + { + who thread show_claymore_hint( "claymore_purchased" ); + } who thread claymore_setup(); who thread maps\mp\zombies\_zm_audio::create_and_play_dialog( "weapon_pickup", "grenade" ); if ( isDefined( self.stub ) ) @@ -112,7 +112,7 @@ claymore_detonation() { 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; } @@ -143,12 +143,12 @@ claymore_detonation() claymore_setup() { - if ( !isdefined( self.claymores ) ) - self.claymores = []; + if ( !isdefined( self.claymores ) ) + self.claymores = []; - self thread claymore_watch(); - self giveweapon( "claymore_zm" ); - self set_player_placeable_mine( "claymore_zm" ); - self setactionslot( 4, "weapon", "claymore_zm" ); - self setweaponammostock( "claymore_zm", 2 ); + self thread claymore_watch(); + self giveweapon( "claymore_zm" ); + self set_player_placeable_mine( "claymore_zm" ); + self setactionslot( 4, "weapon", "claymore_zm" ); + self setweaponammostock( "claymore_zm", 2 ); } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_weap_cymbal_monkey.gsc b/scripts/zm/replaced/_zm_weap_cymbal_monkey.gsc index 79d7fc51..cf0a8d17 100644 --- a/scripts/zm/replaced/_zm_weap_cymbal_monkey.gsc +++ b/scripts/zm/replaced/_zm_weap_cymbal_monkey.gsc @@ -9,168 +9,168 @@ player_handle_cymbal_monkey() { - self notify( "starting_monkey_watch" ); - self endon( "disconnect" ); - self endon( "starting_monkey_watch" ); - attract_dist_diff = level.monkey_attract_dist_diff; + self notify( "starting_monkey_watch" ); + self endon( "disconnect" ); + self endon( "starting_monkey_watch" ); + attract_dist_diff = level.monkey_attract_dist_diff; - if ( !isdefined( attract_dist_diff ) ) - attract_dist_diff = 45; + if ( !isdefined( attract_dist_diff ) ) + attract_dist_diff = 45; - num_attractors = level.num_monkey_attractors; + num_attractors = level.num_monkey_attractors; - if ( !isdefined( num_attractors ) ) - num_attractors = 96; + if ( !isdefined( num_attractors ) ) + num_attractors = 96; - max_attract_dist = level.monkey_attract_dist; + max_attract_dist = level.monkey_attract_dist; - if ( !isdefined( max_attract_dist ) ) - max_attract_dist = 1536; + if ( !isdefined( max_attract_dist ) ) + max_attract_dist = 1536; - while ( true ) - { - grenade = get_thrown_monkey(); - self thread player_throw_cymbal_monkey( grenade, num_attractors, max_attract_dist, attract_dist_diff ); - } + while ( true ) + { + grenade = get_thrown_monkey(); + 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 ) { - self endon( "disconnect" ); - self endon( "starting_monkey_watch" ); + self endon( "disconnect" ); + self endon( "starting_monkey_watch" ); - if ( isdefined( grenade ) ) - { - grenade endon( "death" ); + if ( isdefined( grenade ) ) + { + grenade endon( "death" ); - if ( self maps\mp\zombies\_zm_laststand::player_is_in_laststand() ) - { - if ( isdefined( grenade.damagearea ) ) - grenade.damagearea delete(); + if ( self maps\mp\zombies\_zm_laststand::player_is_in_laststand() ) + { + if ( isdefined( grenade.damagearea ) ) + grenade.damagearea delete(); - grenade delete(); - return; - } + grenade delete(); + return; + } - grenade hide(); - model = spawn( "script_model", grenade.origin ); - model setmodel( level.cymbal_monkey_model ); - model useanimtree( #animtree ); - model linkto( grenade ); - model.angles = grenade.angles; - model thread monkey_cleanup( grenade ); - clone = undefined; + grenade hide(); + model = spawn( "script_model", grenade.origin ); + model setmodel( level.cymbal_monkey_model ); + model useanimtree( #animtree ); + model linkto( grenade ); + model.angles = grenade.angles; + model thread monkey_cleanup( grenade ); + clone = undefined; - if ( isdefined( level.cymbal_monkey_dual_view ) && level.cymbal_monkey_dual_view ) - { - 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 ); - model.simulacrum = clone; - clone maps\mp\zombies\_zm_clone::clone_animate( "idle" ); - clone thread clone_player_angles( self ); - clone notsolid(); - clone ghost(); - } + if ( isdefined( level.cymbal_monkey_dual_view ) && level.cymbal_monkey_dual_view ) + { + 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 ); + model.simulacrum = clone; + clone maps\mp\zombies\_zm_clone::clone_animate( "idle" ); + clone thread clone_player_angles( self ); + clone notsolid(); + clone ghost(); + } - grenade thread watch_for_dud( model, clone ); - grenade thread watch_for_emp( model, clone ); - info = spawnstruct(); - info.sound_attractors = []; - grenade thread monitor_zombie_groans( info ); + grenade thread watch_for_dud( model, clone ); + grenade thread watch_for_emp( model, clone ); + info = spawnstruct(); + info.sound_attractors = []; + grenade thread monitor_zombie_groans( info ); - grenade waittill( "stationary" ); + grenade waittill( "stationary" ); - if ( isdefined( level.grenade_planted ) ) - self thread [[ level.grenade_planted ]]( grenade, model ); + if ( isdefined( level.grenade_planted ) ) + self thread [[ level.grenade_planted ]]( grenade, model ); - if ( isdefined( grenade ) ) - { - if ( isdefined( model ) ) - { - model setanim( %o_monkey_bomb ); + if ( isdefined( grenade ) ) + { + if ( isdefined( model ) ) + { + model setanim( %o_monkey_bomb ); - if ( !( isdefined( grenade.backlinked ) && grenade.backlinked ) ) - { - model unlink(); - model.origin = grenade.origin; - model.angles = grenade.angles; - } - } + if ( !( isdefined( grenade.backlinked ) && grenade.backlinked ) ) + { + model unlink(); + model.origin = grenade.origin; + model.angles = grenade.angles; + } + } - if ( isdefined( clone ) ) - { - clone forceteleport( grenade.origin, grenade.angles ); - clone thread hide_owner( self ); - grenade thread proximity_detonate( self ); - clone show(); - clone setinvisibletoall(); - clone setvisibletoteam( level.zombie_team ); - } + if ( isdefined( clone ) ) + { + clone forceteleport( grenade.origin, grenade.angles ); + clone thread hide_owner( self ); + grenade thread proximity_detonate( self ); + clone show(); + clone setinvisibletoall(); + clone setvisibletoteam( level.zombie_team ); + } - grenade resetmissiledetonationtime(); - playfxontag( level._effect["monkey_glow"], model, "origin_animate_jnt" ); - valid_poi = check_point_in_enabled_zone( grenade.origin, undefined, undefined ); + grenade resetmissiledetonationtime(); + playfxontag( level._effect["monkey_glow"], model, "origin_animate_jnt" ); + valid_poi = check_point_in_enabled_zone( grenade.origin, undefined, undefined ); - if ( isdefined( level.check_valid_poi ) ) - valid_poi = grenade [[ level.check_valid_poi ]]( valid_poi ); + if ( isdefined( level.check_valid_poi ) ) + valid_poi = grenade [[ level.check_valid_poi ]]( valid_poi ); - if ( valid_poi ) - { - grenade create_zombie_point_of_interest( max_attract_dist, num_attractors, 10000 ); - grenade.attract_to_origin = 1; - grenade thread create_zombie_point_of_interest_attractor_positions( 4, attract_dist_diff ); - grenade thread wait_for_attractor_positions_complete(); - grenade thread do_monkey_sound( model, info ); - level.cymbal_monkeys[level.cymbal_monkeys.size] = grenade; - } - else - { - grenade.script_noteworthy = undefined; - self thread grenade_stolen_by_sam( grenade, model, clone ); - } - } - else - { - grenade.script_noteworthy = undefined; - self thread grenade_stolen_by_sam( grenade, model, clone ); - } - } + if ( valid_poi ) + { + grenade create_zombie_point_of_interest( max_attract_dist, num_attractors, 10000 ); + grenade.attract_to_origin = 1; + grenade thread create_zombie_point_of_interest_attractor_positions( 4, attract_dist_diff ); + grenade thread wait_for_attractor_positions_complete(); + grenade thread do_monkey_sound( model, info ); + level.cymbal_monkeys[level.cymbal_monkeys.size] = grenade; + } + else + { + grenade.script_noteworthy = undefined; + self thread grenade_stolen_by_sam( grenade, model, clone ); + } + } + else + { + grenade.script_noteworthy = undefined; + self thread grenade_stolen_by_sam( grenade, model, clone ); + } + } } grenade_stolen_by_sam( ent_grenade, ent_model, ent_actor ) { - if ( !isdefined( ent_model ) ) - return; + if ( !isdefined( ent_model ) ) + return; - direction = ent_model.origin; - direction = ( direction[1], direction[0], 0 ); + direction = ent_model.origin; + direction = ( direction[1], direction[0], 0 ); - if ( direction[1] < 0 || direction[0] > 0 && direction[1] > 0 ) - direction = ( direction[0], direction[1] * -1, 0 ); - else if ( direction[0] < 0 ) - direction = ( direction[0] * -1, direction[1], 0 ); + if ( direction[1] < 0 || direction[0] > 0 && direction[1] > 0 ) + direction = ( direction[0], direction[1] * -1, 0 ); + else if ( direction[0] < 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" ); - ent_model movez( 60, 1.0, 0.25, 0.25 ); - ent_model vibrate( direction, 1.5, 2.5, 1.0 ); + playfxontag( level._effect["grenade_samantha_steal"], ent_model, "tag_origin" ); + ent_model movez( 60, 1.0, 0.25, 0.25 ); + ent_model vibrate( direction, 1.5, 2.5, 1.0 ); - ent_model waittill( "movedone" ); + ent_model waittill( "movedone" ); - if ( isdefined( self.damagearea ) ) - self.damagearea delete(); + if ( isdefined( self.damagearea ) ) + self.damagearea delete(); - ent_model delete(); + ent_model delete(); - if ( isdefined( ent_actor ) ) - ent_actor delete(); + if ( isdefined( ent_actor ) ) + ent_actor delete(); - if ( isdefined( ent_grenade ) ) - { - if ( isdefined( ent_grenade.damagearea ) ) - ent_grenade.damagearea delete(); + if ( isdefined( ent_grenade ) ) + { + if ( isdefined( ent_grenade.damagearea ) ) + ent_grenade.damagearea delete(); - ent_grenade delete(); - } + ent_grenade delete(); + } } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_weap_emp_bomb.gsc b/scripts/zm/replaced/_zm_weap_emp_bomb.gsc index 2ca89f80..a2e87b15 100644 --- a/scripts/zm/replaced/_zm_weap_emp_bomb.gsc +++ b/scripts/zm/replaced/_zm_weap_emp_bomb.gsc @@ -46,98 +46,98 @@ emp_detonate(grenade) 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 ) ) - return; + if ( !isdefined( zombies ) ) + return; - for ( i = 0; i < zombies.size; i++ ) - { - if ( !isdefined( zombies[i] ) || isdefined( zombies[i].ignore_inert ) && zombies[i].ignore_inert ) - continue; + for ( i = 0; i < zombies.size; i++ ) + { + if ( !isdefined( zombies[i] ) || isdefined( zombies[i].ignore_inert ) && zombies[i].ignore_inert ) + continue; if ( is_true( zombies[i].in_the_ground ) ) continue; - zombies[i].becoming_inert = 1; - } + zombies[i].becoming_inert = 1; + } - stunned = 0; + stunned = 0; - for ( i = 0; i < zombies.size; i++ ) - { - if ( !isdefined( zombies[i] ) || isdefined( zombies[i].ignore_inert ) && zombies[i].ignore_inert ) - continue; + for ( i = 0; i < zombies.size; i++ ) + { + if ( !isdefined( zombies[i] ) || isdefined( zombies[i].ignore_inert ) && zombies[i].ignore_inert ) + continue; if ( is_true( zombies[i].in_the_ground ) ) continue; - stunned++; - zombies[i] thread stun_zombie(); - wait 0.05; - } + stunned++; + zombies[i] thread stun_zombie(); + wait 0.05; + } - if ( stunned >= 10 && isdefined( grenade_owner ) ) - grenade_owner notify( "the_lights_of_their_eyes" ); + if ( stunned >= 10 && isdefined( grenade_owner ) ) + grenade_owner notify( "the_lights_of_their_eyes" ); } destroyequipment( origin, radius ) { - grenades = getentarray( "grenade", "classname" ); - rsquared = radius * radius; + grenades = getentarray( "grenade", "classname" ); + rsquared = radius * radius; - for ( i = 0; i < grenades.size; i++ ) - { - item = grenades[i]; + for ( i = 0; i < grenades.size; i++ ) + { + item = grenades[i]; - if ( distancesquared( origin, item.origin ) > rsquared ) - continue; + if ( distancesquared( origin, item.origin ) > rsquared ) + continue; - if ( !isdefined( item.name ) ) - continue; + if ( !isdefined( item.name ) ) + continue; - if ( !is_offhand_weapon( item.name ) ) - continue; + if ( !is_offhand_weapon( item.name ) ) + continue; - watcher = item.owner getwatcherforweapon( item.name ); + watcher = item.owner getwatcherforweapon( item.name ); - if ( !isdefined( watcher ) ) - continue; + if ( !isdefined( watcher ) ) + 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++ ) - { - item = equipment[i]; + for ( i = 0; i < equipment.size; i++ ) + { + item = equipment[i]; - if ( !isdefined( item ) ) - continue; + if ( !isdefined( item ) ) + continue; - if ( distancesquared( origin, item.origin ) > rsquared ) - continue; + if ( distancesquared( origin, item.origin ) > rsquared ) + continue; - waitanddamage( item, 1505 ); - } + waitanddamage( item, 1505 ); + } } waitanddamage( object, damage ) { - object endon( "death" ); - object endon( "hacked" ); - object.stun_fx = 1; + object endon( "death" ); + object endon( "hacked" ); + object.stun_fx = 1; - 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 ) ); + 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 ) ); - delay = 1.1; + delay = 1.1; - if ( delay ) - wait( delay ); + if ( 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) diff --git a/scripts/zm/replaced/_zm_weap_jetgun.gsc b/scripts/zm/replaced/_zm_weap_jetgun.gsc index d0d01fd1..0c71c03a 100644 --- a/scripts/zm/replaced/_zm_weap_jetgun.gsc +++ b/scripts/zm/replaced/_zm_weap_jetgun.gsc @@ -5,76 +5,76 @@ watch_overheat() { - self endon( "death_or_disconnect" ); - self endon( "weapon_change" ); + self endon( "death_or_disconnect" ); + self endon( "weapon_change" ); - while ( true ) - { - if ( self getcurrentweapon() == "jetgun_zm" ) - { - overheating = self isweaponoverheating( 0 ); - heat = self isweaponoverheating( 1 ); - self.jetgun_overheating = overheating; - self.jetgun_heatval = heat; + while ( true ) + { + if ( self getcurrentweapon() == "jetgun_zm" ) + { + overheating = self isweaponoverheating( 0 ); + heat = self isweaponoverheating( 1 ); + self.jetgun_overheating = overheating; + self.jetgun_heatval = heat; - if ( overheating ) - self notify( "jetgun_overheated" ); + if ( overheating ) + self notify( "jetgun_overheated" ); - if ( heat > 75 ) - self thread play_overheat_fx(); - } + if ( heat > 75 ) + self thread play_overheat_fx(); + } - wait 0.05; - } + wait 0.05; + } } jetgun_firing() { - if ( !isdefined( self.jetsound_ent ) ) - { - self.jetsound_ent = spawn( "script_origin", self.origin ); - self.jetsound_ent linkto( self, "tag_origin" ); - } + if ( !isdefined( self.jetsound_ent ) ) + { + self.jetsound_ent = spawn( "script_origin", self.origin ); + self.jetsound_ent linkto( self, "tag_origin" ); + } - jetgun_fired = 0; + 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 playsound( "wpn_jetgun_effect_plr_start" ); - self notify( "jgun_snd" ); - } + if ( self is_jetgun_firing() && jetgun_fired == 0 ) + { + self.jetsound_ent playloopsound( "wpn_jetgun_effect_plr_loop", 0.8 ); + self.jetsound_ent playsound( "wpn_jetgun_effect_plr_start" ); + self notify( "jgun_snd" ); + } - while ( self is_jetgun_firing() ) - { - jetgun_fired = 1; - self thread jetgun_fired(); - view_pos = self gettagorigin( "tag_flash" ); - view_angles = self gettagangles( "tag_flash" ); + while ( self is_jetgun_firing() ) + { + jetgun_fired = 1; + self thread jetgun_fired(); + view_pos = self gettagorigin( "tag_flash" ); + view_angles = self gettagangles( "tag_flash" ); - if ( self get_jetgun_engine_direction() < 0 ) - playfx( level._effect["jetgun_smoke_cloud"], view_pos - self getplayerviewheight(), anglestoforward( view_angles ), anglestoup( view_angles ) ); - else - playfx( level._effect["jetgun_smoke_cloud"], view_pos - self getplayerviewheight(), anglestoforward( view_angles ) * -1, anglestoup( view_angles ) ); + if ( self get_jetgun_engine_direction() < 0 ) + playfx( level._effect["jetgun_smoke_cloud"], view_pos - self getplayerviewheight(), anglestoforward( view_angles ), anglestoup( view_angles ) ); + else + 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 ) - { - self.jetsound_ent stoploopsound( 0.5 ); - self.jetsound_ent playsound( "wpn_jetgun_effect_plr_end" ); - self thread sound_ent_cleanup(); - jetgun_fired = 0; - } + if ( jetgun_fired == 1 ) + { + self.jetsound_ent stoploopsound( 0.5 ); + self.jetsound_ent playsound( "wpn_jetgun_effect_plr_end" ); + self thread sound_ent_cleanup(); + jetgun_fired = 0; + } } sound_ent_cleanup() { - self endon( "jgun_snd" ); - wait 4; + self endon( "jgun_snd" ); + wait 4; - if ( isdefined( self.jetsound_ent ) ) + if ( isdefined( self.jetsound_ent ) ) { self.jetsound_ent delete(); } @@ -82,10 +82,10 @@ sound_ent_cleanup() is_jetgun_firing() { - if(!self attackButtonPressed()) - { - return 0; - } + if(!self attackButtonPressed()) + { + return 0; + } return abs( self get_jetgun_engine_direction() ) > 0.2; } @@ -148,14 +148,14 @@ jetgun_check_enemies_in_range( zombie, view_pos, drag_range_squared, gib_range_s } else { - if ( !isDefined( zombie.ai_state ) || zombie.ai_state != "find_flesh" && zombie.ai_state != "zombieMoveOnBus" ) - { - return; - } - if ( isDefined( zombie.in_the_ground ) && zombie.in_the_ground ) - { - return; - } + if ( !isDefined( zombie.ai_state ) || zombie.ai_state != "find_flesh" && zombie.ai_state != "zombieMoveOnBus" ) + { + return; + } + if ( isDefined( zombie.in_the_ground ) && zombie.in_the_ground ) + { + return; + } if ( test_range_squared < drag_range_squared && dot > 0 ) { @@ -182,7 +182,7 @@ jetgun_grind_zombie( player ) } self.nodeathragdoll = 1; 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 ); } } @@ -196,7 +196,7 @@ handle_overheated_jetgun() 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 ) { @@ -207,23 +207,23 @@ handle_overheated_jetgun() } else if ( isDefined( level.unbuild_overheated_jetgun ) && level.unbuild_overheated_jetgun ) { - self thread maps\mp\zombies\_zm_equipment::equipment_release( "jetgun_zm" ); - maps\mp\zombies\_zm_buildables::unbuild_buildable( "jetgun_zm", 1 ); - self dodamage( 50, weapon_org ); + self thread maps\mp\zombies\_zm_equipment::equipment_release( "jetgun_zm" ); + maps\mp\zombies\_zm_buildables::unbuild_buildable( "jetgun_zm", 1 ); + self dodamage( 50, weapon_org ); + } + else if ( isDefined( level.take_overheated_jetgun ) && level.take_overheated_jetgun ) + { + self thread maps\mp\zombies\_zm_equipment::equipment_release( "jetgun_zm" ); + self dodamage( 50, weapon_org ); + } + else + { + continue; } - else if ( isDefined( level.take_overheated_jetgun ) && level.take_overheated_jetgun ) - { - self thread maps\mp\zombies\_zm_equipment::equipment_release( "jetgun_zm" ); - self dodamage( 50, weapon_org ); - } - else - { - continue; - } - self.jetgun_overheating = undefined; - self.jetgun_heatval = undefined; - self playsound( "wpn_jetgun_explo" ); + self.jetgun_overheating = undefined; + self.jetgun_heatval = undefined; + self playsound( "wpn_jetgun_explo" ); } } } diff --git a/scripts/zm/replaced/_zm_weap_one_inch_punch.gsc b/scripts/zm/replaced/_zm_weap_one_inch_punch.gsc index a1386ea8..5fa7a4f4 100644 --- a/scripts/zm/replaced/_zm_weap_one_inch_punch.gsc +++ b/scripts/zm/replaced/_zm_weap_one_inch_punch.gsc @@ -13,51 +13,51 @@ monitor_melee_swipe() { - self endon( "disconnect" ); - self notify( "stop_monitor_melee_swipe" ); - self endon( "stop_monitor_melee_swipe" ); - self endon( "bled_out" ); - self endon( "gr_head_forced_bleed_out" ); + self endon( "disconnect" ); + self notify( "stop_monitor_melee_swipe" ); + self endon( "stop_monitor_melee_swipe" ); + self endon( "bled_out" ); + self endon( "gr_head_forced_bleed_out" ); - while ( true ) - { - while ( !self ismeleeing() ) - wait 0.05; + while ( true ) + { + while ( !self ismeleeing() ) + wait 0.05; - if ( self getcurrentweapon() == level.riotshield_name ) - { - wait 0.1; - continue; - } + if ( self getcurrentweapon() == level.riotshield_name ) + { + wait 0.1; + continue; + } - range_mod = 1; - self setclientfield( "oneinchpunch_impact", 1 ); - wait_network_frame(); - self setclientfield( "oneinchpunch_impact", 0 ); - v_punch_effect_fwd = anglestoforward( self getplayerangles() ); - v_punch_yaw = get2dyaw( ( 0, 0, 0 ), v_punch_effect_fwd ); + range_mod = 1; + self setclientfield( "oneinchpunch_impact", 1 ); + wait_network_frame(); + self setclientfield( "oneinchpunch_impact", 0 ); + v_punch_effect_fwd = anglestoforward( self getplayerangles() ); + 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" ) - range_mod *= 2; + if ( isdefined( self.b_punch_upgraded ) && self.b_punch_upgraded && isdefined( self.str_punch_element ) && self.str_punch_element == "air" ) + range_mod *= 2; - a_zombies = getaispeciesarray( level.zombie_team, "all" ); - a_zombies = get_array_of_closest( self.origin, a_zombies, undefined, undefined, 100 ); + a_zombies = getaispeciesarray( level.zombie_team, "all" ); + a_zombies = get_array_of_closest( self.origin, a_zombies, undefined, undefined, 100 ); - foreach ( zombie in a_zombies ) - { - if ( self is_player_facing( zombie, v_punch_yaw ) && distancesquared( self.origin, zombie.origin ) <= 4096 * range_mod ) - { - self thread zombie_punch_damage( zombie, 1 ); - continue; - } + foreach ( zombie in a_zombies ) + { + if ( self is_player_facing( zombie, v_punch_yaw ) && distancesquared( self.origin, zombie.origin ) <= 4096 * range_mod ) + { + self thread zombie_punch_damage( zombie, 1 ); + continue; + } - if ( self is_player_facing( zombie, v_punch_yaw ) ) - self thread zombie_punch_damage( zombie, 0.5 ); - } + if ( self is_player_facing( zombie, v_punch_yaw ) ) + self thread zombie_punch_damage( zombie, 0.5 ); + } - while ( self ismeleeing() ) - wait 0.05; + while ( self ismeleeing() ) + wait 0.05; - wait 0.05; - } + wait 0.05; + } } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_weap_riotshield.gsc b/scripts/zm/replaced/_zm_weap_riotshield.gsc index 09fa0745..8b4a3d31 100644 --- a/scripts/zm/replaced/_zm_weap_riotshield.gsc +++ b/scripts/zm/replaced/_zm_weap_riotshield.gsc @@ -15,217 +15,217 @@ init() { - maps\mp\zombies\_zm_riotshield::init(); - set_zombie_var( "riotshield_cylinder_radius", 360 ); - set_zombie_var( "riotshield_fling_range", 90 ); - set_zombie_var( "riotshield_gib_range", 90 ); - set_zombie_var( "riotshield_gib_damage", 75 ); - set_zombie_var( "riotshield_knockdown_range", 90 ); - set_zombie_var( "riotshield_knockdown_damage", 15 ); - set_zombie_var( "riotshield_hit_points", 2250 ); - set_zombie_var( "riotshield_fling_damage_shield", 100 ); - set_zombie_var( "riotshield_knockdown_damage_shield", 15 ); - level.riotshield_network_choke_count = 0; - level.riotshield_gib_refs = []; - level.riotshield_gib_refs[level.riotshield_gib_refs.size] = "guts"; - level.riotshield_gib_refs[level.riotshield_gib_refs.size] = "right_arm"; - level.riotshield_gib_refs[level.riotshield_gib_refs.size] = "left_arm"; - level.riotshield_damage_callback = ::player_damage_shield; - level.deployed_riotshield_damage_callback = ::deployed_damage_shield; - level.transferriotshield = ::transferriotshield; - level.cantransferriotshield = ::cantransferriotshield; - 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\gametypes_zm\_weaponobjects::createretrievablehint( "riotshield", &"ZOMBIE_EQUIP_RIOTSHIELD_PICKUP_HINT_STRING" ); - onplayerconnect_callback( ::onplayerconnect ); + maps\mp\zombies\_zm_riotshield::init(); + set_zombie_var( "riotshield_cylinder_radius", 360 ); + set_zombie_var( "riotshield_fling_range", 90 ); + set_zombie_var( "riotshield_gib_range", 90 ); + set_zombie_var( "riotshield_gib_damage", 75 ); + set_zombie_var( "riotshield_knockdown_range", 90 ); + set_zombie_var( "riotshield_knockdown_damage", 15 ); + set_zombie_var( "riotshield_hit_points", 2250 ); + set_zombie_var( "riotshield_fling_damage_shield", 100 ); + set_zombie_var( "riotshield_knockdown_damage_shield", 15 ); + level.riotshield_network_choke_count = 0; + level.riotshield_gib_refs = []; + level.riotshield_gib_refs[level.riotshield_gib_refs.size] = "guts"; + level.riotshield_gib_refs[level.riotshield_gib_refs.size] = "right_arm"; + level.riotshield_gib_refs[level.riotshield_gib_refs.size] = "left_arm"; + level.riotshield_damage_callback = ::player_damage_shield; + level.deployed_riotshield_damage_callback = ::deployed_damage_shield; + level.transferriotshield = ::transferriotshield; + level.cantransferriotshield = ::cantransferriotshield; + 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\gametypes_zm\_weaponobjects::createretrievablehint( "riotshield", &"ZOMBIE_EQUIP_RIOTSHIELD_PICKUP_HINT_STRING" ); + onplayerconnect_callback( ::onplayerconnect ); } onplayerconnect() { - self.player_shield_reset_health = ::player_init_shield_health; - self.player_shield_apply_damage = ::player_damage_shield; - self.player_shield_reset_location = ::player_init_shield_location; - self thread watchriotshielduse(); - self thread watchriotshieldmelee(); - self thread player_watch_laststand(); + self.player_shield_reset_health = ::player_init_shield_health; + self.player_shield_apply_damage = ::player_damage_shield; + self.player_shield_reset_location = ::player_init_shield_location; + self thread watchriotshielduse(); + self thread watchriotshieldmelee(); + self thread player_watch_laststand(); } player_damage_shield( idamage, bheld ) { - damagemax = level.zombie_vars["riotshield_hit_points"]; + damagemax = level.zombie_vars["riotshield_hit_points"]; - if ( !isdefined( self.shielddamagetaken ) ) - self.shielddamagetaken = 0; + if ( !isdefined( self.shielddamagetaken ) ) + self.shielddamagetaken = 0; - self.shielddamagetaken += idamage; + self.shielddamagetaken += idamage; - if ( self.shielddamagetaken >= damagemax ) - { - if ( bheld || !isdefined( self.shield_ent ) ) - { - self playrumbleonentity( "damage_heavy" ); - earthquake( 1.0, 0.75, self.origin, 100 ); - self playsound( "wpn_riotshield_zm_destroy" ); - self thread player_take_riotshield(); - } - else - { - shield_origin = self.shield_ent.origin; - playsoundatposition( "fly_riotshield_zm_impact_zombies", shield_origin ); + if ( self.shielddamagetaken >= damagemax ) + { + if ( bheld || !isdefined( self.shield_ent ) ) + { + self playrumbleonentity( "damage_heavy" ); + earthquake( 1.0, 0.75, self.origin, 100 ); + self playsound( "wpn_riotshield_zm_destroy" ); + self thread player_take_riotshield(); + } + else + { + shield_origin = self.shield_ent.origin; + playsoundatposition( "fly_riotshield_zm_impact_zombies", shield_origin ); - if ( is_true( self.shield_ent.destroy_begun ) ) - return; + if ( is_true( self.shield_ent.destroy_begun ) ) + return; - self.shield_ent.destroy_begun = 1; - self thread player_wait_and_take_riotshield(); - } - } - else - { - if ( bheld || !isdefined( self.shield_ent ) ) - { - self playrumbleonentity( "damage_light" ); - earthquake( 0.5, 0.5, self.origin, 100 ); - self playsound( "fly_riotshield_zm_impact_zombies" ); - } - else - { - shield_origin = self.shield_ent.origin; - playsoundatposition( "fly_riotshield_zm_impact_zombies", shield_origin ); - } + self.shield_ent.destroy_begun = 1; + self thread player_wait_and_take_riotshield(); + } + } + else + { + if ( bheld || !isdefined( self.shield_ent ) ) + { + self playrumbleonentity( "damage_light" ); + earthquake( 0.5, 0.5, self.origin, 100 ); + self playsound( "fly_riotshield_zm_impact_zombies" ); + } + else + { + shield_origin = self.shield_ent.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() { - shield_origin = self.shield_ent.origin; - level thread maps\mp\zombies\_zm_equipment::equipment_disappear_fx( shield_origin, level._riotshield_dissapear_fx ); - wait 1; - playsoundatposition( "wpn_riotshield_zm_destroy", shield_origin ); - self thread player_take_riotshield(); + shield_origin = self.shield_ent.origin; + level thread maps\mp\zombies\_zm_equipment::equipment_disappear_fx( shield_origin, level._riotshield_dissapear_fx ); + wait 1; + playsoundatposition( "wpn_riotshield_zm_destroy", shield_origin ); + self thread player_take_riotshield(); } watchriotshieldmelee() { - for (;;) - { - self waittill( "weapon_melee", weapon ); + for (;;) + { + self waittill( "weapon_melee", weapon ); - if ( weapon == level.riotshield_name ) - self riotshield_melee(); - } + if ( weapon == level.riotshield_name ) + self riotshield_melee(); + } } riotshield_melee() { - if ( !isdefined( level.riotshield_knockdown_enemies ) ) - { - level.riotshield_knockdown_enemies = []; - level.riotshield_knockdown_gib = []; - level.riotshield_fling_enemies = []; - level.riotshield_fling_vecs = []; - } + if ( !isdefined( level.riotshield_knockdown_enemies ) ) + { + level.riotshield_knockdown_enemies = []; + level.riotshield_knockdown_gib = []; + level.riotshield_fling_enemies = []; + level.riotshield_fling_vecs = []; + } - self riotshield_get_enemies_in_range(); - shield_damage = 0; - level.riotshield_network_choke_count = 0; + self riotshield_get_enemies_in_range(); + shield_damage = 0; + level.riotshield_network_choke_count = 0; - for ( i = 0; i < level.riotshield_fling_enemies.size; i++ ) - { - riotshield_network_choke(); + for ( i = 0; i < level.riotshield_fling_enemies.size; i++ ) + { + riotshield_network_choke(); - if ( isdefined( level.riotshield_fling_enemies[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"]; - } - } + if ( isdefined( level.riotshield_fling_enemies[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"]; + } + } - for ( i = 0; i < level.riotshield_knockdown_enemies.size; i++ ) - { - riotshield_network_choke(); - level.riotshield_knockdown_enemies[i] thread riotshield_knockdown_zombie( self, level.riotshield_knockdown_gib[i] ); - shield_damage += level.zombie_vars["riotshield_knockdown_damage_shield"]; - } + for ( i = 0; i < level.riotshield_knockdown_enemies.size; i++ ) + { + riotshield_network_choke(); + level.riotshield_knockdown_enemies[i] thread riotshield_knockdown_zombie( self, level.riotshield_knockdown_gib[i] ); + shield_damage += level.zombie_vars["riotshield_knockdown_damage_shield"]; + } - level.riotshield_knockdown_enemies = []; - level.riotshield_knockdown_gib = []; - level.riotshield_fling_enemies = []; - level.riotshield_fling_vecs = []; + level.riotshield_knockdown_enemies = []; + level.riotshield_knockdown_gib = []; + level.riotshield_fling_enemies = []; + level.riotshield_fling_vecs = []; - if ( shield_damage ) - self player_damage_shield( shield_damage, 0 ); + if ( shield_damage ) + self player_damage_shield( shield_damage, 0 ); } riotshield_fling_zombie( player, fling_vec, index ) { - if ( !isdefined( self ) || !isalive( self ) ) - return; + if ( !isdefined( self ) || !isalive( self ) ) + return; - if ( isdefined( self.ignore_riotshield ) && self.ignore_riotshield ) - return; + if ( isdefined( self.ignore_riotshield ) && self.ignore_riotshield ) + return; - if ( isdefined( self.riotshield_fling_func ) ) - { - self [[ self.riotshield_fling_func ]]( player ); - return; - } + if ( isdefined( self.riotshield_fling_func ) ) + { + self [[ self.riotshield_fling_func ]]( player ); + return; + } - damage = 2500; - self dodamage( damage, player.origin, player, player, 0, "MOD_MELEE", 0, level.riotshield_name ); + damage = 2500; + self dodamage( damage, player.origin, player, player, 0, "MOD_MELEE", 0, level.riotshield_name ); - if ( self.health < 1 ) - { - self.riotshield_death = 1; - player maps\mp\zombies\_zm_score::player_add_points( "death", "MOD_MELEE" ); - self startragdoll(); - self launchragdoll( fling_vec ); - } - else - { - player maps\mp\zombies\_zm_score::player_add_points( "damage_light" ); - } + if ( self.health < 1 ) + { + self.riotshield_death = 1; + player maps\mp\zombies\_zm_score::player_add_points( "death", "MOD_MELEE" ); + self startragdoll(); + self launchragdoll( fling_vec ); + } + else + { + player maps\mp\zombies\_zm_score::player_add_points( "damage_light" ); + } } zombie_knockdown( player, gib ) { - if ( isdefined( level.override_riotshield_damage_func ) ) - self [[ level.override_riotshield_damage_func ]]( player, gib ); - else - { - if ( gib ) - { - self.a.gib_ref = random( level.riotshield_gib_refs ); - self thread maps\mp\animscripts\zm_death::do_gib(); - } - } + if ( isdefined( level.override_riotshield_damage_func ) ) + self [[ level.override_riotshield_damage_func ]]( player, gib ); + else + { + if ( gib ) + { + self.a.gib_ref = random( level.riotshield_gib_refs ); + self thread maps\mp\animscripts\zm_death::do_gib(); + } + } } riotshield_knockdown_zombie( player, gib ) { - self endon( "death" ); - playsoundatposition( "vox_riotshield_forcehit", self.origin ); - playsoundatposition( "wpn_riotshield_proj_impact", self.origin ); + self endon( "death" ); + playsoundatposition( "vox_riotshield_forcehit", self.origin ); + playsoundatposition( "wpn_riotshield_proj_impact", self.origin ); - if ( !isdefined( self ) || !isalive( self ) ) - return; + if ( !isdefined( self ) || !isalive( self ) ) + return; - if ( isdefined( self.riotshield_knockdown_func ) ) - self [[ self.riotshield_knockdown_func ]]( player, gib ); - else - self zombie_knockdown( player, gib ); + if ( isdefined( self.riotshield_knockdown_func ) ) + self [[ self.riotshield_knockdown_func ]]( player, gib ); + else + 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 playsound( "fly_riotshield_forcehit" ); + self dodamage( level.zombie_vars["riotshield_knockdown_damage"], player.origin, player, player, 0, "MOD_MELEE", 0, level.riotshield_name ); + self playsound( "fly_riotshield_forcehit" ); - if ( self.health < 1 ) - { - player maps\mp\zombies\_zm_score::player_add_points( "death", "MOD_MELEE" ); - } - else - { - player maps\mp\zombies\_zm_score::player_add_points( "damage_light" ); - } + if ( self.health < 1 ) + { + player maps\mp\zombies\_zm_score::player_add_points( "death", "MOD_MELEE" ); + } + else + { + player maps\mp\zombies\_zm_score::player_add_points( "damage_light" ); + } } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_weap_riotshield_prison.gsc b/scripts/zm/replaced/_zm_weap_riotshield_prison.gsc index 85333192..058bdfa1 100644 --- a/scripts/zm/replaced/_zm_weap_riotshield_prison.gsc +++ b/scripts/zm/replaced/_zm_weap_riotshield_prison.gsc @@ -15,217 +15,217 @@ init() { - maps\mp\zombies\_zm_riotshield_prison::init(); - set_zombie_var( "riotshield_cylinder_radius", 360 ); - set_zombie_var( "riotshield_fling_range", 90 ); - set_zombie_var( "riotshield_gib_range", 90 ); - set_zombie_var( "riotshield_gib_damage", 75 ); - set_zombie_var( "riotshield_knockdown_range", 90 ); - set_zombie_var( "riotshield_knockdown_damage", 15 ); - set_zombie_var( "riotshield_hit_points", 1500 ); - set_zombie_var( "riotshield_fling_damage_shield", 100 ); - set_zombie_var( "riotshield_knockdown_damage_shield", 15 ); - level.riotshield_network_choke_count = 0; - level.riotshield_gib_refs = []; - level.riotshield_gib_refs[level.riotshield_gib_refs.size] = "guts"; - level.riotshield_gib_refs[level.riotshield_gib_refs.size] = "right_arm"; - level.riotshield_gib_refs[level.riotshield_gib_refs.size] = "left_arm"; - level.riotshield_damage_callback = ::player_damage_shield; - level.deployed_riotshield_damage_callback = ::deployed_damage_shield; - level.transferriotshield = ::transferriotshield; - level.cantransferriotshield = ::cantransferriotshield; - 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\gametypes_zm\_weaponobjects::createretrievablehint( "riotshield", &"ZOMBIE_EQUIP_RIOTSHIELD_PICKUP_HINT_STRING" ); - onplayerconnect_callback( ::onplayerconnect ); + maps\mp\zombies\_zm_riotshield_prison::init(); + set_zombie_var( "riotshield_cylinder_radius", 360 ); + set_zombie_var( "riotshield_fling_range", 90 ); + set_zombie_var( "riotshield_gib_range", 90 ); + set_zombie_var( "riotshield_gib_damage", 75 ); + set_zombie_var( "riotshield_knockdown_range", 90 ); + set_zombie_var( "riotshield_knockdown_damage", 15 ); + set_zombie_var( "riotshield_hit_points", 1500 ); + set_zombie_var( "riotshield_fling_damage_shield", 100 ); + set_zombie_var( "riotshield_knockdown_damage_shield", 15 ); + level.riotshield_network_choke_count = 0; + level.riotshield_gib_refs = []; + level.riotshield_gib_refs[level.riotshield_gib_refs.size] = "guts"; + level.riotshield_gib_refs[level.riotshield_gib_refs.size] = "right_arm"; + level.riotshield_gib_refs[level.riotshield_gib_refs.size] = "left_arm"; + level.riotshield_damage_callback = ::player_damage_shield; + level.deployed_riotshield_damage_callback = ::deployed_damage_shield; + level.transferriotshield = ::transferriotshield; + level.cantransferriotshield = ::cantransferriotshield; + 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\gametypes_zm\_weaponobjects::createretrievablehint( "riotshield", &"ZOMBIE_EQUIP_RIOTSHIELD_PICKUP_HINT_STRING" ); + onplayerconnect_callback( ::onplayerconnect ); } onplayerconnect() { - self.player_shield_reset_health = ::player_init_shield_health; - self.player_shield_apply_damage = ::player_damage_shield; - self.player_shield_reset_location = ::player_init_shield_location; - self thread watchriotshielduse(); - self thread watchriotshieldmelee(); - self thread player_watch_laststand(); + self.player_shield_reset_health = ::player_init_shield_health; + self.player_shield_apply_damage = ::player_damage_shield; + self.player_shield_reset_location = ::player_init_shield_location; + self thread watchriotshielduse(); + self thread watchriotshieldmelee(); + self thread player_watch_laststand(); } player_damage_shield( idamage, bheld ) { - damagemax = level.zombie_vars["riotshield_hit_points"]; + damagemax = level.zombie_vars["riotshield_hit_points"]; - if ( !isdefined( self.shielddamagetaken ) ) - self.shielddamagetaken = 0; + if ( !isdefined( self.shielddamagetaken ) ) + self.shielddamagetaken = 0; - self.shielddamagetaken += idamage; + self.shielddamagetaken += idamage; - if ( self.shielddamagetaken >= damagemax ) - { - if ( bheld || !isdefined( self.shield_ent ) ) - { - self playrumbleonentity( "damage_heavy" ); - earthquake( 1.0, 0.75, self.origin, 100 ); - self playsound( "wpn_riotshield_zm_destroy" ); - self thread player_take_riotshield(); - } - else - { - shield_origin = self.shield_ent.origin; - playsoundatposition( "fly_riotshield_zm_impact_zombies", shield_origin ); + if ( self.shielddamagetaken >= damagemax ) + { + if ( bheld || !isdefined( self.shield_ent ) ) + { + self playrumbleonentity( "damage_heavy" ); + earthquake( 1.0, 0.75, self.origin, 100 ); + self playsound( "wpn_riotshield_zm_destroy" ); + self thread player_take_riotshield(); + } + else + { + shield_origin = self.shield_ent.origin; + playsoundatposition( "fly_riotshield_zm_impact_zombies", shield_origin ); - if ( is_true( self.shield_ent.destroy_begun ) ) - return; + if ( is_true( self.shield_ent.destroy_begun ) ) + return; - self.shield_ent.destroy_begun = 1; - self thread player_wait_and_take_riotshield(); - } - } - else - { - if ( bheld || !isdefined( self.shield_ent ) ) - { - self playrumbleonentity( "damage_light" ); - earthquake( 0.5, 0.5, self.origin, 100 ); - self playsound( "fly_riotshield_zm_impact_zombies" ); - } - else - { - shield_origin = self.shield_ent.origin; - playsoundatposition( "fly_riotshield_zm_impact_zombies", shield_origin ); - } + self.shield_ent.destroy_begun = 1; + self thread player_wait_and_take_riotshield(); + } + } + else + { + if ( bheld || !isdefined( self.shield_ent ) ) + { + self playrumbleonentity( "damage_light" ); + earthquake( 0.5, 0.5, self.origin, 100 ); + self playsound( "fly_riotshield_zm_impact_zombies" ); + } + else + { + shield_origin = self.shield_ent.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() { - shield_origin = self.shield_ent.origin; - level thread maps\mp\zombies\_zm_equipment::equipment_disappear_fx( shield_origin, level._riotshield_dissapear_fx ); - wait 1; - playsoundatposition( "wpn_riotshield_zm_destroy", shield_origin ); - self thread player_take_riotshield(); + shield_origin = self.shield_ent.origin; + level thread maps\mp\zombies\_zm_equipment::equipment_disappear_fx( shield_origin, level._riotshield_dissapear_fx ); + wait 1; + playsoundatposition( "wpn_riotshield_zm_destroy", shield_origin ); + self thread player_take_riotshield(); } watchriotshieldmelee() { - for (;;) - { - self waittill( "weapon_melee", weapon ); + for (;;) + { + self waittill( "weapon_melee", weapon ); - if ( weapon == level.riotshield_name ) - self riotshield_melee(); - } + if ( weapon == level.riotshield_name ) + self riotshield_melee(); + } } riotshield_melee() { - if ( !isdefined( level.riotshield_knockdown_enemies ) ) - { - level.riotshield_knockdown_enemies = []; - level.riotshield_knockdown_gib = []; - level.riotshield_fling_enemies = []; - level.riotshield_fling_vecs = []; - } + if ( !isdefined( level.riotshield_knockdown_enemies ) ) + { + level.riotshield_knockdown_enemies = []; + level.riotshield_knockdown_gib = []; + level.riotshield_fling_enemies = []; + level.riotshield_fling_vecs = []; + } - self riotshield_get_enemies_in_range(); - shield_damage = 0; - level.riotshield_network_choke_count = 0; + self riotshield_get_enemies_in_range(); + shield_damage = 0; + level.riotshield_network_choke_count = 0; - for ( i = 0; i < level.riotshield_fling_enemies.size; i++ ) - { - riotshield_network_choke(); + for ( i = 0; i < level.riotshield_fling_enemies.size; i++ ) + { + riotshield_network_choke(); - if ( isdefined( level.riotshield_fling_enemies[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"]; - } - } + if ( isdefined( level.riotshield_fling_enemies[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"]; + } + } - for ( i = 0; i < level.riotshield_knockdown_enemies.size; i++ ) - { - riotshield_network_choke(); - level.riotshield_knockdown_enemies[i] thread riotshield_knockdown_zombie( self, level.riotshield_knockdown_gib[i] ); - shield_damage += level.zombie_vars["riotshield_knockdown_damage_shield"]; - } + for ( i = 0; i < level.riotshield_knockdown_enemies.size; i++ ) + { + riotshield_network_choke(); + level.riotshield_knockdown_enemies[i] thread riotshield_knockdown_zombie( self, level.riotshield_knockdown_gib[i] ); + shield_damage += level.zombie_vars["riotshield_knockdown_damage_shield"]; + } - level.riotshield_knockdown_enemies = []; - level.riotshield_knockdown_gib = []; - level.riotshield_fling_enemies = []; - level.riotshield_fling_vecs = []; + level.riotshield_knockdown_enemies = []; + level.riotshield_knockdown_gib = []; + level.riotshield_fling_enemies = []; + level.riotshield_fling_vecs = []; - if ( shield_damage ) - self player_damage_shield( shield_damage, 0 ); + if ( shield_damage ) + self player_damage_shield( shield_damage, 0 ); } riotshield_fling_zombie( player, fling_vec, index ) { - if ( !isdefined( self ) || !isalive( self ) ) - return; + if ( !isdefined( self ) || !isalive( self ) ) + return; - if ( isdefined( self.ignore_riotshield ) && self.ignore_riotshield ) - return; + if ( isdefined( self.ignore_riotshield ) && self.ignore_riotshield ) + return; - if ( isdefined( self.riotshield_fling_func ) ) - { - self [[ self.riotshield_fling_func ]]( player ); - return; - } + if ( isdefined( self.riotshield_fling_func ) ) + { + self [[ self.riotshield_fling_func ]]( player ); + return; + } - damage = 2500; - self dodamage( damage, player.origin, player, player, 0, "MOD_MELEE", 0, level.riotshield_name ); + damage = 2500; + self dodamage( damage, player.origin, player, player, 0, "MOD_MELEE", 0, level.riotshield_name ); - if ( self.health < 1 ) - { - self.riotshield_death = 1; - player maps\mp\zombies\_zm_score::player_add_points( "death", "MOD_MELEE" ); - self startragdoll(); - self launchragdoll( fling_vec ); - } - else - { - player maps\mp\zombies\_zm_score::player_add_points( "damage_light" ); - } + if ( self.health < 1 ) + { + self.riotshield_death = 1; + player maps\mp\zombies\_zm_score::player_add_points( "death", "MOD_MELEE" ); + self startragdoll(); + self launchragdoll( fling_vec ); + } + else + { + player maps\mp\zombies\_zm_score::player_add_points( "damage_light" ); + } } zombie_knockdown( player, gib ) { - if ( isdefined( level.override_riotshield_damage_func ) ) - self [[ level.override_riotshield_damage_func ]]( player, gib ); - else - { - if ( gib ) - { - self.a.gib_ref = random( level.riotshield_gib_refs ); - self thread maps\mp\animscripts\zm_death::do_gib(); - } - } + if ( isdefined( level.override_riotshield_damage_func ) ) + self [[ level.override_riotshield_damage_func ]]( player, gib ); + else + { + if ( gib ) + { + self.a.gib_ref = random( level.riotshield_gib_refs ); + self thread maps\mp\animscripts\zm_death::do_gib(); + } + } } riotshield_knockdown_zombie( player, gib ) { - self endon( "death" ); - playsoundatposition( "vox_riotshield_forcehit", self.origin ); - playsoundatposition( "wpn_riotshield_proj_impact", self.origin ); + self endon( "death" ); + playsoundatposition( "vox_riotshield_forcehit", self.origin ); + playsoundatposition( "wpn_riotshield_proj_impact", self.origin ); - if ( !isdefined( self ) || !isalive( self ) ) - return; + if ( !isdefined( self ) || !isalive( self ) ) + return; - if ( isdefined( self.riotshield_knockdown_func ) ) - self [[ self.riotshield_knockdown_func ]]( player, gib ); - else - self zombie_knockdown( player, gib ); + if ( isdefined( self.riotshield_knockdown_func ) ) + self [[ self.riotshield_knockdown_func ]]( player, gib ); + else + 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 playsound( "fly_riotshield_forcehit" ); + self dodamage( level.zombie_vars["riotshield_knockdown_damage"], player.origin, player, player, 0, "MOD_MELEE", 0, level.riotshield_name ); + self playsound( "fly_riotshield_forcehit" ); - if ( self.health < 1 ) - { - player maps\mp\zombies\_zm_score::player_add_points( "death", "MOD_MELEE" ); - } - else - { - player maps\mp\zombies\_zm_score::player_add_points( "damage_light" ); - } + if ( self.health < 1 ) + { + player maps\mp\zombies\_zm_score::player_add_points( "death", "MOD_MELEE" ); + } + else + { + player maps\mp\zombies\_zm_score::player_add_points( "damage_light" ); + } } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_weap_riotshield_tomb.gsc b/scripts/zm/replaced/_zm_weap_riotshield_tomb.gsc index ba16f516..c4f030eb 100644 --- a/scripts/zm/replaced/_zm_weap_riotshield_tomb.gsc +++ b/scripts/zm/replaced/_zm_weap_riotshield_tomb.gsc @@ -16,217 +16,217 @@ init() { - maps\mp\zombies\_zm_riotshield_tomb::init(); - set_zombie_var( "riotshield_cylinder_radius", 360 ); - set_zombie_var( "riotshield_fling_range", 90 ); - set_zombie_var( "riotshield_gib_range", 90 ); - set_zombie_var( "riotshield_gib_damage", 75 ); - set_zombie_var( "riotshield_knockdown_range", 90 ); - set_zombie_var( "riotshield_knockdown_damage", 15 ); - set_zombie_var( "riotshield_hit_points", 1500 ); - set_zombie_var( "riotshield_fling_damage_shield", 100 ); - set_zombie_var( "riotshield_knockdown_damage_shield", 15 ); - level.riotshield_network_choke_count = 0; - level.riotshield_gib_refs = []; - level.riotshield_gib_refs[level.riotshield_gib_refs.size] = "guts"; - level.riotshield_gib_refs[level.riotshield_gib_refs.size] = "right_arm"; - level.riotshield_gib_refs[level.riotshield_gib_refs.size] = "left_arm"; - level.riotshield_damage_callback = ::player_damage_shield; - level.deployed_riotshield_damage_callback = ::deployed_damage_shield; - level.transferriotshield = ::transferriotshield; - level.cantransferriotshield = ::cantransferriotshield; - 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\gametypes_zm\_weaponobjects::createretrievablehint( "riotshield", &"ZOMBIE_EQUIP_RIOTSHIELD_PICKUP_HINT_STRING" ); - onplayerconnect_callback( ::onplayerconnect ); + maps\mp\zombies\_zm_riotshield_tomb::init(); + set_zombie_var( "riotshield_cylinder_radius", 360 ); + set_zombie_var( "riotshield_fling_range", 90 ); + set_zombie_var( "riotshield_gib_range", 90 ); + set_zombie_var( "riotshield_gib_damage", 75 ); + set_zombie_var( "riotshield_knockdown_range", 90 ); + set_zombie_var( "riotshield_knockdown_damage", 15 ); + set_zombie_var( "riotshield_hit_points", 1500 ); + set_zombie_var( "riotshield_fling_damage_shield", 100 ); + set_zombie_var( "riotshield_knockdown_damage_shield", 15 ); + level.riotshield_network_choke_count = 0; + level.riotshield_gib_refs = []; + level.riotshield_gib_refs[level.riotshield_gib_refs.size] = "guts"; + level.riotshield_gib_refs[level.riotshield_gib_refs.size] = "right_arm"; + level.riotshield_gib_refs[level.riotshield_gib_refs.size] = "left_arm"; + level.riotshield_damage_callback = ::player_damage_shield; + level.deployed_riotshield_damage_callback = ::deployed_damage_shield; + level.transferriotshield = ::transferriotshield; + level.cantransferriotshield = ::cantransferriotshield; + 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\gametypes_zm\_weaponobjects::createretrievablehint( "riotshield", &"ZOMBIE_EQUIP_RIOTSHIELD_PICKUP_HINT_STRING" ); + onplayerconnect_callback( ::onplayerconnect ); } onplayerconnect() { - self.player_shield_reset_health = ::player_init_shield_health; - self.player_shield_apply_damage = ::player_damage_shield; - self.player_shield_reset_location = ::player_init_shield_location; - self thread watchriotshielduse(); - self thread watchriotshieldmelee(); - self thread player_watch_laststand(); + self.player_shield_reset_health = ::player_init_shield_health; + self.player_shield_apply_damage = ::player_damage_shield; + self.player_shield_reset_location = ::player_init_shield_location; + self thread watchriotshielduse(); + self thread watchriotshieldmelee(); + self thread player_watch_laststand(); } player_damage_shield( idamage, bheld ) { - damagemax = level.zombie_vars["riotshield_hit_points"]; + damagemax = level.zombie_vars["riotshield_hit_points"]; - if ( !isdefined( self.shielddamagetaken ) ) - self.shielddamagetaken = 0; + if ( !isdefined( self.shielddamagetaken ) ) + self.shielddamagetaken = 0; - self.shielddamagetaken += idamage; + self.shielddamagetaken += idamage; - if ( self.shielddamagetaken >= damagemax ) - { - if ( bheld || !isdefined( self.shield_ent ) ) - { - self playrumbleonentity( "damage_heavy" ); - earthquake( 1.0, 0.75, self.origin, 100 ); - self playsound( "wpn_riotshield_zm_destroy" ); - self thread player_take_riotshield(); - } - else - { - shield_origin = self.shield_ent.origin; - playsoundatposition( "fly_riotshield_zm_impact_zombies", shield_origin ); + if ( self.shielddamagetaken >= damagemax ) + { + if ( bheld || !isdefined( self.shield_ent ) ) + { + self playrumbleonentity( "damage_heavy" ); + earthquake( 1.0, 0.75, self.origin, 100 ); + self playsound( "wpn_riotshield_zm_destroy" ); + self thread player_take_riotshield(); + } + else + { + shield_origin = self.shield_ent.origin; + playsoundatposition( "fly_riotshield_zm_impact_zombies", shield_origin ); - if ( is_true( self.shield_ent.destroy_begun ) ) - return; + if ( is_true( self.shield_ent.destroy_begun ) ) + return; - self.shield_ent.destroy_begun = 1; - self thread player_wait_and_take_riotshield(); - } - } - else - { - if ( bheld || !isdefined( self.shield_ent ) ) - { - self playrumbleonentity( "damage_light" ); - earthquake( 0.5, 0.5, self.origin, 100 ); - self playsound( "fly_riotshield_zm_impact_zombies" ); - } - else - { - shield_origin = self.shield_ent.origin; - playsoundatposition( "fly_riotshield_zm_impact_zombies", shield_origin ); - } + self.shield_ent.destroy_begun = 1; + self thread player_wait_and_take_riotshield(); + } + } + else + { + if ( bheld || !isdefined( self.shield_ent ) ) + { + self playrumbleonentity( "damage_light" ); + earthquake( 0.5, 0.5, self.origin, 100 ); + self playsound( "fly_riotshield_zm_impact_zombies" ); + } + else + { + shield_origin = self.shield_ent.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() { - shield_origin = self.shield_ent.origin; - level thread maps\mp\zombies\_zm_equipment::equipment_disappear_fx( shield_origin, level._riotshield_dissapear_fx ); - wait 1; - playsoundatposition( "wpn_riotshield_zm_destroy", shield_origin ); - self thread player_take_riotshield(); + shield_origin = self.shield_ent.origin; + level thread maps\mp\zombies\_zm_equipment::equipment_disappear_fx( shield_origin, level._riotshield_dissapear_fx ); + wait 1; + playsoundatposition( "wpn_riotshield_zm_destroy", shield_origin ); + self thread player_take_riotshield(); } watchriotshieldmelee() { - for (;;) - { - self waittill( "weapon_melee", weapon ); + for (;;) + { + self waittill( "weapon_melee", weapon ); - if ( weapon == level.riotshield_name ) - self riotshield_melee(); - } + if ( weapon == level.riotshield_name ) + self riotshield_melee(); + } } riotshield_melee() { - if ( !isdefined( level.riotshield_knockdown_enemies ) ) - { - level.riotshield_knockdown_enemies = []; - level.riotshield_knockdown_gib = []; - level.riotshield_fling_enemies = []; - level.riotshield_fling_vecs = []; - } + if ( !isdefined( level.riotshield_knockdown_enemies ) ) + { + level.riotshield_knockdown_enemies = []; + level.riotshield_knockdown_gib = []; + level.riotshield_fling_enemies = []; + level.riotshield_fling_vecs = []; + } - self riotshield_get_enemies_in_range(); - shield_damage = 0; - level.riotshield_network_choke_count = 0; + self riotshield_get_enemies_in_range(); + shield_damage = 0; + level.riotshield_network_choke_count = 0; - for ( i = 0; i < level.riotshield_fling_enemies.size; i++ ) - { - riotshield_network_choke(); + for ( i = 0; i < level.riotshield_fling_enemies.size; i++ ) + { + riotshield_network_choke(); - if ( isdefined( level.riotshield_fling_enemies[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"]; - } - } + if ( isdefined( level.riotshield_fling_enemies[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"]; + } + } - for ( i = 0; i < level.riotshield_knockdown_enemies.size; i++ ) - { - riotshield_network_choke(); - level.riotshield_knockdown_enemies[i] thread riotshield_knockdown_zombie( self, level.riotshield_knockdown_gib[i] ); - shield_damage += level.zombie_vars["riotshield_knockdown_damage_shield"]; - } + for ( i = 0; i < level.riotshield_knockdown_enemies.size; i++ ) + { + riotshield_network_choke(); + level.riotshield_knockdown_enemies[i] thread riotshield_knockdown_zombie( self, level.riotshield_knockdown_gib[i] ); + shield_damage += level.zombie_vars["riotshield_knockdown_damage_shield"]; + } - level.riotshield_knockdown_enemies = []; - level.riotshield_knockdown_gib = []; - level.riotshield_fling_enemies = []; - level.riotshield_fling_vecs = []; + level.riotshield_knockdown_enemies = []; + level.riotshield_knockdown_gib = []; + level.riotshield_fling_enemies = []; + level.riotshield_fling_vecs = []; - if ( shield_damage ) - self player_damage_shield( shield_damage, 0 ); + if ( shield_damage ) + self player_damage_shield( shield_damage, 0 ); } riotshield_fling_zombie( player, fling_vec, index ) { - if ( !isdefined( self ) || !isalive( self ) ) - return; + if ( !isdefined( self ) || !isalive( self ) ) + return; - if ( isdefined( self.ignore_riotshield ) && self.ignore_riotshield ) - return; + if ( isdefined( self.ignore_riotshield ) && self.ignore_riotshield ) + return; - if ( isdefined( self.riotshield_fling_func ) ) - { - self [[ self.riotshield_fling_func ]]( player ); - return; - } + if ( isdefined( self.riotshield_fling_func ) ) + { + self [[ self.riotshield_fling_func ]]( player ); + return; + } - damage = 2500; - self dodamage( damage, player.origin, player, player, 0, "MOD_MELEE", 0, level.riotshield_name ); + damage = 2500; + self dodamage( damage, player.origin, player, player, 0, "MOD_MELEE", 0, level.riotshield_name ); - if ( self.health < 1 ) - { - self.riotshield_death = 1; - player maps\mp\zombies\_zm_score::player_add_points( "death", "MOD_MELEE" ); - self startragdoll(); - self launchragdoll( fling_vec ); - } - else - { - player maps\mp\zombies\_zm_score::player_add_points( "damage_light" ); - } + if ( self.health < 1 ) + { + self.riotshield_death = 1; + player maps\mp\zombies\_zm_score::player_add_points( "death", "MOD_MELEE" ); + self startragdoll(); + self launchragdoll( fling_vec ); + } + else + { + player maps\mp\zombies\_zm_score::player_add_points( "damage_light" ); + } } zombie_knockdown( player, gib ) { - if ( isdefined( level.override_riotshield_damage_func ) ) - self [[ level.override_riotshield_damage_func ]]( player, gib ); - else - { - if ( gib ) - { - self.a.gib_ref = random( level.riotshield_gib_refs ); - self thread maps\mp\animscripts\zm_death::do_gib(); - } - } + if ( isdefined( level.override_riotshield_damage_func ) ) + self [[ level.override_riotshield_damage_func ]]( player, gib ); + else + { + if ( gib ) + { + self.a.gib_ref = random( level.riotshield_gib_refs ); + self thread maps\mp\animscripts\zm_death::do_gib(); + } + } } riotshield_knockdown_zombie( player, gib ) { - self endon( "death" ); - playsoundatposition( "vox_riotshield_forcehit", self.origin ); - playsoundatposition( "wpn_riotshield_proj_impact", self.origin ); + self endon( "death" ); + playsoundatposition( "vox_riotshield_forcehit", self.origin ); + playsoundatposition( "wpn_riotshield_proj_impact", self.origin ); - if ( !isdefined( self ) || !isalive( self ) ) - return; + if ( !isdefined( self ) || !isalive( self ) ) + return; - if ( isdefined( self.riotshield_knockdown_func ) ) - self [[ self.riotshield_knockdown_func ]]( player, gib ); - else - self zombie_knockdown( player, gib ); + if ( isdefined( self.riotshield_knockdown_func ) ) + self [[ self.riotshield_knockdown_func ]]( player, gib ); + else + 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 playsound( "fly_riotshield_forcehit" ); + self dodamage( level.zombie_vars["riotshield_knockdown_damage"], player.origin, player, player, 0, "MOD_MELEE", 0, level.riotshield_name ); + self playsound( "fly_riotshield_forcehit" ); - if ( self.health < 1 ) - { - player maps\mp\zombies\_zm_score::player_add_points( "death", "MOD_MELEE" ); - } - else - { - player maps\mp\zombies\_zm_score::player_add_points( "damage_light" ); - } + if ( self.health < 1 ) + { + player maps\mp\zombies\_zm_score::player_add_points( "death", "MOD_MELEE" ); + } + else + { + player maps\mp\zombies\_zm_score::player_add_points( "damage_light" ); + } } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_weap_slipgun.gsc b/scripts/zm/replaced/_zm_weap_slipgun.gsc index 100e9550..509fc915 100644 --- a/scripts/zm/replaced/_zm_weap_slipgun.gsc +++ b/scripts/zm/replaced/_zm_weap_slipgun.gsc @@ -15,184 +15,184 @@ init() { - if ( !maps\mp\zombies\_zm_weapons::is_weapon_included( "slipgun_zm" ) ) - return; + if ( !maps\mp\zombies\_zm_weapons::is_weapon_included( "slipgun_zm" ) ) + return; - precachemodel( "t5_weapon_crossbow_bolt" ); - precacheitem( "slip_bolt_zm" ); - precacheitem( "slip_bolt_upgraded_zm" ); + precachemodel( "t5_weapon_crossbow_bolt" ); + precacheitem( "slip_bolt_zm" ); + precacheitem( "slip_bolt_upgraded_zm" ); - 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::enemies_ignore_equipment( "slipgun_zm" ); - maps\mp\gametypes_zm\_weaponobjects::createretrievablehint( "slipgun", &"ZM_HIGHRISE_EQUIP_SLIPGUN_PICKUP_HINT_STRING" ); - } + 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::enemies_ignore_equipment( "slipgun_zm" ); + 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_rate", 6 ); - set_zombie_var_once( "slipgun_max_kill_chain_depth", 16 ); - set_zombie_var_once( "slipgun_max_kill_round", 100 ); - 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_max", 1.5, 1 ); - level.slippery_spot_count = 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_death_animscript_callback( ::slipgun_zombie_death_response ); - 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_simmer"] = loadfx( "weapon/liquifier/fx_liquifier_goo_sizzle" ); - level._effect["slipgun_viewmodel_eject"] = loadfx( "weapon/liquifier/fx_liquifier_clip_eject" ); - level._effect["slipgun_viewmodel_reload"] = loadfx( "weapon/liquifier/fx_liquifier_reload_steam" ); - onplayerconnect_callback( ::slipgun_player_connect ); - thread wait_init_damage(); + set_zombie_var_once( "slipgun_reslip_max_spots", 8 ); + 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_round", 100 ); + 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_max", 1.5, 1 ); + level.slippery_spot_count = 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_death_animscript_callback( ::slipgun_zombie_death_response ); + 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_simmer"] = loadfx( "weapon/liquifier/fx_liquifier_goo_sizzle" ); + level._effect["slipgun_viewmodel_eject"] = loadfx( "weapon/liquifier/fx_liquifier_clip_eject" ); + level._effect["slipgun_viewmodel_reload"] = loadfx( "weapon/liquifier/fx_liquifier_reload_steam" ); + onplayerconnect_callback( ::slipgun_player_connect ); + thread wait_init_damage(); } slipgun_zombie_death_response() { - if ( !isDefined( self.goo_chain_depth ) ) - return false; + if ( !isDefined( self.goo_chain_depth ) ) + return false; - 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 ); - return true; + 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 ); + return true; } slipgun_zombie_1st_hit_response( upgraded, player ) { - self notify( "stop_find_flesh" ); - self notify( "zombie_acquire_enemy" ); - self orientmode( "face default" ); - self.ignoreall = 1; - self.gibbed = 1; + self notify( "stop_find_flesh" ); + self notify( "zombie_acquire_enemy" ); + self orientmode( "face default" ); + self.ignoreall = 1; + self.gibbed = 1; - if ( isalive( self ) ) - { - if ( !isdefined( self.goo_chain_depth ) ) - self.goo_chain_depth = 0; + if ( isalive( self ) ) + { + if ( !isdefined( self.goo_chain_depth ) ) + self.goo_chain_depth = 0; - self.goo_upgraded = upgraded; + self.goo_upgraded = upgraded; - if ( self.health > 0 ) - { - if ( player maps\mp\zombies\_zm_powerups::is_insta_kill_active() ) - self.health = 1; + if ( self.health > 0 ) + { + if ( player maps\mp\zombies\_zm_powerups::is_insta_kill_active() ) + 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 ) { - if ( isdefined( self.marked_for_insta_upgraded_death ) ) - return; + if ( isdefined( self.marked_for_insta_upgraded_death ) ) + return; - tag = "J_SpineLower"; + tag = "J_SpineLower"; - if ( is_true( self.isdog ) ) - tag = "tag_origin"; + if ( is_true( self.isdog ) ) + tag = "tag_origin"; - self.guts_explosion = 1; - self playsound( "wpn_slipgun_zombie_explode" ); + self.guts_explosion = 1; + self playsound( "wpn_slipgun_zombie_explode" ); - if ( isdefined( level._effect["slipgun_explode"] ) ) - playfx( level._effect["slipgun_explode"], self gettagorigin( tag ) ); + if ( isdefined( level._effect["slipgun_explode"] ) ) + playfx( level._effect["slipgun_explode"], self gettagorigin( tag ) ); - if ( !is_true( self.isdog ) ) - wait 0.1; + if ( !is_true( self.isdog ) ) + wait 0.1; - self ghost(); + self ghost(); - if ( !isdefined( self.goo_chain_depth ) ) - self.goo_chain_depth = chain_depth; + if ( !isdefined( self.goo_chain_depth ) ) + self.goo_chain_depth = chain_depth; - chain_radius = level.zombie_vars["slipgun_chain_radius"]; - if ( is_true( self.goo_upgraded ) ) - { - chain_radius *= 1.5; - } + chain_radius = level.zombie_vars["slipgun_chain_radius"]; + if ( is_true( self.goo_upgraded ) ) + { + 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 ) { - if ( level.zombie_vars["slipgun_max_kill_chain_depth"] > 0 && chain_depth > level.zombie_vars["slipgun_max_kill_chain_depth"] ) - return; + if ( level.zombie_vars["slipgun_max_kill_chain_depth"] > 0 && chain_depth > level.zombie_vars["slipgun_max_kill_chain_depth"] ) + return; - enemies = get_round_enemy_array(); - enemies = get_array_of_closest( origin, enemies ); + enemies = get_round_enemy_array(); + enemies = get_array_of_closest( origin, enemies ); - minchainwait = level.zombie_vars["slipgun_chain_wait_min"]; - maxchainwait = level.zombie_vars["slipgun_chain_wait_max"]; + minchainwait = level.zombie_vars["slipgun_chain_wait_min"]; + maxchainwait = level.zombie_vars["slipgun_chain_wait_max"]; - rsquared = radius * radius; - tag = "J_Head"; - marked_zombies = []; + rsquared = radius * radius; + tag = "J_Head"; + marked_zombies = []; - if ( isdefined( enemies ) && enemies.size ) - { - index = 0; + if ( isdefined( enemies ) && enemies.size ) + { + index = 0; - 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 ) ) - { - trace = bullettrace( origin + vectorscale( ( 0, 0, 1 ), 50.0 ), enemy.origin + vectorscale( ( 0, 0, 1 ), 50.0 ), 0, undefined, 1 ); + 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 ) ) + { + 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 ) - { - enemy.slipgun_sizzle = playfxontag( level._effect["slipgun_simmer"], enemy, tag ); - marked_zombies[marked_zombies.size] = enemy; - } - } + if ( isdefined( trace["fraction"] ) && trace["fraction"] == 1 ) + { + enemy.slipgun_sizzle = playfxontag( level._effect["slipgun_simmer"], enemy, tag ); + marked_zombies[marked_zombies.size] = enemy; + } + } - index++; + index++; - if ( index >= enemies.size ) - break; - } - } + if ( index >= enemies.size ) + break; + } + } - if ( isdefined( marked_zombies ) && marked_zombies.size ) - { - foreach ( enemy in marked_zombies ) - { - if ( isalive( enemy ) && !is_true( enemy.guts_explosion ) && !is_true( enemy.nuked ) ) - { - wait( randomfloatrange( minchainwait, maxchainwait ) ); + if ( isdefined( marked_zombies ) && marked_zombies.size ) + { + foreach ( enemy in marked_zombies ) + { + if ( isalive( enemy ) && !is_true( enemy.guts_explosion ) && !is_true( enemy.nuked ) ) + { + wait( randomfloatrange( minchainwait, maxchainwait ) ); - if ( isalive( enemy ) && !is_true( enemy.guts_explosion ) && !is_true( enemy.nuked ) ) - { - if ( !isdefined( enemy.goo_chain_depth ) ) - enemy.goo_chain_depth = chain_depth; + if ( isalive( enemy ) && !is_true( enemy.guts_explosion ) && !is_true( enemy.nuked ) ) + { + if ( !isdefined( enemy.goo_chain_depth ) ) + enemy.goo_chain_depth = chain_depth; - enemy.goo_upgraded = goo_upgraded; + enemy.goo_upgraded = goo_upgraded; - if ( enemy.health > 0 ) - { - if ( player maps\mp\zombies\_zm_powerups::is_insta_kill_active() ) - enemy.health = 1; + if ( enemy.health > 0 ) + { + if ( player maps\mp\zombies\_zm_powerups::is_insta_kill_active() ) + 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 ( ( !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 ) - { - startpos = origin; - duration = 24; - thread add_slippery_spot( enemy.origin, duration, startpos ); - } - } - } - } - } - } - } + 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 ( level.zombie_vars["slipgun_reslip_rate"] > 0 && randomint( level.zombie_vars["slipgun_reslip_rate"] ) == 0 ) + { + startpos = origin; + duration = 24; + thread add_slippery_spot( enemy.origin, duration, startpos ); + } + } + } + } + } + } + } } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_weap_slowgun.gsc b/scripts/zm/replaced/_zm_weap_slowgun.gsc index 53b390f0..3172d486 100644 --- a/scripts/zm/replaced/_zm_weap_slowgun.gsc +++ b/scripts/zm/replaced/_zm_weap_slowgun.gsc @@ -10,104 +10,104 @@ init() { - if ( !maps\mp\zombies\_zm_weapons::is_weapon_included( "slowgun_zm" ) ) - return; + if ( !maps\mp\zombies\_zm_weapons::is_weapon_included( "slowgun_zm" ) ) + return; - registerclientfield( "actor", "slowgun_fx", 12000, 3, "int" ); - registerclientfield( "actor", "anim_rate", 7000, 5, "float" ); - registerclientfield( "allplayers", "anim_rate", 7000, 5, "float" ); - registerclientfield( "toplayer", "sndParalyzerLoop", 12000, 1, "int" ); - registerclientfield( "toplayer", "slowgun_fx", 12000, 1, "int" ); - level.sliquifier_distance_checks = 0; - 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_death_animscript_callback( ::slowgun_zombie_death_response ); - 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_sizzle"] = loadfx( "weapon/paralyzer/fx_paralyzer_hit_dmg" ); - 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_ug"] = loadfx( "weapon/paralyzer/fx_paralyzer_hit_noharm" ); - level._effect["player_slowgun_sizzle_1st"] = loadfx( "weapon/paralyzer/fx_paralyzer_hit_noharm_view" ); - onplayerconnect_callback( ::slowgun_player_connect ); - level.slowgun_damage = 40; - level.slowgun_damage_ug = 60; - level.slowgun_damage_mod = "MOD_PROJECTILE_SPLASH"; - precacherumble( "damage_heavy" ); + registerclientfield( "actor", "slowgun_fx", 12000, 3, "int" ); + registerclientfield( "actor", "anim_rate", 7000, 5, "float" ); + registerclientfield( "allplayers", "anim_rate", 7000, 5, "float" ); + registerclientfield( "toplayer", "sndParalyzerLoop", 12000, 1, "int" ); + registerclientfield( "toplayer", "slowgun_fx", 12000, 1, "int" ); + level.sliquifier_distance_checks = 0; + 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_death_animscript_callback( ::slowgun_zombie_death_response ); + 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_sizzle"] = loadfx( "weapon/paralyzer/fx_paralyzer_hit_dmg" ); + 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_ug"] = loadfx( "weapon/paralyzer/fx_paralyzer_hit_noharm" ); + level._effect["player_slowgun_sizzle_1st"] = loadfx( "weapon/paralyzer/fx_paralyzer_hit_noharm_view" ); + onplayerconnect_callback( ::slowgun_player_connect ); + level.slowgun_damage = 40; + level.slowgun_damage_ug = 60; + level.slowgun_damage_mod = "MOD_PROJECTILE_SPLASH"; + precacherumble( "damage_heavy" ); } slowgun_on_zombie_spawned() { - self set_anim_rate( 1.0 ); - self.paralyzer_hit_callback = ::zombie_paralyzed; - self.paralyzer_damaged_multiplier = 1; - self.paralyzer_score_time_ms = gettime(); - self.paralyzer_slowtime = 0; - self setclientfield( "slowgun_fx", 0 ); + self set_anim_rate( 1.0 ); + self.paralyzer_hit_callback = ::zombie_paralyzed; + self.paralyzer_damaged_multiplier = 1; + self.paralyzer_score_time_ms = gettime(); + self.paralyzer_slowtime = 0; + self setclientfield( "slowgun_fx", 0 ); } zombie_paralyzed( player, upgraded ) { - if ( !can_be_paralyzed( self ) ) - return; + if ( !can_be_paralyzed( self ) ) + 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 ) - self setclientfield( "slowgun_fx", 5 ); - else - self setclientfield( "slowgun_fx", 1 ); + if ( upgraded ) + self setclientfield( "slowgun_fx", 5 ); + else + self setclientfield( "slowgun_fx", 1 ); - if ( self.slowgun_anim_rate <= 0.1 || insta && self.slowgun_anim_rate <= 0.5 ) - { - if ( upgraded ) - damage = level.slowgun_damage_ug; - else - damage = level.slowgun_damage; + if ( self.slowgun_anim_rate <= 0.1 || insta && self.slowgun_anim_rate <= 0.5 ) + { + if ( upgraded ) + damage = level.slowgun_damage_ug; + else + damage = level.slowgun_damage; - damage *= randomfloatrange( 0.667, 1.5 ); - damage *= self.paralyzer_damaged_multiplier; + damage *= randomfloatrange( 0.667, 1.5 ); + damage *= self.paralyzer_damaged_multiplier; - if ( !isdefined( self.paralyzer_damage ) ) - self.paralyzer_damage = 0; + if ( !isdefined( self.paralyzer_damage ) ) + self.paralyzer_damage = 0; - // if ( self.paralyzer_damage > 47073 ) - // damage *= 47073 / self.paralyzer_damage; + // if ( self.paralyzer_damage > 47073 ) + // damage *= 47073 / self.paralyzer_damage; - self.paralyzer_damage += damage; + self.paralyzer_damage += damage; - if ( insta ) - damage = self.health + 666; + if ( insta ) + damage = self.health + 666; - if ( isalive( self ) ) - self dodamage( damage, player.origin, player, player, "none", level.slowgun_damage_mod, 0, "slowgun_zm" ); + if ( isalive( self ) ) + 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 = min( self.paralyzer_damaged_multiplier, 50 ); - } - else - self.paralyzer_damaged_multiplier = 1; + self.paralyzer_damaged_multiplier *= 1.15; + self.paralyzer_damaged_multiplier = min( self.paralyzer_damaged_multiplier, 50 ); + } + else + self.paralyzer_damaged_multiplier = 1; - self zombie_slow_for_time( 0.2 ); + self zombie_slow_for_time( 0.2 ); } player_slow_for_time( time ) { - self notify( "player_slow_for_time" ); - self endon( "player_slow_for_time" ); - self endon( "disconnect" ); + self notify( "player_slow_for_time" ); + self endon( "player_slow_for_time" ); + self endon( "disconnect" ); - if ( !is_true( self.slowgun_flying ) ) - self thread player_fly_rumble(); + if ( !is_true( self.slowgun_flying ) ) + self thread player_fly_rumble(); - self setclientfieldtoplayer( "slowgun_fx", 1 ); - self set_anim_rate( 0.2 ); + self setclientfieldtoplayer( "slowgun_fx", 1 ); + self set_anim_rate( 0.2 ); - wait( time ); + wait( time ); - self set_anim_rate( 1.0 ); - self setclientfieldtoplayer( "slowgun_fx", 0 ); - self.slowgun_flying = 0; + self set_anim_rate( 1.0 ); + self setclientfieldtoplayer( "slowgun_fx", 0 ); + self.slowgun_flying = 0; } watch_reset_anim_rate() diff --git a/scripts/zm/replaced/_zm_weap_staff_air.gsc b/scripts/zm/replaced/_zm_weap_staff_air.gsc index 5af22c7d..57c1b2ea 100644 --- a/scripts/zm/replaced/_zm_weap_staff_air.gsc +++ b/scripts/zm/replaced/_zm_weap_staff_air.gsc @@ -12,54 +12,54 @@ whirlwind_kill_zombies( n_level, str_weapon ) { - self endon( "death" ); - n_range = get_air_blast_range( n_level ); - self.n_charge_level = n_level; + self endon( "death" ); + n_range = get_air_blast_range( n_level ); + self.n_charge_level = n_level; - while ( true ) - { - a_zombies = staff_air_zombie_range( self.origin, n_range ); - a_zombies = get_array_of_closest( self.origin, a_zombies ); + while ( true ) + { + a_zombies = staff_air_zombie_range( self.origin, n_range ); + a_zombies = get_array_of_closest( self.origin, a_zombies ); - for ( i = 0; i < a_zombies.size; i++ ) - { - if ( !isdefined( a_zombies[i] ) ) - continue; + for ( i = 0; i < a_zombies.size; i++ ) + { + if ( !isdefined( a_zombies[i] ) ) + continue; - if ( a_zombies[i].ai_state != "find_flesh" ) - continue; + if ( a_zombies[i].ai_state != "find_flesh" ) + continue; - if ( is_true( self._whirlwind_attract_anim ) ) - continue; + if ( is_true( self._whirlwind_attract_anim ) ) + 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 ) ) - continue; + if ( !bullet_trace_throttled( self.origin + v_offset, a_zombies[i].origin + v_offset, undefined ) ) + continue; - if ( !isdefined( a_zombies[i] ) || !isalive( a_zombies[i] ) ) - continue; + if ( !isdefined( a_zombies[i] ) || !isalive( a_zombies[i] ) ) + 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 ) ) - continue; + if ( !bullet_trace_throttled( self.origin + v_offset, a_zombies[i].origin + v_offset, undefined ) ) + continue; - if ( !isdefined( a_zombies[i] ) || !isalive( a_zombies[i] ) ) - continue; + if ( !isdefined( a_zombies[i] ) || !isalive( a_zombies[i] ) ) + continue; - if ( is_true( a_zombies[i].is_mechz ) ) - { - a_zombies[i] do_damage_network_safe( self.player_owner, 3300, str_weapon, "MOD_IMPACT" ); - } - else - { - a_zombies[i] thread whirlwind_drag_zombie( self, str_weapon ); - } + if ( is_true( a_zombies[i].is_mechz ) ) + { + a_zombies[i] do_damage_network_safe( self.player_owner, 3300, str_weapon, "MOD_IMPACT" ); + } + else + { + a_zombies[i] thread whirlwind_drag_zombie( self, str_weapon ); + } - wait 0.5; - } + wait 0.5; + } - wait_network_frame(); - } + wait_network_frame(); + } } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_weap_staff_fire.gsc b/scripts/zm/replaced/_zm_weap_staff_fire.gsc index a4307135..6367e249 100644 --- a/scripts/zm/replaced/_zm_weap_staff_fire.gsc +++ b/scripts/zm/replaced/_zm_weap_staff_fire.gsc @@ -21,49 +21,49 @@ flame_damage_fx( damageweapon, e_attacker, pct_damage = 1.0 ) { - was_on_fire = is_true( self.is_on_fire ); - 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"; + was_on_fire = is_true( self.is_on_fire ); + 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"; - if ( is_upgraded ) - { - self do_damage_network_safe( e_attacker, self.health, damageweapon, "MOD_BURNED" ); + if ( is_upgraded ) + { + self do_damage_network_safe( e_attacker, self.health, damageweapon, "MOD_BURNED" ); - if ( cointoss() ) - self thread zombie_gib_all(); - else - self thread zombie_gib_guts(); + if ( cointoss() ) + self thread zombie_gib_all(); + else + self thread zombie_gib_guts(); - return; - } + return; + } - self endon( "death" ); + self endon( "death" ); - if ( !is_upgraded && !was_on_fire ) - { - self.is_on_fire = 1; - self thread zombie_set_and_restore_flame_state(); - wait 0.5; - self thread flame_damage_over_time( e_attacker, damageweapon, pct_damage ); - } + if ( !is_upgraded && !was_on_fire ) + { + self.is_on_fire = 1; + self thread zombie_set_and_restore_flame_state(); + wait 0.5; + self thread flame_damage_over_time( e_attacker, damageweapon, pct_damage ); + } - if ( n_initial_dmg > 0 ) - self do_damage_network_safe( e_attacker, n_initial_dmg, damageweapon, "MOD_BURNED" ); + if ( n_initial_dmg > 0 ) + self do_damage_network_safe( e_attacker, n_initial_dmg, damageweapon, "MOD_BURNED" ); } get_impact_damage( damageweapon ) { - switch ( damageweapon ) - { - case "staff_fire_zm": - return 2050; - case "staff_fire_upgraded_zm": - case "staff_fire_upgraded2_zm": - case "staff_fire_upgraded3_zm": - return 3300; - case "one_inch_punch_fire_zm": - return 0; - default: - return 0; - } + switch ( damageweapon ) + { + case "staff_fire_zm": + return 2050; + case "staff_fire_upgraded_zm": + case "staff_fire_upgraded2_zm": + case "staff_fire_upgraded3_zm": + return 3300; + case "one_inch_punch_fire_zm": + return 0; + default: + return 0; + } } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_weap_staff_lightning.gsc b/scripts/zm/replaced/_zm_weap_staff_lightning.gsc index 612fbdc3..8eaebac0 100644 --- a/scripts/zm/replaced/_zm_weap_staff_lightning.gsc +++ b/scripts/zm/replaced/_zm_weap_staff_lightning.gsc @@ -12,171 +12,171 @@ staff_lightning_ball_kill_zombies( e_attacker ) { - self endon( "death" ); - self endon( "stop_killing" ); + self endon( "death" ); + self endon( "stop_killing" ); - while ( true ) - { - a_zombies = staff_lightning_get_valid_targets( e_attacker, self.origin ); + while ( true ) + { + a_zombies = staff_lightning_get_valid_targets( e_attacker, self.origin ); - if ( isdefined( a_zombies ) ) - { - foreach ( zombie in a_zombies ) - { - if ( staff_lightning_is_target_valid( zombie ) ) - { - e_attacker thread staff_lightning_arc_fx( self, zombie ); - wait 0.2; - } - } - } + if ( isdefined( a_zombies ) ) + { + foreach ( zombie in a_zombies ) + { + if ( staff_lightning_is_target_valid( zombie ) ) + { + e_attacker thread staff_lightning_arc_fx( self, zombie ); + wait 0.2; + } + } + } - wait 0.05; - } + wait 0.05; + } } staff_lightning_get_valid_targets( player, v_source ) { - player endon( "disconnect" ); - a_enemies = []; - a_zombies = getaiarray( level.zombie_team ); - a_zombies = get_array_of_closest( v_source, a_zombies, undefined, undefined, self.n_range ); + player endon( "disconnect" ); + a_enemies = []; + a_zombies = getaiarray( level.zombie_team ); + a_zombies = get_array_of_closest( v_source, a_zombies, undefined, undefined, self.n_range ); - if ( isdefined( a_zombies ) ) - { - foreach ( ai_zombie in a_zombies ) - { - if ( staff_lightning_is_target_valid( ai_zombie ) ) - a_enemies[a_enemies.size] = ai_zombie; - } - } + if ( isdefined( a_zombies ) ) + { + foreach ( ai_zombie in a_zombies ) + { + if ( staff_lightning_is_target_valid( ai_zombie ) ) + a_enemies[a_enemies.size] = ai_zombie; + } + } - return a_enemies; + return a_enemies; } staff_lightning_is_target_valid( ai_zombie ) { - if ( !isdefined( ai_zombie ) ) - return false; + if ( !isdefined( ai_zombie ) ) + return false; - if ( is_true( ai_zombie.is_being_zapped ) ) - return false; + if ( is_true( ai_zombie.is_being_zapped ) ) + return false; - return true; + return true; } staff_lightning_arc_fx( e_source, ai_zombie ) { - self endon( "disconnect" ); + self endon( "disconnect" ); - if ( !isdefined( ai_zombie ) ) - return; + if ( !isdefined( ai_zombie ) ) + return; - if ( !bullet_trace_throttled( e_source.origin, ai_zombie.origin + vectorscale( ( 0, 0, 1 ), 20.0 ), ai_zombie ) ) - { - return; - } + if ( !bullet_trace_throttled( e_source.origin, ai_zombie.origin + vectorscale( ( 0, 0, 1 ), 20.0 ), ai_zombie ) ) + { + return; + } - if ( isdefined( e_source ) && isdefined( ai_zombie ) && isalive( ai_zombie ) ) - { - if ( is_true( ai_zombie.is_mechz ) ) - { - level thread staff_lightning_ball_damage_over_time_mechz( e_source, ai_zombie, self ); - } - else - { - level thread staff_lightning_ball_damage_over_time( e_source, ai_zombie, self ); - } - } + if ( isdefined( e_source ) && isdefined( ai_zombie ) && isalive( ai_zombie ) ) + { + if ( is_true( ai_zombie.is_mechz ) ) + { + level thread staff_lightning_ball_damage_over_time_mechz( e_source, ai_zombie, self ); + } + else + { + 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 ) { - e_attacker endon( "disconnect" ); - e_target setclientfield( "lightning_impact_fx", 1 ); - 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; - e_target.is_being_zapped = 1; - e_target setclientfield( "lightning_arc_fx", 1 ); - wait 0.5; + e_attacker endon( "disconnect" ); + e_target setclientfield( "lightning_impact_fx", 1 ); + 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; + e_target.is_being_zapped = 1; + e_target setclientfield( "lightning_arc_fx", 1 ); + wait 0.5; - if ( isdefined( e_source ) ) - { - if ( !isdefined( e_source.n_damage_per_sec ) ) - e_source.n_damage_per_sec = get_lightning_ball_damage_per_sec( e_attacker.chargeshotlevel ); + if ( isdefined( e_source ) ) + { + if ( !isdefined( e_source.n_damage_per_sec ) ) + 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 ) ) - { - e_target thread stun_zombie(); - wait 1.0; + while ( isdefined( e_source ) && isalive( e_target ) ) + { + e_target thread stun_zombie(); + wait 1.0; - if ( !isdefined( e_source ) || !isalive( e_target ) ) - break; + if ( !isdefined( e_source ) || !isalive( e_target ) ) + 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 ) - break; + if ( n_dist_sq > n_range_sq ) + break; - if ( isalive( e_target ) && isdefined( e_source ) ) - { - e_target thread zombie_shock_eyes(); - e_target thread staff_lightning_kill_zombie( e_attacker, e_source.str_weapon ); - break; - } - } + if ( isalive( e_target ) && isdefined( e_source ) ) + { + e_target thread zombie_shock_eyes(); + e_target thread staff_lightning_kill_zombie( e_attacker, e_source.str_weapon ); + break; + } + } - if ( isdefined( e_target ) ) - { - e_target.is_being_zapped = 0; - e_target setclientfield( "lightning_arc_fx", 0 ); - } + if ( isdefined( e_target ) ) + { + e_target.is_being_zapped = 0; + e_target setclientfield( "lightning_arc_fx", 0 ); + } } staff_lightning_ball_damage_over_time_mechz( e_source, e_target, e_attacker ) { - e_attacker endon( "disconnect" ); - n_range_sq = e_source.n_range * e_source.n_range; - e_target.is_being_zapped = 1; - wait 0.5; + e_attacker endon( "disconnect" ); + n_range_sq = e_source.n_range * e_source.n_range; + e_target.is_being_zapped = 1; + wait 0.5; - if ( isdefined( e_source ) ) - { - if ( !isdefined( e_source.n_damage_per_sec ) ) - e_source.n_damage_per_sec = get_lightning_ball_damage_per_sec( e_attacker.chargeshotlevel ); + if ( isdefined( e_source ) ) + { + if ( !isdefined( e_source.n_damage_per_sec ) ) + 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 ) ) - { - wait 1.0; + while ( isdefined( e_source ) && isalive( e_target ) ) + { + wait 1.0; - if ( !isdefined( e_source ) || !isalive( e_target ) ) - break; + if ( !isdefined( e_source ) || !isalive( e_target ) ) + 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 ) - break; + if ( n_dist_sq > n_range_sq ) + break; - 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" ); - break; - } - } + 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" ); + break; + } + } - if ( isdefined( e_target ) ) - { - e_target.is_being_zapped = 0; - } + if ( isdefined( e_target ) ) + { + e_target.is_being_zapped = 0; + } } get_lightning_ball_damage_per_sec( n_charge ) { - return 2500; + return 2500; } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_weap_staff_revive.gsc b/scripts/zm/replaced/_zm_weap_staff_revive.gsc index 728f77a4..28ab10b3 100644 --- a/scripts/zm/replaced/_zm_weap_staff_revive.gsc +++ b/scripts/zm/replaced/_zm_weap_staff_revive.gsc @@ -8,60 +8,60 @@ watch_staff_revive_fired() { - self endon( "disconnect" ); + self endon( "disconnect" ); - while ( true ) - { - self waittill( "missile_fire", e_projectile, str_weapon ); + while ( true ) + { + self waittill( "missile_fire", e_projectile, str_weapon ); - if ( !( str_weapon == "staff_revive_zm" ) ) - continue; + if ( !( str_weapon == "staff_revive_zm" ) ) + 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() { - 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 ) { - self endon( "disconnect" ); + self endon( "disconnect" ); - wait 0.4; + wait 0.4; - ammo_clip = self getWeaponAmmoClip(str_weapon); - ammo_stock = self getWeaponAmmoStock(str_weapon); + ammo_clip = self getWeaponAmmoClip(str_weapon); + ammo_stock = self getWeaponAmmoStock(str_weapon); - if (ammo_clip < 1 && ammo_stock >= 1) - { - self setWeaponAmmoClip(str_weapon, ammo_clip + 1); - self setWeaponAmmoStock(str_weapon, ammo_stock - 1); - return; - } + if (ammo_clip < 1 && ammo_stock >= 1) + { + self setWeaponAmmoClip(str_weapon, ammo_clip + 1); + self setWeaponAmmoStock(str_weapon, ammo_stock - 1); + return; + } - while (1) - { - self waittill( "weapon_change" ); + while (1) + { + self waittill( "weapon_change" ); - if (self getCurrentWeapon() == str_weapon) - { - ammo_clip = self getWeaponAmmoClip(str_weapon); - ammo_stock = self getWeaponAmmoStock(str_weapon); + if (self getCurrentWeapon() == str_weapon) + { + ammo_clip = self getWeaponAmmoClip(str_weapon); + ammo_stock = self getWeaponAmmoStock(str_weapon); - if (ammo_clip < 1 && ammo_stock >= 1) - { - self setWeaponAmmoClip(str_weapon, ammo_clip + 1); - self setWeaponAmmoStock(str_weapon, ammo_stock - 1); - } + if (ammo_clip < 1 && ammo_stock >= 1) + { + self setWeaponAmmoClip(str_weapon, ammo_clip + 1); + self setWeaponAmmoStock(str_weapon, ammo_stock - 1); + } - return; - } - } + return; + } + } } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_weap_time_bomb.gsc b/scripts/zm/replaced/_zm_weap_time_bomb.gsc index db679a4b..e4ba9aeb 100644 --- a/scripts/zm/replaced/_zm_weap_time_bomb.gsc +++ b/scripts/zm/replaced/_zm_weap_time_bomb.gsc @@ -21,268 +21,268 @@ init_time_bomb() { - time_bomb_precache(); - level thread time_bomb_post_init(); - flag_init( "time_bomb_round_killed" ); - flag_init( "time_bomb_enemies_restored" ); - flag_init( "time_bomb_zombie_respawning_done" ); - flag_init( "time_bomb_restore_active" ); - flag_init( "time_bomb_restore_done" ); - flag_init( "time_bomb_global_restore_done" ); - flag_init( "time_bomb_detonation_enabled" ); - flag_init( "time_bomb_stores_door_state" ); - registerclientfield( "world", "time_bomb_saved_round_number", 12000, 8, "int" ); - registerclientfield( "world", "time_bomb_lua_override", 12000, 1, "int" ); - registerclientfield( "world", "time_bomb_hud_toggle", 12000, 1, "int" ); - registerclientfield( "toplayer", "sndTimebombLoop", 12000, 2, "int" ); - 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; - include_weapon( "time_bomb_zm", 1 ); - maps\mp\zombies\_zm_weapons::add_limited_weapon( "time_bomb_zm", 1 ); - add_time_bomb_to_mystery_box(); - register_equipment_for_level( "time_bomb_zm" ); - register_equipment_for_level( "time_bomb_detonator_zm" ); + time_bomb_precache(); + level thread time_bomb_post_init(); + flag_init( "time_bomb_round_killed" ); + flag_init( "time_bomb_enemies_restored" ); + flag_init( "time_bomb_zombie_respawning_done" ); + flag_init( "time_bomb_restore_active" ); + flag_init( "time_bomb_restore_done" ); + flag_init( "time_bomb_global_restore_done" ); + flag_init( "time_bomb_detonation_enabled" ); + flag_init( "time_bomb_stores_door_state" ); + registerclientfield( "world", "time_bomb_saved_round_number", 12000, 8, "int" ); + registerclientfield( "world", "time_bomb_lua_override", 12000, 1, "int" ); + registerclientfield( "world", "time_bomb_hud_toggle", 12000, 1, "int" ); + registerclientfield( "toplayer", "sndTimebombLoop", 12000, 2, "int" ); + 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; + include_weapon( "time_bomb_zm", 1 ); + maps\mp\zombies\_zm_weapons::add_limited_weapon( "time_bomb_zm", 1 ); + add_time_bomb_to_mystery_box(); + register_equipment_for_level( "time_bomb_zm" ); + register_equipment_for_level( "time_bomb_detonator_zm" ); - if ( !isdefined( level.round_wait_func ) ) - level.round_wait_func = ::time_bomb_round_wait; + if ( !isdefined( level.round_wait_func ) ) + level.round_wait_func = ::time_bomb_round_wait; - 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_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_kills_enemy"] = loadfx( "maps/zombie_buried/fx_buried_time_bomb_death" ); - level._time_bomb = spawnstruct(); - 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_default( "zombie" ); - level._time_bomb.last_round_restored = -1; - flag_set( "time_bomb_detonation_enabled" ); + 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_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_kills_enemy"] = loadfx( "maps/zombie_buried/fx_buried_time_bomb_death" ); + level._time_bomb = spawnstruct(); + 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_default( "zombie" ); + level._time_bomb.last_round_restored = -1; + flag_set( "time_bomb_detonation_enabled" ); } player_give_time_bomb() { - assert( isplayer( self ), "player_give_time_bomb can only be used on players!" ); - self giveweapon( "time_bomb_zm" ); - self swap_weapon_to_time_bomb(); - self thread show_time_bomb_hints(); - self thread time_bomb_think(); - self thread detonator_think(); - self thread time_bomb_inventory_slot_think(); - self thread destroy_time_bomb_save_if_user_bleeds_out_or_disconnects(); - self thread sndwatchforweapswitch(); + assert( isplayer( self ), "player_give_time_bomb can only be used on players!" ); + self giveweapon( "time_bomb_zm" ); + self swap_weapon_to_time_bomb(); + self thread show_time_bomb_hints(); + self thread time_bomb_think(); + self thread detonator_think(); + self thread time_bomb_inventory_slot_think(); + self thread destroy_time_bomb_save_if_user_bleeds_out_or_disconnects(); + self thread sndwatchforweapswitch(); } show_time_bomb_hints() { - self endon( "death_or_disconnect" ); - self endon( "player_lost_time_bomb" ); + self endon( "death_or_disconnect" ); + self endon( "player_lost_time_bomb" ); - if ( !isdefined( self.time_bomb_hints_shown ) ) - self.time_bomb_hints_shown = 0; + if ( !isdefined( self.time_bomb_hints_shown ) ) + self.time_bomb_hints_shown = 0; - if ( !self.time_bomb_hints_shown ) - { - self.time_bomb_hints_shown = 1; - wait 0.5; - self show_time_bomb_notification( &"ZOMBIE_TIMEBOMB_PICKUP" ); - self thread _watch_for_player_switch_to_time_bomb(); - wait 3.5; - self clean_up_time_bomb_notifications(); - } + if ( !self.time_bomb_hints_shown ) + { + self.time_bomb_hints_shown = 1; + wait 0.5; + self show_time_bomb_notification( &"ZOMBIE_TIMEBOMB_PICKUP" ); + self thread _watch_for_player_switch_to_time_bomb(); + wait 3.5; + self clean_up_time_bomb_notifications(); + } } time_bomb_think() { - self notify( "_time_bomb_kill_thread" ); - self endon( "_time_bomb_kill_thread" ); - self endon( "death" ); - self endon( "disconnect" ); - self endon( "player_lost_time_bomb" ); + self notify( "_time_bomb_kill_thread" ); + self endon( "_time_bomb_kill_thread" ); + self endon( "death" ); + self endon( "disconnect" ); + self endon( "player_lost_time_bomb" ); - while ( true ) - { - self waittill( "grenade_fire", e_grenade, str_grenade_name ); + while ( true ) + { + self waittill( "grenade_fire", e_grenade, str_grenade_name ); - if ( 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(); - time_bomb_saves_data(0); - e_grenade time_bomb_model_init(); - self thread swap_weapon_to_detonator( e_grenade ); - self thread time_bomb_thrown_vo(); - } - } - } + if ( 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(); + time_bomb_saves_data(0); + e_grenade time_bomb_model_init(); + self thread swap_weapon_to_detonator( e_grenade ); + self thread time_bomb_thrown_vo(); + } + } + } } swap_weapon_to_detonator( e_grenade ) { - self endon( "death_or_disconnect" ); - self endon( "player_lost_time_bomb" ); - b_switch_to_weapon = 0; + self endon( "death_or_disconnect" ); + self endon( "player_lost_time_bomb" ); + b_switch_to_weapon = 0; - if ( isdefined( e_grenade ) ) - { - b_switch_to_weapon = 1; - wait 0.4; - } + if ( isdefined( e_grenade ) ) + { + b_switch_to_weapon = 1; + wait 0.4; + } - self takeweapon( "time_bomb_zm" ); - self giveweapon( "time_bomb_detonator_zm" ); - self setweaponammoclip( "time_bomb_detonator_zm", 0 ); - self setweaponammostock( "time_bomb_detonator_zm", 0 ); - self setactionslot( 2, "weapon", "time_bomb_detonator_zm" ); + self takeweapon( "time_bomb_zm" ); + self giveweapon( "time_bomb_detonator_zm" ); + self setweaponammoclip( "time_bomb_detonator_zm", 0 ); + self setweaponammostock( "time_bomb_detonator_zm", 0 ); + self setactionslot( 2, "weapon", "time_bomb_detonator_zm" ); - if ( b_switch_to_weapon ) - self switchtoweapon( "time_bomb_detonator_zm" ); + if ( b_switch_to_weapon ) + self switchtoweapon( "time_bomb_detonator_zm" ); - self giveweapon( "time_bomb_zm" ); + self giveweapon( "time_bomb_zm" ); } detonator_think() { - self notify( "_detonator_think_done" ); - self endon( "_detonator_think_done" ); - self endon( "death" ); - self endon( "disconnect" ); - self endon( "player_lost_time_bomb" ); - debug_time_bomb_print( "player picked up detonator" ); + self notify( "_detonator_think_done" ); + self endon( "_detonator_think_done" ); + self endon( "death" ); + self endon( "disconnect" ); + self endon( "player_lost_time_bomb" ); + debug_time_bomb_print( "player picked up detonator" ); - while ( true ) - { - self waittill( "detonate" ); + while ( true ) + { + 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" ) ) - { - level.time_bomb_save_data.player_used = self; - level.time_bomb_save_data.time_bomb_model thread detonate_time_bomb(); - self notify( "player_activates_timebomb" ); - self thread time_bomb_detonation_vo(); - } - } + if ( time_bomb_save_exists() && flag( "time_bomb_detonation_enabled" ) ) + { + level.time_bomb_save_data.player_used = self; + level.time_bomb_save_data.time_bomb_model thread detonate_time_bomb(); + self notify( "player_activates_timebomb" ); + self thread time_bomb_detonation_vo(); + } + } } detonate_time_bomb() { - 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 ); + 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 ); - if ( time_bomb_save_exists() ) - time_bomb_detonation(); - else - delete_time_bomb_model(); + if ( time_bomb_save_exists() ) + time_bomb_detonation(); + else + delete_time_bomb_model(); } 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 ) ); - _time_bomb_show_overlay(); - time_bomb_clears_global_data(); - time_bomb_clears_player_data(); + playsoundatposition( "zmb_timebomb_timechange_2d", ( 0, 0, 0 ) ); + _time_bomb_show_overlay(); + time_bomb_clears_global_data(); + time_bomb_clears_player_data(); - wait 4; + wait 4; - _time_bomb_kill_all_active_enemies(); + _time_bomb_kill_all_active_enemies(); - delete_time_bomb_model(); - _time_bomb_hide_overlay(); - level thread set_time_bomb_restore_active(); - level setclientfield( "time_bomb_lua_override", 0 ); + delete_time_bomb_model(); + _time_bomb_hide_overlay(); + level thread set_time_bomb_restore_active(); + level setclientfield( "time_bomb_lua_override", 0 ); - if ( isdefined( level._time_bomb.functionality_override ) && level._time_bomb.functionality_override ) - return; + if ( isdefined( level._time_bomb.functionality_override ) && level._time_bomb.functionality_override ) + return; - level notify( "time_bomb_detonation_complete" ); + level notify( "time_bomb_detonation_complete" ); } _time_bomb_show_overlay() { - flag_clear( "time_bomb_restore_done" ); - a_players = get_players(); + flag_clear( "time_bomb_restore_done" ); + a_players = get_players(); - foreach ( player in a_players ) - { - maps\mp\_visionset_mgr::vsmgr_activate( "overlay", "zombie_time_bomb_overlay", player ); - player freezecontrols( 1 ); - player enableinvulnerability(); - } + foreach ( player in a_players ) + { + maps\mp\_visionset_mgr::vsmgr_activate( "overlay", "zombie_time_bomb_overlay", player ); + player freezecontrols( 1 ); + player enableinvulnerability(); + } - level thread kill_overlay_at_match_end(); + level thread kill_overlay_at_match_end(); } _time_bomb_hide_overlay( n_time_start ) { - n_time_end = gettime(); + n_time_end = gettime(); - if ( isdefined( n_time_start ) ) - { - n_time_elapsed = ( n_time_end - n_time_start ) * 0.001; - n_delay = 4 - n_time_elapsed; - n_delay = clamp( n_delay, 0, 4 ); + if ( isdefined( n_time_start ) ) + { + n_time_elapsed = ( n_time_end - n_time_start ) * 0.001; + n_delay = 4 - n_time_elapsed; + n_delay = clamp( n_delay, 0, 4 ); - if ( n_delay > 0 ) - { - wait( n_delay ); - timebomb_wait_for_hostmigration(); - } - } + if ( n_delay > 0 ) + { + wait( n_delay ); + timebomb_wait_for_hostmigration(); + } + } - timebomb_wait_for_hostmigration(); - a_players = get_players(); - flag_set( "time_bomb_restore_done" ); + timebomb_wait_for_hostmigration(); + a_players = get_players(); + flag_set( "time_bomb_restore_done" ); - foreach ( player in a_players ) - { - player freezecontrols( 0 ); - player disableInvulnerability(); - } + foreach ( player in a_players ) + { + player freezecontrols( 0 ); + player disableInvulnerability(); + } } 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() { - for ( zombies = time_bomb_get_enemy_array(); zombies.size > 0; zombies = time_bomb_get_enemy_array() ) - { - for ( i = 0; i < zombies.size; i++ ) - { - timebomb_wait_for_hostmigration(); + for ( zombies = time_bomb_get_enemy_array(); zombies.size > 0; zombies = time_bomb_get_enemy_array() ) + { + for ( i = 0; i < zombies.size; i++ ) + { + timebomb_wait_for_hostmigration(); - if ( isdefined( zombies[i] ) ) - zombies[i] thread _kill_time_bomb_enemy(); - } - } + if ( isdefined( zombies[i] ) ) + zombies[i] thread _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 ghost(); - playfx( level._effect["time_bomb_kills_enemy"], 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(); + playfx( level._effect["time_bomb_kills_enemy"], self.origin ); - if ( isdefined( self ) && isdefined( self.anchor ) ) - self.anchor delete(); + if ( isdefined( self ) && isdefined( self.anchor ) ) + self.anchor delete(); - wait_network_frame(); + wait_network_frame(); - if ( isdefined( self ) ) - { - if ( isdefined( self.script_mover ) ) - self.script_mover delete(); + if ( isdefined( self ) ) + { + if ( isdefined( self.script_mover ) ) + self.script_mover delete(); - self delete(); - } + self delete(); + } } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_weap_tomahawk.gsc b/scripts/zm/replaced/_zm_weap_tomahawk.gsc index ba3db9a5..bc8a445c 100644 --- a/scripts/zm/replaced/_zm_weap_tomahawk.gsc +++ b/scripts/zm/replaced/_zm_weap_tomahawk.gsc @@ -9,135 +9,135 @@ calculate_tomahawk_damage( n_target_zombie, n_tomahawk_power, tomahawk ) { - if ( self.current_tomahawk_weapon == "upgraded_tomahawk_zm" ) - { - return n_target_zombie.health + 1; - } - else - { - return 2000; - } + if ( self.current_tomahawk_weapon == "upgraded_tomahawk_zm" ) + { + return n_target_zombie.health + 1; + } + else + { + return 2000; + } } get_grenade_charge_power( player ) { - player endon( "disconnect" ); + player endon( "disconnect" ); - if ( self.n_cookedtime >= 1000 && self.n_cookedtime < 2000 ) - { - return 3; - } - else if ( self.n_cookedtime >= 2000 && self.n_cookedtime < 3000 ) - { - return 6; - } - else if ( self.n_cookedtime >= 3000 ) - { - if ( player.current_tomahawk_weapon != "upgraded_tomahawk_zm" ) - { - return 6; - } - else - { - return 9; - } - } + if ( self.n_cookedtime >= 1000 && self.n_cookedtime < 2000 ) + { + return 3; + } + else if ( self.n_cookedtime >= 2000 && self.n_cookedtime < 3000 ) + { + return 6; + } + else if ( self.n_cookedtime >= 3000 ) + { + if ( player.current_tomahawk_weapon != "upgraded_tomahawk_zm" ) + { + return 6; + } + else + { + return 9; + } + } - return 1; + return 1; } tomahawk_attack_zombies( m_tomahawk, a_zombies ) { - self endon( "disconnect" ); + self endon( "disconnect" ); - if ( !isdefined( a_zombies ) ) - { - self thread tomahawk_return_player( m_tomahawk, 0 ); - return; - } + if ( !isdefined( a_zombies ) ) + { + self thread tomahawk_return_player( m_tomahawk, 0 ); + return; + } - n_attack_limit = m_tomahawk.n_grenade_charge_power - 1; - if ( a_zombies.size <= n_attack_limit ) - n_attack_limit = a_zombies.size; + n_attack_limit = m_tomahawk.n_grenade_charge_power - 1; + if ( a_zombies.size <= n_attack_limit ) + n_attack_limit = a_zombies.size; - for ( i = 0; i < n_attack_limit; i++ ) - { - if ( isdefined( a_zombies[i] ) && isalive( a_zombies[i] ) ) - { - tag = "J_Head"; + for ( i = 0; i < n_attack_limit; i++ ) + { + if ( isdefined( a_zombies[i] ) && isalive( a_zombies[i] ) ) + { + tag = "J_Head"; - if ( a_zombies[i].isdog ) - tag = "J_Spine1"; + if ( a_zombies[i].isdog ) + tag = "J_Spine1"; - if ( isdefined( a_zombies[i].hit_by_tomahawk ) && !a_zombies[i].hit_by_tomahawk ) - { - v_target = a_zombies[i] gettagorigin( tag ); - m_tomahawk moveto( v_target, 0.3 ); + if ( isdefined( a_zombies[i].hit_by_tomahawk ) && !a_zombies[i].hit_by_tomahawk ) + { + v_target = a_zombies[i] gettagorigin( tag ); + 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 ( self.current_tactical_grenade == "upgraded_tomahawk_zm" ) - playfxontag( level._effect["tomahawk_impact_ug"], a_zombies[i], tag ); - else - playfxontag( level._effect["tomahawk_impact"], a_zombies[i], tag ); + if ( isdefined( a_zombies[i] ) && isalive( a_zombies[i] ) ) + { + if ( self.current_tactical_grenade == "upgraded_tomahawk_zm" ) + playfxontag( level._effect["tomahawk_impact_ug"], a_zombies[i], tag ); + else + playfxontag( level._effect["tomahawk_impact"], a_zombies[i], tag ); - playfxontag( level._effect["tomahawk_fire_dot"], a_zombies[i], "j_spineupper" ); - 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 ); - 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; - self maps\mp\zombies\_zm_score::add_to_player_score( 10 ); - } - } - } + playfxontag( level._effect["tomahawk_fire_dot"], a_zombies[i], "j_spineupper" ); + 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 ); + 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; + self maps\mp\zombies\_zm_score::add_to_player_score( 10 ); + } + } + } - 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 ) { - self endon( "disconnect" ); - n_dist = distance2dsquared( m_tomahawk.origin, self.origin ); - n_attack_limit = m_tomahawk.n_grenade_charge_power - 1; + self endon( "disconnect" ); + n_dist = distance2dsquared( m_tomahawk.origin, self.origin ); + n_attack_limit = m_tomahawk.n_grenade_charge_power - 1; - while ( n_dist > 4096 ) - { - m_tomahawk moveto( self geteye(), 0.25 ); + while ( n_dist > 4096 ) + { + m_tomahawk moveto( self geteye(), 0.25 ); - if ( num_zombie_hit < n_attack_limit ) - { - self tomahawk_check_for_zombie( m_tomahawk ); - num_zombie_hit++; - } + if ( num_zombie_hit < n_attack_limit ) + { + self tomahawk_check_for_zombie( m_tomahawk ); + num_zombie_hit++; + } - wait 0.1; - n_dist = distance2dsquared( m_tomahawk.origin, self geteye() ); - } + wait 0.1; + n_dist = distance2dsquared( m_tomahawk.origin, self geteye() ); + } - if ( isdefined( m_tomahawk.a_has_powerup ) ) - { - foreach ( powerup in m_tomahawk.a_has_powerup ) - { - if ( isdefined( powerup ) ) - powerup.origin = self.origin; - } - } + if ( isdefined( m_tomahawk.a_has_powerup ) ) + { + foreach ( powerup in m_tomahawk.a_has_powerup ) + { + if ( isdefined( powerup ) ) + powerup.origin = self.origin; + } + } - m_tomahawk delete(); - self playsoundtoplayer( "wpn_tomahawk_catch_plr", self ); - self playsound( "wpn_tomahawk_catch_npc" ); - wait 5; - self playsoundtoplayer( "wpn_tomahawk_cooldown_done", self ); - self givemaxammo( self.current_tomahawk_weapon ); - a_zombies = getaispeciesarray( "axis", "all" ); + m_tomahawk delete(); + self playsoundtoplayer( "wpn_tomahawk_catch_plr", self ); + self playsound( "wpn_tomahawk_catch_npc" ); + wait 5; + self playsoundtoplayer( "wpn_tomahawk_cooldown_done", self ); + self givemaxammo( self.current_tomahawk_weapon ); + a_zombies = getaispeciesarray( "axis", "all" ); - foreach ( ai_zombie in a_zombies ) - ai_zombie.hit_by_tomahawk = 0; + foreach ( ai_zombie in a_zombies ) + ai_zombie.hit_by_tomahawk = 0; - self setclientfieldtoplayer( "tomahawk_in_use", 3 ); + self setclientfieldtoplayer( "tomahawk_in_use", 3 ); } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_weapon_locker.gsc b/scripts/zm/replaced/_zm_weapon_locker.gsc index 4a3c3fc5..0872ec5d 100644 --- a/scripts/zm/replaced/_zm_weapon_locker.gsc +++ b/scripts/zm/replaced/_zm_weapon_locker.gsc @@ -12,40 +12,40 @@ triggerweaponslockerisvalidweaponpromptupdate( player, weaponname ) { self thread show_current_weapon(player); - retrievingweapon = player wl_has_stored_weapondata(); + retrievingweapon = player wl_has_stored_weapondata(); - if ( !retrievingweapon ) - { - weaponname = player get_nonalternate_weapon( weaponname ); + if ( !retrievingweapon ) + { + weaponname = player get_nonalternate_weapon( weaponname ); - if ( !triggerweaponslockerisvalidweapon( weaponname ) ) - self sethintstring( &"ZOMBIE_WEAPON_LOCKER_DENY" ); - else - self sethintstring( &"ZOMBIE_WEAPON_LOCKER_STORE" ); - } - else - { - weapondata = player wl_get_stored_weapondata(); + if ( !triggerweaponslockerisvalidweapon( weaponname ) ) + self sethintstring( &"ZOMBIE_WEAPON_LOCKER_DENY" ); + else + self sethintstring( &"ZOMBIE_WEAPON_LOCKER_STORE" ); + } + else + { + weapondata = player wl_get_stored_weapondata(); - if ( isdefined( level.remap_weapon_locker_weapons ) ) - weapondata = remap_weapon( weapondata, level.remap_weapon_locker_weapons ); + if ( isdefined( level.remap_weapon_locker_weapons ) ) + weapondata = remap_weapon( weapondata, level.remap_weapon_locker_weapons ); - weapontogive = weapondata["name"]; - primaries = player getweaponslistprimaries(); - maxweapons = get_player_weapon_limit( player ); - weaponname = player get_nonalternate_weapon( weaponname ); + weapontogive = weapondata["name"]; + primaries = player getweaponslistprimaries(); + maxweapons = get_player_weapon_limit( player ); + weaponname = player get_nonalternate_weapon( weaponname ); - if ( isdefined( primaries ) && primaries.size >= maxweapons || weapontogive == weaponname ) - { - if ( !triggerweaponslockerisvalidweapon( weaponname ) ) - { - self sethintstring( &"ZOMBIE_WEAPON_LOCKER_DENY" ); - return; - } - } + if ( isdefined( primaries ) && primaries.size >= maxweapons || weapontogive == weaponname ) + { + if ( !triggerweaponslockerisvalidweapon( weaponname ) ) + { + self sethintstring( &"ZOMBIE_WEAPON_LOCKER_DENY" ); + return; + } + } - self sethintstring( &"ZOMBIE_WEAPON_LOCKER_GRAB" ); - } + self sethintstring( &"ZOMBIE_WEAPON_LOCKER_GRAB" ); + } } show_current_weapon(player) @@ -59,16 +59,16 @@ show_current_weapon(player) num = player getentitynumber(); - displayname = "None"; - if (player wl_has_stored_weapondata()) - { - weapondata = player wl_get_stored_weapondata(); + displayname = "None"; + if (player wl_has_stored_weapondata()) + { + weapondata = player wl_get_stored_weapondata(); - if ( isdefined( level.remap_weapon_locker_weapons ) ) - weapondata = remap_weapon( weapondata, level.remap_weapon_locker_weapons ); + if ( isdefined( 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])) { @@ -146,8 +146,8 @@ wl_set_stored_weapondata( weapondata ) weapondata["alt_stock"] -= clip_alt_missing; } - if ( level.weapon_locker_online ) - self set_stored_weapondata( weapondata, level.weapon_locker_map ); - else - self.stored_weapon_data = weapondata; + if ( level.weapon_locker_online ) + self set_stored_weapondata( weapondata, level.weapon_locker_map ); + else + self.stored_weapon_data = weapondata; } \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_weapons.gsc b/scripts/zm/replaced/_zm_weapons.gsc index fe586016..90dee652 100644 --- a/scripts/zm/replaced/_zm_weapons.gsc +++ b/scripts/zm/replaced/_zm_weapons.gsc @@ -5,310 +5,310 @@ init_weapon_upgrade() { - init_spawnable_weapon_upgrade(); - weapon_spawns = []; - weapon_spawns = getentarray( "weapon_upgrade", "targetname" ); + init_spawnable_weapon_upgrade(); + weapon_spawns = []; + weapon_spawns = getentarray( "weapon_upgrade", "targetname" ); - for ( i = 0; i < weapon_spawns.size; i++ ) - { + for ( i = 0; i < weapon_spawns.size; i++ ) + { scripts\zm\replaced\utility::wallbuy( weapon_spawns[i].zombie_weapon_upgrade, weapon_spawns[i].target + "_weapon_upgrade", weapon_spawns[i].targetname, weapon_spawns[i].origin, weapon_spawns[i].angles, 0 ); - } + } } init_spawnable_weapon_upgrade() { - spawn_list = []; - spawnable_weapon_spawns = getstructarray( "weapon_upgrade", "targetname" ); - spawnable_weapon_spawns = arraycombine( spawnable_weapon_spawns, getstructarray( "bowie_upgrade", "targetname" ), 1, 0 ); - spawnable_weapon_spawns = arraycombine( spawnable_weapon_spawns, getstructarray( "sickle_upgrade", "targetname" ), 1, 0 ); - spawnable_weapon_spawns = arraycombine( spawnable_weapon_spawns, getstructarray( "tazer_upgrade", "targetname" ), 1, 0 ); - spawnable_weapon_spawns = arraycombine( spawnable_weapon_spawns, getstructarray( "buildable_wallbuy", "targetname" ), 1, 0 ); + spawn_list = []; + spawnable_weapon_spawns = getstructarray( "weapon_upgrade", "targetname" ); + spawnable_weapon_spawns = arraycombine( spawnable_weapon_spawns, getstructarray( "bowie_upgrade", "targetname" ), 1, 0 ); + spawnable_weapon_spawns = arraycombine( spawnable_weapon_spawns, getstructarray( "sickle_upgrade", "targetname" ), 1, 0 ); + spawnable_weapon_spawns = arraycombine( spawnable_weapon_spawns, getstructarray( "tazer_upgrade", "targetname" ), 1, 0 ); + spawnable_weapon_spawns = arraycombine( spawnable_weapon_spawns, getstructarray( "buildable_wallbuy", "targetname" ), 1, 0 ); - if ( !is_true( level.headshots_only ) ) - spawnable_weapon_spawns = arraycombine( spawnable_weapon_spawns, getstructarray( "claymore_purchase", "targetname" ), 1, 0 ); + if ( !is_true( level.headshots_only ) ) + spawnable_weapon_spawns = arraycombine( spawnable_weapon_spawns, getstructarray( "claymore_purchase", "targetname" ), 1, 0 ); - match_string = ""; - location = level.scr_zm_map_start_location; + match_string = ""; + location = level.scr_zm_map_start_location; - if ( ( location == "default" || location == "" ) && isdefined( level.default_start_location ) ) - location = level.default_start_location; + if ( ( location == "default" || location == "" ) && isdefined( level.default_start_location ) ) + location = level.default_start_location; - match_string = level.scr_zm_ui_gametype; + match_string = level.scr_zm_ui_gametype; - if ( "" != location ) - match_string = match_string + "_" + location; + if ( "" != location ) + match_string = match_string + "_" + location; - match_string_plus_space = " " + match_string; + match_string_plus_space = " " + match_string; - for ( i = 0; i < spawnable_weapon_spawns.size; i++ ) - { - spawnable_weapon = spawnable_weapon_spawns[i]; + for ( i = 0; i < spawnable_weapon_spawns.size; i++ ) + { + spawnable_weapon = spawnable_weapon_spawns[i]; - if ( isdefined( spawnable_weapon.zombie_weapon_upgrade ) && spawnable_weapon.zombie_weapon_upgrade == "sticky_grenade_zm" && is_true( level.headshots_only ) ) - continue; + if ( isdefined( spawnable_weapon.zombie_weapon_upgrade ) && spawnable_weapon.zombie_weapon_upgrade == "sticky_grenade_zm" && is_true( level.headshots_only ) ) + continue; - if ( !isdefined( spawnable_weapon.script_noteworthy ) || spawnable_weapon.script_noteworthy == "" ) - { - spawn_list[spawn_list.size] = spawnable_weapon; - continue; - } + if ( !isdefined( spawnable_weapon.script_noteworthy ) || spawnable_weapon.script_noteworthy == "" ) + { + spawn_list[spawn_list.size] = spawnable_weapon; + continue; + } - matches = strtok( spawnable_weapon.script_noteworthy, "," ); + matches = strtok( spawnable_weapon.script_noteworthy, "," ); - for ( j = 0; j < matches.size; j++ ) - { - if ( matches[j] == match_string || matches[j] == match_string_plus_space ) - spawn_list[spawn_list.size] = spawnable_weapon; - } - } + for ( j = 0; j < matches.size; j++ ) + { + if ( matches[j] == match_string || matches[j] == match_string_plus_space ) + spawn_list[spawn_list.size] = spawnable_weapon; + } + } - tempmodel = spawn( "script_model", ( 0, 0, 0 ) ); + tempmodel = spawn( "script_model", ( 0, 0, 0 ) ); - for ( i = 0; i < spawn_list.size; i++ ) - { - clientfieldname = spawn_list[i].zombie_weapon_upgrade + "_" + spawn_list[i].origin; - numbits = 2; + for ( i = 0; i < spawn_list.size; i++ ) + { + clientfieldname = spawn_list[i].zombie_weapon_upgrade + "_" + spawn_list[i].origin; + numbits = 2; - if ( isdefined( level._wallbuy_override_num_bits ) ) - numbits = level._wallbuy_override_num_bits; + if ( isdefined( level._wallbuy_override_num_bits ) ) + numbits = level._wallbuy_override_num_bits; - registerclientfield( "world", clientfieldname, 1, numbits, "int" ); - target_struct = getstruct( spawn_list[i].target, "targetname" ); + registerclientfield( "world", clientfieldname, 1, numbits, "int" ); + target_struct = getstruct( spawn_list[i].target, "targetname" ); - if ( spawn_list[i].targetname == "buildable_wallbuy" ) - { - bits = 4; + if ( spawn_list[i].targetname == "buildable_wallbuy" ) + { + bits = 4; - if ( isdefined( level.buildable_wallbuy_weapons ) ) - bits = getminbitcountfornum( level.buildable_wallbuy_weapons.size + 1 ); + if ( isdefined( level.buildable_wallbuy_weapons ) ) + bits = getminbitcountfornum( level.buildable_wallbuy_weapons.size + 1 ); - registerclientfield( "world", clientfieldname + "_idx", 12000, bits, "int" ); - spawn_list[i].clientfieldname = clientfieldname; - continue; - } + registerclientfield( "world", clientfieldname + "_idx", 12000, bits, "int" ); + spawn_list[i].clientfieldname = clientfieldname; + continue; + } - precachemodel( target_struct.model ); - unitrigger_stub = spawnstruct(); - unitrigger_stub.origin = spawn_list[i].origin; - unitrigger_stub.angles = spawn_list[i].angles; - tempmodel.origin = spawn_list[i].origin; - tempmodel.angles = spawn_list[i].angles; - mins = undefined; - maxs = undefined; - absmins = undefined; - absmaxs = undefined; - tempmodel setmodel( target_struct.model ); - tempmodel useweaponhidetags( spawn_list[i].zombie_weapon_upgrade ); - mins = tempmodel getmins(); - maxs = tempmodel getmaxs(); - absmins = tempmodel getabsmins(); - absmaxs = tempmodel getabsmaxs(); - bounds = absmaxs - absmins; - unitrigger_stub.script_length = 64; - unitrigger_stub.script_width = bounds[1]; - unitrigger_stub.script_height = bounds[2]; - unitrigger_stub.origin -= anglestoright( unitrigger_stub.angles ) * ( bounds[0] * 0.1 ); - unitrigger_stub.target = spawn_list[i].target; - unitrigger_stub.targetname = spawn_list[i].targetname; - unitrigger_stub.cursor_hint = "HINT_NOICON"; + precachemodel( target_struct.model ); + unitrigger_stub = spawnstruct(); + unitrigger_stub.origin = spawn_list[i].origin; + unitrigger_stub.angles = spawn_list[i].angles; + tempmodel.origin = spawn_list[i].origin; + tempmodel.angles = spawn_list[i].angles; + mins = undefined; + maxs = undefined; + absmins = undefined; + absmaxs = undefined; + tempmodel setmodel( target_struct.model ); + tempmodel useweaponhidetags( spawn_list[i].zombie_weapon_upgrade ); + mins = tempmodel getmins(); + maxs = tempmodel getmaxs(); + absmins = tempmodel getabsmins(); + absmaxs = tempmodel getabsmaxs(); + bounds = absmaxs - absmins; + unitrigger_stub.script_length = 64; + unitrigger_stub.script_width = bounds[1]; + unitrigger_stub.script_height = bounds[2]; + unitrigger_stub.origin -= anglestoright( unitrigger_stub.angles ) * ( bounds[0] * 0.1 ); + unitrigger_stub.target = spawn_list[i].target; + unitrigger_stub.targetname = spawn_list[i].targetname; + unitrigger_stub.cursor_hint = "HINT_NOICON"; - if ( spawn_list[i].targetname == "weapon_upgrade" ) - { - unitrigger_stub.cost = get_weapon_cost( spawn_list[i].zombie_weapon_upgrade ); + if ( spawn_list[i].targetname == "weapon_upgrade" ) + { + unitrigger_stub.cost = get_weapon_cost( spawn_list[i].zombie_weapon_upgrade ); - if ( !( isdefined( level.monolingustic_prompt_format ) && level.monolingustic_prompt_format ) ) - { - unitrigger_stub.hint_string = get_weapon_hint( spawn_list[i].zombie_weapon_upgrade ); - unitrigger_stub.hint_parm1 = unitrigger_stub.cost; - } - else - { - unitrigger_stub.hint_parm1 = get_weapon_display_name( spawn_list[i].zombie_weapon_upgrade ); + if ( !( isdefined( level.monolingustic_prompt_format ) && level.monolingustic_prompt_format ) ) + { + unitrigger_stub.hint_string = get_weapon_hint( spawn_list[i].zombie_weapon_upgrade ); + unitrigger_stub.hint_parm1 = unitrigger_stub.cost; + } + else + { + unitrigger_stub.hint_parm1 = get_weapon_display_name( spawn_list[i].zombie_weapon_upgrade ); - if ( !isdefined( unitrigger_stub.hint_parm1 ) || unitrigger_stub.hint_parm1 == "" || unitrigger_stub.hint_parm1 == "none" ) - unitrigger_stub.hint_parm1 = "missing weapon name " + spawn_list[i].zombie_weapon_upgrade; + if ( !isdefined( unitrigger_stub.hint_parm1 ) || unitrigger_stub.hint_parm1 == "" || unitrigger_stub.hint_parm1 == "none" ) + unitrigger_stub.hint_parm1 = "missing weapon name " + spawn_list[i].zombie_weapon_upgrade; - unitrigger_stub.hint_parm2 = unitrigger_stub.cost; - unitrigger_stub.hint_string = &"ZOMBIE_WEAPONCOSTONLY"; - } - } + unitrigger_stub.hint_parm2 = unitrigger_stub.cost; + unitrigger_stub.hint_string = &"ZOMBIE_WEAPONCOSTONLY"; + } + } - unitrigger_stub.weapon_upgrade = spawn_list[i].zombie_weapon_upgrade; - unitrigger_stub.script_unitrigger_type = "unitrigger_box_use"; - unitrigger_stub.require_look_at = 1; + unitrigger_stub.weapon_upgrade = spawn_list[i].zombie_weapon_upgrade; + unitrigger_stub.script_unitrigger_type = "unitrigger_box_use"; + unitrigger_stub.require_look_at = 1; - if ( isdefined( spawn_list[i].require_look_from ) && spawn_list[i].require_look_from ) - unitrigger_stub.require_look_from = 1; + if ( isdefined( spawn_list[i].require_look_from ) && spawn_list[i].require_look_from ) + unitrigger_stub.require_look_from = 1; - unitrigger_stub.zombie_weapon_upgrade = spawn_list[i].zombie_weapon_upgrade; - unitrigger_stub.clientfieldname = clientfieldname; - maps\mp\zombies\_zm_unitrigger::unitrigger_force_per_player_triggers( unitrigger_stub, 1 ); + unitrigger_stub.zombie_weapon_upgrade = spawn_list[i].zombie_weapon_upgrade; + unitrigger_stub.clientfieldname = clientfieldname; + maps\mp\zombies\_zm_unitrigger::unitrigger_force_per_player_triggers( unitrigger_stub, 1 ); - if ( is_melee_weapon( unitrigger_stub.zombie_weapon_upgrade ) ) - { - if ( unitrigger_stub.zombie_weapon_upgrade == "tazer_knuckles_zm" ) - unitrigger_stub.origin += (anglesToForward(unitrigger_stub.angles) * -7) + (anglesToRight(unitrigger_stub.angles) * -2); + if ( is_melee_weapon( unitrigger_stub.zombie_weapon_upgrade ) ) + { + if ( unitrigger_stub.zombie_weapon_upgrade == "tazer_knuckles_zm" ) + unitrigger_stub.origin += (anglesToForward(unitrigger_stub.angles) * -7) + (anglesToRight(unitrigger_stub.angles) * -2); - maps\mp\zombies\_zm_unitrigger::register_static_unitrigger( unitrigger_stub, ::weapon_spawn_think ); - } - else if ( unitrigger_stub.zombie_weapon_upgrade == "claymore_zm" ) - { - 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 ); - } - else - { + maps\mp\zombies\_zm_unitrigger::register_static_unitrigger( unitrigger_stub, ::weapon_spawn_think ); + } + else if ( unitrigger_stub.zombie_weapon_upgrade == "claymore_zm" ) + { + 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 ); + } + else + { if( is_lethal_grenade( unitrigger_stub.zombie_weapon_upgrade ) ) unitrigger_stub.prompt_and_visibility_func = ::lethal_grenade_update_prompt; else unitrigger_stub.prompt_and_visibility_func = ::wall_weapon_update_prompt; - maps\mp\zombies\_zm_unitrigger::register_static_unitrigger( unitrigger_stub, ::weapon_spawn_think ); - } + maps\mp\zombies\_zm_unitrigger::register_static_unitrigger( unitrigger_stub, ::weapon_spawn_think ); + } - spawn_list[i].trigger_stub = unitrigger_stub; - } + spawn_list[i].trigger_stub = unitrigger_stub; + } - level._spawned_wallbuys = spawn_list; - tempmodel delete(); + level._spawned_wallbuys = spawn_list; + tempmodel delete(); } add_dynamic_wallbuy( weapon, wallbuy, pristine ) { - spawned_wallbuy = undefined; + spawned_wallbuy = undefined; - for ( i = 0; i < level._spawned_wallbuys.size; i++ ) - { - if ( level._spawned_wallbuys[i].target == wallbuy ) - { - spawned_wallbuy = level._spawned_wallbuys[i]; - break; - } - } + for ( i = 0; i < level._spawned_wallbuys.size; i++ ) + { + if ( level._spawned_wallbuys[i].target == wallbuy ) + { + spawned_wallbuy = level._spawned_wallbuys[i]; + break; + } + } - if ( !isdefined( spawned_wallbuy ) ) - { - return; - } + if ( !isdefined( spawned_wallbuy ) ) + { + return; + } - if ( isdefined( spawned_wallbuy.trigger_stub ) ) - { - return; - } + if ( isdefined( spawned_wallbuy.trigger_stub ) ) + { + return; + } - target_struct = getstruct( wallbuy, "targetname" ); - wallmodel = spawn_weapon_model( weapon, undefined, target_struct.origin, target_struct.angles ); - clientfieldname = spawned_wallbuy.clientfieldname; - model = getweaponmodel( weapon ); - unitrigger_stub = spawnstruct(); - unitrigger_stub.origin = target_struct.origin; - unitrigger_stub.angles = target_struct.angles; - wallmodel.origin = target_struct.origin; - wallmodel.angles = target_struct.angles; - mins = undefined; - maxs = undefined; - absmins = undefined; - absmaxs = undefined; - wallmodel setmodel( model ); - wallmodel useweaponhidetags( weapon ); - mins = wallmodel getmins(); - maxs = wallmodel getmaxs(); - absmins = wallmodel getabsmins(); - absmaxs = wallmodel getabsmaxs(); - bounds = absmaxs - absmins; - unitrigger_stub.script_length = 64; - unitrigger_stub.script_width = bounds[1]; - unitrigger_stub.script_height = bounds[2]; - unitrigger_stub.origin -= anglestoright( unitrigger_stub.angles ) * ( bounds[0] * 0.1 ); - unitrigger_stub.target = spawned_wallbuy.target; - unitrigger_stub.targetname = "weapon_upgrade"; - unitrigger_stub.cursor_hint = "HINT_NOICON"; - unitrigger_stub.first_time_triggered = !pristine; + target_struct = getstruct( wallbuy, "targetname" ); + wallmodel = spawn_weapon_model( weapon, undefined, target_struct.origin, target_struct.angles ); + clientfieldname = spawned_wallbuy.clientfieldname; + model = getweaponmodel( weapon ); + unitrigger_stub = spawnstruct(); + unitrigger_stub.origin = target_struct.origin; + unitrigger_stub.angles = target_struct.angles; + wallmodel.origin = target_struct.origin; + wallmodel.angles = target_struct.angles; + mins = undefined; + maxs = undefined; + absmins = undefined; + absmaxs = undefined; + wallmodel setmodel( model ); + wallmodel useweaponhidetags( weapon ); + mins = wallmodel getmins(); + maxs = wallmodel getmaxs(); + absmins = wallmodel getabsmins(); + absmaxs = wallmodel getabsmaxs(); + bounds = absmaxs - absmins; + unitrigger_stub.script_length = 64; + unitrigger_stub.script_width = bounds[1]; + unitrigger_stub.script_height = bounds[2]; + unitrigger_stub.origin -= anglestoright( unitrigger_stub.angles ) * ( bounds[0] * 0.1 ); + unitrigger_stub.target = spawned_wallbuy.target; + unitrigger_stub.targetname = "weapon_upgrade"; + unitrigger_stub.cursor_hint = "HINT_NOICON"; + unitrigger_stub.first_time_triggered = !pristine; - if ( !is_melee_weapon( weapon ) ) - { - if ( pristine || weapon == "claymore_zm" ) - unitrigger_stub.hint_string = get_weapon_hint( weapon ); - else - unitrigger_stub.hint_string = get_weapon_hint_ammo(); + if ( !is_melee_weapon( weapon ) ) + { + if ( pristine || weapon == "claymore_zm" ) + unitrigger_stub.hint_string = get_weapon_hint( weapon ); + else + unitrigger_stub.hint_string = get_weapon_hint_ammo(); - unitrigger_stub.cost = get_weapon_cost( weapon ); - unitrigger_stub.hint_parm1 = unitrigger_stub.cost; - } + unitrigger_stub.cost = get_weapon_cost( weapon ); + unitrigger_stub.hint_parm1 = unitrigger_stub.cost; + } - unitrigger_stub.weapon_upgrade = weapon; - unitrigger_stub.script_unitrigger_type = "unitrigger_box_use"; - unitrigger_stub.require_look_at = 1; - unitrigger_stub.zombie_weapon_upgrade = weapon; - unitrigger_stub.clientfieldname = clientfieldname; - unitrigger_force_per_player_triggers( unitrigger_stub, 1 ); + unitrigger_stub.weapon_upgrade = weapon; + unitrigger_stub.script_unitrigger_type = "unitrigger_box_use"; + unitrigger_stub.require_look_at = 1; + unitrigger_stub.zombie_weapon_upgrade = weapon; + unitrigger_stub.clientfieldname = clientfieldname; + unitrigger_force_per_player_triggers( unitrigger_stub, 1 ); - if ( is_melee_weapon( weapon ) ) - { - if ( weapon == "tazer_knuckles_zm" ) + if ( is_melee_weapon( weapon ) ) + { + if ( weapon == "tazer_knuckles_zm" ) unitrigger_stub.origin += (anglesToForward(unitrigger_stub.angles) * -7) + (anglesToRight(unitrigger_stub.angles) * -2); - maps\mp\zombies\_zm_melee_weapon::add_stub( unitrigger_stub, weapon ); - maps\mp\zombies\_zm_unitrigger::register_static_unitrigger( unitrigger_stub, maps\mp\zombies\_zm_melee_weapon::melee_weapon_think ); - } - else if ( weapon == "claymore_zm" ) - { - unitrigger_stub.prompt_and_visibility_func = maps\mp\zombies\_zm_weap_claymore::claymore_unitrigger_update_prompt; - maps\mp\zombies\_zm_unitrigger::register_static_unitrigger( unitrigger_stub, maps\mp\zombies\_zm_weap_claymore::buy_claymores ); - } - else - { - if( is_lethal_grenade( unitrigger_stub.zombie_weapon_upgrade ) ) + maps\mp\zombies\_zm_melee_weapon::add_stub( unitrigger_stub, weapon ); + maps\mp\zombies\_zm_unitrigger::register_static_unitrigger( unitrigger_stub, maps\mp\zombies\_zm_melee_weapon::melee_weapon_think ); + } + else if ( weapon == "claymore_zm" ) + { + unitrigger_stub.prompt_and_visibility_func = maps\mp\zombies\_zm_weap_claymore::claymore_unitrigger_update_prompt; + maps\mp\zombies\_zm_unitrigger::register_static_unitrigger( unitrigger_stub, maps\mp\zombies\_zm_weap_claymore::buy_claymores ); + } + else + { + if( is_lethal_grenade( unitrigger_stub.zombie_weapon_upgrade ) ) unitrigger_stub.prompt_and_visibility_func = ::lethal_grenade_update_prompt; else unitrigger_stub.prompt_and_visibility_func = ::wall_weapon_update_prompt; - maps\mp\zombies\_zm_unitrigger::register_static_unitrigger( unitrigger_stub, ::weapon_spawn_think ); - } + maps\mp\zombies\_zm_unitrigger::register_static_unitrigger( unitrigger_stub, ::weapon_spawn_think ); + } - spawned_wallbuy.trigger_stub = unitrigger_stub; - weaponidx = undefined; + spawned_wallbuy.trigger_stub = unitrigger_stub; + weaponidx = undefined; - if ( isdefined( level.buildable_wallbuy_weapons ) ) - { - for ( i = 0; i < level.buildable_wallbuy_weapons.size; i++ ) - { - if ( weapon == level.buildable_wallbuy_weapons[i] ) - { - weaponidx = i; - break; - } - } - } + if ( isdefined( level.buildable_wallbuy_weapons ) ) + { + for ( i = 0; i < level.buildable_wallbuy_weapons.size; i++ ) + { + if ( weapon == level.buildable_wallbuy_weapons[i] ) + { + weaponidx = i; + break; + } + } + } - if ( isdefined( weaponidx ) ) - { - level setclientfield( clientfieldname + "_idx", weaponidx + 1 ); - wallmodel delete(); + if ( isdefined( weaponidx ) ) + { + level setclientfield( clientfieldname + "_idx", weaponidx + 1 ); + wallmodel delete(); - if ( !pristine ) - level setclientfield( clientfieldname, 1 ); - } - else - { - level setclientfield( clientfieldname, 1 ); - wallmodel show(); - } + if ( !pristine ) + level setclientfield( clientfieldname, 1 ); + } + else + { + level setclientfield( clientfieldname, 1 ); + wallmodel show(); + } } lethal_grenade_update_prompt( player ) { - weapon = self.stub.zombie_weapon_upgrade; + weapon = self.stub.zombie_weapon_upgrade; - cost = get_weapon_cost( weapon ); + cost = get_weapon_cost( weapon ); self.stub.hint_string = get_weapon_hint( weapon ); self sethintstring( self.stub.hint_string, cost ); - self.stub.cursor_hint = "HINT_WEAPON"; + self.stub.cursor_hint = "HINT_WEAPON"; self.stub.cursor_hint_weapon = weapon; self setcursorhint( self.stub.cursor_hint, self.stub.cursor_hint_weapon ); - return 1; + return 1; } weapon_give( weapon, is_upgrade, magic_box, nosound ) @@ -471,17 +471,17 @@ weapon_give( weapon, is_upgrade, magic_box, nosound ) ammo_give( weapon ) { - give_ammo = 0; + give_ammo = 0; - if ( !is_offhand_weapon( weapon ) ) - { - weapon = get_weapon_with_attachments( weapon ); + if ( !is_offhand_weapon( weapon ) ) + { + weapon = get_weapon_with_attachments( weapon ); - if ( isdefined( weapon ) ) - { - stockmax = weaponstartammo( weapon ); + if ( isdefined( weapon ) ) + { + stockmax = weaponstartammo( weapon ); clipmax = weaponclipsize( weapon ); - ammocount = self getammocount( weapon ); + ammocount = self getammocount( weapon ); give_ammo = ammocount < (stockmax + clipmax); @@ -498,22 +498,22 @@ ammo_give( weapon ) give_ammo = ammocount < (stockmax + clipmax); } } - } - } - else if ( self has_weapon_or_upgrade( weapon ) ) - { - if ( self getammocount( weapon ) < weaponmaxammo( weapon ) ) - give_ammo = 1; - } + } + } + else if ( self has_weapon_or_upgrade( weapon ) ) + { + if ( self getammocount( weapon ) < weaponmaxammo( weapon ) ) + give_ammo = 1; + } - if ( give_ammo ) - { - self play_sound_on_ent( "purchase" ); - self givemaxammo( weapon ); + if ( give_ammo ) + { + self play_sound_on_ent( "purchase" ); + self givemaxammo( weapon ); self setWeaponAmmoClip( weapon, weaponClipSize(weapon) ); - alt_weap = weaponaltweaponname( weapon ); + alt_weap = weaponaltweaponname( weapon ); - if ( "none" != alt_weap ) + if ( "none" != alt_weap ) { self givemaxammo( alt_weap ); self setWeaponAmmoClip( alt_weap, weaponClipSize(alt_weap) ); @@ -521,11 +521,11 @@ ammo_give( weapon ) self notify("weapon_ammo_change"); - return true; - } + return true; + } - if ( !give_ammo ) - return false; + if ( !give_ammo ) + return false; } weapon_spawn_think() diff --git a/scripts/zm/replaced/zgrief.gsc b/scripts/zm/replaced/zgrief.gsc index 57e74c1c..759fd058 100644 --- a/scripts/zm/replaced/zgrief.gsc +++ b/scripts/zm/replaced/zgrief.gsc @@ -20,8 +20,8 @@ game_mode_spawn_player_logic() 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 ); if ( isdefined( self.owner ) ) @@ -33,48 +33,48 @@ meat_bounce_override( pos, normal, ent, bounce ) self delete(); return; - } - else - { - players = getplayers(); - closest_player = undefined; - closest_player_dist = 10000.0; + } + else + { + players = getplayers(); + closest_player = undefined; + closest_player_dist = 10000.0; foreach (player in players) { - if ( !is_player_valid(player) ) - continue; + if ( !is_player_valid(player) ) + continue; if ( player hasWeapon("item_meat_zm") ) - continue; + continue; 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 ) - { - closest_player = player; - closest_player_dist = distsq; - } + if ( distsq < closest_player_dist ) + { + closest_player = player; + closest_player_dist = distsq; + } } - if ( isdefined( closest_player ) ) - { + if ( isdefined( closest_player ) ) + { level thread meat_stink_player( closest_player ); - if ( isdefined( self.owner ) ) - { - 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" ); - } + if ( isdefined( self.owner ) ) + { + 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 delete(); return; - } - } + } + } playfx( level._effect["meat_impact"], self.origin ); @@ -152,14 +152,14 @@ meat_stink( who ) return; } - who.pre_meat_weapon = who getcurrentweapon(); - level notify( "meat_grabbed" ); - who notify( "meat_grabbed" ); - who playsound( "zmb_pickup_meat" ); - who increment_is_drinking(); - who giveweapon( "item_meat_zm" ); - who switchtoweapon( "item_meat_zm" ); - who setweaponammoclip( "item_meat_zm", 1 ); + who.pre_meat_weapon = who getcurrentweapon(); + level notify( "meat_grabbed" ); + who notify( "meat_grabbed" ); + who playsound( "zmb_pickup_meat" ); + who increment_is_drinking(); + who giveweapon( "item_meat_zm" ); + who switchtoweapon( "item_meat_zm" ); + who setweaponammoclip( "item_meat_zm", 1 ); who setMoveSpeedScale(0.75); who.ignoreme = 0; level.meat_player = who; @@ -370,12 +370,12 @@ meat_stink_cleanup_on_downed() meat_powerup_reset_on_disconnect() { - level endon("meat_thrown"); + level endon("meat_thrown"); level endon("meat_grabbed"); self endon("player_downed"); self endon("bled_out"); - self waittill("disconnect"); + self waittill("disconnect"); level.meat_player = undefined; @@ -388,7 +388,7 @@ meat_powerup_reset_on_disconnect() } } - level notify("meat_inactive"); + level notify("meat_inactive"); } meat_stink_on_ground(position_to_play) @@ -457,15 +457,15 @@ meat_stink_player( who ) meat_stink_player_create() { - self maps\mp\zombies\_zm_stats::increment_client_stat( "contaminations_received" ); - self endon( "disconnect" ); - self endon( "death" ); - tagname = "J_SpineLower"; - self.meat_stink_3p = spawn( "script_model", self gettagorigin( tagname ) ); - self.meat_stink_3p setmodel( "tag_origin" ); - self.meat_stink_3p linkto( self, tagname ); - playfxontag( level._effect["meat_stink_torso"], self.meat_stink_3p, "tag_origin" ); - self setclientfieldtoplayer( "meat_stink", 1 ); + self maps\mp\zombies\_zm_stats::increment_client_stat( "contaminations_received" ); + self endon( "disconnect" ); + self endon( "death" ); + tagname = "J_SpineLower"; + self.meat_stink_3p = spawn( "script_model", self gettagorigin( tagname ) ); + self.meat_stink_3p setmodel( "tag_origin" ); + self.meat_stink_3p linkto( self, tagname ); + playfxontag( level._effect["meat_stink_torso"], self.meat_stink_3p, "tag_origin" ); + self setclientfieldtoplayer( "meat_stink", 1 ); } print_meat_msg(meat_player, verb) diff --git a/scripts/zm/replaced/zm_alcatraz_craftables.gsc b/scripts/zm/replaced/zm_alcatraz_craftables.gsc index f5e289f2..0e40978b 100644 --- a/scripts/zm/replaced/zm_alcatraz_craftables.gsc +++ b/scripts/zm/replaced/zm_alcatraz_craftables.gsc @@ -12,148 +12,148 @@ init_craftables() { - precachestring( &"ZM_PRISON_KEY_DOOR" ); - level.craftable_piece_count = 10; - register_clientfields(); - 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" ); - 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_vox_category( "packasplat", "build_bsm" ); - make_zombie_craftable_open( "packasplat", "p6_anim_zm_al_packasplat", vectorscale( ( 0, -1, 0 ), 90.0 ) ); - level.craftable_piece_swap_allowed = 0; - add_zombie_craftable( "quest_key1" ); - 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 ); - in_game_checklist_setup(); + precachestring( &"ZM_PRISON_KEY_DOOR" ); + level.craftable_piece_count = 10; + register_clientfields(); + 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" ); + 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_vox_category( "packasplat", "build_bsm" ); + make_zombie_craftable_open( "packasplat", "p6_anim_zm_al_packasplat", vectorscale( ( 0, -1, 0 ), 90.0 ) ); + level.craftable_piece_swap_allowed = 0; + add_zombie_craftable( "quest_key1" ); + 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 ); + in_game_checklist_setup(); } include_craftables() { - level.zombie_include_craftables["open_table"].custom_craftablestub_update_prompt = ::prison_open_craftablestub_update_prompt; - 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_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 = spawnstruct(); - packasplat.name = craftable_name; - packasplat add_craftable_piece( packasplat_case ); - packasplat add_craftable_piece( packasplat_fuse ); - packasplat add_craftable_piece( packasplat_blood ); - packasplat.triggerthink = ::packasplatcraftable; - include_craftable( packasplat ); - 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_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 = spawnstruct(); - riotshield.name = craftable_name; - riotshield add_craftable_piece( riotshield_dolly ); - riotshield add_craftable_piece( riotshield_door ); - riotshield add_craftable_piece( riotshield_clamp ); - riotshield.onbuyweapon = ::onbuyweapon_riotshield; - riotshield.triggerthink = ::riotshieldcraftable; - include_craftable( riotshield ); - include_key_craftable( "quest_key1", "p6_zm_al_key" ); - 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_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_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 ); + level.zombie_include_craftables["open_table"].custom_craftablestub_update_prompt = ::prison_open_craftablestub_update_prompt; + 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_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 = spawnstruct(); + packasplat.name = craftable_name; + packasplat add_craftable_piece( packasplat_case ); + packasplat add_craftable_piece( packasplat_fuse ); + packasplat add_craftable_piece( packasplat_blood ); + packasplat.triggerthink = ::packasplatcraftable; + include_craftable( packasplat ); + 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_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 = spawnstruct(); + riotshield.name = craftable_name; + riotshield add_craftable_piece( riotshield_dolly ); + riotshield add_craftable_piece( riotshield_door ); + riotshield add_craftable_piece( riotshield_clamp ); + riotshield.onbuyweapon = ::onbuyweapon_riotshield; + riotshield.triggerthink = ::riotshieldcraftable; + include_craftable( riotshield ); + include_key_craftable( "quest_key1", "p6_zm_al_key" ); + 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_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_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_cloth.is_shared = 1; - plane_fueltanks.is_shared = 1; - plane_engine.is_shared = 1; - plane_steering.is_shared = 1; - plane_rigging.is_shared = 1; - plane_cloth.client_field_state = undefined; - plane_fueltanks.client_field_state = undefined; - plane_engine.client_field_state = undefined; - plane_steering.client_field_state = undefined; - plane_rigging.client_field_state = undefined; + plane_cloth.is_shared = 1; + plane_fueltanks.is_shared = 1; + plane_engine.is_shared = 1; + plane_steering.is_shared = 1; + plane_rigging.is_shared = 1; + plane_cloth.client_field_state = undefined; + plane_fueltanks.client_field_state = undefined; + plane_engine.client_field_state = undefined; + plane_steering.client_field_state = undefined; + plane_rigging.client_field_state = undefined; - plane_cloth.pickup_alias = "sidequest_sheets"; - plane_fueltanks.pickup_alias = "sidequest_oxygen"; - plane_engine.pickup_alias = "sidequest_engine"; - plane_steering.pickup_alias = "sidequest_valves"; - plane_rigging.pickup_alias = "sidequest_rigging"; - plane = spawnstruct(); - plane.name = craftable_name; - plane add_craftable_piece( plane_cloth ); - plane add_craftable_piece( plane_engine ); - plane add_craftable_piece( plane_fueltanks ); - plane add_craftable_piece( plane_steering ); - plane add_craftable_piece( plane_rigging ); - plane.triggerthink = ::planecraftable; - plane.custom_craftablestub_update_prompt = ::prison_plane_update_prompt; - include_craftable( 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_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_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 ); + plane_cloth.pickup_alias = "sidequest_sheets"; + plane_fueltanks.pickup_alias = "sidequest_oxygen"; + plane_engine.pickup_alias = "sidequest_engine"; + plane_steering.pickup_alias = "sidequest_valves"; + plane_rigging.pickup_alias = "sidequest_rigging"; + plane = spawnstruct(); + plane.name = craftable_name; + plane add_craftable_piece( plane_cloth ); + plane add_craftable_piece( plane_engine ); + plane add_craftable_piece( plane_fueltanks ); + plane add_craftable_piece( plane_steering ); + plane add_craftable_piece( plane_rigging ); + plane.triggerthink = ::planecraftable; + plane.custom_craftablestub_update_prompt = ::prison_plane_update_prompt; + include_craftable( 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_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_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_gas1.is_shared = 1; - refuelable_plane_gas2.is_shared = 1; - refuelable_plane_gas3.is_shared = 1; - refuelable_plane_gas4.is_shared = 1; - refuelable_plane_gas5.is_shared = 1; - refuelable_plane_gas1.client_field_state = undefined; - refuelable_plane_gas2.client_field_state = undefined; - refuelable_plane_gas3.client_field_state = undefined; - refuelable_plane_gas4.client_field_state = undefined; - refuelable_plane_gas5.client_field_state = undefined; + refuelable_plane_gas1.is_shared = 1; + refuelable_plane_gas2.is_shared = 1; + refuelable_plane_gas3.is_shared = 1; + refuelable_plane_gas4.is_shared = 1; + refuelable_plane_gas5.is_shared = 1; + refuelable_plane_gas1.client_field_state = undefined; + refuelable_plane_gas2.client_field_state = undefined; + refuelable_plane_gas3.client_field_state = undefined; + refuelable_plane_gas4.client_field_state = undefined; + refuelable_plane_gas5.client_field_state = undefined; - refuelable_plane = spawnstruct(); - refuelable_plane.name = craftable_name; - refuelable_plane add_craftable_piece( refuelable_plane_gas1 ); - refuelable_plane add_craftable_piece( refuelable_plane_gas2 ); - refuelable_plane add_craftable_piece( refuelable_plane_gas3 ); - refuelable_plane add_craftable_piece( refuelable_plane_gas4 ); - refuelable_plane add_craftable_piece( refuelable_plane_gas5 ); - refuelable_plane.triggerthink = ::planefuelable; - plane.custom_craftablestub_update_prompt = ::prison_plane_update_prompt; - include_craftable( refuelable_plane ); + refuelable_plane = spawnstruct(); + refuelable_plane.name = craftable_name; + refuelable_plane add_craftable_piece( refuelable_plane_gas1 ); + refuelable_plane add_craftable_piece( refuelable_plane_gas2 ); + refuelable_plane add_craftable_piece( refuelable_plane_gas3 ); + refuelable_plane add_craftable_piece( refuelable_plane_gas4 ); + refuelable_plane add_craftable_piece( refuelable_plane_gas5 ); + refuelable_plane.triggerthink = ::planefuelable; + plane.custom_craftablestub_update_prompt = ::prison_plane_update_prompt; + include_craftable( refuelable_plane ); } 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 = spawnstruct(); - part.name = craftable_name; - part add_craftable_piece( part_key ); - part.triggerthink = maps\mp\zombies\_zm_craftables::setup_craftable_pieces; - include_craftable( part ); + 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.name = craftable_name; + part add_craftable_piece( part_key ); + part.triggerthink = maps\mp\zombies\_zm_craftables::setup_craftable_pieces; + include_craftable( part ); } onpickup_key( player ) { - flag_set( "key_found" ); + flag_set( "key_found" ); - if ( level.is_master_key_west ) - level clientnotify( "fxanim_west_pulley_up_start" ); - else - level clientnotify( "fxanim_east_pulley_up_start" ); + if ( level.is_master_key_west ) + level clientnotify( "fxanim_west_pulley_up_start" ); + else + 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 ) - { - m_checklist showpart( "j_check_key" ); - m_checklist showpart( "j_strike_key" ); - } + foreach ( m_checklist in a_m_checklist ) + { + m_checklist showpart( "j_check_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 ) - { - if ( isdefined( struct.unitrigger_stub ) ) - struct.unitrigger_stub maps\mp\zombies\_zm_unitrigger::run_visibility_function_for_all_triggers(); - } + foreach ( struct in a_door_structs ) + { + if ( isdefined( struct.unitrigger_stub ) ) + struct.unitrigger_stub maps\mp\zombies\_zm_unitrigger::run_visibility_function_for_all_triggers(); + } - player playsound( "evt_key_pickup" ); - player thread do_player_general_vox( "quest", "sidequest_key_response", undefined, 100 ); - //level setclientfield( "piece_key_warden", 1 ); + player playsound( "evt_key_pickup" ); + player thread do_player_general_vox( "quest", "sidequest_key_response", undefined, 100 ); + //level setclientfield( "piece_key_warden", 1 ); } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_alcatraz_distance_tracking.gsc b/scripts/zm/replaced/zm_alcatraz_distance_tracking.gsc index e530fef8..c06be66e 100644 --- a/scripts/zm/replaced/zm_alcatraz_distance_tracking.gsc +++ b/scripts/zm/replaced/zm_alcatraz_distance_tracking.gsc @@ -6,68 +6,68 @@ delete_zombie_noone_looking( how_close, how_high ) { - self endon( "death" ); + self endon( "death" ); - if ( !isdefined( how_close ) ) - how_close = 1500; + if ( !isdefined( how_close ) ) + how_close = 1500; - if ( !isdefined( how_high ) ) - how_close = 600; + if ( !isdefined( how_high ) ) + how_close = 600; - distance_squared_check = how_close * how_close; - too_far_dist = distance_squared_check * 3; + distance_squared_check = how_close * how_close; + too_far_dist = distance_squared_check * 3; - if ( isdefined( level.zombie_tracking_too_far_dist ) ) - too_far_dist = level.zombie_tracking_too_far_dist * 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; - self.inview = 0; - self.player_close = 0; - players = get_players(); + self.inview = 0; + self.player_close = 0; + players = get_players(); - for ( i = 0; i < players.size; i++ ) - { - if ( players[i].sessionstate == "spectator" ) - continue; + for ( i = 0; i < players.size; i++ ) + { + if ( players[i].sessionstate == "spectator" ) + continue; - if ( isdefined( level.only_track_targeted_players ) ) - { - if ( !isdefined( self.favoriteenemy ) || self.favoriteenemy != players[i] ) - continue; - } + if ( isdefined( level.only_track_targeted_players ) ) + { + if ( !isdefined( self.favoriteenemy ) || self.favoriteenemy != players[i] ) + 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 ) - self.inview++; + if ( can_be_seen && distancesquared( self.origin, players[i].origin ) < too_far_dist ) + self.inview++; - if ( distancesquared( self.origin, players[i].origin ) < distance_squared_check && abs( self.origin[2] - players[i].origin[2] ) < how_high ) - self.player_close++; - } + if ( distancesquared( self.origin, players[i].origin ) < distance_squared_check && abs( self.origin[2] - players[i].origin[2] ) < how_high ) + self.player_close++; + } - wait 0.1; + wait 0.1; - if ( self.inview == 0 && self.player_close == 0 ) - { - if ( !isdefined( self.animname ) || isdefined( self.animname ) && self.animname != "zombie" ) - return; + if ( self.inview == 0 && self.player_close == 0 ) + { + if ( !isdefined( self.animname ) || isdefined( self.animname ) && self.animname != "zombie" ) + return; - if ( isdefined( self.electrified ) && self.electrified == 1 ) - return; + if ( isdefined( self.electrified ) && self.electrified == 1 ) + return; - if ( isdefined( self.in_the_ground ) && self.in_the_ground == 1 ) - return; + if ( isdefined( self.in_the_ground ) && self.in_the_ground == 1 ) + return; - if ( !( isdefined( self.exclude_distance_cleanup_adding_to_total ) && self.exclude_distance_cleanup_adding_to_total ) && !( isdefined( self.isscreecher ) && self.isscreecher ) ) - { - level.zombie_total++; + if ( !( isdefined( self.exclude_distance_cleanup_adding_to_total ) && self.exclude_distance_cleanup_adding_to_total ) && !( isdefined( self.isscreecher ) && self.isscreecher ) ) + { + level.zombie_total++; - if ( self.health < level.zombie_health ) - level.zombie_respawned_health[level.zombie_respawned_health.size] = self.health; - } + if ( self.health < level.zombie_health ) + level.zombie_respawned_health[level.zombie_respawned_health.size] = self.health; + } - self maps\mp\zombies\_zm_spawner::reset_attack_spot(); - self notify( "zombie_delete" ); - self delete(); - recalc_zombie_array(); - } + self maps\mp\zombies\_zm_spawner::reset_attack_spot(); + self notify( "zombie_delete" ); + self delete(); + recalc_zombie_array(); + } } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_alcatraz_gamemodes.gsc b/scripts/zm/replaced/zm_alcatraz_gamemodes.gsc index 1aa23529..75bdbe6a 100644 --- a/scripts/zm/replaced/zm_alcatraz_gamemodes.gsc +++ b/scripts/zm/replaced/zm_alcatraz_gamemodes.gsc @@ -13,17 +13,17 @@ 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( "zgrief", scripts\zm\replaced\zm_alcatraz_grief_cellblock::zgrief_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_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 ); + } } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_alcatraz_grief_cellblock.gsc b/scripts/zm/replaced/zm_alcatraz_grief_cellblock.gsc index a1a1a266..c7a60aad 100644 --- a/scripts/zm/replaced/zm_alcatraz_grief_cellblock.gsc +++ b/scripts/zm/replaced/zm_alcatraz_grief_cellblock.gsc @@ -62,22 +62,22 @@ give_team_characters() } switch( self.characterindex ) { - case 0: - case 2: - self setmodel( "c_zom_player_grief_inmate_fb" ); - self.voice = "american"; - self.skeleton = "base"; - self setviewmodel( "c_zom_oleary_shortsleeve_viewhands" ); - self.characterindex = 0; - break; - case 1: - case 3: - self setmodel( "c_zom_player_grief_guard_fb" ); - self.voice = "american"; - self.skeleton = "base"; - self setviewmodel( "c_zom_grief_guard_viewhands" ); - self.characterindex = 1; - break; + case 0: + case 2: + self setmodel( "c_zom_player_grief_inmate_fb" ); + self.voice = "american"; + self.skeleton = "base"; + self setviewmodel( "c_zom_oleary_shortsleeve_viewhands" ); + self.characterindex = 0; + break; + case 1: + case 3: + self setmodel( "c_zom_player_grief_guard_fb" ); + self.voice = "american"; + self.skeleton = "base"; + self setviewmodel( "c_zom_grief_guard_viewhands" ); + self.characterindex = 1; + break; } self setmovespeedscale( 1 ); self setsprintduration( 4 ); diff --git a/scripts/zm/replaced/zm_alcatraz_sq.gsc b/scripts/zm/replaced/zm_alcatraz_sq.gsc index 9df0e752..985b5ca1 100644 --- a/scripts/zm/replaced/zm_alcatraz_sq.gsc +++ b/scripts/zm/replaced/zm_alcatraz_sq.gsc @@ -24,417 +24,417 @@ start_alcatraz_sidequest() { - init(); - onplayerconnect_callback( ::player_disconnect_watcher ); - onplayerconnect_callback( ::player_death_watcher ); - flag_wait( "start_zombie_round_logic" ); + init(); + onplayerconnect_callback( ::player_disconnect_watcher ); + onplayerconnect_callback( ::player_death_watcher ); + flag_wait( "start_zombie_round_logic" ); - level.n_quest_iteration_count = 1; - level.n_plane_fuel_count = 5; - level.n_plane_pieces_found = 0; - level.final_flight_players = []; - level.final_flight_activated = 0; - level.characters_in_nml = []; - level.someone_has_visited_nml = 0; - level.custom_game_over_hud_elem = maps\mp\zm_prison_sq_final::custom_game_over_hud_elem; - prevent_theater_mode_spoilers(); - setup_key_doors(); - setup_puzzle_piece_glint(); - setup_puzzles(); - setup_quest_triggers(); - flag_set( "docks_gates_remain_open" ); + level.n_quest_iteration_count = 1; + level.n_plane_fuel_count = 5; + level.n_plane_pieces_found = 0; + level.final_flight_players = []; + level.final_flight_activated = 0; + level.characters_in_nml = []; + level.someone_has_visited_nml = 0; + level.custom_game_over_hud_elem = maps\mp\zm_prison_sq_final::custom_game_over_hud_elem; + prevent_theater_mode_spoilers(); + setup_key_doors(); + setup_puzzle_piece_glint(); + setup_puzzles(); + setup_quest_triggers(); + flag_set( "docks_gates_remain_open" ); - if ( isdefined( level.gamedifficulty ) && level.gamedifficulty != 0 ) - maps\mp\zm_prison_sq_final::final_flight_setup(); + if ( isdefined( level.gamedifficulty ) && level.gamedifficulty != 0 ) + 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 ) ) - level thread [[ level.host_migration_listener_custom_func ]](); - else - level thread host_migration_listener(); + if ( isdefined( level.host_migration_listener_custom_func ) ) + level thread [[ level.host_migration_listener_custom_func ]](); + else + level thread host_migration_listener(); - if ( isdefined( level.manage_electric_chairs_custom_func ) ) - level thread [[ level.manage_electric_chairs_custom_func ]](); - else - level thread manage_electric_chairs(); + if ( isdefined( level.manage_electric_chairs_custom_func ) ) + level thread [[ level.manage_electric_chairs_custom_func ]](); + else + level thread manage_electric_chairs(); - if ( isdefined( level.plane_flight_thread_custom_func ) ) - level thread [[ level.plane_flight_thread_custom_func ]](); - else - level thread plane_flight_thread(); + if ( isdefined( level.plane_flight_thread_custom_func ) ) + level thread [[ level.plane_flight_thread_custom_func ]](); + else + level thread plane_flight_thread(); - if ( isdefined( level.track_quest_status_thread_custom_func ) ) - level thread [[ level.track_quest_status_thread_custom_func ]](); - else - level thread track_quest_status_thread(); + if ( isdefined( level.track_quest_status_thread_custom_func ) ) + level thread [[ level.track_quest_status_thread_custom_func ]](); + else + level thread track_quest_status_thread(); - maps\mp\zm_alcatraz_sq_vo::opening_vo(); + maps\mp\zm_alcatraz_sq_vo::opening_vo(); } dryer_zombies_thread() { - n_zombie_count_min = 20; - e_shower_zone = getent( "cellblock_shower", "targetname" ); - flag_wait( "dryer_cycle_active" ); + n_zombie_count_min = 20; + e_shower_zone = getent( "cellblock_shower", "targetname" ); + flag_wait( "dryer_cycle_active" ); - if ( level.zombie_total < n_zombie_count_min ) - level.zombie_total = n_zombie_count_min; + if ( level.zombie_total < n_zombie_count_min ) + level.zombie_total = n_zombie_count_min; - while ( flag( "dryer_cycle_active" ) ) - { - a_zombies_in_shower = []; - a_zombies_in_shower = get_zombies_touching_volume( "axis", "cellblock_shower", undefined ); + while ( flag( "dryer_cycle_active" ) ) + { + a_zombies_in_shower = []; + a_zombies_in_shower = get_zombies_touching_volume( "axis", "cellblock_shower", undefined ); - if ( a_zombies_in_shower.size < n_zombie_count_min ) - { - e_zombie = get_farthest_available_zombie( e_shower_zone ); + if ( a_zombies_in_shower.size < n_zombie_count_min ) + { + e_zombie = get_farthest_available_zombie( e_shower_zone ); - if ( isdefined( e_zombie ) && !isinarray( a_zombies_in_shower, e_zombie ) ) - { - e_zombie notify( "zapped" ); - e_zombie thread dryer_teleports_zombie(); - } - } + if ( isdefined( e_zombie ) && !isinarray( a_zombies_in_shower, e_zombie ) ) + { + e_zombie notify( "zapped" ); + e_zombie thread dryer_teleports_zombie(); + } + } - wait 1; - } + wait 1; + } } track_quest_status_thread() { - while ( true ) - { - while ( level.characters_in_nml.size == 0 ) - wait 1; + while ( true ) + { + while ( level.characters_in_nml.size == 0 ) + wait 1; - while ( level.characters_in_nml.size > 0 ) - wait 1; + while ( level.characters_in_nml.size > 0 ) + wait 1; - if ( flag( "plane_trip_to_nml_successful" ) ) - { - bestow_quest_rewards(); - flag_clear( "plane_trip_to_nml_successful" ); - } + if ( flag( "plane_trip_to_nml_successful" ) ) + { + bestow_quest_rewards(); + flag_clear( "plane_trip_to_nml_successful" ); + } - level notify( "bridge_empty" ); + level notify( "bridge_empty" ); - if ( level.n_quest_iteration_count == 2 ) - vo_play_four_part_conversation( level.four_part_convos["alcatraz_return_alt" + randomintrange( 0, 2 )] ); + if ( level.n_quest_iteration_count == 2 ) + vo_play_four_part_conversation( level.four_part_convos["alcatraz_return_alt" + randomintrange( 0, 2 )] ); - prep_for_new_quest(); - t_plane_fly = getent( "plane_fly_trigger", "targetname" ); + prep_for_new_quest(); + t_plane_fly = getent( "plane_fly_trigger", "targetname" ); t_plane_fly sethintstring( &"ZM_PRISON_PLANE_BEGIN_TAKEOFF" ); - t_plane_fly trigger_on(); - } + t_plane_fly trigger_on(); + } } prep_for_new_quest() { - for ( i = 1; i < 4; i++ ) - { - str_trigger_targetname = "trigger_electric_chair_" + i; - t_electric_chair = getent( str_trigger_targetname, "targetname" ); - t_electric_chair sethintstring( &"ZM_PRISON_ELECTRIC_CHAIR_ACTIVATE" ); - t_electric_chair trigger_on(); - } + for ( i = 1; i < 4; i++ ) + { + str_trigger_targetname = "trigger_electric_chair_" + i; + t_electric_chair = getent( str_trigger_targetname, "targetname" ); + t_electric_chair sethintstring( &"ZM_PRISON_ELECTRIC_CHAIR_ACTIVATE" ); + t_electric_chair trigger_on(); + } - for ( i = 1; i < 5; i++ ) - { - m_electric_chair = getent( "electric_chair_" + i, "targetname" ); - m_electric_chair notify( "bridge_empty" ); - } + for ( i = 1; i < 5; i++ ) + { + m_electric_chair = getent( "electric_chair_" + i, "targetname" ); + m_electric_chair notify( "bridge_empty" ); + } - m_plane_craftable = getent( "plane_craftable", "targetname" ); - m_plane_craftable show(); - playfxontag( level._effect["fx_alcatraz_plane_apear"], m_plane_craftable, "tag_origin" ); - veh_plane_flyable = getent( "plane_flyable", "targetname" ); - veh_plane_flyable attachpath( getvehiclenode( "zombie_plane_underground", "targetname" ) ); - vo_play_four_part_conversation( level.four_part_convos["alcatraz_return_quest_reset"] ); - flag_clear( "plane_is_away" ); + m_plane_craftable = getent( "plane_craftable", "targetname" ); + m_plane_craftable show(); + playfxontag( level._effect["fx_alcatraz_plane_apear"], m_plane_craftable, "tag_origin" ); + veh_plane_flyable = getent( "plane_flyable", "targetname" ); + veh_plane_flyable attachpath( getvehiclenode( "zombie_plane_underground", "targetname" ) ); + vo_play_four_part_conversation( level.four_part_convos["alcatraz_return_quest_reset"] ); + flag_clear( "plane_is_away" ); } plane_boarding_thread() { - self endon( "death_or_disconnect" ); - flag_set( "plane_is_away" ); - self thread player_disconnect_watcher(); - self thread player_death_watcher(); + self endon( "death_or_disconnect" ); + flag_set( "plane_is_away" ); + self thread player_disconnect_watcher(); + self thread player_death_watcher(); - flag_set( "plane_boarded" ); - self setclientfieldtoplayer( "effects_escape_flight", 1 ); - level.brutus_respawn_after_despawn = 0; - a_nml_teleport_targets = []; + flag_set( "plane_boarded" ); + self setclientfieldtoplayer( "effects_escape_flight", 1 ); + level.brutus_respawn_after_despawn = 0; + a_nml_teleport_targets = []; - for ( i = 1; i < 6; i++ ) - a_nml_teleport_targets[i - 1] = getstruct( "nml_telepoint_" + i, "targetname" ); + for ( i = 1; i < 6; i++ ) + a_nml_teleport_targets[i - 1] = getstruct( "nml_telepoint_" + i, "targetname" ); - level.characters_in_nml[level.characters_in_nml.size] = self.character_name; - self.on_a_plane = 1; - level.someone_has_visited_nml = 1; - self.n_passenger_index = level.characters_in_nml.size; - m_plane_craftable = getent( "plane_craftable", "targetname" ); - m_plane_about_to_crash = getent( "plane_about_to_crash", "targetname" ); - veh_plane_flyable = getent( "plane_flyable", "targetname" ); - t_plane_fly = getent( "plane_fly_trigger", "targetname" ); - t_plane_fly sethintstring( &"ZM_PRISON_PLANE_BOARD" ); - self enableinvulnerability(); - self playerlinktodelta( m_plane_craftable, "tag_player_crouched_" + ( self.n_passenger_index + 1 ) ); - self allowstand( 0 ); - flag_wait( "plane_departed" ); - level notify( "sndStopBrutusLoop" ); - self clientnotify( "sndPS" ); - self playsoundtoplayer( "zmb_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 setclientfieldtoplayer( "effects_escape_flight", 2 ); - flag_wait( "plane_approach_bridge" ); - self thread snddelayedimp(); - self setclientfieldtoplayer( "effects_escape_flight", 3 ); - self unlink(); - self playerlinktoabsolute( veh_plane_flyable, "tag_player_crouched_" + ( self.n_passenger_index + 1 ) ); - flag_wait( "plane_zapped" ); - flag_set( "activate_player_zone_bridge" ); - self playsoundtoplayer( "zmb_plane_fall", self ); - self setclientfieldtoplayer( "effects_escape_flight", 4 ); - self.dontspeak = 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 forcegrenadethrow(); - str_current_weapon = self getcurrentweapon(); - self giveweapon( "falling_hands_zm" ); - self switchtoweaponimmediate( "falling_hands_zm" ); - self setweaponammoclip( "falling_hands_zm", 0 ); - players = getplayers(); + level.characters_in_nml[level.characters_in_nml.size] = self.character_name; + self.on_a_plane = 1; + level.someone_has_visited_nml = 1; + self.n_passenger_index = level.characters_in_nml.size; + m_plane_craftable = getent( "plane_craftable", "targetname" ); + m_plane_about_to_crash = getent( "plane_about_to_crash", "targetname" ); + veh_plane_flyable = getent( "plane_flyable", "targetname" ); + t_plane_fly = getent( "plane_fly_trigger", "targetname" ); + t_plane_fly sethintstring( &"ZM_PRISON_PLANE_BOARD" ); + self enableinvulnerability(); + self playerlinktodelta( m_plane_craftable, "tag_player_crouched_" + ( self.n_passenger_index + 1 ) ); + self allowstand( 0 ); + flag_wait( "plane_departed" ); + level notify( "sndStopBrutusLoop" ); + self clientnotify( "sndPS" ); + self playsoundtoplayer( "zmb_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 setclientfieldtoplayer( "effects_escape_flight", 2 ); + flag_wait( "plane_approach_bridge" ); + self thread snddelayedimp(); + self setclientfieldtoplayer( "effects_escape_flight", 3 ); + self unlink(); + self playerlinktoabsolute( veh_plane_flyable, "tag_player_crouched_" + ( self.n_passenger_index + 1 ) ); + flag_wait( "plane_zapped" ); + flag_set( "activate_player_zone_bridge" ); + self playsoundtoplayer( "zmb_plane_fall", self ); + self setclientfieldtoplayer( "effects_escape_flight", 4 ); + self.dontspeak = 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 forcegrenadethrow(); + str_current_weapon = self getcurrentweapon(); + self giveweapon( "falling_hands_zm" ); + self switchtoweaponimmediate( "falling_hands_zm" ); + self setweaponammoclip( "falling_hands_zm", 0 ); + players = getplayers(); - foreach ( player in players ) - { - if ( player != self ) - player setinvisibletoplayer( self ); - } + foreach ( player in players ) + { + if ( player != self ) + player setinvisibletoplayer( self ); + } - flag_wait( "plane_crashed" ); - self setclientfieldtoplayer( "effects_escape_flight", 5 ); - self takeweapon( "falling_hands_zm" ); + flag_wait( "plane_crashed" ); + self setclientfieldtoplayer( "effects_escape_flight", 5 ); + self takeweapon( "falling_hands_zm" ); - if ( isdefined( str_current_weapon ) && str_current_weapon != "none" ) - self switchtoweaponimmediate( str_current_weapon ); + if ( isdefined( str_current_weapon ) && str_current_weapon != "none" ) + self switchtoweaponimmediate( str_current_weapon ); - self thread fadetoblackforxsec( 0, 2, 0, 0.5, "black" ); - self thread snddelayedmusic(); - self unlink(); - self allowstand( 1 ); - self setstance( "stand" ); - players = getplayers(); + self thread fadetoblackforxsec( 0, 2, 0, 0.5, "black" ); + self thread snddelayedmusic(); + self unlink(); + self allowstand( 1 ); + self setstance( "stand" ); + players = getplayers(); - foreach ( player in players ) - { - if ( player != self ) - player setvisibletoplayer( self ); - } + foreach ( player in players ) + { + if ( player != self ) + player setvisibletoplayer( self ); + } - flag_clear( "spawn_zombies" ); - self setorigin( a_nml_teleport_targets[self.n_passenger_index].origin ); - e_poi = getstruct( "plane_crash_poi", "targetname" ); - vec_to_target = e_poi.origin - self.origin; - vec_to_target = vectortoangles( vec_to_target ); - vec_to_target = ( 0, vec_to_target[1], 0 ); - self setplayerangles( vec_to_target ); - n_shellshock_duration = 5; - self shellshock( "explosion", n_shellshock_duration ); - self.dontspeak = 0; - self setclientfieldtoplayer( "isspeaking", 0 ); - self notify( "player_at_bridge" ); - wait( n_shellshock_duration ); - self disableinvulnerability(); - self.on_a_plane = 0; + flag_clear( "spawn_zombies" ); + self setorigin( a_nml_teleport_targets[self.n_passenger_index].origin ); + e_poi = getstruct( "plane_crash_poi", "targetname" ); + vec_to_target = e_poi.origin - self.origin; + vec_to_target = vectortoangles( vec_to_target ); + vec_to_target = ( 0, vec_to_target[1], 0 ); + self setplayerangles( vec_to_target ); + n_shellshock_duration = 5; + self shellshock( "explosion", n_shellshock_duration ); + self.dontspeak = 0; + self setclientfieldtoplayer( "isspeaking", 0 ); + self notify( "player_at_bridge" ); + wait( n_shellshock_duration ); + self disableinvulnerability(); + self.on_a_plane = 0; - if ( level.characters_in_nml.size == 1 ) - self thread vo_bridge_soliloquy(); - else if ( level.characters_in_nml.size == 4 ) - level thread vo_bridge_four_part_convo(); + if ( level.characters_in_nml.size == 1 ) + self thread vo_bridge_soliloquy(); + else if ( level.characters_in_nml.size == 4 ) + level thread vo_bridge_four_part_convo(); - self playsoundtoplayer( "zmb_ggb_swarm_start", self ); - flag_set( "spawn_zombies" ); - level.brutus_respawn_after_despawn = 1; - character_name = level.characters_in_nml[randomintrange( 0, level.characters_in_nml.size )]; - players = getplayers(); + self playsoundtoplayer( "zmb_ggb_swarm_start", self ); + flag_set( "spawn_zombies" ); + level.brutus_respawn_after_despawn = 1; + character_name = level.characters_in_nml[randomintrange( 0, level.characters_in_nml.size )]; + players = getplayers(); - foreach ( player in players ) - { - if ( isdefined( player ) && player.character_name == character_name ) - player thread do_player_general_vox( "quest", "zombie_arrive_gg", undefined, 100 ); - } + foreach ( player in players ) + { + if ( isdefined( player ) && player.character_name == character_name ) + player thread do_player_general_vox( "quest", "zombie_arrive_gg", undefined, 100 ); + } } plane_flight_thread() { - while ( true ) - { - m_plane_about_to_crash = getent( "plane_about_to_crash", "targetname" ); - m_plane_craftable = getent( "plane_craftable", "targetname" ); - t_plane_fly = getent( "plane_fly_trigger", "targetname" ); - veh_plane_flyable = getent( "plane_flyable", "targetname" ); - m_plane_about_to_crash ghost(); - flag_wait( "plane_boarded" ); - level clientnotify( "sndPB" ); + while ( true ) + { + m_plane_about_to_crash = getent( "plane_about_to_crash", "targetname" ); + m_plane_craftable = getent( "plane_craftable", "targetname" ); + t_plane_fly = getent( "plane_fly_trigger", "targetname" ); + veh_plane_flyable = getent( "plane_flyable", "targetname" ); + m_plane_about_to_crash ghost(); + flag_wait( "plane_boarded" ); + level clientnotify( "sndPB" ); - if ( !( isdefined( level.music_override ) && level.music_override ) ) - t_plane_fly playloopsound( "mus_event_plane_countdown_loop", 0.25 ); + if ( !( isdefined( level.music_override ) && level.music_override ) ) + t_plane_fly playloopsound( "mus_event_plane_countdown_loop", 0.25 ); - for ( i = 10; i > 0; i-- ) - { - veh_plane_flyable playsound( "zmb_plane_countdown_tick" ); - wait 1; - } + for ( i = 10; i > 0; i-- ) + { + veh_plane_flyable playsound( "zmb_plane_countdown_tick" ); + wait 1; + } - t_plane_fly stoploopsound( 2 ); - exploder( 10000 ); - veh_plane_flyable attachpath( getvehiclenode( "zombie_plane_flight_path", "targetname" ) ); - veh_plane_flyable startpath(); - flag_set( "plane_departed" ); - t_plane_fly trigger_off(); - m_plane_craftable ghost(); - veh_plane_flyable setvisibletoall(); - level setclientfield( "fog_stage", 1 ); - playfxontag( level._effect["fx_alcatraz_plane_trail"], veh_plane_flyable, "tag_origin" ); - wait 2; - playfxontag( level._effect["fx_alcatraz_plane_trail_fast"], veh_plane_flyable, "tag_origin" ); - wait 3; - exploder( 10001 ); - wait 4; - playfxontag( level._effect["fx_alcatraz_flight_lightning"], veh_plane_flyable, "tag_origin" ); - level setclientfield( "scripted_lightning_flash", 1 ); - wait 1; - flag_set( "plane_approach_bridge" ); - stop_exploder( 10001 ); - level setclientfield( "fog_stage", 2 ); - veh_plane_flyable attachpath( getvehiclenode( "zombie_plane_bridge_approach", "targetname" ) ); - veh_plane_flyable startpath(); - wait 6; - playfxontag( level._effect["fx_alcatraz_flight_lightning"], veh_plane_flyable, "tag_origin" ); - level setclientfield( "scripted_lightning_flash", 1 ); + t_plane_fly stoploopsound( 2 ); + exploder( 10000 ); + veh_plane_flyable attachpath( getvehiclenode( "zombie_plane_flight_path", "targetname" ) ); + veh_plane_flyable startpath(); + flag_set( "plane_departed" ); + t_plane_fly trigger_off(); + m_plane_craftable ghost(); + veh_plane_flyable setvisibletoall(); + level setclientfield( "fog_stage", 1 ); + playfxontag( level._effect["fx_alcatraz_plane_trail"], veh_plane_flyable, "tag_origin" ); + wait 2; + playfxontag( level._effect["fx_alcatraz_plane_trail_fast"], veh_plane_flyable, "tag_origin" ); + wait 3; + exploder( 10001 ); + wait 4; + playfxontag( level._effect["fx_alcatraz_flight_lightning"], veh_plane_flyable, "tag_origin" ); + level setclientfield( "scripted_lightning_flash", 1 ); + wait 1; + flag_set( "plane_approach_bridge" ); + stop_exploder( 10001 ); + level setclientfield( "fog_stage", 2 ); + veh_plane_flyable attachpath( getvehiclenode( "zombie_plane_bridge_approach", "targetname" ) ); + veh_plane_flyable startpath(); + wait 6; + playfxontag( level._effect["fx_alcatraz_flight_lightning"], veh_plane_flyable, "tag_origin" ); + level setclientfield( "scripted_lightning_flash", 1 ); - veh_plane_flyable waittill( "reached_end_node" ); + veh_plane_flyable waittill( "reached_end_node" ); - flag_set( "plane_zapped" ); - level setclientfield( "fog_stage", 3 ); - veh_plane_flyable setinvisibletoall(); - n_crash_duration = 2.25; - 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; - 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 thread spin_while_falling(); - stop_exploder( 10000 ); + flag_set( "plane_zapped" ); + level setclientfield( "fog_stage", 3 ); + veh_plane_flyable setinvisibletoall(); + n_crash_duration = 2.25; + 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; + 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 thread spin_while_falling(); + stop_exploder( 10000 ); - m_plane_about_to_crash waittill( "movedone" ); + m_plane_about_to_crash waittill( "movedone" ); - flag_set( "plane_crashed" ); - wait 2; - level setclientfield( "scripted_lightning_flash", 1 ); - m_plane_about_to_crash.origin += vectorscale( ( 0, 0, -1 ), 2048.0 ); - wait 4; - 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 attachpath( getvehiclenode( "zombie_plane_bridge_flyby", "targetname" ) ); - veh_plane_flyable startpath(); - veh_plane_flyable thread sndpc(); + flag_set( "plane_crashed" ); + wait 2; + level setclientfield( "scripted_lightning_flash", 1 ); + m_plane_about_to_crash.origin += vectorscale( ( 0, 0, -1 ), 2048.0 ); + wait 4; + 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 attachpath( getvehiclenode( "zombie_plane_bridge_flyby", "targetname" ) ); + veh_plane_flyable startpath(); + 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 ( isdefined( level.brutus_on_the_bridge_custom_func ) ) - level thread [[ level.brutus_on_the_bridge_custom_func ]](); - else - level thread brutus_on_the_bridge(); - } + if ( !level.final_flight_activated ) + { + if ( isdefined( level.brutus_on_the_bridge_custom_func ) ) + level thread [[ level.brutus_on_the_bridge_custom_func ]](); + else + level thread brutus_on_the_bridge(); + } - flag_clear( "plane_boarded" ); - flag_clear( "plane_departed" ); - flag_clear( "plane_approach_bridge" ); - flag_clear( "plane_zapped" ); - flag_clear( "plane_crashed" ); - } + flag_clear( "plane_boarded" ); + flag_clear( "plane_departed" ); + flag_clear( "plane_approach_bridge" ); + flag_clear( "plane_zapped" ); + flag_clear( "plane_crashed" ); + } } manage_electric_chairs() { - level notify( "manage_electric_chairs" ); - level endon( "manage_electric_chairs" ); + level notify( "manage_electric_chairs" ); + level endon( "manage_electric_chairs" ); - while ( true ) - { - flag_wait( "plane_approach_bridge" ); + while ( true ) + { + flag_wait( "plane_approach_bridge" ); - for ( i = 1; i < 5; i++ ) - { - str_trigger_targetname = "trigger_electric_chair_" + i; - t_electric_chair = getent( str_trigger_targetname, "targetname" ); + for ( i = 1; i < 5; i++ ) + { + str_trigger_targetname = "trigger_electric_chair_" + i; + t_electric_chair = getent( str_trigger_targetname, "targetname" ); - if ( isdefined( level.electric_chair_trigger_thread_custom_func ) ) - t_electric_chair thread [[ level.electric_chair_trigger_thread_custom_func ]]( i ); - else - t_electric_chair thread electric_chair_trigger_thread( i ); + if ( isdefined( level.electric_chair_trigger_thread_custom_func ) ) + t_electric_chair thread [[ level.electric_chair_trigger_thread_custom_func ]]( i ); + else + t_electric_chair thread electric_chair_trigger_thread( i ); - t_electric_chair setcursorhint( "HINT_NOICON" ); - t_electric_chair sethintstring( &"ZM_PRISON_ELECTRIC_CHAIR_ACTIVATE" ); - t_electric_chair usetriggerrequirelookat(); - } + t_electric_chair setcursorhint( "HINT_NOICON" ); + t_electric_chair sethintstring( &"ZM_PRISON_ELECTRIC_CHAIR_ACTIVATE" ); + t_electric_chair usetriggerrequirelookat(); + } - if ( level.final_flight_activated ) - { - level.revive_trigger_should_ignore_sight_checks = maps\mp\zm_prison_sq_final::revive_trigger_should_ignore_sight_checks; + if ( level.final_flight_activated ) + { + 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++ ) - { - m_electric_chair = getent( "electric_chair_" + ( j + 1 ), "targetname" ); - corpse = level.final_flight_players[j].e_afterlife_corpse; - corpse linkto( m_electric_chair, "tag_origin", ( 0, 0, 0 ), ( 0, 0, 0 ) ); - corpse maps\mp\zombies\_zm_clone::clone_animate( "chair" ); - wait 1; - corpse.revivetrigger unlink(); - corpse.revivetrigger.origin = m_electric_chair.origin + ( 64, 0, 32 ); - } + for ( j = 0; j < level.final_flight_players.size; j++ ) + { + m_electric_chair = getent( "electric_chair_" + ( j + 1 ), "targetname" ); + corpse = level.final_flight_players[j].e_afterlife_corpse; + corpse linkto( m_electric_chair, "tag_origin", ( 0, 0, 0 ), ( 0, 0, 0 ) ); + corpse maps\mp\zombies\_zm_clone::clone_animate( "chair" ); + wait 1; + corpse.revivetrigger unlink(); + corpse.revivetrigger.origin = m_electric_chair.origin + ( 64, 0, 32 ); + } - for ( j = 1; j < 5; j++ ) - { - str_trigger_targetname = "trigger_electric_chair_" + j; - t_electric_chair = getent( str_trigger_targetname, "targetname" ); - t_electric_chair trigger_off(); - } - } - else - { - for ( i = 1; i < 5; i++ ) - { - m_electric_chair = getent( "electric_chair_" + i, "targetname" ); - m_electric_chair hide(); - str_trigger_targetname = "trigger_electric_chair_" + i; - t_electric_chair = getent( str_trigger_targetname, "targetname" ); - t_electric_chair trigger_off(); - } + for ( j = 1; j < 5; j++ ) + { + str_trigger_targetname = "trigger_electric_chair_" + j; + t_electric_chair = getent( str_trigger_targetname, "targetname" ); + t_electric_chair trigger_off(); + } + } + else + { + for ( i = 1; i < 5; i++ ) + { + m_electric_chair = getent( "electric_chair_" + i, "targetname" ); + m_electric_chair hide(); + str_trigger_targetname = "trigger_electric_chair_" + i; + t_electric_chair = getent( str_trigger_targetname, "targetname" ); + t_electric_chair trigger_off(); + } - flag_wait( "plane_crashed" ); - exploder( 666 ); + flag_wait( "plane_crashed" ); + exploder( 666 ); - for ( i = 1; i < 5; i++ ) - { - m_electric_chair = getent( "electric_chair_" + i, "targetname" ); - m_electric_chair show(); - m_electric_chair thread snddelayedchairaudio( i ); - str_trigger_targetname = "trigger_electric_chair_" + i; - t_electric_chair = getent( str_trigger_targetname, "targetname" ); - t_electric_chair trigger_on(); - } + for ( i = 1; i < 5; i++ ) + { + m_electric_chair = getent( "electric_chair_" + i, "targetname" ); + m_electric_chair show(); + m_electric_chair thread snddelayedchairaudio( i ); + str_trigger_targetname = "trigger_electric_chair_" + i; + t_electric_chair = getent( str_trigger_targetname, "targetname" ); + t_electric_chair trigger_on(); + } - wait 3; - electric_chair_vo(); - } + wait 3; + electric_chair_vo(); + } - flag_waitopen( "plane_approach_bridge" ); - } + flag_waitopen( "plane_approach_bridge" ); + } } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_alcatraz_traps.gsc b/scripts/zm/replaced/zm_alcatraz_traps.gsc index 7ccb7d48..490b2064 100644 --- a/scripts/zm/replaced/zm_alcatraz_traps.gsc +++ b/scripts/zm/replaced/zm_alcatraz_traps.gsc @@ -11,416 +11,416 @@ init_fan_trap_trigs() { - trap_trigs = getentarray( "fan_trap_use_trigger", "targetname" ); - array_thread( trap_trigs, ::fan_trap_think ); - init_fan_fxanim( "wardens_office" ); + trap_trigs = getentarray( "fan_trap_use_trigger", "targetname" ); + array_thread( trap_trigs, ::fan_trap_think ); + init_fan_fxanim( "wardens_office" ); } fan_trap_think() { - triggers = getentarray( self.targetname, "targetname" ); - self.cost = 1000; - self.in_use = 0; - self.is_available = 1; - self.has_been_used = 0; - self.zombie_dmg_trig = getent( self.target, "targetname" ); - self.zombie_dmg_trig.script_string = self.script_string; - self.zombie_dmg_trig.in_use = 0; - self.rumble_trig = getent( "fan_trap_rumble", "targetname" ); - light_name = self get_trap_light_name(); - zapper_light_red( light_name ); - self sethintstring( &"ZM_PRISON_FAN_TRAP_UNAVAILABLE" ); - flag_wait( "activate_warden_office" ); - zapper_light_green( light_name ); - self hint_string( &"ZM_PRISON_FAN_TRAP", self.cost ); + triggers = getentarray( self.targetname, "targetname" ); + self.cost = 1000; + self.in_use = 0; + self.is_available = 1; + self.has_been_used = 0; + self.zombie_dmg_trig = getent( self.target, "targetname" ); + self.zombie_dmg_trig.script_string = self.script_string; + self.zombie_dmg_trig.in_use = 0; + self.rumble_trig = getent( "fan_trap_rumble", "targetname" ); + light_name = self get_trap_light_name(); + zapper_light_red( light_name ); + self sethintstring( &"ZM_PRISON_FAN_TRAP_UNAVAILABLE" ); + flag_wait( "activate_warden_office" ); + zapper_light_green( light_name ); + self hint_string( &"ZM_PRISON_FAN_TRAP", self.cost ); - while ( true ) - { - self waittill( "trigger", who ); + while ( true ) + { + self waittill( "trigger", who ); - if ( who in_revive_trigger() ) - continue; + if ( who in_revive_trigger() ) + continue; - if ( !isdefined( self.is_available ) ) - continue; + if ( !isdefined( self.is_available ) ) + continue; - if ( is_player_valid( who ) ) - { - if ( who.score >= self.cost ) - { - if ( !self.zombie_dmg_trig.in_use ) - { - if ( !self.has_been_used ) - { - self.has_been_used = 1; - level thread maps\mp\zombies\_zm_audio::sndmusicstingerevent( "trap" ); - who do_player_general_vox( "general", "discover_trap" ); - } - else - who do_player_general_vox( "general", "start_trap" ); + if ( is_player_valid( who ) ) + { + if ( who.score >= self.cost ) + { + if ( !self.zombie_dmg_trig.in_use ) + { + if ( !self.has_been_used ) + { + self.has_been_used = 1; + level thread maps\mp\zombies\_zm_audio::sndmusicstingerevent( "trap" ); + who do_player_general_vox( "general", "discover_trap" ); + } + else + who do_player_general_vox( "general", "start_trap" ); - array_thread( triggers, ::hint_string, &"ZOMBIE_TRAP_ACTIVE" ); - self.zombie_dmg_trig.in_use = 1; - self.zombie_dmg_trig.active = 1; - self playsound( "zmb_trap_activate" ); - self thread fan_trap_move_switch( self ); + array_thread( triggers, ::hint_string, &"ZOMBIE_TRAP_ACTIVE" ); + self.zombie_dmg_trig.in_use = 1; + self.zombie_dmg_trig.active = 1; + self playsound( "zmb_trap_activate" ); + self thread fan_trap_move_switch( self ); - self waittill( "switch_activated" ); + self waittill( "switch_activated" ); - who minus_to_player_score( self.cost ); - level.trapped_track["fan"] = 1; - level notify( "trap_activated" ); - who maps\mp\zombies\_zm_stats::increment_client_stat( "prison_fan_trap_used", 0 ); - self.zombie_dmg_trig setvisibletoall(); - self thread activate_fan_trap(); + who minus_to_player_score( self.cost ); + level.trapped_track["fan"] = 1; + level notify( "trap_activated" ); + who maps\mp\zombies\_zm_stats::increment_client_stat( "prison_fan_trap_used", 0 ); + self.zombie_dmg_trig setvisibletoall(); + 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" ); - self.zombie_dmg_trig notify( "fan_trap_finished" ); - self.zombie_dmg_trig.active = 0; - self.zombie_dmg_trig setinvisibletoall(); - array_thread( triggers, ::hint_string, &"ZOMBIE_TRAP_COOLDOWN" ); - wait 25; - self playsound( "zmb_trap_available" ); - self notify( "available" ); - self.zombie_dmg_trig.in_use = 0; - array_thread( triggers, ::hint_string, &"ZM_PRISON_FAN_TRAP", self.cost ); - } - } - } - } + clientnotify( self.script_string + "off" ); + self.zombie_dmg_trig notify( "fan_trap_finished" ); + self.zombie_dmg_trig.active = 0; + self.zombie_dmg_trig setinvisibletoall(); + array_thread( triggers, ::hint_string, &"ZOMBIE_TRAP_COOLDOWN" ); + wait 25; + self playsound( "zmb_trap_available" ); + self notify( "available" ); + self.zombie_dmg_trig.in_use = 0; + array_thread( triggers, ::hint_string, &"ZM_PRISON_FAN_TRAP", self.cost ); + } + } + } + } } init_acid_trap_trigs() { - trap_trigs = getentarray( "acid_trap_trigger", "targetname" ); - array_thread( trap_trigs, ::acid_trap_think ); - level thread acid_trap_host_migration_listener(); + trap_trigs = getentarray( "acid_trap_trigger", "targetname" ); + array_thread( trap_trigs, ::acid_trap_think ); + level thread acid_trap_host_migration_listener(); } acid_trap_think() { - triggers = getentarray( self.targetname, "targetname" ); - self.is_available = 1; - self.has_been_used = 0; - self.cost = 1000; - self.in_use = 0; - self.zombie_dmg_trig = getent( self.target, "targetname" ); - self.zombie_dmg_trig.in_use = 0; - light_name = self get_trap_light_name(); - zapper_light_red( light_name ); - self sethintstring( &"ZM_PRISON_ACID_TRAP_UNAVAILABLE" ); - flag_wait_any( "activate_cafeteria", "activate_infirmary" ); - zapper_light_green( light_name ); - self hint_string( &"ZM_PRISON_ACID_TRAP", self.cost ); + triggers = getentarray( self.targetname, "targetname" ); + self.is_available = 1; + self.has_been_used = 0; + self.cost = 1000; + self.in_use = 0; + self.zombie_dmg_trig = getent( self.target, "targetname" ); + self.zombie_dmg_trig.in_use = 0; + light_name = self get_trap_light_name(); + zapper_light_red( light_name ); + self sethintstring( &"ZM_PRISON_ACID_TRAP_UNAVAILABLE" ); + flag_wait_any( "activate_cafeteria", "activate_infirmary" ); + zapper_light_green( light_name ); + self hint_string( &"ZM_PRISON_ACID_TRAP", self.cost ); - while ( true ) - { - self waittill( "trigger", who ); + while ( true ) + { + self waittill( "trigger", who ); - if ( who in_revive_trigger() ) - continue; + if ( who in_revive_trigger() ) + continue; - if ( !isdefined( self.is_available ) ) - continue; + if ( !isdefined( self.is_available ) ) + continue; - if ( is_player_valid( who ) ) - { - if ( who.score >= self.cost ) - { - if ( !self.zombie_dmg_trig.in_use ) - { - if ( !self.has_been_used ) - { - self.has_been_used = 1; - level thread maps\mp\zombies\_zm_audio::sndmusicstingerevent( "trap" ); - who do_player_general_vox( "general", "discover_trap" ); - } - else - who do_player_general_vox( "general", "start_trap" ); + if ( is_player_valid( who ) ) + { + if ( who.score >= self.cost ) + { + if ( !self.zombie_dmg_trig.in_use ) + { + if ( !self.has_been_used ) + { + self.has_been_used = 1; + level thread maps\mp\zombies\_zm_audio::sndmusicstingerevent( "trap" ); + who do_player_general_vox( "general", "discover_trap" ); + } + else + who do_player_general_vox( "general", "start_trap" ); - array_thread( triggers, ::hint_string, &"ZOMBIE_TRAP_ACTIVE" ); - self.zombie_dmg_trig.in_use = 1; - self.zombie_dmg_trig.active = 1; - self playsound( "zmb_trap_activate" ); - self thread acid_trap_move_switch( self ); + array_thread( triggers, ::hint_string, &"ZOMBIE_TRAP_ACTIVE" ); + self.zombie_dmg_trig.in_use = 1; + self.zombie_dmg_trig.active = 1; + self playsound( "zmb_trap_activate" ); + self thread acid_trap_move_switch( self ); - self waittill( "switch_activated" ); + self waittill( "switch_activated" ); - who minus_to_player_score( self.cost ); - level.trapped_track["acid"] = 1; - level notify( "trap_activated" ); - who maps\mp\zombies\_zm_stats::increment_client_stat( "prison_acid_trap_used", 0 ); - self thread activate_acid_trap(); + who minus_to_player_score( self.cost ); + level.trapped_track["acid"] = 1; + level notify( "trap_activated" ); + who maps\mp\zombies\_zm_stats::increment_client_stat( "prison_acid_trap_used", 0 ); + 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 ) ) - self.fx_org delete(); + if ( isdefined( self.fx_org ) ) + self.fx_org delete(); - if ( isdefined( self.zapper_fx_org ) ) - self.zapper_fx_org delete(); + if ( isdefined( self.zapper_fx_org ) ) + self.zapper_fx_org delete(); - if ( isdefined( self.zapper_fx_switch_org ) ) - self.zapper_fx_switch_org delete(); + if ( isdefined( self.zapper_fx_switch_org ) ) + self.zapper_fx_switch_org delete(); - self.zombie_dmg_trig notify( "acid_trap_finished" ); - self.zombie_dmg_trig.active = 0; - array_thread( triggers, ::hint_string, &"ZOMBIE_TRAP_COOLDOWN" ); - wait 25; - self playsound( "zmb_trap_available" ); - self notify( "available" ); - self.zombie_dmg_trig.in_use = 0; - array_thread( triggers, ::hint_string, &"ZM_PRISON_ACID_TRAP", self.cost ); - } - } - } - } + self.zombie_dmg_trig notify( "acid_trap_finished" ); + self.zombie_dmg_trig.active = 0; + array_thread( triggers, ::hint_string, &"ZOMBIE_TRAP_COOLDOWN" ); + wait 25; + self playsound( "zmb_trap_available" ); + self notify( "available" ); + self.zombie_dmg_trig.in_use = 0; + array_thread( triggers, ::hint_string, &"ZM_PRISON_ACID_TRAP", self.cost ); + } + } + } + } } zombie_acid_damage() { - self endon( "death" ); - self setclientfield( "acid_trap_death_fx", 1 ); + self endon( "death" ); + self setclientfield( "acid_trap_death_fx", 1 ); - if ( !isdefined( self.is_brutus ) ) - { - 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(); - } + if ( !isdefined( self.is_brutus ) ) + { + 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 dodamage( self.health + 1000, self.origin ); + self dodamage( self.health + 1000, self.origin ); } player_acid_damage( t_damage ) { - self endon( "death" ); - self endon( "disconnect" ); - t_damage endon( "acid_trap_finished" ); + self endon( "death" ); + self endon( "disconnect" ); + t_damage endon( "acid_trap_finished" ); - if ( !isdefined( self.is_in_acid ) && !self player_is_in_laststand() ) - { - self.is_in_acid = 1; - self thread player_acid_damage_cooldown(); + if ( !isdefined( self.is_in_acid ) && !self player_is_in_laststand() ) + { + self.is_in_acid = 1; + self thread player_acid_damage_cooldown(); - self dodamage( self.maxhealth / 2, self.origin, t_damage, t_damage, "none", "MOD_UNKNOWN", 0, "none" ); - wait 1.5; - } + self dodamage( self.maxhealth / 2, self.origin, t_damage, t_damage, "none", "MOD_UNKNOWN", 0, "none" ); + wait 1.5; + } } player_acid_damage_cooldown() { - self endon( "disconnect" ); - wait 1.5; + self endon( "disconnect" ); + wait 1.5; - if ( isdefined( self ) ) - self.is_in_acid = undefined; + if ( isdefined( self ) ) + self.is_in_acid = undefined; } tower_trap_trigger_think() { - self.range_trigger = getent( self.target, "targetname" ); - self.upgrade_trigger = getent( self.script_string, "script_noteworthy" ); - self.cost = 1000; - light_name = self get_trap_light_name(); - zapper_light_green( light_name ); - self.is_available = 1; - self.in_use = 0; - self.has_been_used = 0; - self.sndtowerent = spawn( "script_origin", ( -21, 5584, 356 ) ); - self tower_trap_weapon(); - self.upgrade_trigger.cost = 1000; - self.upgrade_trigger.in_use = 0; - self.upgrade_trigger.is_available = 1; + self.range_trigger = getent( self.target, "targetname" ); + self.upgrade_trigger = getent( self.script_string, "script_noteworthy" ); + self.cost = 1000; + light_name = self get_trap_light_name(); + zapper_light_green( light_name ); + self.is_available = 1; + self.in_use = 0; + self.has_been_used = 0; + self.sndtowerent = spawn( "script_origin", ( -21, 5584, 356 ) ); + self tower_trap_weapon(); + self.upgrade_trigger.cost = 1000; + self.upgrade_trigger.in_use = 0; + self.upgrade_trigger.is_available = 1; - if (is_gametype_active("zclassic")) - { - self thread tower_upgrade_trigger_think(); - } + if (is_gametype_active("zclassic")) + { + self thread tower_upgrade_trigger_think(); + } - while ( true ) - { - self hint_string( &"ZM_PRISON_TOWER_TRAP", self.cost ); + while ( true ) + { + self hint_string( &"ZM_PRISON_TOWER_TRAP", self.cost ); - self waittill( "trigger", who ); + self waittill( "trigger", who ); - if ( who in_revive_trigger() ) - continue; + if ( who in_revive_trigger() ) + continue; - if ( !isdefined( self.is_available ) ) - continue; + if ( !isdefined( self.is_available ) ) + continue; - if ( is_player_valid( who ) ) - { - if ( who.score >= self.cost ) - { - if ( !self.in_use ) - { - if ( !self.has_been_used ) - { - self.has_been_used = 1; - who do_player_general_vox( "general", "discover_trap" ); - } - else - who do_player_general_vox( "general", "start_trap" ); + if ( is_player_valid( who ) ) + { + if ( who.score >= self.cost ) + { + if ( !self.in_use ) + { + if ( !self.has_been_used ) + { + self.has_been_used = 1; + who do_player_general_vox( "general", "discover_trap" ); + } + else + who do_player_general_vox( "general", "start_trap" ); - self hint_string( &"ZOMBIE_TRAP_ACTIVE" ); - self.in_use = 1; - self.active = 1; - play_sound_at_pos( "purchase", who.origin ); - self thread tower_trap_move_switch( self ); - self playsound( "zmb_trap_activate" ); + self hint_string( &"ZOMBIE_TRAP_ACTIVE" ); + self.in_use = 1; + self.active = 1; + play_sound_at_pos( "purchase", who.origin ); + self thread tower_trap_move_switch( self ); + self playsound( "zmb_trap_activate" ); - self waittill( "switch_activated" ); + self waittill( "switch_activated" ); - who minus_to_player_score( self.cost ); - level.trapped_track["tower"] = 1; - level notify( "trap_activated" ); - who maps\mp\zombies\_zm_stats::increment_client_stat( "prison_sniper_tower_used", 0 ); - self.sndtowerent playsound( "zmb_trap_tower_start" ); - self.sndtowerent playloopsound( "zmb_trap_tower_loop", 1 ); - self thread activate_tower_trap(); - self thread tower_trap_timer(); + who minus_to_player_score( self.cost ); + level.trapped_track["tower"] = 1; + level notify( "trap_activated" ); + who maps\mp\zombies\_zm_stats::increment_client_stat( "prison_sniper_tower_used", 0 ); + self.sndtowerent playsound( "zmb_trap_tower_start" ); + self.sndtowerent playloopsound( "zmb_trap_tower_loop", 1 ); + self thread activate_tower_trap(); + self thread tower_trap_timer(); - self waittill( "tower_trap_off" ); + self waittill( "tower_trap_off" ); - self.sndtowerent stoploopsound( 1 ); - self.sndtowerent playsound( "zmb_trap_tower_end" ); - self.active = 0; - self sethintstring( &"ZOMBIE_TRAP_COOLDOWN" ); - zapper_light_red( light_name ); - wait 25; - self playsound( "zmb_trap_available" ); - self notify( "available" ); - self.in_use = 0; - } - } - } - } + self.sndtowerent stoploopsound( 1 ); + self.sndtowerent playsound( "zmb_trap_tower_end" ); + self.active = 0; + self sethintstring( &"ZOMBIE_TRAP_COOLDOWN" ); + zapper_light_red( light_name ); + wait 25; + self playsound( "zmb_trap_available" ); + self notify( "available" ); + self.in_use = 0; + } + } + } + } } tower_upgrade_trigger_think() { - while (1) - { - level thread open_tower_trap_upgrade_panel(); + while (1) + { + 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.is_available = 0; + self.upgrade_trigger.in_use = 1; + self.upgrade_trigger.is_available = 0; - level.trapped_track["tower_upgrade"] = 1; - level notify( "tower_trap_upgraded" ); - level notify( "close_tower_trap_upgrade_panel" ); - self upgrade_tower_trap_weapon(); + level.trapped_track["tower_upgrade"] = 1; + level notify( "tower_trap_upgraded" ); + level notify( "close_tower_trap_upgrade_panel" ); + self upgrade_tower_trap_weapon(); - level waittill( "end_of_round" ); + level waittill( "end_of_round" ); - self tower_trap_weapon(); - self.upgrade_trigger notify( "afterlife_interact_reset" ); - self.upgrade_trigger notify( "available" ); - self.upgrade_trigger.in_use = 0; - self.upgrade_trigger.is_available = 1; - } + self tower_trap_weapon(); + self.upgrade_trigger notify( "afterlife_interact_reset" ); + self.upgrade_trigger notify( "available" ); + self.upgrade_trigger.in_use = 0; + self.upgrade_trigger.is_available = 1; + } } tower_trap_weapon() { - self.weapon_name = "tower_trap_zm"; - self.tag_to_target = "J_Head"; - self.trap_reload_time = 0.75; + self.weapon_name = "tower_trap_zm"; + self.tag_to_target = "J_Head"; + self.trap_reload_time = 0.75; } activate_tower_trap() { - self endon( "tower_trap_off" ); + self endon( "tower_trap_off" ); - while ( true ) - { - zombies = getaiarray( level.zombie_team ); + while ( true ) + { + zombies = getaiarray( level.zombie_team ); - if (is_gametype_active("zgrief")) - { - zombies = arraycombine(zombies, get_players(), 1, 0); - } + if (is_gametype_active("zgrief")) + { + zombies = arraycombine(zombies, get_players(), 1, 0); + } - zombies_sorted = []; + zombies_sorted = []; - foreach ( zombie in zombies ) - { - if ( zombie istouching( self.range_trigger ) ) - { - zombies_sorted[zombies_sorted.size] = zombie; - } - } + foreach ( zombie in zombies ) + { + if ( zombie istouching( self.range_trigger ) ) + { + zombies_sorted[zombies_sorted.size] = zombie; + } + } - if ( zombies_sorted.size <= 0 ) - { - wait 0.05; - continue; - } + if ( zombies_sorted.size <= 0 ) + { + wait 0.05; + continue; + } - self tower_trap_fires( zombies_sorted ); - } + self tower_trap_fires( zombies_sorted ); + } } tower_trap_fires( a_zombies ) { - if ( isdefined( level.custom_tower_trap_fires_func ) ) - { - self thread [[ level.custom_tower_trap_fires_func ]]( a_zombies ); - return; - } + if ( isdefined( level.custom_tower_trap_fires_func ) ) + { + self thread [[ level.custom_tower_trap_fires_func ]]( a_zombies ); + return; + } - if ( a_zombies.size <= 0 ) - { - return; - } + if ( a_zombies.size <= 0 ) + { + return; + } - self endon( "tower_trap_off" ); - e_org = getstruct( self.range_trigger.target, "targetname" ); + self endon( "tower_trap_off" ); + e_org = getstruct( self.range_trigger.target, "targetname" ); - while ( 1 ) - { - if ( a_zombies.size <= 0 ) - { - wait 0.05; - return; - } + while ( 1 ) + { + if ( a_zombies.size <= 0 ) + { + wait 0.05; + return; + } - n_index = randomintrange( 0, a_zombies.size ); - e_target = a_zombies[n_index]; + n_index = randomintrange( 0, a_zombies.size ); + e_target = a_zombies[n_index]; - if ( !isalive( e_target ) ) - { - arrayremovevalue( a_zombies, e_target, 0 ); - continue; - } + if ( !isalive( e_target ) ) + { + arrayremovevalue( a_zombies, e_target, 0 ); + continue; + } - if ( isplayer( e_target ) && e_target maps\mp\zombies\_zm_laststand::player_is_in_laststand() ) - { - arrayremovevalue( a_zombies, e_target, 0 ); - continue; - } + if ( isplayer( e_target ) && e_target maps\mp\zombies\_zm_laststand::player_is_in_laststand() ) + { + arrayremovevalue( a_zombies, e_target, 0 ); + 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 ) ) - { - magicbullet( self.weapon_name, e_org.origin, v_zombietarget ); + if ( sighttracepassed( e_org.origin, v_zombietarget, 1, undefined ) ) + { + magicbullet( self.weapon_name, e_org.origin, v_zombietarget ); - wait( self.trap_reload_time ); + wait( self.trap_reload_time ); - return; - } - else - { - arrayremovevalue( a_zombies, e_target, 0 ); - continue; - } - } + return; + } + else + { + arrayremovevalue( a_zombies, e_target, 0 ); + continue; + } + } } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_alcatraz_travel.gsc b/scripts/zm/replaced/zm_alcatraz_travel.gsc index fc3040dc..3ce05377 100644 --- a/scripts/zm/replaced/zm_alcatraz_travel.gsc +++ b/scripts/zm/replaced/zm_alcatraz_travel.gsc @@ -9,109 +9,109 @@ move_gondola( b_suppress_doors_close = 0 ) { - level clientnotify( "sndGS" ); - level thread gondola_lights_red(); - e_gondola = level.e_gondola; - t_ride = level.e_gondola.t_ride; - e_gondola.is_moving = 1; + level clientnotify( "sndGS" ); + level thread gondola_lights_red(); + e_gondola = level.e_gondola; + t_ride = level.e_gondola.t_ride; + e_gondola.is_moving = 1; - if ( e_gondola.location == "roof" ) - { - s_moveloc = getstruct( "gondola_struct_docks", "targetname" ); - e_gondola.destination = "docks"; - level thread gondola_outofbounds_trigger_stop(); - } - else if ( e_gondola.location == "docks" ) - { - s_moveloc = getstruct( "gondola_struct_roof", "targetname" ); - e_gondola.destination = "roof"; - level thread gondola_outofbounds_trigger_enabled(); - } + if ( e_gondola.location == "roof" ) + { + s_moveloc = getstruct( "gondola_struct_docks", "targetname" ); + e_gondola.destination = "docks"; + level thread gondola_outofbounds_trigger_stop(); + } + else if ( e_gondola.location == "docks" ) + { + s_moveloc = getstruct( "gondola_struct_roof", "targetname" ); + e_gondola.destination = "roof"; + level thread gondola_outofbounds_trigger_enabled(); + } - if ( flag( "gondola_initialized" ) ) - { - flag_set( "gondola_roof_to_dock" ); - flag_set( "gondola_dock_to_roof" ); - flag_set( "gondola_ride_zone_enabled" ); - } + if ( flag( "gondola_initialized" ) ) + { + flag_set( "gondola_roof_to_dock" ); + flag_set( "gondola_dock_to_roof" ); + 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" ); - foreach ( trigger in a_t_move ) - trigger sethintstring( "" ); + a_t_move = getentarray( "gondola_move_trigger", "targetname" ); + foreach ( trigger in a_t_move ) + trigger sethintstring( "" ); - a_t_call = getentarray( "gondola_call_trigger", "targetname" ); - foreach ( trigger in a_t_call ) - trigger sethintstring( &"ZM_PRISON_GONDOLA_ACTIVE" ); + a_t_call = getentarray( "gondola_call_trigger", "targetname" ); + foreach ( trigger in a_t_call ) + trigger sethintstring( &"ZM_PRISON_GONDOLA_ACTIVE" ); - if ( !( isdefined( b_suppress_doors_close ) && b_suppress_doors_close ) ) - e_gondola gondola_doors_move( e_gondola.location, -1 ); + if ( !( isdefined( b_suppress_doors_close ) && b_suppress_doors_close ) ) + 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 ); - a_players = getplayers(); + check_when_gondola_moves_if_groundent_is_undefined( e_gondola ); + a_players = getplayers(); - foreach ( player in a_players ) - { - if ( player is_player_on_gondola() ) - { - player setclientfieldtoplayer( "rumble_gondola", 1 ); - player thread check_for_death_on_gondola( e_gondola ); - player.is_on_gondola = 1; - level thread maps\mp\zombies\_zm_audio::sndmusicstingerevent( "gondola", player ); - } + foreach ( player in a_players ) + { + if ( player is_player_on_gondola() ) + { + player setclientfieldtoplayer( "rumble_gondola", 1 ); + player thread check_for_death_on_gondola( e_gondola ); + player.is_on_gondola = 1; + level thread maps\mp\zombies\_zm_audio::sndmusicstingerevent( "gondola", player ); + } - if ( isdefined( player.e_afterlife_corpse ) && player.e_afterlife_corpse istouching( t_ride ) ) - player.e_afterlife_corpse thread link_corpses_to_gondola( e_gondola ); - } + if ( isdefined( player.e_afterlife_corpse ) && player.e_afterlife_corpse istouching( t_ride ) ) + player.e_afterlife_corpse thread link_corpses_to_gondola( e_gondola ); + } - e_gondola thread create_gondola_poi(); - level thread gondola_moving_vo(); - e_gondola thread gondola_physics_explosion( 10 ); - e_gondola moveto( s_moveloc.origin, 10, 1, 1 ); - flag_set( "gondola_in_motion" ); - e_gondola thread gondola_chain_fx_anim(); - e_gondola playsound( "zmb_gondola_start" ); - e_gondola playloopsound( "zmb_gondola_loop", 1 ); + e_gondola thread create_gondola_poi(); + level thread gondola_moving_vo(); + e_gondola thread gondola_physics_explosion( 10 ); + e_gondola moveto( s_moveloc.origin, 10, 1, 1 ); + flag_set( "gondola_in_motion" ); + e_gondola thread gondola_chain_fx_anim(); + e_gondola playsound( "zmb_gondola_start" ); + e_gondola playloopsound( "zmb_gondola_loop", 1 ); - e_gondola waittill( "movedone" ); + e_gondola waittill( "movedone" ); - flag_clear( "gondola_in_motion" ); - e_gondola stoploopsound( 0.5 ); - e_gondola thread sndcooldown(); - e_gondola playsound( "zmb_gondola_stop" ); - player_escaped_gondola_failsafe(); - a_players = getplayers(); + flag_clear( "gondola_in_motion" ); + e_gondola stoploopsound( 0.5 ); + e_gondola thread sndcooldown(); + e_gondola playsound( "zmb_gondola_stop" ); + player_escaped_gondola_failsafe(); + a_players = getplayers(); - foreach ( player in a_players ) - { - if ( isdefined( player.is_on_gondola ) && player.is_on_gondola ) - { - player setclientfieldtoplayer( "rumble_gondola", 0 ); - player.is_on_gondola = 0; - } - } + foreach ( player in a_players ) + { + if ( isdefined( player.is_on_gondola ) && player.is_on_gondola ) + { + player setclientfieldtoplayer( "rumble_gondola", 0 ); + player.is_on_gondola = 0; + } + } - e_gondola gondola_doors_move( e_gondola.destination, 1 ); - e_gondola.is_moving = 0; - e_gondola thread tear_down_gondola_poi(); - wait 1.0; - level clientnotify( "sndGE" ); + e_gondola gondola_doors_move( e_gondola.destination, 1 ); + e_gondola.is_moving = 0; + e_gondola thread tear_down_gondola_poi(); + wait 1.0; + level clientnotify( "sndGE" ); - if ( e_gondola.location == "roof" ) - { - e_gondola.location = "docks"; - str_zone = "zone_dock_gondola"; - } - else if ( e_gondola.location == "docks" ) - { - e_gondola.location = "roof"; - str_zone = "zone_cellblock_west_gondola_dock"; - } + if ( e_gondola.location == "roof" ) + { + e_gondola.location = "docks"; + str_zone = "zone_dock_gondola"; + } + else if ( e_gondola.location == "docks" ) + { + e_gondola.location = "roof"; + str_zone = "zone_cellblock_west_gondola_dock"; + } - level notify( "gondola_arrived", str_zone ); - gondola_cooldown(); - flag_set( "gondola_at_" + e_gondola.location ); + level notify( "gondola_arrived", str_zone ); + gondola_cooldown(); + flag_set( "gondola_at_" + e_gondola.location ); } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_alcatraz_utility.gsc b/scripts/zm/replaced/zm_alcatraz_utility.gsc index 6fb5b147..ac048dc1 100644 --- a/scripts/zm/replaced/zm_alcatraz_utility.gsc +++ b/scripts/zm/replaced/zm_alcatraz_utility.gsc @@ -8,173 +8,173 @@ blundergat_upgrade_station() { - t_upgrade = getent( "blundergat_upgrade", "targetname" ); - t_upgrade.equipname = "packasplat"; - 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 usetriggerrequirelookat(); - waittill_crafted( "packasplat" ); - m_converter = t_upgrade.m_upgrade_machine; - 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_angles_offset = ( 0, 90, -90 ); - 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 useanimtree( #animtree ); - m_converter.fxanims["close"] = %fxanim_zom_al_packasplat_start_anim; - m_converter.fxanims["inject"] = %fxanim_zom_al_packasplat_idle_anim; - m_converter.fxanims["open"] = %fxanim_zom_al_packasplat_end_anim; - m_converter.n_start_time = getanimlength( m_converter.fxanims["close"] ); - m_converter.n_idle_time = getanimlength( m_converter.fxanims["inject"] ); - m_converter.n_end_time = getanimlength( m_converter.fxanims["open"] ); + t_upgrade = getent( "blundergat_upgrade", "targetname" ); + t_upgrade.equipname = "packasplat"; + 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 usetriggerrequirelookat(); + waittill_crafted( "packasplat" ); + m_converter = t_upgrade.m_upgrade_machine; + 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_angles_offset = ( 0, 90, -90 ); + 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 useanimtree( #animtree ); + m_converter.fxanims["close"] = %fxanim_zom_al_packasplat_start_anim; + m_converter.fxanims["inject"] = %fxanim_zom_al_packasplat_idle_anim; + m_converter.fxanims["open"] = %fxanim_zom_al_packasplat_end_anim; + m_converter.n_start_time = getanimlength( m_converter.fxanims["close"] ); + m_converter.n_idle_time = getanimlength( m_converter.fxanims["inject"] ); + m_converter.n_end_time = getanimlength( m_converter.fxanims["open"] ); - while ( true ) - { - t_upgrade thread blundergat_change_hintstring( &"ZM_PRISON_CONVERT_START", " [Cost: " + t_upgrade.cost + "]" ); + while ( true ) + { + 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 ) ) - { - valid = t_upgrade [[ level.custom_craftable_validation ]]( player ); + if ( isdefined( level.custom_craftable_validation ) ) + { + valid = t_upgrade [[ level.custom_craftable_validation ]]( player ); - if ( !valid ) - continue; - } + if ( !valid ) + continue; + } - if (player.score < t_upgrade.cost) - { - self play_sound_on_ent( "no_purchase" ); - player maps\mp\zombies\_zm_audio::create_and_play_dialog( "general", "no_money_weapon" ); - continue; - } + if (player.score < t_upgrade.cost) + { + self play_sound_on_ent( "no_purchase" ); + player maps\mp\zombies\_zm_audio::create_and_play_dialog( "general", "no_money_weapon" ); + continue; + } - str_valid_weapon = player getcurrentweapon(); - 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 ); + str_valid_weapon = player getcurrentweapon(); + 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 ); t_upgrade play_sound_on_ent( "purchase" ); - player thread maps\mp\zombies\_zm_perks::do_knuckle_crack(); - player.is_pack_splatting = 1; - 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 blundergat_upgrade_station_inject( str_valid_weapon ); - t_upgrade thread blundergat_change_hintstring( &"ZM_PRISON_CONVERT_PICKUP" ); + player thread maps\mp\zombies\_zm_perks::do_knuckle_crack(); + player.is_pack_splatting = 1; + 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 blundergat_upgrade_station_inject( str_valid_weapon ); + t_upgrade thread blundergat_change_hintstring( &"ZM_PRISON_CONVERT_PICKUP" ); - if ( isdefined( player ) ) - { - t_upgrade setvisibletoplayer( player ); - t_upgrade thread wait_for_player_to_take( player, str_valid_weapon ); - } + if ( isdefined( player ) ) + { + t_upgrade setvisibletoplayer( player ); + t_upgrade thread wait_for_player_to_take( player, str_valid_weapon ); + } - t_upgrade thread wait_for_timeout(); - t_upgrade waittill_any( "acid_timeout", "acid_taken" ); + t_upgrade thread wait_for_timeout(); + t_upgrade waittill_any( "acid_timeout", "acid_taken" ); - t_upgrade setinvisibletoall(); + t_upgrade setinvisibletoall(); - if ( isdefined( player ) ) - player.is_pack_splatting = undefined; + if ( isdefined( player ) ) + player.is_pack_splatting = undefined; - m_converter.worldgun delete(); - wait 0.5; - t_upgrade setvisibletoall(); - } - else - { - t_upgrade thread blundergat_change_hintstring( &"ZM_PRISON_MISSING_BLUNDERGAT" ); - wait 2; - } - } + m_converter.worldgun delete(); + wait 0.5; + t_upgrade setvisibletoall(); + } + else + { + t_upgrade thread blundergat_change_hintstring( &"ZM_PRISON_MISSING_BLUNDERGAT" ); + wait 2; + } + } } blundergat_change_hintstring( hint_string, hint_string_cost ) { - self notify( "new_change_hint_string" ); - self endon( "new_change_hint_string" ); + self notify( "new_change_hint_string" ); + self endon( "new_change_hint_string" ); - while ( isdefined( self.is_locked ) && self.is_locked ) - wait 0.05; + while ( isdefined( self.is_locked ) && self.is_locked ) + wait 0.05; - if (isDefined(hint_string_cost)) - { - self sethintstring( hint_string, hint_string_cost ); - } - else - { - self sethintstring( hint_string ); - } + if (isDefined(hint_string_cost)) + { + self sethintstring( hint_string, hint_string_cost ); + } + else + { + self sethintstring( hint_string ); + } - wait 0.05; + wait 0.05; - if (isDefined(hint_string_cost)) - { - self sethintstring( hint_string, hint_string_cost ); - } - else - { - self sethintstring( hint_string ); - } + if (isDefined(hint_string_cost)) + { + self sethintstring( hint_string, hint_string_cost ); + } + else + { + self sethintstring( hint_string ); + } } wait_for_player_to_take( player, str_valid_weapon ) { - self endon( "acid_timeout" ); - player endon( "disconnect" ); + self endon( "acid_timeout" ); + player endon( "disconnect" ); - while ( true ) - { - self waittill( "trigger", trigger_player ); + while ( true ) + { + self waittill( "trigger", trigger_player ); - if ( isdefined( level.custom_craftable_validation ) ) - { - valid = self [[ level.custom_craftable_validation ]]( player ); + if ( isdefined( level.custom_craftable_validation ) ) + { + valid = self [[ level.custom_craftable_validation ]]( player ); - if ( !valid ) - continue; - } + if ( !valid ) + continue; + } - if ( trigger_player == player ) - { - current_weapon = player getcurrentweapon(); + if ( trigger_player == player ) + { + 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() ) - { - self notify( "acid_taken" ); - player notify( "acid_taken" ); - weapon_limit = get_player_weapon_limit( player ); - primaries = player getweaponslistprimaries(); + 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" ); + player notify( "acid_taken" ); + weapon_limit = get_player_weapon_limit( player ); + primaries = player getweaponslistprimaries(); - if ( isdefined( primaries ) && primaries.size >= weapon_limit ) - player takeweapon( current_weapon ); + if ( isdefined( primaries ) && primaries.size >= weapon_limit ) + player takeweapon( current_weapon ); - str_new_weapon = undefined; + str_new_weapon = undefined; - if ( str_valid_weapon == "blundergat_zm" ) - str_new_weapon = "blundersplat_zm"; - else - str_new_weapon = "blundersplat_upgraded_zm"; + if ( str_valid_weapon == "blundergat_zm" ) + str_new_weapon = "blundersplat_zm"; + else + str_new_weapon = "blundersplat_upgraded_zm"; - if ( player hasweapon( "blundersplat_zm" ) ) - player givemaxammo( "blundersplat_zm" ); - else if ( player hasweapon( "blundersplat_upgraded_zm" ) ) - player givemaxammo( "blundersplat_upgraded_zm" ); - else - { - player giveweapon( str_new_weapon ); - player switchtoweapon( str_new_weapon ); - } + if ( player hasweapon( "blundersplat_zm" ) ) + player givemaxammo( "blundersplat_zm" ); + else if ( player hasweapon( "blundersplat_upgraded_zm" ) ) + player givemaxammo( "blundersplat_upgraded_zm" ); + else + { + player giveweapon( str_new_weapon ); + player switchtoweapon( str_new_weapon ); + } - player thread do_player_general_vox( "general", "player_recieves_blundersplat" ); - player notify( "player_obtained_acidgat" ); - player thread player_lost_blundersplat_watcher(); - return; - } - } - } + player thread do_player_general_vox( "general", "player_recieves_blundersplat" ); + player notify( "player_obtained_acidgat" ); + player thread player_lost_blundersplat_watcher(); + return; + } + } + } } check_solo_status() { - level.is_forever_solo_game = 0; + level.is_forever_solo_game = 0; } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_alcatraz_weap_quest.gsc b/scripts/zm/replaced/zm_alcatraz_weap_quest.gsc index 2552bd61..14a08329 100644 --- a/scripts/zm/replaced/zm_alcatraz_weap_quest.gsc +++ b/scripts/zm/replaced/zm_alcatraz_weap_quest.gsc @@ -7,101 +7,101 @@ grief_soul_catcher_state_manager() { - wait 1; + wait 1; - if (is_true(level.scr_zm_ui_gametype_pro)) + if (is_true(level.scr_zm_ui_gametype_pro)) { - for (i = 0; i < level.soul_catchers.size; i++) - { - level.soul_catchers[i].is_charged = 1; - } + for (i = 0; i < level.soul_catchers.size; i++) + { + level.soul_catchers[i].is_charged = 1; + } - return; - } + return; + } - while ( true ) - { - level setclientfield( self.script_parameters, 0 ); + while ( true ) + { + 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] ) ) - level.soul_catcher_clip[self.script_noteworthy] setvisibletoall(); + if ( isdefined( level.soul_catcher_clip[self.script_noteworthy] ) ) + level.soul_catcher_clip[self.script_noteworthy] setvisibletoall(); - level setclientfield( self.script_parameters, 1 ); - anim_length = getanimlength( %o_zombie_dreamcatcher_intro ); - wait( anim_length ); + level setclientfield( self.script_parameters, 1 ); + anim_length = getanimlength( %o_zombie_dreamcatcher_intro ); + wait( anim_length ); - while ( !self.is_charged ) - { - level setclientfield( self.script_parameters, 2 ); - self waittill_either( "fully_charged", "finished_eating" ); - } + while ( !self.is_charged ) + { + level setclientfield( self.script_parameters, 2 ); + self waittill_either( "fully_charged", "finished_eating" ); + } - level setclientfield( self.script_parameters, 6 ); - anim_length = getanimlength( %o_zombie_dreamcatcher_outtro ); - wait( anim_length ); + level setclientfield( self.script_parameters, 6 ); + anim_length = getanimlength( %o_zombie_dreamcatcher_outtro ); + wait( anim_length ); - if ( isdefined( level.soul_catcher_clip[self.script_noteworthy] ) ) - level.soul_catcher_clip[self.script_noteworthy] delete(); + if ( isdefined( level.soul_catcher_clip[self.script_noteworthy] ) ) + level.soul_catcher_clip[self.script_noteworthy] delete(); - self.souls_received = 0; - level thread wolf_spit_out_powerup(); - wait 20; - self thread soul_catcher_check(); - } + self.souls_received = 0; + level thread wolf_spit_out_powerup(); + wait 20; + self thread soul_catcher_check(); + } } wolf_spit_out_powerup() { - if ( !( isdefined( level.enable_magic ) && level.enable_magic ) ) - return; + if ( !( isdefined( level.enable_magic ) && level.enable_magic ) ) + 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 ) - { - for ( i = 0; i < level.zombie_powerup_array.size; i++ ) - { - if ( level.zombie_powerup_array[i] == "meat_stink" ) - { - level.zombie_powerup_index = i; - found = 1; - break; - } - } - } - else - { - while ( true ) - { - level.zombie_powerup_index = randomint( level.zombie_powerup_array.size ); + if ( level.scr_zm_ui_gametype_obj != "zmeat" && randomint( 100 ) < 20 ) + { + for ( i = 0; i < level.zombie_powerup_array.size; i++ ) + { + if ( level.zombie_powerup_array[i] == "meat_stink" ) + { + level.zombie_powerup_index = i; + found = 1; + break; + } + } + } + else + { + while ( true ) + { + level.zombie_powerup_index = randomint( level.zombie_powerup_array.size ); - if ( level.zombie_powerup_array[level.zombie_powerup_index] == "nuke" ) - { - wait 0.05; - continue; - } + if ( level.zombie_powerup_array[level.zombie_powerup_index] == "nuke" ) + { + wait 0.05; + continue; + } - if ( level.scr_zm_ui_gametype_obj == "zmeat" && level.zombie_powerup_array[level.zombie_powerup_index] == "meat_stink" ) - { - wait 0.05; - continue; - } + if ( level.scr_zm_ui_gametype_obj == "zmeat" && level.zombie_powerup_array[level.zombie_powerup_index] == "meat_stink" ) + { + wait 0.05; + continue; + } - break; - } - } + break; + } + } - if (getDvar("ui_zm_mapstartlocation_fake") == "docks") - { - power_origin_struct = spawnStruct(); - power_origin_struct.origin = ( 41.4695, 6096.17, -102.9326 ); - } + if (getDvar("ui_zm_mapstartlocation_fake") == "docks") + { + power_origin_struct = spawnStruct(); + 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] ); - power_ups = get_array_of_closest( power_origin_struct.origin, level.active_powerups, undefined, undefined, 100 ); + 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 ); - if ( isdefined( power_ups[0] ) ) - power_ups[0] movez( 120, 4 ); + if ( isdefined( power_ups[0] ) ) + power_ups[0] movez( 120, 4 ); } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_buried_buildables.gsc b/scripts/zm/replaced/zm_buried_buildables.gsc index ea1ddaa0..28287e41 100644 --- a/scripts/zm/replaced/zm_buried_buildables.gsc +++ b/scripts/zm/replaced/zm_buried_buildables.gsc @@ -16,16 +16,16 @@ watch_cell_open_close( door ) { - level.cell_open = 0; + level.cell_open = 0; - while ( true ) - { - level waittill( "cell_open" ); + while ( true ) + { + 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; + } } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_buried_distance_tracking.gsc b/scripts/zm/replaced/zm_buried_distance_tracking.gsc index c915d1b7..701bdb9b 100644 --- a/scripts/zm/replaced/zm_buried_distance_tracking.gsc +++ b/scripts/zm/replaced/zm_buried_distance_tracking.gsc @@ -8,92 +8,92 @@ delete_zombie_noone_looking( how_close, how_high ) { - self endon( "death" ); + self endon( "death" ); - if ( self can_be_deleted_from_buried_special_zones() ) - { - self.inview = 0; - self.player_close = 0; - } - else - { - if ( !isdefined( how_close ) ) - how_close = 1000; + if ( self can_be_deleted_from_buried_special_zones() ) + { + self.inview = 0; + self.player_close = 0; + } + else + { + if ( !isdefined( how_close ) ) + how_close = 1000; - if ( !isdefined( how_high ) ) - how_high = 500; + if ( !isdefined( how_high ) ) + how_high = 500; - if ( !( isdefined( self.has_legs ) && self.has_legs ) ) - how_close *= 1.5; + if ( !( isdefined( self.has_legs ) && self.has_legs ) ) + how_close *= 1.5; - distance_squared_check = how_close * how_close; - height_squared_check = how_high * how_high; - too_far_dist = distance_squared_check * 3; + distance_squared_check = how_close * how_close; + height_squared_check = how_high * how_high; + too_far_dist = distance_squared_check * 3; - if ( isdefined( level.zombie_tracking_too_far_dist ) ) - too_far_dist = level.zombie_tracking_too_far_dist * 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; - self.inview = 0; - self.player_close = 0; - players = get_players(); + self.inview = 0; + self.player_close = 0; + players = get_players(); - foreach ( player in players ) - { - if ( player.sessionstate == "spectator" ) - continue; + foreach ( player in players ) + { + if ( player.sessionstate == "spectator" ) + continue; - if ( isdefined( player.laststand ) && player.laststand && ( isdefined( self.favoriteenemy ) && self.favoriteenemy == player ) ) - { - if ( !self can_zombie_see_any_player() ) - { - self.favoriteenemy = undefined; - self.zombie_path_bad = 1; - self thread escaped_zombies_cleanup(); - } - } + if ( isdefined( player.laststand ) && player.laststand && ( isdefined( self.favoriteenemy ) && self.favoriteenemy == player ) ) + { + if ( !self can_zombie_see_any_player() ) + { + self.favoriteenemy = undefined; + self.zombie_path_bad = 1; + self thread escaped_zombies_cleanup(); + } + } - if ( isdefined( level.only_track_targeted_players ) ) - { - if ( !isdefined( self.favoriteenemy ) || self.favoriteenemy != player ) - continue; - } + if ( isdefined( level.only_track_targeted_players ) ) + { + if ( !isdefined( self.favoriteenemy ) || self.favoriteenemy != player ) + continue; + } - can_be_seen = self player_can_see_me( player ); - distance_squared = distancesquared( self.origin, player.origin ); + can_be_seen = self player_can_see_me( player ); + distance_squared = distancesquared( self.origin, player.origin ); - if ( can_be_seen && distance_squared < too_far_dist ) - self.inview++; + if ( can_be_seen && distance_squared < too_far_dist ) + self.inview++; - if ( distance_squared < distance_squared_check && abs( self.origin[2] - player.origin[2] ) < how_high ) - self.player_close++; - } - } + if ( distance_squared < distance_squared_check && abs( self.origin[2] - player.origin[2] ) < how_high ) + self.player_close++; + } + } - wait 0.1; + wait 0.1; - if ( self.inview == 0 && self.player_close == 0 ) - { - if ( !isdefined( self.animname ) || isdefined( self.animname ) && self.animname != "zombie" ) - return; + if ( self.inview == 0 && self.player_close == 0 ) + { + if ( !isdefined( self.animname ) || isdefined( self.animname ) && self.animname != "zombie" ) + return; - if ( isdefined( self.electrified ) && self.electrified == 1 ) - return; + if ( isdefined( self.electrified ) && self.electrified == 1 ) + return; - if ( !( isdefined( self.exclude_distance_cleanup_adding_to_total ) && self.exclude_distance_cleanup_adding_to_total ) && !( isdefined( self.isscreecher ) && self.isscreecher ) ) - { - level.zombie_total++; + if ( !( isdefined( self.exclude_distance_cleanup_adding_to_total ) && self.exclude_distance_cleanup_adding_to_total ) && !( isdefined( self.isscreecher ) && self.isscreecher ) ) + { + level.zombie_total++; - if ( self.health < level.zombie_health ) - level.zombie_respawned_health[level.zombie_respawned_health.size] = self.health; - } + if ( self.health < level.zombie_health ) + level.zombie_respawned_health[level.zombie_respawned_health.size] = self.health; + } - self maps\mp\zombies\_zm_spawner::reset_attack_spot(); - self notify( "zombie_delete" ); + self maps\mp\zombies\_zm_spawner::reset_attack_spot(); + self notify( "zombie_delete" ); - if ( isdefined( self.anchor ) ) - self.anchor delete(); + if ( isdefined( self.anchor ) ) + self.anchor delete(); - self delete(); - recalc_zombie_array(); - } + self delete(); + recalc_zombie_array(); + } } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_buried_ffotd.gsc b/scripts/zm/replaced/zm_buried_ffotd.gsc index e839a98e..a1f24d03 100644 --- a/scripts/zm/replaced/zm_buried_ffotd.gsc +++ b/scripts/zm/replaced/zm_buried_ffotd.gsc @@ -9,43 +9,43 @@ jail_traversal_fix() { - self endon( "death" ); - window_pos = ( -837, 496, 8 ); - fix_dist = 64; + self endon( "death" ); + window_pos = ( -837, 496, 8 ); + fix_dist = 64; - while ( true ) - { - dist = distancesquared( self.origin, window_pos ); + while ( true ) + { + dist = distancesquared( self.origin, window_pos ); - if ( dist < fix_dist ) - { - node = self getnegotiationstartnode(); + if ( dist < fix_dist ) + { + node = self getnegotiationstartnode(); - if ( isdefined( node ) ) - { - if ( node.animscript == "zm_jump_down_48" && node.type == "Begin" ) - { - self setphysparams( 25, 0, 60 ); - wait 1; + if ( isdefined( node ) ) + { + if ( node.animscript == "zm_jump_down_48" && node.type == "Begin" ) + { + self setphysparams( 25, 0, 60 ); + wait 1; - if ( is_true( self.has_legs ) ) - self setphysparams( 15, 0, 60 ); - else - self setphysparams( 15, 0, 24 ); - } - } - } + if ( is_true( self.has_legs ) ) + self setphysparams( 15, 0, 60 ); + else + self setphysparams( 15, 0, 24 ); + } + } + } - wait 0.25; - } + wait 0.25; + } } time_bomb_takeaway() { - // remove + // remove } spawned_life_triggers() { - // remove + // remove } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_buried_fountain.gsc b/scripts/zm/replaced/zm_buried_fountain.gsc index 6bad3361..2bbc6640 100644 --- a/scripts/zm/replaced/zm_buried_fountain.gsc +++ b/scripts/zm/replaced/zm_buried_fountain.gsc @@ -8,55 +8,55 @@ transport_player_to_start_zone() { - self endon( "death_or_disconnect" ); - fountain_debug_print( "transport player!" ); + self endon( "death_or_disconnect" ); + fountain_debug_print( "transport player!" ); - if ( !isdefined( level._fountain_transporter ) ) - { - level._fountain_transporter = spawnstruct(); - level._fountain_transporter.index = 0; - level._fountain_transporter.end_points = getstructarray( "fountain_transport_end_location", "targetname" ); - } + if ( !isdefined( level._fountain_transporter ) ) + { + level._fountain_transporter = spawnstruct(); + level._fountain_transporter.index = 0; + level._fountain_transporter.end_points = getstructarray( "fountain_transport_end_location", "targetname" ); + } - self playsoundtoplayer( "zmb_buried_teleport", self ); - self play_teleport_fx(); - self flash_screen_white(); - wait_network_frame(); + self playsoundtoplayer( "zmb_buried_teleport", self ); + self play_teleport_fx(); + self flash_screen_white(); + wait_network_frame(); - if ( level._fountain_transporter.index >= level._fountain_transporter.end_points.size ) - level._fountain_transporter.index = 0; + if ( level._fountain_transporter.index >= level._fountain_transporter.end_points.size ) + level._fountain_transporter.index = 0; - tries = 0; + tries = 0; - while ( positionwouldtelefrag( level._fountain_transporter.end_points[level._fountain_transporter.index].origin ) ) - { - tries++; + while ( positionwouldtelefrag( level._fountain_transporter.end_points[level._fountain_transporter.index].origin ) ) + { + tries++; - if ( tries >= 4 ) - { - tries = 0; - wait 0.05; - } + if ( tries >= 4 ) + { + tries = 0; + wait 0.05; + } - level._fountain_transporter.index++; + level._fountain_transporter.index++; - if ( level._fountain_transporter.index >= level._fountain_transporter.end_points.size ) - level._fountain_transporter.index = 0; - } + if ( level._fountain_transporter.index >= level._fountain_transporter.end_points.size ) + level._fountain_transporter.index = 0; + } - 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 setvelocity( ( 0, 0, 0 ) ); - level._fountain_transporter.index++; - wait_network_frame(); - self play_teleport_fx(); - self thread flash_screen_fade_out(); - 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 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 notify( "player_used_fountain_teleporter" ); - wait_network_frame(); - wait_network_frame(); - self.is_in_fountain_transport_trigger = 0; + 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 setvelocity( ( 0, 0, 0 ) ); + level._fountain_transporter.index++; + wait_network_frame(); + self play_teleport_fx(); + self thread flash_screen_fade_out(); + 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 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 notify( "player_used_fountain_teleporter" ); + wait_network_frame(); + wait_network_frame(); + self.is_in_fountain_transport_trigger = 0; } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_buried_gamemodes.gsc b/scripts/zm/replaced/zm_buried_gamemodes.gsc index 0cbc05c0..c5838169 100644 --- a/scripts/zm/replaced/zm_buried_gamemodes.gsc +++ b/scripts/zm/replaced/zm_buried_gamemodes.gsc @@ -18,46 +18,46 @@ init() { - 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( "zgrief", maps\mp\zm_buried::zgrief_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( "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 ) { - player = get_players()[0]; + player = get_players()[0]; - foreach ( stub in level.buildable_stubs ) - { - if ( !isdefined( buildable ) || stub.equipname == buildable ) - { - if ( isdefined( buildable ) || stub.persistent != 3 ) - { - stub maps\mp\zombies\_zm_buildables::buildablestub_remove(); + foreach ( stub in level.buildable_stubs ) + { + if ( !isdefined( buildable ) || stub.equipname == buildable ) + { + if ( isdefined( buildable ) || stub.persistent != 3 ) + { + stub maps\mp\zombies\_zm_buildables::buildablestub_remove(); - foreach ( piece in stub.buildablezone.pieces ) - { - piece maps\mp\zombies\_zm_buildables::piece_unspawn(); - } + foreach ( piece in stub.buildablezone.pieces ) + { + 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 show(); + stub.model notsolid(); + stub.model show(); - return; - } - } - } + return; + } + } + } } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_buried_grief_street.gsc b/scripts/zm/replaced/zm_buried_grief_street.gsc index f60dba99..7c5c6c11 100644 --- a/scripts/zm/replaced/zm_buried_grief_street.gsc +++ b/scripts/zm/replaced/zm_buried_grief_street.gsc @@ -46,7 +46,7 @@ precache() 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_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() @@ -119,7 +119,7 @@ builddynamicwallbuys() builddynamicwallbuy( "church", "svu_zm" ); builddynamicwallbuy( "mansion", "an94_zm" ); - level notify("dynamicwallbuysbuilt"); + level notify("dynamicwallbuysbuilt"); } builddynamicwallbuy( location, weaponname ) diff --git a/scripts/zm/replaced/zm_buried_power.gsc b/scripts/zm/replaced/zm_buried_power.gsc index 1be57855..cdc37d42 100644 --- a/scripts/zm/replaced/zm_buried_power.gsc +++ b/scripts/zm/replaced/zm_buried_power.gsc @@ -7,23 +7,23 @@ electric_switch() { - trig = getent( "use_elec_switch", "targetname" ); - master_switch = getent( "elec_switch", "targetname" ); - master_switch notsolid(); - trig sethintstring( &"ZOMBIE_ELECTRIC_SWITCH" ); - trig setvisibletoall(); + trig = getent( "use_elec_switch", "targetname" ); + master_switch = getent( "elec_switch", "targetname" ); + master_switch notsolid(); + trig sethintstring( &"ZOMBIE_ELECTRIC_SWITCH" ); + trig setvisibletoall(); - trig setinvisibletoall(); - master_switch rotateroll( -90, 0.3 ); - master_switch playsound( "zmb_switch_flip" ); - master_switch playsound( "zmb_poweron" ); - level delay_thread( 11.8, ::sndpoweronmusicstinger ); + trig setinvisibletoall(); + master_switch rotateroll( -90, 0.3 ); + master_switch playsound( "zmb_switch_flip" ); + master_switch playsound( "zmb_poweron" ); + level delay_thread( 11.8, ::sndpoweronmusicstinger ); - master_switch waittill( "rotatedone" ); + master_switch waittill( "rotatedone" ); - master_switch playsound( "zmb_turn_on" ); - level notify( "electric_door" ); - clientnotify( "power_on" ); - flag_set( "power_on" ); - level setclientfield( "zombie_power_on", 1 ); + master_switch playsound( "zmb_turn_on" ); + level notify( "electric_door" ); + clientnotify( "power_on" ); + flag_set( "power_on" ); + level setclientfield( "zombie_power_on", 1 ); } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_buried_sq.gsc b/scripts/zm/replaced/zm_buried_sq.gsc index 06d4b343..be1e9f43 100644 --- a/scripts/zm/replaced/zm_buried_sq.gsc +++ b/scripts/zm/replaced/zm_buried_sq.gsc @@ -27,113 +27,113 @@ 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 ) ) - level waittill( "buried_sidequest_achieved" ); + if ( !is_true( level.buried_sq_maxis_complete ) && !is_true( level.buried_sq_richtofen_complete ) ) + level waittill( "buried_sidequest_achieved" ); - m_endgame_machine = getstruct( "sq_endgame_machine", "targetname" ); - a_stat = []; - a_stat[0] = "sq_transit_last_completed"; - a_stat[1] = "sq_highrise_last_completed"; - a_stat[2] = "sq_buried_last_completed"; - level.n_metagame_machine_lights_on = 0; - flag_wait( "start_zombie_round_logic" ); - sq_metagame_clear_lights(); - players = get_players(); - player_count = players.size; + m_endgame_machine = getstruct( "sq_endgame_machine", "targetname" ); + a_stat = []; + a_stat[0] = "sq_transit_last_completed"; + a_stat[1] = "sq_highrise_last_completed"; + a_stat[2] = "sq_buried_last_completed"; + level.n_metagame_machine_lights_on = 0; + flag_wait( "start_zombie_round_logic" ); + sq_metagame_clear_lights(); + players = get_players(); + player_count = players.size; - for ( n_player = 0; n_player < player_count; n_player++ ) - { - for ( n_stat = 0; n_stat < a_stat.size; n_stat++ ) - { - if ( flag( "sq_is_max_tower_built" ) ) - { - m_endgame_machine sq_metagame_machine_set_light( n_player, n_stat, "sq_bulb_orange" ); - } - else - { - m_endgame_machine sq_metagame_machine_set_light( n_player, n_stat, "sq_bulb_blue" ); - } + for ( n_player = 0; n_player < player_count; n_player++ ) + { + for ( n_stat = 0; n_stat < a_stat.size; n_stat++ ) + { + if ( flag( "sq_is_max_tower_built" ) ) + { + m_endgame_machine sq_metagame_machine_set_light( n_player, n_stat, "sq_bulb_orange" ); + } + else + { + 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 = undefined; - 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 setcursorhint( "HINT_NOICON" ); - m_endgame_machine.endgame_trig sethintstring( &"ZM_BURIED_SQ_EGM_BUT" ); - m_endgame_machine.endgame_trig triggerignoreteam(); - m_endgame_machine.endgame_trig usetriggerrequirelookat(); + m_endgame_machine.activate_trig delete(); + m_endgame_machine.activate_trig = undefined; + 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 setcursorhint( "HINT_NOICON" ); + m_endgame_machine.endgame_trig sethintstring( &"ZM_BURIED_SQ_EGM_BUT" ); + m_endgame_machine.endgame_trig triggerignoreteam(); + 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 = undefined; - level thread sq_metagame_clear_tower_pieces(); - playsoundatposition( "zmb_endgame_mach_button", m_endgame_machine.origin ); - players = get_players(); + m_endgame_machine.endgame_trig delete(); + m_endgame_machine.endgame_trig = undefined; + level thread sq_metagame_clear_tower_pieces(); + playsoundatposition( "zmb_endgame_mach_button", m_endgame_machine.origin ); + players = get_players(); - sq_metagame_clear_lights(); + sq_metagame_clear_lights(); - if ( flag( "sq_is_max_tower_built" ) ) - level notify( "end_game_reward_starts_maxis" ); - else - level notify( "end_game_reward_starts_richtofen" ); + if ( flag( "sq_is_max_tower_built" ) ) + level notify( "end_game_reward_starts_maxis" ); + else + level notify( "end_game_reward_starts_richtofen" ); } make_richtofen_zombie() { - self endon( "death" ); - level.sq_richtofen_zombie.spawned = 1; - self setclientfield( "buried_sq_maxis_ending_update_eyeball_color", 1 ); - self thread richtofen_zombie_watch_death(); + self endon( "death" ); + level.sq_richtofen_zombie.spawned = 1; + self setclientfield( "buried_sq_maxis_ending_update_eyeball_color", 1 ); + 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.deathfunction_old = self.deathfunction; - self.deathfunction = ::richtofen_zombie_deathfunction_override; + self thread richtofen_zombie_vo_watcher(); + self.deathfunction_old = self.deathfunction; + self.deathfunction = ::richtofen_zombie_deathfunction_override; } richtofen_zombie_deathfunction_override() { - if ( isdefined( self.attacker ) && isplayer( self.attacker ) ) - { - if ( !( isdefined( self.turning_into_ghost ) && self.turning_into_ghost ) ) - { - self force_random_powerup_drop(); + if ( isdefined( self.attacker ) && isplayer( self.attacker ) ) + { + if ( !( isdefined( self.turning_into_ghost ) && self.turning_into_ghost ) ) + { + 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 ); + } + } - return self [[ self.deathfunction_old ]](); + return self [[ self.deathfunction_old ]](); } sq_give_player_rewards() { - level thread scripts\zm\replaced\_zm_sq::sq_complete_time_hud(); + level thread scripts\zm\replaced\_zm_sq::sq_complete_time_hud(); - players = get_players(); + players = get_players(); - foreach ( player in players ) - { - if ( is_player_valid( player ) ) - { - player thread scripts\zm\replaced\_zm_sq::sq_give_player_all_perks(); - } - } + foreach ( player in players ) + { + if ( is_player_valid( player ) ) + { + player thread scripts\zm\replaced\_zm_sq::sq_give_player_all_perks(); + } + } } mule_kick_allows_4_weapons() { - level.additionalprimaryweapon_limit = 4; + level.additionalprimaryweapon_limit = 4; } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_buried_sq_bt.gsc b/scripts/zm/replaced/zm_buried_sq_bt.gsc index 7745bc28..05a47458 100644 --- a/scripts/zm/replaced/zm_buried_sq_bt.gsc +++ b/scripts/zm/replaced/zm_buried_sq_bt.gsc @@ -7,44 +7,44 @@ stage_vo_watch_gallows() { - level endon( "sq_bt_over" ); - level endon( "end_game_reward_starts_maxis" ); - level endon( "end_game_reward_starts_richtofen" ); - s_struct = getstruct( "sq_gallows", "targetname" ); - trigger = spawn( "trigger_radius", s_struct.origin, 0, 128, 72 ); + level endon( "sq_bt_over" ); + level endon( "end_game_reward_starts_maxis" ); + level endon( "end_game_reward_starts_richtofen" ); + s_struct = getstruct( "sq_gallows", "targetname" ); + trigger = spawn( "trigger_radius", s_struct.origin, 0, 128, 72 ); - trigger waittill( "trigger" ); + trigger waittill( "trigger" ); - trigger delete(); - m_maxis_vo_spot = spawn( "script_model", s_struct.origin ); - m_maxis_vo_spot setmodel( "tag_origin" ); + trigger delete(); + m_maxis_vo_spot = spawn( "script_model", s_struct.origin ); + m_maxis_vo_spot setmodel( "tag_origin" ); - if ( flag( "sq_intro_vo_done" ) ) - maxissay( "vox_maxi_sidequest_gallows_0", m_maxis_vo_spot ); + if ( flag( "sq_intro_vo_done" ) ) + maxissay( "vox_maxi_sidequest_gallows_0", m_maxis_vo_spot ); - level waittill( "mtower_object_planted" ); + level waittill( "mtower_object_planted" ); - if ( flag( "sq_intro_vo_done" ) ) - maxissay( "vox_maxi_sidequest_parts_3", m_maxis_vo_spot, 1 ); + if ( flag( "sq_intro_vo_done" ) ) + maxissay( "vox_maxi_sidequest_parts_3", m_maxis_vo_spot, 1 ); - m_maxis_vo_spot delete(); + m_maxis_vo_spot delete(); } stage_vo_watch_guillotine() { - level endon( "sq_bt_over" ); - level endon( "end_game_reward_starts_maxis" ); - level endon( "end_game_reward_starts_richtofen" ); - s_struct = getstruct( "sq_guillotine", "targetname" ); - trigger = spawn( "trigger_radius", s_struct.origin, 0, 128, 72 ); + level endon( "sq_bt_over" ); + level endon( "end_game_reward_starts_maxis" ); + level endon( "end_game_reward_starts_richtofen" ); + s_struct = getstruct( "sq_guillotine", "targetname" ); + trigger = spawn( "trigger_radius", s_struct.origin, 0, 128, 72 ); - trigger waittill( "trigger" ); + trigger waittill( "trigger" ); - trigger delete(); - richtofensay( "vox_zmba_sidequest_gallows_0", 9 ); - richtofensay( "vox_zmba_sidequest_gallows_1", 12 ); + trigger delete(); + richtofensay( "vox_zmba_sidequest_gallows_0", 9 ); + richtofensay( "vox_zmba_sidequest_gallows_1", 12 ); - level waittill( "rtower_object_planted" ); + level waittill( "rtower_object_planted" ); - richtofensay( "vox_zmba_sidequest_parts_3", 11 ); + richtofensay( "vox_zmba_sidequest_parts_3", 11 ); } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_buried_sq_ip.gsc b/scripts/zm/replaced/zm_buried_sq_ip.gsc index a03b78a3..9d8d5ea0 100644 --- a/scripts/zm/replaced/zm_buried_sq_ip.gsc +++ b/scripts/zm/replaced/zm_buried_sq_ip.gsc @@ -8,136 +8,136 @@ init() { - flag_init( "sq_ip_puzzle_complete" ); - level.sq_bp_buttons = []; - s_lightboard = getstruct( "zm_sq_lightboard", "targetname" ); - s_lightboard sq_bp_spawn_board(); - declare_sidequest_stage( "sq", "ip", ::init_stage, ::stage_logic, ::exit_stage ); + flag_init( "sq_ip_puzzle_complete" ); + level.sq_bp_buttons = []; + s_lightboard = getstruct( "zm_sq_lightboard", "targetname" ); + s_lightboard sq_bp_spawn_board(); + declare_sidequest_stage( "sq", "ip", ::init_stage, ::stage_logic, ::exit_stage ); } stage_logic() { - if ( flag( "sq_is_max_tower_built" ) ) - { - a_button_structs = getstructarray( "sq_bp_button", "targetname" ); - array_thread( a_button_structs, ::sq_bp_spawn_trigger ); - m_lightboard = getent( "sq_bp_board", "targetname" ); - m_lightboard setclientfield( "buried_sq_bp_set_lightboard", 1 ); + if ( flag( "sq_is_max_tower_built" ) ) + { + a_button_structs = getstructarray( "sq_bp_button", "targetname" ); + array_thread( a_button_structs, ::sq_bp_spawn_trigger ); + m_lightboard = getent( "sq_bp_board", "targetname" ); + m_lightboard setclientfield( "buried_sq_bp_set_lightboard", 1 ); - while ( !flag( "sq_ip_puzzle_complete" ) ) - { - sq_bp_start_puzzle_lights(); - sq_bp_delete_green_lights(); - wait_network_frame(); - wait_network_frame(); - wait_network_frame(); - wait_network_frame(); - wait_network_frame(); - } - } - else - { - sq_ml_spawn_levers(); - a_levers = getentarray( "sq_ml_lever", "targetname" ); - array_thread( a_levers, ::sq_ml_spawn_trigger ); - level thread sq_ml_puzzle_logic(); - flag_wait( "sq_ip_puzzle_complete" ); - } + while ( !flag( "sq_ip_puzzle_complete" ) ) + { + sq_bp_start_puzzle_lights(); + sq_bp_delete_green_lights(); + wait_network_frame(); + wait_network_frame(); + wait_network_frame(); + wait_network_frame(); + wait_network_frame(); + } + } + else + { + sq_ml_spawn_levers(); + a_levers = getentarray( "sq_ml_lever", "targetname" ); + array_thread( a_levers, ::sq_ml_spawn_trigger ); + level thread sq_ml_puzzle_logic(); + flag_wait( "sq_ip_puzzle_complete" ); + } - wait_network_frame(); - stage_completed( "sq", level._cur_stage_name ); + wait_network_frame(); + stage_completed( "sq", level._cur_stage_name ); } sq_bp_start_puzzle_lights() { - level endon( "sq_bp_wrong_button" ); - level endon( "sq_bp_timeout" ); - a_button_structs = getstructarray( "sq_bp_button", "targetname" ); - a_tags = []; + level endon( "sq_bp_wrong_button" ); + level endon( "sq_bp_timeout" ); + a_button_structs = getstructarray( "sq_bp_button", "targetname" ); + a_tags = []; - foreach ( m_button in a_button_structs ) - a_tags[a_tags.size] = m_button.script_string; + foreach ( m_button in a_button_structs ) + a_tags[a_tags.size] = m_button.script_string; - a_tags = array_randomize( a_tags ); - m_lightboard = getent( "sq_bp_board", "targetname" ); + a_tags = array_randomize( a_tags ); + m_lightboard = getent( "sq_bp_board", "targetname" ); - foreach ( str_tag in a_tags ) - { - level waittill( "sq_bp_correct_button" ); - } + foreach ( str_tag in a_tags ) + { + level waittill( "sq_bp_correct_button" ); + } - flag_set( "sq_ip_puzzle_complete" ); - a_button_structs = getstructarray( "sq_bp_button", "targetname" ); + flag_set( "sq_ip_puzzle_complete" ); + a_button_structs = getstructarray( "sq_bp_button", "targetname" ); - foreach ( s_button in a_button_structs ) - { - if ( isdefined( s_button.trig ) ) - s_button.trig delete(); - } + foreach ( s_button in a_button_structs ) + { + if ( isdefined( s_button.trig ) ) + s_button.trig delete(); + } } sq_bp_spawn_trigger() { - level endon( "sq_ip_puzzle_complete" ); - self.trig = spawn( "trigger_radius_use", self.origin, 0, 16, 16 ); - self.trig setcursorhint( "HINT_NOICON" ); - self.trig sethintstring( &"ZM_BURIED_SQ_BUT_U" ); - self.trig triggerignoreteam(); - self.trig usetriggerrequirelookat(); + level endon( "sq_ip_puzzle_complete" ); + self.trig = spawn( "trigger_radius_use", self.origin, 0, 16, 16 ); + self.trig setcursorhint( "HINT_NOICON" ); + self.trig sethintstring( &"ZM_BURIED_SQ_BUT_U" ); + self.trig triggerignoreteam(); + self.trig usetriggerrequirelookat(); - while ( true ) - { - self.trig waittill( "trigger" ); + while ( true ) + { + self.trig waittill( "trigger" ); - self.trig sethintstring( "" ); - level thread sq_bp_button_pressed( self.script_string, self.trig ); - wait 1; - self.trig sethintstring( &"ZM_BURIED_SQ_BUT_U" ); - } + self.trig sethintstring( "" ); + level thread sq_bp_button_pressed( self.script_string, self.trig ); + wait 1; + self.trig sethintstring( &"ZM_BURIED_SQ_BUT_U" ); + } } sq_bp_button_pressed( str_tag, trig ) { - trig playsound( "zmb_sq_bell_yes" ); + trig playsound( "zmb_sq_bell_yes" ); - if ( is_true( trig.triggered ) ) - { - return; - } + if ( is_true( trig.triggered ) ) + { + return; + } - trig.triggered = 1; - sq_bp_light_on( str_tag, "green" ); - level notify( "sq_bp_correct_button" ); + trig.triggered = 1; + sq_bp_light_on( str_tag, "green" ); + level notify( "sq_bp_correct_button" ); } sq_ml_puzzle_logic() { - a_levers = getentarray( "sq_ml_lever", "targetname" ); - level.sq_ml_curr_lever = 0; - a_levers = array_randomize( a_levers ); + a_levers = getentarray( "sq_ml_lever", "targetname" ); + level.sq_ml_curr_lever = 0; + a_levers = array_randomize( a_levers ); - for ( i = 0; i < a_levers.size; i++ ) - a_levers[i].n_lever_order = i; + for ( i = 0; i < a_levers.size; i++ ) + a_levers[i].n_lever_order = i; - while ( true ) - { - level.sq_ml_curr_lever = 0; - sq_ml_puzzle_wait_for_levers(); - n_correct = 0; + while ( true ) + { + level.sq_ml_curr_lever = 0; + sq_ml_puzzle_wait_for_levers(); + n_correct = 0; - foreach ( m_lever in a_levers ) - { - playfxontag( level._effect["sq_spark"], m_lever, "tag_origin" ); - n_correct++; - m_lever playsound( "zmb_sq_maze_correct_spark" ); - } + foreach ( m_lever in a_levers ) + { + playfxontag( level._effect["sq_spark"], m_lever, "tag_origin" ); + n_correct++; + m_lever playsound( "zmb_sq_maze_correct_spark" ); + } - if ( n_correct == a_levers.size ) - flag_set( "sq_ip_puzzle_complete" ); + if ( n_correct == a_levers.size ) + flag_set( "sq_ip_puzzle_complete" ); - level waittill( "zm_buried_maze_changed" ); + level waittill( "zm_buried_maze_changed" ); - level notify( "sq_ml_reset_levers" ); - wait 1; - } + level notify( "sq_ml_reset_levers" ); + wait 1; + } } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_buried_sq_ows.gsc b/scripts/zm/replaced/zm_buried_sq_ows.gsc index 2310f3a6..18a26477 100644 --- a/scripts/zm/replaced/zm_buried_sq_ows.gsc +++ b/scripts/zm/replaced/zm_buried_sq_ows.gsc @@ -7,92 +7,92 @@ ows_targets_start() { - n_cur_second = 0; - flag_clear( "sq_ows_target_missed" ); - level thread sndsidequestowsmusic(); - a_sign_spots = getstructarray( "otw_target_spot", "script_noteworthy" ); + n_cur_second = 0; + flag_clear( "sq_ows_target_missed" ); + level thread sndsidequestowsmusic(); + a_sign_spots = getstructarray( "otw_target_spot", "script_noteworthy" ); - level.targets_hit = 0; + level.targets_hit = 0; - while ( n_cur_second < 40 ) - { - a_spawn_spots = ows_targets_get_cur_spots( n_cur_second ); + while ( n_cur_second < 40 ) + { + a_spawn_spots = ows_targets_get_cur_spots( n_cur_second ); - if ( isdefined( a_spawn_spots ) && a_spawn_spots.size > 0 ) - ows_targets_spawn( a_spawn_spots ); + if ( isdefined( a_spawn_spots ) && a_spawn_spots.size > 0 ) + ows_targets_spawn( a_spawn_spots ); - wait 1; - n_cur_second++; - } + wait 1; + n_cur_second++; + } - players = get_players(); - if ( level.targets_hit < ( 20 * players.size ) ) - { - flag_set( "sq_ows_target_missed" ); - } + players = get_players(); + if ( level.targets_hit < ( 20 * players.size ) ) + { + flag_set( "sq_ows_target_missed" ); + } - if ( !flag( "sq_ows_target_missed" ) ) - { - flag_set( "sq_ows_success" ); - playsoundatposition( "zmb_sq_target_success", ( 0, 0, 0 ) ); - } - else - playsoundatposition( "zmb_sq_target_fail", ( 0, 0, 0 ) ); + if ( !flag( "sq_ows_target_missed" ) ) + { + flag_set( "sq_ows_success" ); + playsoundatposition( "zmb_sq_target_success", ( 0, 0, 0 ) ); + } + else + playsoundatposition( "zmb_sq_target_fail", ( 0, 0, 0 ) ); - level notify( "sndEndOWSMusic" ); + level notify( "sndEndOWSMusic" ); } ows_targets_spawn( a_spawn_spots ) { - i = 0; - foreach ( s_spot in a_spawn_spots ) - { - m_target = spawn( "script_model", s_spot.origin ); - m_target.angles = s_spot.angles; - m_target setmodel( "p6_zm_bu_target" ); - m_target ghost(); - wait_network_frame(); - m_target show(); - playfxontag( level._effect["sq_spawn"], m_target, "tag_origin" ); - m_target playsound( "zmb_sq_target_spawn" ); + i = 0; + foreach ( s_spot in a_spawn_spots ) + { + m_target = spawn( "script_model", s_spot.origin ); + m_target.angles = s_spot.angles; + m_target setmodel( "p6_zm_bu_target" ); + m_target ghost(); + wait_network_frame(); + m_target show(); + playfxontag( level._effect["sq_spawn"], m_target, "tag_origin" ); + m_target playsound( "zmb_sq_target_spawn" ); - if ( isdefined( s_spot.target ) ) - m_target thread ows_target_move( s_spot.target ); + if ( isdefined( s_spot.target ) ) + m_target thread ows_target_move( s_spot.target ); - m_target thread ows_target_think(); - m_target thread sndhit(); - m_target thread sndtime(); - i++; - } + m_target thread ows_target_think(); + m_target thread sndhit(); + m_target thread sndtime(); + i++; + } } ows_target_think() { - self setcandamage( 1 ); - self thread ows_target_delete_timer(); - msg = self waittill_any_return( "ows_target_timeout", "damage" ); + self setcandamage( 1 ); + self thread ows_target_delete_timer(); + msg = self waittill_any_return( "ows_target_timeout", "damage" ); - if ( msg == "damage" ) - { - level.targets_hit++; - } + if ( msg == "damage" ) + { + level.targets_hit++; + } - if ( isdefined( self.m_linker ) ) - { - self unlink(); - self.m_linker delete(); - } + if ( isdefined( self.m_linker ) ) + { + self unlink(); + self.m_linker delete(); + } - self rotatepitch( -90, 0.15, 0.05, 0.05 ); + self rotatepitch( -90, 0.15, 0.05, 0.05 ); - self waittill( "rotatedone" ); + self waittill( "rotatedone" ); - self delete(); + self delete(); } ows_target_delete_timer() { - self endon( "death" ); - wait 4; - self notify( "ows_target_timeout" ); + self endon( "death" ); + wait 4; + self notify( "ows_target_timeout" ); } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_buried_sq_tpo.gsc b/scripts/zm/replaced/zm_buried_sq_tpo.gsc index 69ac08b9..f617d75f 100644 --- a/scripts/zm/replaced/zm_buried_sq_tpo.gsc +++ b/scripts/zm/replaced/zm_buried_sq_tpo.gsc @@ -14,201 +14,201 @@ init() { - declare_sidequest_stage( "sq", "tpo", ::init_stage, ::stage_logic, ::exit_stage ); - flag_init( "sq_tpo_time_bomb_in_valid_location" ); - flag_init( "sq_tpo_players_in_position_for_time_warp" ); - flag_init( "sq_tpo_special_round_active" ); - flag_init( "sq_tpo_found_item" ); - flag_init( "sq_tpo_generator_powered" ); - flag_init( "sq_wisp_saved_with_time_bomb" ); - flag_init( "sq_tpo_stage_started" ); - maps\mp\zombies\_zm_weap_time_bomb::time_bomb_add_custom_func_global_save( ::time_bomb_saves_wisp_state ); - maps\mp\zombies\_zm_weap_time_bomb::time_bomb_add_custom_func_global_restore( ::time_bomb_restores_wisp_state ); + declare_sidequest_stage( "sq", "tpo", ::init_stage, ::stage_logic, ::exit_stage ); + flag_init( "sq_tpo_time_bomb_in_valid_location" ); + flag_init( "sq_tpo_players_in_position_for_time_warp" ); + flag_init( "sq_tpo_special_round_active" ); + flag_init( "sq_tpo_found_item" ); + flag_init( "sq_tpo_generator_powered" ); + flag_init( "sq_wisp_saved_with_time_bomb" ); + flag_init( "sq_tpo_stage_started" ); + maps\mp\zombies\_zm_weap_time_bomb::time_bomb_add_custom_func_global_save( ::time_bomb_saves_wisp_state ); + maps\mp\zombies\_zm_weap_time_bomb::time_bomb_add_custom_func_global_restore( ::time_bomb_restores_wisp_state ); - level._effect["sq_tpo_time_bomb_fx"] = loadfx( "maps/zombie_buried/fx_buried_ghost_drain" ); - level.sq_tpo = spawnstruct(); - level thread setup_buildable_switch(); + level._effect["sq_tpo_time_bomb_fx"] = loadfx( "maps/zombie_buried/fx_buried_ghost_drain" ); + level.sq_tpo = spawnstruct(); + level thread setup_buildable_switch(); } stage_logic() { - flag_set( "sq_tpo_stage_started" ); + flag_set( "sq_tpo_stage_started" ); - if ( flag( "sq_is_ric_tower_built" ) ) - stage_logic_richtofen(); - else - stage_logic_maxis(); + if ( flag( "sq_is_ric_tower_built" ) ) + stage_logic_richtofen(); + else + stage_logic_maxis(); - stage_completed( "sq", level._cur_stage_name ); + stage_completed( "sq", level._cur_stage_name ); } stage_logic_maxis() { - flag_clear( "sq_wisp_success" ); - flag_clear( "sq_wisp_failed" ); + flag_clear( "sq_wisp_success" ); + flag_clear( "sq_wisp_failed" ); - while ( !flag( "sq_wisp_success" ) ) - { - stage_start( "sq", "ts" ); + while ( !flag( "sq_wisp_success" ) ) + { + stage_start( "sq", "ts" ); - level waittill( "sq_ts_over" ); + level waittill( "sq_ts_over" ); - stage_start( "sq", "ctw" ); + stage_start( "sq", "ctw" ); - level waittill( "sq_ctw_over" ); - } + level waittill( "sq_ctw_over" ); + } - level._cur_stage_name = "tpo"; + level._cur_stage_name = "tpo"; } stage_logic_richtofen() { - level endon( "sq_tpo_generator_powered" ); + level endon( "sq_tpo_generator_powered" ); - e_time_bomb_volume = getent( "sq_tpo_timebomb_volume", "targetname" ); + e_time_bomb_volume = getent( "sq_tpo_timebomb_volume", "targetname" ); - do - { - flag_clear( "sq_tpo_time_bomb_in_valid_location" ); + do + { + flag_clear( "sq_tpo_time_bomb_in_valid_location" ); - b_time_bomb_in_valid_location = 0; - while (1) - { - if ( isdefined( level.time_bomb_save_data ) && isdefined( level.time_bomb_save_data.time_bomb_model ) ) - { - b_time_bomb_in_valid_location = level.time_bomb_save_data.time_bomb_model istouching( e_time_bomb_volume ); - level.time_bomb_save_data.time_bomb_model.sq_location_valid = b_time_bomb_in_valid_location; - } + b_time_bomb_in_valid_location = 0; + while (1) + { + if ( isdefined( level.time_bomb_save_data ) && isdefined( level.time_bomb_save_data.time_bomb_model ) ) + { + b_time_bomb_in_valid_location = level.time_bomb_save_data.time_bomb_model istouching( e_time_bomb_volume ); + level.time_bomb_save_data.time_bomb_model.sq_location_valid = b_time_bomb_in_valid_location; + } - if ( b_time_bomb_in_valid_location ) - { - break; - } + if ( b_time_bomb_in_valid_location ) + { + break; + } - level waittill( "new_time_bomb_set" ); - } + level waittill( "new_time_bomb_set" ); + } - playfxontag( level._effect["sq_tpo_time_bomb_fx"], level.time_bomb_save_data.time_bomb_model, "tag_origin" ); - flag_set( "sq_tpo_time_bomb_in_valid_location" ); - flag_set( "sq_tpo_players_in_position_for_time_warp" ); - wait_for_time_bomb_to_be_detonated_or_thrown_again(); - level notify( "sq_tpo_stop_checking_time_bomb_volume" ); + playfxontag( level._effect["sq_tpo_time_bomb_fx"], level.time_bomb_save_data.time_bomb_model, "tag_origin" ); + flag_set( "sq_tpo_time_bomb_in_valid_location" ); + flag_set( "sq_tpo_players_in_position_for_time_warp" ); + wait_for_time_bomb_to_be_detonated_or_thrown_again(); + level notify( "sq_tpo_stop_checking_time_bomb_volume" ); - if ( flag( "time_bomb_restore_active" ) ) - { - if ( flag( "sq_tpo_players_in_position_for_time_warp" ) ) - { - special_round_start(); - level notify( "sq_tpo_special_round_started" ); - start_item_hunt_with_timeout( 60 ); - special_round_end(); - level notify( "sq_tpo_special_round_ended" ); - } - } + if ( flag( "time_bomb_restore_active" ) ) + { + if ( flag( "sq_tpo_players_in_position_for_time_warp" ) ) + { + special_round_start(); + level notify( "sq_tpo_special_round_started" ); + start_item_hunt_with_timeout( 60 ); + special_round_end(); + level notify( "sq_tpo_special_round_ended" ); + } + } - wait_network_frame(); - } - while ( !flag( "sq_tpo_generator_powered" ) ); + wait_network_frame(); + } + while ( !flag( "sq_tpo_generator_powered" ) ); } special_round_start() { - flag_set( "sq_tpo_special_round_active" ); - level.sq_tpo.times_searched = 0; - flag_clear( "time_bomb_detonation_enabled" ); - level thread sndsidequestnoirmusic(); - make_super_zombies( 1 ); - a_players = get_players(); + flag_set( "sq_tpo_special_round_active" ); + level.sq_tpo.times_searched = 0; + flag_clear( "time_bomb_detonation_enabled" ); + level thread sndsidequestnoirmusic(); + make_super_zombies( 1 ); + a_players = get_players(); - foreach ( player in a_players ) - vsmgr_activate( "visionset", "cheat_bw", player ); + foreach ( player in a_players ) + vsmgr_activate( "visionset", "cheat_bw", player ); - level setclientfield( "sq_tpo_special_round_active", 1 ); + level setclientfield( "sq_tpo_special_round_active", 1 ); } special_round_end() { - level setclientfield( "sq_tpo_special_round_active", 0 ); - level notify( "sndEndNoirMusic" ); - make_super_zombies( 0 ); - level._time_bomb.functionality_override = 0; - flag_set( "time_bomb_detonation_enabled" ); - scripts\zm\replaced\_zm_weap_time_bomb::time_bomb_detonation(); + level setclientfield( "sq_tpo_special_round_active", 0 ); + level notify( "sndEndNoirMusic" ); + make_super_zombies( 0 ); + level._time_bomb.functionality_override = 0; + flag_set( "time_bomb_detonation_enabled" ); + scripts\zm\replaced\_zm_weap_time_bomb::time_bomb_detonation(); - a_players = get_players(); - foreach ( player in a_players ) - { - vsmgr_deactivate( "visionset", "cheat_bw", player ); - player notify( "search_done" ); - } + a_players = get_players(); + foreach ( player in a_players ) + { + vsmgr_deactivate( "visionset", "cheat_bw", player ); + player notify( "search_done" ); + } - clean_up_special_round(); - flag_clear( "sq_tpo_special_round_active" ); + clean_up_special_round(); + flag_clear( "sq_tpo_special_round_active" ); } promote_to_corpse_model( str_model ) { - v_spawn_point = groundtrace( self.origin + vectorscale( ( 0, 0, 1 ), 10.0 ), self.origin + vectorscale( ( 0, 0, -1 ), 300.0 ), 0, undefined )["position"]; - self.corpse_model = spawn( "script_model", v_spawn_point ); - self.corpse_model.angles = self.angles; - self.corpse_model setmodel( str_model ); - self.corpse_model.targetname = "sq_tpo_corpse_model"; - self _pose_corpse(); - self.corpse_model.unitrigger = setup_unitrigger( &"ZM_BURIED_SQ_SCH", ::unitrigger_think ); + v_spawn_point = groundtrace( self.origin + vectorscale( ( 0, 0, 1 ), 10.0 ), self.origin + vectorscale( ( 0, 0, -1 ), 300.0 ), 0, undefined )["position"]; + self.corpse_model = spawn( "script_model", v_spawn_point ); + self.corpse_model.angles = self.angles; + self.corpse_model setmodel( str_model ); + self.corpse_model.targetname = "sq_tpo_corpse_model"; + self _pose_corpse(); + self.corpse_model.unitrigger = setup_unitrigger( &"ZM_BURIED_SQ_SCH", ::unitrigger_think ); } unitrigger_think() { - self endon( "kill_trigger" ); - self thread unitrigger_killed(); - b_trigger_used = 0; + self endon( "kill_trigger" ); + self thread unitrigger_killed(); + b_trigger_used = 0; - while ( !b_trigger_used ) - { - self waittill( "trigger", player ); + while ( !b_trigger_used ) + { + self waittill( "trigger", player ); - b_progress_bar_done = 0; - n_frame_count = 0; + b_progress_bar_done = 0; + n_frame_count = 0; - while ( player usebuttonpressed() && !b_progress_bar_done ) - { - if ( !isdefined( self.progress_bar ) ) - { - self.progress_bar = player createprimaryprogressbar(); - self.progress_bar updatebar( 0.01, 1 / 1.5 ); - self.progress_bar_text = player createprimaryprogressbartext(); - self.progress_bar_text settext( &"ZM_BURIED_SQ_SEARCHING" ); - self thread _kill_progress_bar(); - } + while ( player usebuttonpressed() && !b_progress_bar_done ) + { + if ( !isdefined( self.progress_bar ) ) + { + self.progress_bar = player createprimaryprogressbar(); + self.progress_bar updatebar( 0.01, 1 / 1.5 ); + self.progress_bar_text = player createprimaryprogressbartext(); + self.progress_bar_text settext( &"ZM_BURIED_SQ_SEARCHING" ); + self thread _kill_progress_bar(); + } - n_progress_amount = n_frame_count / 30.0; - n_frame_count++; + n_progress_amount = n_frame_count / 30.0; + n_frame_count++; - if ( n_progress_amount == 1 ) - b_progress_bar_done = 1; + if ( n_progress_amount == 1 ) + b_progress_bar_done = 1; - wait 0.05; - } + wait 0.05; + } - self _delete_progress_bar(); + self _delete_progress_bar(); - if ( b_progress_bar_done ) - b_trigger_used = 1; - } + if ( b_progress_bar_done ) + b_trigger_used = 1; + } - if ( b_progress_bar_done ) - { - self.stub.hint_string = ""; - self sethintstring( self.stub.hint_string ); + if ( b_progress_bar_done ) + { + self.stub.hint_string = ""; + self sethintstring( self.stub.hint_string ); - if ( item_is_on_corpse() ) - { - iprintlnbold( &"ZM_BURIED_SQ_FND" ); - player give_player_sq_tpo_switch(); - } - else - iprintlnbold( &"ZM_BURIED_SQ_NFND" ); + if ( item_is_on_corpse() ) + { + iprintlnbold( &"ZM_BURIED_SQ_FND" ); + player give_player_sq_tpo_switch(); + } + else + iprintlnbold( &"ZM_BURIED_SQ_NFND" ); - self thread maps\mp\zombies\_zm_unitrigger::unregister_unitrigger( self.stub ); - } + self thread maps\mp\zombies\_zm_unitrigger::unregister_unitrigger( self.stub ); + } } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_buried_sq_ts.gsc b/scripts/zm/replaced/zm_buried_sq_ts.gsc index 52075708..ecc591ef 100644 --- a/scripts/zm/replaced/zm_buried_sq_ts.gsc +++ b/scripts/zm/replaced/zm_buried_sq_ts.gsc @@ -6,39 +6,39 @@ ts_sign_damage_watch() { - level endon( "sq_sign_damaged" ); - self ts_sign_deactivate(); + level endon( "sq_sign_damaged" ); + self ts_sign_deactivate(); - while ( true ) - { - self waittill( "damage", n_damage, e_attacker, v_direction, v_point, str_type, str_tag, str_model, str_part, str_weapon ); + while ( true ) + { + self waittill( "damage", n_damage, e_attacker, v_direction, v_point, str_type, str_tag, str_model, str_part, str_weapon ); - if ( ts_is_bowie_knife( str_weapon ) || ts_is_galvaknuckles( str_weapon ) ) - { - self thread ts_sign_activate(); + if ( ts_is_bowie_knife( str_weapon ) || ts_is_galvaknuckles( str_weapon ) ) + { + self thread ts_sign_activate(); - ts_sign_check_all_activated( e_attacker, self ); - } - } + ts_sign_check_all_activated( e_attacker, self ); + } + } } ts_sign_check_all_activated( e_attacker, m_last_touched ) { - a_signs = getentarray( "sq_tunnel_sign", "targetname" ); - a_signs_active = []; + a_signs = getentarray( "sq_tunnel_sign", "targetname" ); + a_signs_active = []; - foreach ( m_sign in a_signs ) - { - if ( m_sign.ts_sign_activated ) - { - a_signs_active[a_signs_active.size] = m_sign; - } - } + foreach ( m_sign in a_signs ) + { + if ( m_sign.ts_sign_activated ) + { + a_signs_active[a_signs_active.size] = m_sign; + } + } - if ( a_signs_active.size == a_signs.size ) - { - level.m_sq_start_sign = m_last_touched; - level.e_sq_sign_attacker = e_attacker; - level notify( "sq_sign_damaged" ); - } + if ( a_signs_active.size == a_signs.size ) + { + level.m_sq_start_sign = m_last_touched; + level.e_sq_sign_attacker = e_attacker; + level notify( "sq_sign_damaged" ); + } } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_highrise.gsc b/scripts/zm/replaced/zm_highrise.gsc index 982ea998..1902f5fe 100644 --- a/scripts/zm/replaced/zm_highrise.gsc +++ b/scripts/zm/replaced/zm_highrise.gsc @@ -44,45 +44,45 @@ zclassic_preinit() { - setdvar( "player_sliding_velocity_cap", 80.0 ); - setdvar( "player_sliding_wishspeed", 800.0 ); - registerclientfield( "scriptmover", "clientfield_escape_pod_tell_fx", 5000, 1, "int" ); - registerclientfield( "scriptmover", "clientfield_escape_pod_sparks_fx", 5000, 1, "int" ); - registerclientfield( "scriptmover", "clientfield_escape_pod_impact_fx", 5000, 1, "int" ); - registerclientfield( "scriptmover", "clientfield_escape_pod_light_fx", 5000, 1, "int" ); - registerclientfield( "actor", "clientfield_whos_who_clone_glow_shader", 5000, 1, "int" ); - registerclientfield( "toplayer", "clientfield_whos_who_audio", 5000, 1, "int" ); - registerclientfield( "toplayer", "clientfield_whos_who_filter", 5000, 1, "int" ); - level.whos_who_client_setup = 1; - maps\mp\zm_highrise_sq::sq_highrise_clientfield_init(); - precachemodel( "p6_zm_keycard" ); - precachemodel( "p6_zm_hr_keycard" ); - precachemodel( "fxanim_zom_highrise_trample_gen_mod" ); - level.banking_map = "zm_transit"; - level.weapon_locker_map = "zm_transit"; - level thread maps\mp\zombies\_zm_banking::init(); - survival_init(); + setdvar( "player_sliding_velocity_cap", 80.0 ); + setdvar( "player_sliding_wishspeed", 800.0 ); + registerclientfield( "scriptmover", "clientfield_escape_pod_tell_fx", 5000, 1, "int" ); + registerclientfield( "scriptmover", "clientfield_escape_pod_sparks_fx", 5000, 1, "int" ); + registerclientfield( "scriptmover", "clientfield_escape_pod_impact_fx", 5000, 1, "int" ); + registerclientfield( "scriptmover", "clientfield_escape_pod_light_fx", 5000, 1, "int" ); + registerclientfield( "actor", "clientfield_whos_who_clone_glow_shader", 5000, 1, "int" ); + registerclientfield( "toplayer", "clientfield_whos_who_audio", 5000, 1, "int" ); + registerclientfield( "toplayer", "clientfield_whos_who_filter", 5000, 1, "int" ); + level.whos_who_client_setup = 1; + maps\mp\zm_highrise_sq::sq_highrise_clientfield_init(); + precachemodel( "p6_zm_keycard" ); + precachemodel( "p6_zm_hr_keycard" ); + precachemodel( "fxanim_zom_highrise_trample_gen_mod" ); + level.banking_map = "zm_transit"; + level.weapon_locker_map = "zm_transit"; + level thread maps\mp\zombies\_zm_banking::init(); + survival_init(); - if ( !( isdefined( level.banking_update_enabled ) && level.banking_update_enabled ) ) - return; + if ( !( isdefined( level.banking_update_enabled ) && level.banking_update_enabled ) ) + return; - weapon_locker = spawnstruct(); - weapon_locker.origin = ( 2107, 98, 1150 ); - weapon_locker.angles = vectorscale( ( 0, 1, 0 ), 60.0 ); - weapon_locker.targetname = "weapons_locker"; - deposit_spot = spawnstruct(); - deposit_spot.origin = ( 2247, 553, 1326 ); - deposit_spot.angles = vectorscale( ( 0, 1, 0 ), 60.0 ); - deposit_spot.script_length = 16; - deposit_spot.targetname = "bank_deposit"; - withdraw_spot = spawnstruct(); - withdraw_spot.origin = ( 2280, 611, 1330 ); - withdraw_spot.angles = vectorscale( ( 0, 1, 0 ), 60.0 ); - withdraw_spot.script_length = 16; - withdraw_spot.targetname = "bank_withdraw"; - level thread maps\mp\zombies\_zm_weapon_locker::main(); - weapon_locker thread maps\mp\zombies\_zm_weapon_locker::triggerweaponslockerwatch(); - level thread maps\mp\zombies\_zm_banking::main(); - deposit_spot thread maps\mp\zombies\_zm_banking::bank_deposit_unitrigger(); - withdraw_spot thread maps\mp\zombies\_zm_banking::bank_withdraw_unitrigger(); + weapon_locker = spawnstruct(); + weapon_locker.origin = ( 2107, 98, 1150 ); + weapon_locker.angles = vectorscale( ( 0, 1, 0 ), 60.0 ); + weapon_locker.targetname = "weapons_locker"; + deposit_spot = spawnstruct(); + deposit_spot.origin = ( 2247, 553, 1326 ); + deposit_spot.angles = vectorscale( ( 0, 1, 0 ), 60.0 ); + deposit_spot.script_length = 16; + deposit_spot.targetname = "bank_deposit"; + withdraw_spot = spawnstruct(); + withdraw_spot.origin = ( 2280, 611, 1330 ); + withdraw_spot.angles = vectorscale( ( 0, 1, 0 ), 60.0 ); + withdraw_spot.script_length = 16; + withdraw_spot.targetname = "bank_withdraw"; + level thread maps\mp\zombies\_zm_weapon_locker::main(); + weapon_locker thread maps\mp\zombies\_zm_weapon_locker::triggerweaponslockerwatch(); + level thread maps\mp\zombies\_zm_banking::main(); + deposit_spot thread maps\mp\zombies\_zm_banking::bank_deposit_unitrigger(); + withdraw_spot thread maps\mp\zombies\_zm_banking::bank_withdraw_unitrigger(); } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_highrise_buildables.gsc b/scripts/zm/replaced/zm_highrise_buildables.gsc index cd6726ec..07c5dc41 100644 --- a/scripts/zm/replaced/zm_highrise_buildables.gsc +++ b/scripts/zm/replaced/zm_highrise_buildables.gsc @@ -10,55 +10,55 @@ init_buildables() { - level.buildable_piece_count = 13; - add_zombie_buildable( "springpad_zm", &"ZM_HIGHRISE_BUILD_SPRINGPAD", &"ZM_HIGHRISE_BUILDING_SPRINGPAD", &"ZM_HIGHRISE_BOUGHT_SPRINGPAD" ); - add_zombie_buildable( "slipgun_zm", &"ZM_HIGHRISE_BUILD_SLIPGUN", &"ZM_HIGHRISE_BUILDING_SLIPGUN", &"ZM_HIGHRISE_BOUGHT_SLIPGUN" ); - add_zombie_buildable( "sq_common", &"ZOMBIE_BUILD_SQ_COMMON", &"ZOMBIE_BUILDING_SQ_COMMON" ); + level.buildable_piece_count = 13; + add_zombie_buildable( "springpad_zm", &"ZM_HIGHRISE_BUILD_SPRINGPAD", &"ZM_HIGHRISE_BUILDING_SPRINGPAD", &"ZM_HIGHRISE_BOUGHT_SPRINGPAD" ); + add_zombie_buildable( "slipgun_zm", &"ZM_HIGHRISE_BUILD_SLIPGUN", &"ZM_HIGHRISE_BUILDING_SLIPGUN", &"ZM_HIGHRISE_BOUGHT_SLIPGUN" ); + add_zombie_buildable( "sq_common", &"ZOMBIE_BUILD_SQ_COMMON", &"ZOMBIE_BUILDING_SQ_COMMON" ); } include_buildables() { - springpad_door = generate_zombie_buildable_piece( "springpad_zm", "p6_zm_buildable_tramplesteam_door", 32, 64, 0, "zom_hud_trample_steam_screen", ::onpickup_common, ::ondrop_common, undefined, "Tag_part_02", undefined, 1 ); - springpad_flag = generate_zombie_buildable_piece( "springpad_zm", "p6_zm_buildable_tramplesteam_bellows", 48, 15, 0, "zom_hud_trample_steam_bellow", ::onpickup_common, ::ondrop_common, undefined, "Tag_part_04", undefined, 2 ); - springpad_motor = generate_zombie_buildable_piece( "springpad_zm", "p6_zm_buildable_tramplesteam_compressor", 48, 15, 0, "zom_hud_trample_steam_compressor", ::onpickup_common, ::ondrop_common, undefined, "Tag_part_01", undefined, 3 ); - springpad_whistle = generate_zombie_buildable_piece( "springpad_zm", "p6_zm_buildable_tramplesteam_flag", 48, 15, 0, "zom_hud_trample_steam_whistle", ::onpickup_common, ::ondrop_common, undefined, "Tag_part_03", undefined, 4 ); - springpad = spawnstruct(); - springpad.name = "springpad_zm"; - springpad add_buildable_piece( springpad_door ); - springpad add_buildable_piece( springpad_flag ); - springpad add_buildable_piece( springpad_motor ); - springpad add_buildable_piece( springpad_whistle ); - springpad.triggerthink = ::springpadbuildable; - include_buildable( springpad ); - slipgun_canister = generate_zombie_buildable_piece( "slipgun_zm", "t6_zmb_buildable_slipgun_extinguisher", 32, 64, 0, "zom_hud_icon_buildable_slip_ext", ::onpickup_common, ::ondrop_common, undefined, "TAG_CO2", undefined, 5 ); - slipgun_cooker = generate_zombie_buildable_piece( "slipgun_zm", "t6_zmb_buildable_slipgun_cooker", 48, 15, 0, "zom_hud_icon_buildable_slip_cooker", ::onpickup_common, ::ondrop_common, undefined, "TAG_COOKER", undefined, 6 ); - slipgun_foot = generate_zombie_buildable_piece( "slipgun_zm", "t6_zmb_buildable_slipgun_foot", 48, 15, 0, "zom_hud_icon_buildable_slip_foot", ::onpickup_common, ::ondrop_common, undefined, "TAG_FOOT", undefined, 7 ); - slipgun_throttle = generate_zombie_buildable_piece( "slipgun_zm", "t6_zmb_buildable_slipgun_throttle", 48, 15, 0, "zom_hud_icon_buildable_slip_handle", ::onpickup_common, ::ondrop_common, undefined, "TAG_THROTTLE", undefined, 8 ); - slipgun = spawnstruct(); - slipgun.name = "slipgun_zm"; - slipgun add_buildable_piece( slipgun_canister ); - slipgun add_buildable_piece( slipgun_cooker ); - slipgun add_buildable_piece( slipgun_foot ); - slipgun add_buildable_piece( slipgun_throttle ); - slipgun.onbuyweapon = ::onbuyweapon_slipgun; - slipgun.triggerthink = ::slipgunbuildable; - slipgun.onuseplantobject = ::onuseplantobject_slipgun; - include_buildable( slipgun ); + springpad_door = generate_zombie_buildable_piece( "springpad_zm", "p6_zm_buildable_tramplesteam_door", 32, 64, 0, "zom_hud_trample_steam_screen", ::onpickup_common, ::ondrop_common, undefined, "Tag_part_02", undefined, 1 ); + springpad_flag = generate_zombie_buildable_piece( "springpad_zm", "p6_zm_buildable_tramplesteam_bellows", 48, 15, 0, "zom_hud_trample_steam_bellow", ::onpickup_common, ::ondrop_common, undefined, "Tag_part_04", undefined, 2 ); + springpad_motor = generate_zombie_buildable_piece( "springpad_zm", "p6_zm_buildable_tramplesteam_compressor", 48, 15, 0, "zom_hud_trample_steam_compressor", ::onpickup_common, ::ondrop_common, undefined, "Tag_part_01", undefined, 3 ); + springpad_whistle = generate_zombie_buildable_piece( "springpad_zm", "p6_zm_buildable_tramplesteam_flag", 48, 15, 0, "zom_hud_trample_steam_whistle", ::onpickup_common, ::ondrop_common, undefined, "Tag_part_03", undefined, 4 ); + springpad = spawnstruct(); + springpad.name = "springpad_zm"; + springpad add_buildable_piece( springpad_door ); + springpad add_buildable_piece( springpad_flag ); + springpad add_buildable_piece( springpad_motor ); + springpad add_buildable_piece( springpad_whistle ); + springpad.triggerthink = ::springpadbuildable; + include_buildable( springpad ); + slipgun_canister = generate_zombie_buildable_piece( "slipgun_zm", "t6_zmb_buildable_slipgun_extinguisher", 32, 64, 0, "zom_hud_icon_buildable_slip_ext", ::onpickup_common, ::ondrop_common, undefined, "TAG_CO2", undefined, 5 ); + slipgun_cooker = generate_zombie_buildable_piece( "slipgun_zm", "t6_zmb_buildable_slipgun_cooker", 48, 15, 0, "zom_hud_icon_buildable_slip_cooker", ::onpickup_common, ::ondrop_common, undefined, "TAG_COOKER", undefined, 6 ); + slipgun_foot = generate_zombie_buildable_piece( "slipgun_zm", "t6_zmb_buildable_slipgun_foot", 48, 15, 0, "zom_hud_icon_buildable_slip_foot", ::onpickup_common, ::ondrop_common, undefined, "TAG_FOOT", undefined, 7 ); + slipgun_throttle = generate_zombie_buildable_piece( "slipgun_zm", "t6_zmb_buildable_slipgun_throttle", 48, 15, 0, "zom_hud_icon_buildable_slip_handle", ::onpickup_common, ::ondrop_common, undefined, "TAG_THROTTLE", undefined, 8 ); + slipgun = spawnstruct(); + slipgun.name = "slipgun_zm"; + slipgun add_buildable_piece( slipgun_canister ); + slipgun add_buildable_piece( slipgun_cooker ); + slipgun add_buildable_piece( slipgun_foot ); + slipgun add_buildable_piece( slipgun_throttle ); + slipgun.onbuyweapon = ::onbuyweapon_slipgun; + slipgun.triggerthink = ::slipgunbuildable; + slipgun.onuseplantobject = ::onuseplantobject_slipgun; + include_buildable( slipgun ); - if ( !isdefined( level.gamedifficulty ) || level.gamedifficulty != 0 ) - { - sq_common_electricbox = generate_zombie_buildable_piece( "sq_common", "p6_zm_buildable_sq_electric_box", 32, 64, 0, "zm_hud_icon_sq_powerbox", ::onpickup_common, ::ondrop_common, undefined, "tag_part_02", undefined, 10 ); - sq_common_meteor = generate_zombie_buildable_piece( "sq_common", "p6_zm_buildable_sq_meteor", 32, 64, 0, "zm_hud_icon_sq_meteor", ::onpickup_common, ::ondrop_common, undefined, "tag_part_04", undefined, 11 ); - sq_common_scaffolding = generate_zombie_buildable_piece( "sq_common", "p6_zm_buildable_sq_scaffolding", 64, 96, 0, "zm_hud_icon_sq_scafold", ::onpickup_common, ::ondrop_common, undefined, "tag_part_01", undefined, 12 ); - sq_common_transceiver = generate_zombie_buildable_piece( "sq_common", "p6_zm_buildable_sq_transceiver", 64, 96, 0, "zm_hud_icon_sq_tranceiver", ::onpickup_common, ::ondrop_common, undefined, "tag_part_03", undefined, 13 ); - sqcommon = spawnstruct(); - sqcommon.name = "sq_common"; - sqcommon add_buildable_piece( sq_common_electricbox ); - sqcommon add_buildable_piece( sq_common_meteor ); - sqcommon add_buildable_piece( sq_common_scaffolding ); - sqcommon add_buildable_piece( sq_common_transceiver ); - sqcommon.triggerthink = ::sqcommonbuildable; - include_buildable( sqcommon ); - maps\mp\zombies\_zm_buildables::hide_buildable_table_model( "sq_common_buildable_trigger" ); - } + if ( !isdefined( level.gamedifficulty ) || level.gamedifficulty != 0 ) + { + sq_common_electricbox = generate_zombie_buildable_piece( "sq_common", "p6_zm_buildable_sq_electric_box", 32, 64, 0, "zm_hud_icon_sq_powerbox", ::onpickup_common, ::ondrop_common, undefined, "tag_part_02", undefined, 10 ); + sq_common_meteor = generate_zombie_buildable_piece( "sq_common", "p6_zm_buildable_sq_meteor", 32, 64, 0, "zm_hud_icon_sq_meteor", ::onpickup_common, ::ondrop_common, undefined, "tag_part_04", undefined, 11 ); + sq_common_scaffolding = generate_zombie_buildable_piece( "sq_common", "p6_zm_buildable_sq_scaffolding", 64, 96, 0, "zm_hud_icon_sq_scafold", ::onpickup_common, ::ondrop_common, undefined, "tag_part_01", undefined, 12 ); + sq_common_transceiver = generate_zombie_buildable_piece( "sq_common", "p6_zm_buildable_sq_transceiver", 64, 96, 0, "zm_hud_icon_sq_tranceiver", ::onpickup_common, ::ondrop_common, undefined, "tag_part_03", undefined, 13 ); + sqcommon = spawnstruct(); + sqcommon.name = "sq_common"; + sqcommon add_buildable_piece( sq_common_electricbox ); + sqcommon add_buildable_piece( sq_common_meteor ); + sqcommon add_buildable_piece( sq_common_scaffolding ); + sqcommon add_buildable_piece( sq_common_transceiver ); + sqcommon.triggerthink = ::sqcommonbuildable; + include_buildable( sqcommon ); + maps\mp\zombies\_zm_buildables::hide_buildable_table_model( "sq_common_buildable_trigger" ); + } } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_highrise_classic.gsc b/scripts/zm/replaced/zm_highrise_classic.gsc index 2a9d5fbb..08131f6e 100644 --- a/scripts/zm/replaced/zm_highrise_classic.gsc +++ b/scripts/zm/replaced/zm_highrise_classic.gsc @@ -5,144 +5,144 @@ main() { - level.buildables_built["pap"] = 1; - level.custom_pap_move_in = ::highrise_pap_move_in; - level.custom_pap_move_out = ::highrise_pap_move_out; - flag_init( "perks_ready" ); - maps\mp\gametypes_zm\_zm_gametype::setup_standard_objects( "rooftop" ); - maps\mp\zombies\_zm_game_module::set_current_game_module( level.game_module_standard_index ); - level thread maps\mp\zombies\_zm_buildables::think_buildables(); - level.calc_closest_player_using_paths = 1; - level.validate_enemy_path_length = ::highrise_validate_enemy_path_length; - level thread maps\mp\zm_highrise_classic::init_escape_pod(); - level thread maps\mp\zm_highrise_elevators::init_elevators(); - temp_clips = getentarray( "elevator_delete", "targetname" ); + level.buildables_built["pap"] = 1; + level.custom_pap_move_in = ::highrise_pap_move_in; + level.custom_pap_move_out = ::highrise_pap_move_out; + flag_init( "perks_ready" ); + maps\mp\gametypes_zm\_zm_gametype::setup_standard_objects( "rooftop" ); + maps\mp\zombies\_zm_game_module::set_current_game_module( level.game_module_standard_index ); + level thread maps\mp\zombies\_zm_buildables::think_buildables(); + level.calc_closest_player_using_paths = 1; + level.validate_enemy_path_length = ::highrise_validate_enemy_path_length; + level thread maps\mp\zm_highrise_classic::init_escape_pod(); + level thread maps\mp\zm_highrise_elevators::init_elevators(); + temp_clips = getentarray( "elevator_delete", "targetname" ); - if ( isdefined( temp_clips ) && temp_clips.size > 0 ) - array_thread( temp_clips, ::self_delete ); + if ( isdefined( temp_clips ) && temp_clips.size > 0 ) + array_thread( temp_clips, ::self_delete ); - elev_bldg3b = getent( "elevator_bldg3b_body", "targetname" ); - elev_bldg3b.origin += vectorscale( ( 0, 0, 1 ), 8.0 ); - level thread maps\mp\zm_highrise_elevators::init_elevator( "1b" ); - level thread maps\mp\zm_highrise_elevators::init_elevator( "1c", 1 ); - level thread maps\mp\zm_highrise_elevators::init_elevator( "1d" ); + elev_bldg3b = getent( "elevator_bldg3b_body", "targetname" ); + elev_bldg3b.origin += vectorscale( ( 0, 0, 1 ), 8.0 ); + level thread maps\mp\zm_highrise_elevators::init_elevator( "1b" ); + level thread maps\mp\zm_highrise_elevators::init_elevator( "1c", 1 ); + level thread maps\mp\zm_highrise_elevators::init_elevator( "1d" ); - if ( randomint( 100 ) > 50 ) - { - level thread maps\mp\zm_highrise_elevators::init_elevator( "3", 1, -1264 ); - level thread maps\mp\zm_highrise_elevators::init_elevator( "3b", 2 ); - } - else - { - level thread maps\mp\zm_highrise_elevators::init_elevator( "3", 2 ); - level thread maps\mp\zm_highrise_elevators::init_elevator( "3b", 1, -1264 ); - } + if ( randomint( 100 ) > 50 ) + { + level thread maps\mp\zm_highrise_elevators::init_elevator( "3", 1, -1264 ); + level thread maps\mp\zm_highrise_elevators::init_elevator( "3b", 2 ); + } + else + { + level thread maps\mp\zm_highrise_elevators::init_elevator( "3", 2 ); + level thread maps\mp\zm_highrise_elevators::init_elevator( "3b", 1, -1264 ); + } - level thread maps\mp\zm_highrise_elevators::init_elevator( "3c", 3 ); - level thread maps\mp\zm_highrise_elevators::init_elevator( "3d", 1 ); - flag_wait( "initial_blackscreen_passed" ); - level thread escape_pod(); - level._chugabug_reject_corpse_override_func = ::highrise_chugabud_reject_corpse_func; - level._chugabud_reject_node_override_func = ::highrise_chugabud_reject_node_func; - level._chugabud_post_respawn_override_func = ::highrise_chugabud_post_respawn_func; - level.insta_kill_triggers = getentarray( "instant_death", "targetname" ); - array_thread( level.insta_kill_triggers, ::squashed_death_init, 0 ); - e_trigger = getent( "instant_death_escape_pod_shaft", "targetname" ); + level thread maps\mp\zm_highrise_elevators::init_elevator( "3c", 3 ); + level thread maps\mp\zm_highrise_elevators::init_elevator( "3d", 1 ); + flag_wait( "initial_blackscreen_passed" ); + level thread escape_pod(); + level._chugabug_reject_corpse_override_func = ::highrise_chugabud_reject_corpse_func; + level._chugabud_reject_node_override_func = ::highrise_chugabud_reject_node_func; + level._chugabud_post_respawn_override_func = ::highrise_chugabud_post_respawn_func; + level.insta_kill_triggers = getentarray( "instant_death", "targetname" ); + array_thread( level.insta_kill_triggers, ::squashed_death_init, 0 ); + e_trigger = getent( "instant_death_escape_pod_shaft", "targetname" ); - if ( isdefined( e_trigger ) ) - { - e_trigger thread squashed_death_init( 1 ); - e_trigger thread escape_pod_death_trigger_think(); - level.insta_kill_triggers[level.insta_kill_triggers.size] = e_trigger; - } + if ( isdefined( e_trigger ) ) + { + e_trigger thread squashed_death_init( 1 ); + e_trigger thread escape_pod_death_trigger_think(); + level.insta_kill_triggers[level.insta_kill_triggers.size] = e_trigger; + } - exploder( 9 ); - exploder( 10 ); - flag_wait( "start_zombie_round_logic" ); - level thread maps\mp\zm_highrise_elevators::random_elevator_perks(); - level thread maps\mp\zm_highrise_elevators::faller_location_logic(); - level.custom_faller_entrance_logic = scripts\zm\replaced\zm_highrise_elevators::watch_for_elevator_during_faller_spawn; - setdvar( "zombiemode_path_minz_bias", 13 ); - level.check_valid_poi = ::check_valid_poi; - level thread maps\mp\zm_highrise_elevators::shouldsuppressgibs(); + exploder( 9 ); + exploder( 10 ); + flag_wait( "start_zombie_round_logic" ); + level thread maps\mp\zm_highrise_elevators::random_elevator_perks(); + level thread maps\mp\zm_highrise_elevators::faller_location_logic(); + level.custom_faller_entrance_logic = scripts\zm\replaced\zm_highrise_elevators::watch_for_elevator_during_faller_spawn; + setdvar( "zombiemode_path_minz_bias", 13 ); + level.check_valid_poi = ::check_valid_poi; + level thread maps\mp\zm_highrise_elevators::shouldsuppressgibs(); } highrise_pap_move_in( trigger, origin_offset, angles_offset ) { - level endon( "Pack_A_Punch_off" ); - trigger endon( "pap_player_disconnected" ); - pap_machine = trigger.perk_machine; - worldgun = trigger.worldgun; - worldgundw = trigger.worldgun.worldgundw; - offset = origin_offset[2]; - trigger.worldgun rotateto( self.angles + angles_offset + vectorscale( ( 0, 1, 0 ), 90.0 ), 0.35, 0, 0 ); - offsetdw = vectorscale( ( 1, 1, 1 ), 3.0 ); + level endon( "Pack_A_Punch_off" ); + trigger endon( "pap_player_disconnected" ); + pap_machine = trigger.perk_machine; + worldgun = trigger.worldgun; + worldgundw = trigger.worldgun.worldgundw; + offset = origin_offset[2]; + trigger.worldgun rotateto( self.angles + angles_offset + vectorscale( ( 0, 1, 0 ), 90.0 ), 0.35, 0, 0 ); + offsetdw = vectorscale( ( 1, 1, 1 ), 3.0 ); - if ( isdefined( trigger.worldgun.worldgundw ) ) - worldgundw rotateto( self.angles + angles_offset + vectorscale( ( 0, 1, 0 ), 90.0 ), 0.35, 0, 0 ); + if ( isdefined( trigger.worldgun.worldgundw ) ) + worldgundw rotateto( self.angles + angles_offset + vectorscale( ( 0, 1, 0 ), 90.0 ), 0.35, 0, 0 ); - elapsed_time_counter = 0; + elapsed_time_counter = 0; - while ( isdefined( worldgun ) && elapsed_time_counter < 0.5 ) - { - worldgun.origin = ( worldgun.origin[0], worldgun.origin[1], pap_machine.origin[2] + offset ); + while ( isdefined( worldgun ) && elapsed_time_counter < 0.5 ) + { + worldgun.origin = ( worldgun.origin[0], worldgun.origin[1], pap_machine.origin[2] + offset ); - if ( isdefined( worldgundw ) ) - worldgundw.origin = ( worldgundw.origin[0], worldgundw.origin[1], pap_machine.origin[2] + offset + offsetdw[2] ); + if ( isdefined( worldgundw ) ) + worldgundw.origin = ( worldgundw.origin[0], worldgundw.origin[1], pap_machine.origin[2] + offset + offsetdw[2] ); - elapsed_time_counter += 0.05; - wait 0.05; - } + elapsed_time_counter += 0.05; + wait 0.05; + } - move_vec = ( self.origin + origin_offset - worldgun.origin ) * 0.05 / 0.5; - elapsed_time_counter = 0; + move_vec = ( self.origin + origin_offset - worldgun.origin ) * 0.05 / 0.5; + elapsed_time_counter = 0; - while ( isdefined( worldgun ) && elapsed_time_counter < 0.5 ) - { - worldgun.origin = ( worldgun.origin[0] + move_vec[0], worldgun.origin[1] + move_vec[1], pap_machine.origin[2] + offset ); + while ( isdefined( worldgun ) && elapsed_time_counter < 0.5 ) + { + worldgun.origin = ( worldgun.origin[0] + move_vec[0], worldgun.origin[1] + move_vec[1], pap_machine.origin[2] + offset ); - if ( isdefined( worldgundw ) ) - worldgundw.origin = ( worldgundw.origin[0] + move_vec[0], worldgundw.origin[1] + move_vec[1], pap_machine.origin[2] + offset + offsetdw[2] ); + if ( isdefined( worldgundw ) ) + worldgundw.origin = ( worldgundw.origin[0] + move_vec[0], worldgundw.origin[1] + move_vec[1], pap_machine.origin[2] + offset + offsetdw[2] ); - elapsed_time_counter += 0.05; - wait 0.05; - } + elapsed_time_counter += 0.05; + wait 0.05; + } } squashed_death_init( kill_if_falling ) { - while ( true ) - { - self waittill( "trigger", who ); + while ( true ) + { + self waittill( "trigger", who ); - if ( !( isdefined( who.insta_killed ) && who.insta_killed ) ) - { - if ( isplayer( who ) ) - { - who thread elevator_black_screen_squash_check(); - who thread insta_kill_player( 1, kill_if_falling ); - } - else if ( isai( who ) ) - { - if ( is_true( who.in_the_ceiling ) || !is_true( who.completed_emerging_into_playable_area ) ) - continue; + if ( !( isdefined( who.insta_killed ) && who.insta_killed ) ) + { + if ( isplayer( who ) ) + { + who thread elevator_black_screen_squash_check(); + who thread insta_kill_player( 1, kill_if_falling ); + } + else if ( isai( who ) ) + { + if ( is_true( who.in_the_ceiling ) || !is_true( who.completed_emerging_into_playable_area ) ) + continue; - playfx( level._effect["zomb_gib"], who.origin ); + playfx( level._effect["zomb_gib"], who.origin ); - if ( isdefined( who.is_leaper ) && who.is_leaper ) - { - who maps\mp\zombies\_zm_ai_leaper::leaper_cleanup(); - who dodamage( who.health + 100, who.origin ); - } - else - { - who delete(); - } + if ( isdefined( who.is_leaper ) && who.is_leaper ) + { + who maps\mp\zombies\_zm_ai_leaper::leaper_cleanup(); + who dodamage( who.health + 100, who.origin ); + } + else + { + who delete(); + } - who.insta_killed = 1; - } - } - } + who.insta_killed = 1; + } + } + } } insta_kill_player( perks_can_respawn_player, kill_if_falling ) @@ -244,183 +244,183 @@ insta_kill_player( perks_can_respawn_player, kill_if_falling ) escape_pod() { - escape_pod = getent( "elevator_bldg1a_body", "targetname" ); - escape_pod setmovingplatformenabled( 1 ); - escape_pod escapeelevatoruseanimtree(); - escape_pod_trigger = getent( "escape_pod_trigger", "targetname" ); - escape_pod.is_elevator = 1; - escape_pod._post_host_migration_thread = maps\mp\zm_highrise_elevators::escape_pod_host_migration_respawn_check; + escape_pod = getent( "elevator_bldg1a_body", "targetname" ); + escape_pod setmovingplatformenabled( 1 ); + escape_pod escapeelevatoruseanimtree(); + escape_pod_trigger = getent( "escape_pod_trigger", "targetname" ); + escape_pod.is_elevator = 1; + escape_pod._post_host_migration_thread = maps\mp\zm_highrise_elevators::escape_pod_host_migration_respawn_check; - if ( !isdefined( escape_pod_trigger ) ) - return; + if ( !isdefined( escape_pod_trigger ) ) + return; - escape_pod.home_origin = escape_pod.origin; - escape_pod.link_start = []; - escape_pod.link_end = []; - escape_pod_blocker_door = getent( "elevator_bldg1a_body_door_clip", "targetname" ); - number_of_times_used = 0; - used_at_least_once = 0; - escape_pod setanim( level.escape_elevator_1_state ); - escape_pod setclientfield( "clientfield_escape_pod_light_fx", 1 ); - escape_pod thread escape_pod_state_run(); - escape_pod_trigger thread escape_pod_walk_on_off( escape_pod ); + escape_pod.home_origin = escape_pod.origin; + escape_pod.link_start = []; + escape_pod.link_end = []; + escape_pod_blocker_door = getent( "elevator_bldg1a_body_door_clip", "targetname" ); + number_of_times_used = 0; + used_at_least_once = 0; + escape_pod setanim( level.escape_elevator_1_state ); + escape_pod setclientfield( "clientfield_escape_pod_light_fx", 1 ); + escape_pod thread escape_pod_state_run(); + escape_pod_trigger thread escape_pod_walk_on_off( escape_pod ); - while ( true ) - { - escape_pod setanim( level.escape_elevator_idle ); + while ( true ) + { + escape_pod setanim( level.escape_elevator_idle ); - if ( isdefined( escape_pod_blocker_door ) ) - { - escape_pod escape_pod_linknodes( "escape_pod_door_l_node" ); - escape_pod escape_pod_linknodes( "escape_pod_door_r_node" ); - escape_pod_blocker_door unlink(); - escape_pod_blocker_door thread trigger_off(); - } + if ( isdefined( escape_pod_blocker_door ) ) + { + escape_pod escape_pod_linknodes( "escape_pod_door_l_node" ); + escape_pod escape_pod_linknodes( "escape_pod_door_r_node" ); + escape_pod_blocker_door unlink(); + escape_pod_blocker_door thread trigger_off(); + } - if ( is_true( used_at_least_once ) ) - wait 3; + if ( is_true( used_at_least_once ) ) + wait 3; - level thread escape_pod_wait_for_players_inside( escape_pod, escape_pod_trigger ); + level thread escape_pod_wait_for_players_inside( escape_pod, escape_pod_trigger ); - flag_set( "escape_pod_needs_reset" ); + flag_set( "escape_pod_needs_reset" ); - level waittill( "reset_escape_pod" ); + level waittill( "reset_escape_pod" ); - flag_clear( "escape_pod_needs_reset" ); + flag_clear( "escape_pod_needs_reset" ); - level notify( "escape_pod_falling_begin" ); + level notify( "escape_pod_falling_begin" ); - players_in_escape_pod = escape_pod_trigger escape_pod_get_all_alive_players_inside(); - foreach ( player in players_in_escape_pod ) - { - player.riding_escape_pod = 1; - player allowjump( 0 ); - } + players_in_escape_pod = escape_pod_trigger escape_pod_get_all_alive_players_inside(); + foreach ( player in players_in_escape_pod ) + { + player.riding_escape_pod = 1; + player allowjump( 0 ); + } - if ( isdefined( escape_pod_blocker_door ) ) - { - escape_pod_blocker_door trigger_on(); - escape_pod_blocker_door linkto( escape_pod ); - escape_pod escape_pod_unlinknodes( "escape_pod_door_l_node" ); - escape_pod escape_pod_unlinknodes( "escape_pod_door_r_node" ); - } + if ( isdefined( escape_pod_blocker_door ) ) + { + escape_pod_blocker_door trigger_on(); + escape_pod_blocker_door linkto( escape_pod ); + escape_pod escape_pod_unlinknodes( "escape_pod_door_l_node" ); + escape_pod escape_pod_unlinknodes( "escape_pod_door_r_node" ); + } - escape_pod.escape_pod_state = 5; - escape_pod thread escape_pod_shake(); - wait( getanimlength( level.escape_elevator_5_state ) - 0.05 ); - escape_pod setanim( level.escape_elevator_drop ); - escape_pod setclientfield( "clientfield_escape_pod_light_fx", 0 ); - escape_pod setclientfield( "clientfield_escape_pod_sparks_fx", 1 ); - escape_pod thread escape_pod_move(); - escape_pod thread escape_pod_rotate(); + escape_pod.escape_pod_state = 5; + escape_pod thread escape_pod_shake(); + wait( getanimlength( level.escape_elevator_5_state ) - 0.05 ); + escape_pod setanim( level.escape_elevator_drop ); + escape_pod setclientfield( "clientfield_escape_pod_light_fx", 0 ); + escape_pod setclientfield( "clientfield_escape_pod_sparks_fx", 1 ); + escape_pod thread escape_pod_move(); + escape_pod thread escape_pod_rotate(); - escape_pod waittill( "reached_destination" ); + escape_pod waittill( "reached_destination" ); - number_of_times_used++; - escape_pod thread impact_animate(); + number_of_times_used++; + escape_pod thread impact_animate(); - if ( number_of_times_used == 1 ) - { - level.escape_elevator_idle = level.escape_elevator_damage_idle_state; - level.escape_elevator_drop = level.escape_elevator_damage_drop_state; - level.escape_elevator_impact = level.escape_elevator_damage_impact_state; - } + if ( number_of_times_used == 1 ) + { + level.escape_elevator_idle = level.escape_elevator_damage_idle_state; + level.escape_elevator_drop = level.escape_elevator_damage_drop_state; + level.escape_elevator_impact = level.escape_elevator_damage_impact_state; + } - level notify( "escape_pod_falling_complete" ); + level notify( "escape_pod_falling_complete" ); - if ( isdefined( escape_pod_blocker_door ) ) - { - escape_pod_blocker_door unlink(); - escape_pod_blocker_door trigger_off(); - escape_pod escape_pod_linknodes( "escape_pod_door_l_node" ); - escape_pod escape_pod_linknodes( "escape_pod_door_r_node" ); - } + if ( isdefined( escape_pod_blocker_door ) ) + { + escape_pod_blocker_door unlink(); + escape_pod_blocker_door trigger_off(); + escape_pod escape_pod_linknodes( "escape_pod_door_l_node" ); + escape_pod escape_pod_linknodes( "escape_pod_door_r_node" ); + } - escape_pod setclientfield( "clientfield_escape_pod_sparks_fx", 0 ); - escape_pod setclientfield( "clientfield_escape_pod_impact_fx", 1 ); - escape_pod setclientfield( "clientfield_escape_pod_light_fx", 1 ); - flag_set( "escape_pod_needs_reset" ); + escape_pod setclientfield( "clientfield_escape_pod_sparks_fx", 0 ); + escape_pod setclientfield( "clientfield_escape_pod_impact_fx", 1 ); + escape_pod setclientfield( "clientfield_escape_pod_light_fx", 1 ); + flag_set( "escape_pod_needs_reset" ); - level waittill( "reset_escape_pod" ); + level waittill( "reset_escape_pod" ); - flag_clear( "escape_pod_needs_reset" ); - escape_pod setclientfield( "clientfield_escape_pod_impact_fx", 0 ); - escape_pod thread escape_pod_breaking_rotate(); - wait 6; - escape_pod playsound( "zmb_elevator_run_start" ); - escape_pod playloopsound( "zmb_elevator_run", 1 ); - level notify( "escape_pod_moving_back_to_start_position" ); + flag_clear( "escape_pod_needs_reset" ); + escape_pod setclientfield( "clientfield_escape_pod_impact_fx", 0 ); + escape_pod thread escape_pod_breaking_rotate(); + wait 6; + escape_pod playsound( "zmb_elevator_run_start" ); + escape_pod playloopsound( "zmb_elevator_run", 1 ); + level notify( "escape_pod_moving_back_to_start_position" ); - if ( isdefined( escape_pod_blocker_door ) ) - { - escape_pod_blocker_door trigger_on(); - escape_pod_blocker_door linkto( escape_pod ); - escape_pod escape_pod_unlinknodes( "escape_pod_door_l_node" ); - escape_pod escape_pod_unlinknodes( "escape_pod_door_r_node" ); - } + if ( isdefined( escape_pod_blocker_door ) ) + { + escape_pod_blocker_door trigger_on(); + escape_pod_blocker_door linkto( escape_pod ); + escape_pod escape_pod_unlinknodes( "escape_pod_door_l_node" ); + escape_pod escape_pod_unlinknodes( "escape_pod_door_r_node" ); + } - escape_pod moveto( escape_pod.home_origin, 3, 0.1, 0.1 ); + escape_pod moveto( escape_pod.home_origin, 3, 0.1, 0.1 ); - escape_pod waittill( "movedone" ); + escape_pod waittill( "movedone" ); - escape_pod stoploopsound( 1 ); - escape_pod playsound( "zmb_esc_pod_crash" ); - escape_pod playsound( "zmb_elevator_run_stop" ); - escape_pod playsound( "zmb_elevator_ding" ); - escape_pod thread reset_impact_animate(); - used_at_least_once = 1; - } + escape_pod stoploopsound( 1 ); + escape_pod playsound( "zmb_esc_pod_crash" ); + escape_pod playsound( "zmb_elevator_run_stop" ); + escape_pod playsound( "zmb_elevator_ding" ); + escape_pod thread reset_impact_animate(); + used_at_least_once = 1; + } } escape_pod_wait_for_players_inside( escape_pod, escape_pod_trigger ) { - level endon( "reset_escape_pod" ); + level endon( "reset_escape_pod" ); - while ( true ) - { - players_in_escape_pod = escape_pod_trigger escape_pod_get_all_alive_players_inside(); + while ( true ) + { + players_in_escape_pod = escape_pod_trigger escape_pod_get_all_alive_players_inside(); - if ( players_in_escape_pod.size == 0 ) - { - escape_pod.escape_pod_state = 1; - wait 0.05; - continue; - } + if ( players_in_escape_pod.size == 0 ) + { + escape_pod.escape_pod_state = 1; + wait 0.05; + continue; + } - players_in_escape_pod = escape_pod_trigger escape_pod_get_all_alive_players_inside(); + players_in_escape_pod = escape_pod_trigger escape_pod_get_all_alive_players_inside(); - if ( players_in_escape_pod.size > 0 ) - { - escape_pod.escape_pod_state = 2; + if ( players_in_escape_pod.size > 0 ) + { + escape_pod.escape_pod_state = 2; - escape_pod thread escape_pod_tell_fx(); - wait 3; - players_in_escape_pod = escape_pod_trigger escape_pod_get_all_alive_players_inside(); + escape_pod thread escape_pod_tell_fx(); + wait 3; + players_in_escape_pod = escape_pod_trigger escape_pod_get_all_alive_players_inside(); - if ( players_in_escape_pod.size > 0 ) - break; - } + if ( players_in_escape_pod.size > 0 ) + break; + } - wait 0.05; - } + wait 0.05; + } - level notify( "reset_escape_pod" ); + level notify( "reset_escape_pod" ); } escape_pod_get_all_alive_players_inside() { - players = get_players(); - players_in_escape_pod = []; + players = get_players(); + players_in_escape_pod = []; - foreach ( player in players ) - { - if ( player.sessionstate != "spectator" ) - { - if ( player istouching( self ) ) - players_in_escape_pod[players_in_escape_pod.size] = player; - } - } + foreach ( player in players ) + { + if ( player.sessionstate != "spectator" ) + { + if ( player istouching( self ) ) + players_in_escape_pod[players_in_escape_pod.size] = player; + } + } - return players_in_escape_pod; + return players_in_escape_pod; } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_highrise_distance_tracking.gsc b/scripts/zm/replaced/zm_highrise_distance_tracking.gsc index 80201902..b85e1e13 100644 --- a/scripts/zm/replaced/zm_highrise_distance_tracking.gsc +++ b/scripts/zm/replaced/zm_highrise_distance_tracking.gsc @@ -7,135 +7,135 @@ zombie_tracking_init() { - level.zombie_respawned_health = []; + level.zombie_respawned_health = []; - if ( !isdefined( level.zombie_tracking_dist ) ) - level.zombie_tracking_dist = 1000; + if ( !isdefined( level.zombie_tracking_dist ) ) + level.zombie_tracking_dist = 1000; - if ( !isdefined( level.zombie_tracking_high ) ) - level.zombie_tracking_high = 500; + if ( !isdefined( level.zombie_tracking_high ) ) + level.zombie_tracking_high = 500; - if ( !isdefined( level.zombie_tracking_wait ) ) - level.zombie_tracking_wait = 10; + if ( !isdefined( level.zombie_tracking_wait ) ) + level.zombie_tracking_wait = 10; - building_trigs = getentarray( "zombie_fell_off", "targetname" ); + building_trigs = getentarray( "zombie_fell_off", "targetname" ); - if ( isdefined( building_trigs ) ) - array_thread( building_trigs, ::zombies_off_building ); + if ( isdefined( building_trigs ) ) + array_thread( building_trigs, ::zombies_off_building ); - level.distance_tracker_aggressive_distance = 500; - level.distance_tracker_aggressive_height = 200; + level.distance_tracker_aggressive_distance = 500; + level.distance_tracker_aggressive_height = 200; - while ( true ) - { - zombies = get_round_enemy_array(); + while ( true ) + { + zombies = get_round_enemy_array(); - if ( !isdefined( zombies ) || isdefined( level.ignore_distance_tracking ) && level.ignore_distance_tracking ) - { - wait( level.zombie_tracking_wait ); - continue; - } - else - { - for ( i = 0; i < zombies.size; i++ ) - { - if ( isdefined( zombies[i] ) && !( isdefined( zombies[i].ignore_distance_tracking ) && zombies[i].ignore_distance_tracking ) ) - zombies[i] thread delete_zombie_noone_looking( level.zombie_tracking_dist, level.zombie_tracking_high ); - } - } + if ( !isdefined( zombies ) || isdefined( level.ignore_distance_tracking ) && level.ignore_distance_tracking ) + { + wait( level.zombie_tracking_wait ); + continue; + } + else + { + for ( i = 0; i < zombies.size; i++ ) + { + if ( isdefined( zombies[i] ) && !( isdefined( zombies[i].ignore_distance_tracking ) && zombies[i].ignore_distance_tracking ) ) + zombies[i] thread delete_zombie_noone_looking( level.zombie_tracking_dist, level.zombie_tracking_high ); + } + } - wait( level.zombie_tracking_wait ); - } + wait( level.zombie_tracking_wait ); + } } zombies_off_building() { - while ( true ) - { - self waittill( "trigger", who ); + while ( true ) + { + self waittill( "trigger", who ); - if ( !isplayer( who ) && !( isdefined( who.is_leaper ) && who.is_leaper ) ) - { - if ( !( isdefined( who.exclude_distance_cleanup_adding_to_total ) && who.exclude_distance_cleanup_adding_to_total ) && !( isdefined( who.is_leaper ) && who.is_leaper ) ) - { - level.zombie_total++; + if ( !isplayer( who ) && !( isdefined( who.is_leaper ) && who.is_leaper ) ) + { + if ( !( isdefined( who.exclude_distance_cleanup_adding_to_total ) && who.exclude_distance_cleanup_adding_to_total ) && !( isdefined( who.is_leaper ) && who.is_leaper ) ) + { + level.zombie_total++; - if ( who.health < level.zombie_health ) - level.zombie_respawned_health[level.zombie_respawned_health.size] = who.health; - } + if ( who.health < level.zombie_health ) + level.zombie_respawned_health[level.zombie_respawned_health.size] = who.health; + } - who maps\mp\zombies\_zm_spawner::reset_attack_spot(); - who notify( "zombie_delete" ); - who dodamage( who.health + 666, who.origin, who ); - recalc_zombie_array(); - } + who maps\mp\zombies\_zm_spawner::reset_attack_spot(); + who notify( "zombie_delete" ); + who dodamage( who.health + 666, who.origin, who ); + recalc_zombie_array(); + } - wait 0.1; - } + wait 0.1; + } } delete_zombie_noone_looking( how_close, how_high ) { - self endon( "death" ); + self endon( "death" ); - if ( !isdefined( how_close ) ) - how_close = 1000; + if ( !isdefined( how_close ) ) + how_close = 1000; - if ( !isdefined( how_high ) ) - how_high = 500; + if ( !isdefined( how_high ) ) + how_high = 500; - distance_squared_check = how_close * how_close; - height_squared_check = how_high * how_high; - too_far_dist = distance_squared_check * 3; + distance_squared_check = how_close * how_close; + height_squared_check = how_high * how_high; + too_far_dist = distance_squared_check * 3; - if ( isdefined( level.zombie_tracking_too_far_dist ) ) - too_far_dist = level.zombie_tracking_too_far_dist * 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; - self.inview = 0; - self.player_close = 0; - players = get_players(); + self.inview = 0; + self.player_close = 0; + players = get_players(); - for ( i = 0; i < players.size; i++ ) - { - if ( players[i].sessionstate == "spectator" ) - continue; + for ( i = 0; i < players.size; i++ ) + { + if ( players[i].sessionstate == "spectator" ) + continue; - if ( isdefined( level.only_track_targeted_players ) ) - { - if ( !isdefined( self.favoriteenemy ) || self.favoriteenemy != players[i] ) - continue; - } + if ( isdefined( level.only_track_targeted_players ) ) + { + if ( !isdefined( self.favoriteenemy ) || self.favoriteenemy != players[i] ) + 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 ) - self.inview++; + if ( can_be_seen && distancesquared( self.origin, players[i].origin ) < too_far_dist ) + self.inview++; - if ( distancesquared( self.origin, players[i].origin ) < distance_squared_check && abs( self.origin[2] - players[i].origin[2] ) < how_high ) - self.player_close++; - } + if ( distancesquared( self.origin, players[i].origin ) < distance_squared_check && abs( self.origin[2] - players[i].origin[2] ) < how_high ) + self.player_close++; + } - wait 0.1; + wait 0.1; - if ( self.inview == 0 && self.player_close == 0 ) - { - if ( !isdefined( self.animname ) || isdefined( self.animname ) && self.animname != "zombie" ) - return; + if ( self.inview == 0 && self.player_close == 0 ) + { + if ( !isdefined( self.animname ) || isdefined( self.animname ) && self.animname != "zombie" ) + return; - if ( isdefined( self.electrified ) && self.electrified == 1 ) - return; + if ( isdefined( self.electrified ) && self.electrified == 1 ) + return; - if ( !( isdefined( self.exclude_distance_cleanup_adding_to_total ) && self.exclude_distance_cleanup_adding_to_total ) && !( isdefined( self.isscreecher ) && self.isscreecher ) ) - { - level.zombie_total++; + if ( !( isdefined( self.exclude_distance_cleanup_adding_to_total ) && self.exclude_distance_cleanup_adding_to_total ) && !( isdefined( self.isscreecher ) && self.isscreecher ) ) + { + level.zombie_total++; - if ( self.health < level.zombie_health ) - level.zombie_respawned_health[level.zombie_respawned_health.size] = self.health; - } + if ( self.health < level.zombie_health ) + level.zombie_respawned_health[level.zombie_respawned_health.size] = self.health; + } - self maps\mp\zombies\_zm_spawner::reset_attack_spot(); - self notify( "zombie_delete" ); - self delete(); - recalc_zombie_array(); - } + self maps\mp\zombies\_zm_spawner::reset_attack_spot(); + self notify( "zombie_delete" ); + self delete(); + recalc_zombie_array(); + } } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_highrise_elevators.gsc b/scripts/zm/replaced/zm_highrise_elevators.gsc index 48ef00fd..7a44c764 100644 --- a/scripts/zm/replaced/zm_highrise_elevators.gsc +++ b/scripts/zm/replaced/zm_highrise_elevators.gsc @@ -11,520 +11,520 @@ init_elevator_perks() { - level.elevator_perks = []; - level.elevator_perks_building = []; - level.elevator_perks_building["green"] = []; - level.elevator_perks_building["blue"] = []; + level.elevator_perks = []; + level.elevator_perks_building = []; + level.elevator_perks_building["green"] = []; + level.elevator_perks_building["blue"] = []; - level.elevator_perks_building["green"][0] = spawnstruct(); - level.elevator_perks_building["green"][0].model = "zombie_vending_revive"; - level.elevator_perks_building["green"][0].script_noteworthy = "specialty_quickrevive"; - level.elevator_perks_building["green"][0].turn_on_notify = "revive_on"; - level.elevator_perks_building["green"][1] = spawnstruct(); - level.elevator_perks_building["green"][1].model = "p6_zm_vending_chugabud"; - level.elevator_perks_building["green"][1].script_noteworthy = "specialty_finalstand"; - level.elevator_perks_building["green"][1].turn_on_notify = "chugabud_on"; - level.elevator_perks_building["green"][2] = spawnstruct(); - level.elevator_perks_building["green"][2].model = "zombie_vending_sleight"; - level.elevator_perks_building["green"][2].script_noteworthy = "specialty_fastreload"; - level.elevator_perks_building["green"][2].turn_on_notify = "sleight_on"; - level.elevator_perks_building["blue"][0] = spawnstruct(); - level.elevator_perks_building["blue"][0].model = "zombie_vending_three_gun"; - level.elevator_perks_building["blue"][0].script_noteworthy = "specialty_additionalprimaryweapon"; - level.elevator_perks_building["blue"][0].turn_on_notify = "specialty_additionalprimaryweapon_power_on"; - level.elevator_perks_building["blue"][1] = spawnstruct(); - level.elevator_perks_building["blue"][1].model = "zombie_vending_jugg"; - level.elevator_perks_building["blue"][1].script_noteworthy = "specialty_armorvest"; - level.elevator_perks_building["blue"][1].turn_on_notify = "juggernog_on"; - level.elevator_perks_building["blue"][2] = spawnstruct(); - level.elevator_perks_building["blue"][2].model = "zombie_vending_doubletap2"; - level.elevator_perks_building["blue"][2].script_noteworthy = "specialty_rof"; - level.elevator_perks_building["blue"][2].turn_on_notify = "doubletap_on"; - level.elevator_perks_building["blue"][3] = spawnstruct(); - level.elevator_perks_building["blue"][3].model = "p6_anim_zm_buildable_pap"; - level.elevator_perks_building["blue"][3].script_noteworthy = "specialty_weapupgrade"; - level.elevator_perks_building["blue"][3].turn_on_notify = "Pack_A_Punch_on"; - players_expected = getnumexpectedplayers(); - level.override_perk_targetname = "zm_perk_machine_override"; - level.elevator_perks_building["green"] = array_randomize( level.elevator_perks_building["green"] ); - level.elevator_perks_building["blue"] = array_randomize( level.elevator_perks_building["blue"] ); - level.elevator_perks = arraycombine( level.elevator_perks_building["green"], level.elevator_perks_building["blue"], 0, 0 ); - random_perk_structs = []; - perk_structs = getstructarray( "zm_random_machine", "script_noteworthy" ); + level.elevator_perks_building["green"][0] = spawnstruct(); + level.elevator_perks_building["green"][0].model = "zombie_vending_revive"; + level.elevator_perks_building["green"][0].script_noteworthy = "specialty_quickrevive"; + level.elevator_perks_building["green"][0].turn_on_notify = "revive_on"; + level.elevator_perks_building["green"][1] = spawnstruct(); + level.elevator_perks_building["green"][1].model = "p6_zm_vending_chugabud"; + level.elevator_perks_building["green"][1].script_noteworthy = "specialty_finalstand"; + level.elevator_perks_building["green"][1].turn_on_notify = "chugabud_on"; + level.elevator_perks_building["green"][2] = spawnstruct(); + level.elevator_perks_building["green"][2].model = "zombie_vending_sleight"; + level.elevator_perks_building["green"][2].script_noteworthy = "specialty_fastreload"; + level.elevator_perks_building["green"][2].turn_on_notify = "sleight_on"; + level.elevator_perks_building["blue"][0] = spawnstruct(); + level.elevator_perks_building["blue"][0].model = "zombie_vending_three_gun"; + level.elevator_perks_building["blue"][0].script_noteworthy = "specialty_additionalprimaryweapon"; + level.elevator_perks_building["blue"][0].turn_on_notify = "specialty_additionalprimaryweapon_power_on"; + level.elevator_perks_building["blue"][1] = spawnstruct(); + level.elevator_perks_building["blue"][1].model = "zombie_vending_jugg"; + level.elevator_perks_building["blue"][1].script_noteworthy = "specialty_armorvest"; + level.elevator_perks_building["blue"][1].turn_on_notify = "juggernog_on"; + level.elevator_perks_building["blue"][2] = spawnstruct(); + level.elevator_perks_building["blue"][2].model = "zombie_vending_doubletap2"; + level.elevator_perks_building["blue"][2].script_noteworthy = "specialty_rof"; + level.elevator_perks_building["blue"][2].turn_on_notify = "doubletap_on"; + level.elevator_perks_building["blue"][3] = spawnstruct(); + level.elevator_perks_building["blue"][3].model = "p6_anim_zm_buildable_pap"; + level.elevator_perks_building["blue"][3].script_noteworthy = "specialty_weapupgrade"; + level.elevator_perks_building["blue"][3].turn_on_notify = "Pack_A_Punch_on"; + players_expected = getnumexpectedplayers(); + level.override_perk_targetname = "zm_perk_machine_override"; + level.elevator_perks_building["green"] = array_randomize( level.elevator_perks_building["green"] ); + level.elevator_perks_building["blue"] = array_randomize( level.elevator_perks_building["blue"] ); + level.elevator_perks = arraycombine( level.elevator_perks_building["green"], level.elevator_perks_building["blue"], 0, 0 ); + random_perk_structs = []; + perk_structs = getstructarray( "zm_random_machine", "script_noteworthy" ); - for ( i = 0; i < perk_structs.size; i++ ) - { - random_perk_structs[i] = getstruct( perk_structs[i].target, "targetname" ); - random_perk_structs[i].script_parameters = perk_structs[i].script_parameters; - random_perk_structs[i].script_linkent = getent( "elevator_" + perk_structs[i].script_parameters + "_body", "targetname" ); - } + for ( i = 0; i < perk_structs.size; i++ ) + { + random_perk_structs[i] = getstruct( perk_structs[i].target, "targetname" ); + random_perk_structs[i].script_parameters = perk_structs[i].script_parameters; + random_perk_structs[i].script_linkent = getent( "elevator_" + perk_structs[i].script_parameters + "_body", "targetname" ); + } - green_structs = []; - blue_structs = []; + green_structs = []; + blue_structs = []; - foreach ( perk_struct in random_perk_structs ) - { - if ( isdefined( perk_struct.script_parameters ) ) - { - if ( issubstr( perk_struct.script_parameters, "bldg1" ) ) - { - green_structs[green_structs.size] = perk_struct; - continue; - } + foreach ( perk_struct in random_perk_structs ) + { + if ( isdefined( perk_struct.script_parameters ) ) + { + if ( issubstr( perk_struct.script_parameters, "bldg1" ) ) + { + green_structs[green_structs.size] = perk_struct; + continue; + } - blue_structs[blue_structs.size] = perk_struct; - } - } + blue_structs[blue_structs.size] = perk_struct; + } + } - green_structs = array_randomize( green_structs ); - blue_structs = array_randomize( blue_structs ); - level.random_perk_structs = green_structs; - level.random_perk_structs = arraycombine( level.random_perk_structs, blue_structs, 0, 0 ); + green_structs = array_randomize( green_structs ); + blue_structs = array_randomize( blue_structs ); + level.random_perk_structs = green_structs; + level.random_perk_structs = arraycombine( level.random_perk_structs, blue_structs, 0, 0 ); - for ( i = 0; i < level.elevator_perks.size; i++ ) - { - if ( !isdefined( level.random_perk_structs[i] ) ) - continue; + for ( i = 0; i < level.elevator_perks.size; i++ ) + { + if ( !isdefined( level.random_perk_structs[i] ) ) + continue; - level.random_perk_structs[i].targetname = "zm_perk_machine_override"; - level.random_perk_structs[i].model = level.elevator_perks[i].model; - level.random_perk_structs[i].script_noteworthy = level.elevator_perks[i].script_noteworthy; - level.random_perk_structs[i].turn_on_notify = level.elevator_perks[i].turn_on_notify; + level.random_perk_structs[i].targetname = "zm_perk_machine_override"; + level.random_perk_structs[i].model = level.elevator_perks[i].model; + level.random_perk_structs[i].script_noteworthy = level.elevator_perks[i].script_noteworthy; + level.random_perk_structs[i].turn_on_notify = level.elevator_perks[i].turn_on_notify; - if ( !isdefined( level.struct_class_names["targetname"]["zm_perk_machine_override"] ) ) - level.struct_class_names["targetname"]["zm_perk_machine_override"] = []; + if ( !isdefined( level.struct_class_names["targetname"]["zm_perk_machine_override"] ) ) + level.struct_class_names["targetname"]["zm_perk_machine_override"] = []; - level.struct_class_names["targetname"]["zm_perk_machine_override"][level.struct_class_names["targetname"]["zm_perk_machine_override"].size] = level.random_perk_structs[i]; - } + level.struct_class_names["targetname"]["zm_perk_machine_override"][level.struct_class_names["targetname"]["zm_perk_machine_override"].size] = level.random_perk_structs[i]; + } } elevator_think( elevator ) { - current_floor = elevator.body.current_location; - delaybeforeleaving = 5; - skipinitialwait = 0; - speed = 100; - minwait = 5; - maxwait = 20; - flag_wait( "perks_ready" ); + current_floor = elevator.body.current_location; + delaybeforeleaving = 5; + skipinitialwait = 0; + speed = 100; + minwait = 5; + maxwait = 20; + flag_wait( "perks_ready" ); - if ( isdefined( elevator.body.force_starting_floor ) ) - { - elevator.body.current_level = "" + elevator.body.force_starting_floor; - elevator.body.origin = elevator.floors[elevator.body.current_level].origin; + if ( isdefined( elevator.body.force_starting_floor ) ) + { + elevator.body.current_level = "" + elevator.body.force_starting_floor; + elevator.body.origin = elevator.floors[elevator.body.current_level].origin; - if ( isdefined( elevator.body.force_starting_origin_offset ) ) - elevator.body.origin += ( 0, 0, elevator.body.force_starting_origin_offset ); - } + if ( isdefined( elevator.body.force_starting_origin_offset ) ) + elevator.body.origin += ( 0, 0, elevator.body.force_starting_origin_offset ); + } - elevator.body.can_move = 1; - elevator elevator_set_moving( 0 ); - elevator elevator_enable_paths( elevator.body.current_level ); + elevator.body.can_move = 1; + elevator elevator_set_moving( 0 ); + elevator elevator_enable_paths( elevator.body.current_level ); - flag_wait( "power_on" ); + flag_wait( "power_on" ); - elevator.body perkelevatordoor( 1 ); - next = undefined; + elevator.body perkelevatordoor( 1 ); + next = undefined; - while ( true ) - { - start_location = 0; + while ( true ) + { + start_location = 0; - if ( isdefined( elevator.body.force_starting_floor ) ) - skipinitialwait = 1; + if ( isdefined( elevator.body.force_starting_floor ) ) + skipinitialwait = 1; - elevator.body.departing = 1; + elevator.body.departing = 1; - if ( !is_true( elevator.body.lock_doors ) ) - elevator.body setanim( level.perk_elevators_anims[elevator.body.perk_type][1] ); + if ( !is_true( elevator.body.lock_doors ) ) + elevator.body setanim( level.perk_elevators_anims[elevator.body.perk_type][1] ); - predict_floor( elevator, next, speed ); + predict_floor( elevator, next, speed ); - if ( !is_true( skipinitialwait ) ) - { - elevator_initial_wait( elevator, minwait, maxwait, delaybeforeleaving ); + if ( !is_true( skipinitialwait ) ) + { + elevator_initial_wait( elevator, minwait, maxwait, delaybeforeleaving ); - if ( !is_true( elevator.body.lock_doors ) ) - elevator.body setanim( level.perk_elevators_anims[elevator.body.perk_type][1] ); - } + if ( !is_true( elevator.body.lock_doors ) ) + elevator.body setanim( level.perk_elevators_anims[elevator.body.perk_type][1] ); + } - if ( isdefined( elevator.body.force_starting_floor ) ) - skipinitialwait = 1; + if ( isdefined( elevator.body.force_starting_floor ) ) + skipinitialwait = 1; - next = elevator_next_floor( elevator, next, 0 ); + next = elevator_next_floor( elevator, next, 0 ); - if ( isdefined( elevator.floors["" + ( next + 1 )] ) ) - elevator.body.next_level = "" + ( next + 1 ); - else - { - start_location = 1; - elevator.body.next_level = "0"; - } + if ( isdefined( elevator.floors["" + ( next + 1 )] ) ) + elevator.body.next_level = "" + ( next + 1 ); + else + { + start_location = 1; + elevator.body.next_level = "0"; + } - floor_stop = elevator.floors[elevator.body.next_level]; - floor_goal = undefined; - cur_level_start_pos = elevator.floors[elevator.body.next_level].starting_position; - start_level_start_pos = elevator.floors[elevator.body.starting_floor].starting_position; + floor_stop = elevator.floors[elevator.body.next_level]; + floor_goal = undefined; + cur_level_start_pos = elevator.floors[elevator.body.next_level].starting_position; + start_level_start_pos = elevator.floors[elevator.body.starting_floor].starting_position; - if ( elevator.body.next_level == elevator.body.starting_floor || isdefined( cur_level_start_pos ) && isdefined( start_level_start_pos ) && cur_level_start_pos == start_level_start_pos ) - floor_goal = cur_level_start_pos; - else - floor_goal = floor_stop.origin; + if ( elevator.body.next_level == elevator.body.starting_floor || isdefined( cur_level_start_pos ) && isdefined( start_level_start_pos ) && cur_level_start_pos == start_level_start_pos ) + floor_goal = cur_level_start_pos; + else + floor_goal = floor_stop.origin; - dist = distance( elevator.body.origin, floor_goal ); - time = dist / speed; + dist = distance( elevator.body.origin, floor_goal ); + time = dist / speed; - if ( dist > 0 ) - { - if ( elevator.body.origin[2] > floor_goal[2] ) - { - elevator.dir = "_d"; - } - else - { - elevator.dir = "_u"; - } + if ( dist > 0 ) + { + if ( elevator.body.origin[2] > floor_goal[2] ) + { + elevator.dir = "_d"; + } + else + { + elevator.dir = "_u"; + } - clientnotify( elevator.name + elevator.dir ); - } + clientnotify( elevator.name + elevator.dir ); + } - if ( is_true( start_location ) ) - { - elevator.body thread squashed_death_alarm(); + if ( is_true( start_location ) ) + { + elevator.body thread squashed_death_alarm(); - if ( !skipinitialwait ) - { - elevator.body.start_location_wait = 1; + if ( !skipinitialwait ) + { + elevator.body.start_location_wait = 1; - elevator.body notify( "startwait" ); - event = elevator.body waittill_any_timeout( 3, "forcego" ); + elevator.body notify( "startwait" ); + event = elevator.body waittill_any_timeout( 3, "forcego" ); - elevator.body.start_location_wait = 0; + elevator.body.start_location_wait = 0; - if ( event == "forcego" ) - { - next = elevator_next_floor( elevator, next, 0 ); + if ( event == "forcego" ) + { + next = elevator_next_floor( elevator, next, 0 ); - if ( isdefined( elevator.floors["" + ( next + 1 )] ) ) - elevator.body.next_level = "" + ( next + 1 ); - else - { - start_location = 1; - elevator.body.next_level = "0"; - } + if ( isdefined( elevator.floors["" + ( next + 1 )] ) ) + elevator.body.next_level = "" + ( next + 1 ); + else + { + start_location = 1; + elevator.body.next_level = "0"; + } - floor_stop = elevator.floors[elevator.body.next_level]; - floor_goal = undefined; - cur_level_start_pos = elevator.floors[elevator.body.next_level].starting_position; - start_level_start_pos = elevator.floors[elevator.body.starting_floor].starting_position; + floor_stop = elevator.floors[elevator.body.next_level]; + floor_goal = undefined; + cur_level_start_pos = elevator.floors[elevator.body.next_level].starting_position; + start_level_start_pos = elevator.floors[elevator.body.starting_floor].starting_position; - if ( elevator.body.next_level == elevator.body.starting_floor || isdefined( cur_level_start_pos ) && isdefined( start_level_start_pos ) && cur_level_start_pos == start_level_start_pos ) - floor_goal = cur_level_start_pos; - else - floor_goal = floor_stop.origin; + if ( elevator.body.next_level == elevator.body.starting_floor || isdefined( cur_level_start_pos ) && isdefined( start_level_start_pos ) && cur_level_start_pos == start_level_start_pos ) + floor_goal = cur_level_start_pos; + else + floor_goal = floor_stop.origin; - dist = distance( elevator.body.origin, floor_goal ); - time = dist / speed; + dist = distance( elevator.body.origin, floor_goal ); + time = dist / speed; - if ( dist > 0 ) - { - if ( elevator.body.origin[2] > floor_goal[2] ) - { - elevator.dir = "_d"; - } - else - { - elevator.dir = "_u"; - } + if ( dist > 0 ) + { + if ( elevator.body.origin[2] > floor_goal[2] ) + { + elevator.dir = "_d"; + } + else + { + elevator.dir = "_u"; + } - clientnotify( elevator.name + elevator.dir ); - } - } - } - } + clientnotify( elevator.name + elevator.dir ); + } + } + } + } - skipinitialwait = 0; - elevator.body.current_level = elevator.body.next_level; - elevator notify( "floor_changed" ); - elevator elevator_disable_paths( elevator.body.current_level ); - elevator.body.departing = 0; - elevator elevator_set_moving( 1 ); + skipinitialwait = 0; + elevator.body.current_level = elevator.body.next_level; + elevator notify( "floor_changed" ); + elevator elevator_disable_paths( elevator.body.current_level ); + elevator.body.departing = 0; + elevator elevator_set_moving( 1 ); - if ( dist > 0 ) - { - elevator.body moveto( floor_goal, time, time * 0.25, time * 0.25 ); + if ( dist > 0 ) + { + elevator.body moveto( floor_goal, time, time * 0.25, time * 0.25 ); - if ( isdefined( elevator.body.trig ) ) - elevator.body thread elev_clean_up_corpses(); + if ( isdefined( elevator.body.trig ) ) + elevator.body thread elev_clean_up_corpses(); - elevator.body thread elevator_move_sound(); - elevator.body waittill_any( "movedone", "forcego" ); - } + elevator.body thread elevator_move_sound(); + elevator.body waittill_any( "movedone", "forcego" ); + } - elevator elevator_set_moving( 0 ); - elevator elevator_enable_paths( elevator.body.current_level ); - } + elevator elevator_set_moving( 0 ); + elevator elevator_enable_paths( elevator.body.current_level ); + } } predict_floor( elevator, next, speed ) { - next = elevator_next_floor( elevator, next, 1 ); + next = elevator_next_floor( elevator, next, 1 ); - if ( isdefined( elevator.floors["" + ( next + 1 )] ) ) - elevator.body.next_level = "" + ( next + 1 ); - else - { - start_location = 1; - elevator.body.next_level = "0"; - } + if ( isdefined( elevator.floors["" + ( next + 1 )] ) ) + elevator.body.next_level = "" + ( next + 1 ); + else + { + start_location = 1; + elevator.body.next_level = "0"; + } - floor_stop = elevator.floors[elevator.body.next_level]; - floor_goal = undefined; - cur_level_start_pos = elevator.floors[elevator.body.next_level].starting_position; - start_level_start_pos = elevator.floors[elevator.body.starting_floor].starting_position; + floor_stop = elevator.floors[elevator.body.next_level]; + floor_goal = undefined; + cur_level_start_pos = elevator.floors[elevator.body.next_level].starting_position; + start_level_start_pos = elevator.floors[elevator.body.starting_floor].starting_position; - if ( elevator.body.next_level == elevator.body.starting_floor || isdefined( cur_level_start_pos ) && isdefined( start_level_start_pos ) && cur_level_start_pos == start_level_start_pos ) - floor_goal = cur_level_start_pos; - else - floor_goal = floor_stop.origin; + if ( elevator.body.next_level == elevator.body.starting_floor || isdefined( cur_level_start_pos ) && isdefined( start_level_start_pos ) && cur_level_start_pos == start_level_start_pos ) + floor_goal = cur_level_start_pos; + else + floor_goal = floor_stop.origin; - dist = distance( elevator.body.origin, floor_goal ); - time = dist / speed; + dist = distance( elevator.body.origin, floor_goal ); + time = dist / speed; - if ( dist > 0 ) - { - if ( elevator.body.origin[2] > floor_goal[2] ) - { - elevator.dir = "_d"; - } - else - { - elevator.dir = "_u"; - } + if ( dist > 0 ) + { + if ( elevator.body.origin[2] > floor_goal[2] ) + { + elevator.dir = "_d"; + } + else + { + elevator.dir = "_u"; + } - clientnotify( elevator.name + elevator.dir ); - } + clientnotify( elevator.name + elevator.dir ); + } } elevator_initial_wait( elevator, minwait, maxwait, delaybeforeleaving ) { - elevator.body endon( "forcego" ); - elevator.body waittill_any_or_timeout( randomintrange( minwait, maxwait ), "depart_early" ); + elevator.body endon( "forcego" ); + elevator.body waittill_any_or_timeout( randomintrange( minwait, maxwait ), "depart_early" ); - if ( !is_true( elevator.body.lock_doors ) && !is_true( elevator.body.elevator_stop ) ) - elevator.body setanim( level.perk_elevators_anims[elevator.body.perk_type][0] ); + if ( !is_true( elevator.body.lock_doors ) && !is_true( elevator.body.elevator_stop ) ) + elevator.body setanim( level.perk_elevators_anims[elevator.body.perk_type][0] ); - if ( !is_true( elevator.body.departing_early ) ) - wait( delaybeforeleaving ); + if ( !is_true( elevator.body.departing_early ) ) + wait( delaybeforeleaving ); - if ( elevator.body.perk_type == "specialty_weapupgrade" ) - { - while ( flag( "pack_machine_in_use" ) ) - wait 0.5; + if ( elevator.body.perk_type == "specialty_weapupgrade" ) + { + while ( flag( "pack_machine_in_use" ) ) + wait 0.5; - wait( randomintrange( 1, 3 ) ); - } + wait( randomintrange( 1, 3 ) ); + } - while ( isdefined( level.elevators_stop ) && level.elevators_stop || isdefined( elevator.body.elevator_stop ) && elevator.body.elevator_stop ) - wait 0.05; + while ( isdefined( level.elevators_stop ) && level.elevators_stop || isdefined( elevator.body.elevator_stop ) && elevator.body.elevator_stop ) + wait 0.05; } elevator_move_sound() { - self playsound( "zmb_elevator_ding" ); + self playsound( "zmb_elevator_ding" ); - wait 0.4; + wait 0.4; - if ( !is_true( self.is_moving ) ) - { - return; - } + if ( !is_true( self.is_moving ) ) + { + return; + } - self playsound( "zmb_elevator_ding" ); - self playsound( "zmb_elevator_run_start" ); - self playloopsound( "zmb_elevator_run", 0.5 ); + self playsound( "zmb_elevator_ding" ); + self playsound( "zmb_elevator_run_start" ); + self playloopsound( "zmb_elevator_run", 0.5 ); - self waittill( "movedone" ); + self waittill( "movedone" ); - self stoploopsound( 0.5 ); - self playsound( "zmb_elevator_run_stop" ); - self playsound( "zmb_elevator_ding" ); + self stoploopsound( 0.5 ); + self playsound( "zmb_elevator_run_stop" ); + self playsound( "zmb_elevator_ding" ); } elevator_roof_watcher() { - level endon( "end_game" ); + level endon( "end_game" ); - while ( true ) - { - self.trig waittill( "trigger", who ); + while ( true ) + { + self.trig waittill( "trigger", who ); - if ( isdefined( who ) && isplayer( who ) ) - { - while ( isdefined( who ) && who istouching( self.trig ) ) - { - if ( self.is_moving ) - self waittill_any( "movedone", "forcego" ); + if ( isdefined( who ) && isplayer( who ) ) + { + while ( isdefined( who ) && who istouching( self.trig ) ) + { + if ( self.is_moving ) + self waittill_any( "movedone", "forcego" ); - if ( self.current_level == 0 ) - { - break; // don't make climber at top level - } + if ( self.current_level == 0 ) + { + break; // don't make climber at top level + } - zombies = getaiarray( level.zombie_team ); + zombies = getaiarray( level.zombie_team ); - if ( isdefined( zombies ) && zombies.size > 0 ) - { - foreach ( zombie in zombies ) - { - climber = zombie zombie_for_elevator_unseen(); + if ( isdefined( zombies ) && zombies.size > 0 ) + { + foreach ( zombie in zombies ) + { + climber = zombie zombie_for_elevator_unseen(); - if ( isdefined( climber ) ) - continue; - } + if ( isdefined( climber ) ) + continue; + } - if ( isdefined( climber ) ) - { - zombie zombie_climb_elevator( self ); - wait( randomint( 30 ) ); - } - } + if ( isdefined( climber ) ) + { + zombie zombie_climb_elevator( self ); + wait( randomint( 30 ) ); + } + } - wait 0.5; - } - } + wait 0.5; + } + } - wait 0.5; - } + wait 0.5; + } } faller_location_logic() { - wait 1; - faller_spawn_points = getstructarray( "faller_location", "script_noteworthy" ); - leaper_spawn_points = getstructarray( "leaper_location", "script_noteworthy" ); - spawn_points = arraycombine( faller_spawn_points, leaper_spawn_points, 1, 0 ); - dist_check = 16384; - elevator_names = getarraykeys( level.elevators ); - elevators = []; + wait 1; + faller_spawn_points = getstructarray( "faller_location", "script_noteworthy" ); + leaper_spawn_points = getstructarray( "leaper_location", "script_noteworthy" ); + spawn_points = arraycombine( faller_spawn_points, leaper_spawn_points, 1, 0 ); + dist_check = 16384; + elevator_names = getarraykeys( level.elevators ); + elevators = []; - for ( i = 0; i < elevator_names.size; i++ ) - elevators[i] = getent( "elevator_" + elevator_names[i] + "_body", "targetname" ); + for ( i = 0; i < elevator_names.size; i++ ) + elevators[i] = getent( "elevator_" + elevator_names[i] + "_body", "targetname" ); - elevator_volumes = []; - elevator_volumes[elevator_volumes.size] = getent( "elevator_1b", "targetname" ); - elevator_volumes[elevator_volumes.size] = getent( "elevator_1c", "targetname" ); - elevator_volumes[elevator_volumes.size] = getent( "elevator_1d", "targetname" ); - elevator_volumes[elevator_volumes.size] = getent( "elevator_3a", "targetname" ); - elevator_volumes[elevator_volumes.size] = getent( "elevator_3b", "targetname" ); - elevator_volumes[elevator_volumes.size] = getent( "elevator_3c", "targetname" ); - elevator_volumes[elevator_volumes.size] = getent( "elevator_3d", "targetname" ); - level.elevator_volumes = elevator_volumes; + elevator_volumes = []; + elevator_volumes[elevator_volumes.size] = getent( "elevator_1b", "targetname" ); + elevator_volumes[elevator_volumes.size] = getent( "elevator_1c", "targetname" ); + elevator_volumes[elevator_volumes.size] = getent( "elevator_1d", "targetname" ); + elevator_volumes[elevator_volumes.size] = getent( "elevator_3a", "targetname" ); + elevator_volumes[elevator_volumes.size] = getent( "elevator_3b", "targetname" ); + elevator_volumes[elevator_volumes.size] = getent( "elevator_3c", "targetname" ); + elevator_volumes[elevator_volumes.size] = getent( "elevator_3d", "targetname" ); + level.elevator_volumes = elevator_volumes; - while ( true ) - { - foreach ( point in spawn_points ) - { - should_block = 0; + while ( true ) + { + foreach ( point in spawn_points ) + { + should_block = 0; - foreach ( elevator in elevators ) - { - if ( distancesquared( elevator getCentroid(), point.origin ) <= dist_check ) - should_block = 1; - } + foreach ( elevator in elevators ) + { + if ( distancesquared( elevator getCentroid(), point.origin ) <= dist_check ) + should_block = 1; + } - if ( should_block ) - { - point.is_enabled = 0; - point.is_blocked = 1; - continue; - } + if ( should_block ) + { + point.is_enabled = 0; + point.is_blocked = 1; + continue; + } - if ( isdefined( point.is_blocked ) && point.is_blocked ) - point.is_blocked = 0; + if ( isdefined( point.is_blocked ) && point.is_blocked ) + point.is_blocked = 0; - if ( !isdefined( point.zone_name ) ) - continue; + if ( !isdefined( point.zone_name ) ) + continue; - zone = level.zones[point.zone_name]; + zone = level.zones[point.zone_name]; - if ( zone.is_enabled && zone.is_active && zone.is_spawning_allowed ) - point.is_enabled = 1; - } + if ( zone.is_enabled && zone.is_active && zone.is_spawning_allowed ) + point.is_enabled = 1; + } - players = get_players(); + players = get_players(); - foreach ( volume in elevator_volumes ) - { - should_disable = 0; + foreach ( volume in elevator_volumes ) + { + should_disable = 0; - foreach ( player in players ) - { - if ( is_player_valid( player ) ) - { - if ( player istouching( volume ) ) - should_disable = 1; - } - } + foreach ( player in players ) + { + if ( is_player_valid( player ) ) + { + if ( player istouching( volume ) ) + should_disable = 1; + } + } - if ( should_disable ) - disable_elevator_spawners( volume, spawn_points ); - } + if ( should_disable ) + disable_elevator_spawners( volume, spawn_points ); + } - wait 0.05; - } + wait 0.05; + } } watch_for_elevator_during_faller_spawn() { - self endon( "death" ); - self endon( "risen" ); - self endon( "spawn_anim" ); + self endon( "death" ); + self endon( "risen" ); + self endon( "spawn_anim" ); - flag_wait( "power_on" ); + flag_wait( "power_on" ); - elevator_bodies = []; - foreach ( elevator in level.elevators ) - { - elevator_bodies[elevator_bodies.size] = elevator.body; - } + elevator_bodies = []; + foreach ( elevator in level.elevators ) + { + elevator_bodies[elevator_bodies.size] = elevator.body; + } - elevator_body = get_closest_2d( self.zombie_faller_location.origin, elevator_bodies ); + elevator_body = get_closest_2d( self.zombie_faller_location.origin, elevator_bodies ); - while ( true ) - { - should_gib = 0; + while ( true ) + { + should_gib = 0; - if ( is_true( elevator_body.is_moving ) ) - { - if ( self istouching( elevator_body ) ) - { - should_gib = 1; - } - } - else - { - if ( is_true( self.zombie_faller_location.is_blocked ) ) - { - should_gib = 1; - } - } + if ( is_true( elevator_body.is_moving ) ) + { + if ( self istouching( elevator_body ) ) + { + should_gib = 1; + } + } + else + { + if ( is_true( self.zombie_faller_location.is_blocked ) ) + { + should_gib = 1; + } + } - if ( should_gib ) - { - playfx( level._effect["zomb_gib"], self.origin ); + if ( should_gib ) + { + playfx( level._effect["zomb_gib"], self.origin ); - if ( isdefined( self.is_leaper ) && self.is_leaper ) - { - self maps\mp\zombies\_zm_ai_leaper::leaper_cleanup(); - self dodamage( self.health + 100, self.origin ); - } - else - self delete(); + if ( isdefined( self.is_leaper ) && self.is_leaper ) + { + self maps\mp\zombies\_zm_ai_leaper::leaper_cleanup(); + self dodamage( self.health + 100, self.origin ); + } + else + self delete(); - break; - } + break; + } - wait 0.05; - } + wait 0.05; + } } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_highrise_gamemodes.gsc b/scripts/zm/replaced/zm_highrise_gamemodes.gsc index 1af962f9..dffbada6 100644 --- a/scripts/zm/replaced/zm_highrise_gamemodes.gsc +++ b/scripts/zm/replaced/zm_highrise_gamemodes.gsc @@ -8,6 +8,6 @@ init() { - add_map_gamemode( "zclassic", scripts\zm\replaced\zm_highrise::zclassic_preinit, undefined, undefined ); - add_map_location_gamemode( "zclassic", "rooftop", maps\mp\zm_highrise_classic::precache, scripts\zm\replaced\zm_highrise_classic::main ); + add_map_gamemode( "zclassic", scripts\zm\replaced\zm_highrise::zclassic_preinit, undefined, undefined ); + add_map_location_gamemode( "zclassic", "rooftop", maps\mp\zm_highrise_classic::precache, scripts\zm\replaced\zm_highrise_classic::main ); } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_highrise_sq.gsc b/scripts/zm/replaced/zm_highrise_sq.gsc index 408e2ae6..a031e0c8 100644 --- a/scripts/zm/replaced/zm_highrise_sq.gsc +++ b/scripts/zm/replaced/zm_highrise_sq.gsc @@ -15,204 +15,204 @@ init() { - if ( isdefined( level.gamedifficulty ) && level.gamedifficulty == 0 ) - { - sq_easy_cleanup(); - return; - } + if ( isdefined( level.gamedifficulty ) && level.gamedifficulty == 0 ) + { + sq_easy_cleanup(); + return; + } - flag_init( "sq_disabled" ); - flag_init( "sq_branch_complete" ); - flag_init( "sq_tower_active" ); - flag_init( "sq_player_has_sniper" ); - flag_init( "sq_player_has_ballistic" ); - flag_init( "sq_ric_tower_complete" ); - flag_init( "sq_max_tower_complete" ); - flag_init( "sq_players_out_of_sync" ); - flag_init( "sq_ball_picked_up" ); - register_map_navcard( "navcard_held_zm_highrise", "navcard_held_zm_transit" ); - ss_buttons = getentarray( "sq_ss_button", "targetname" ); + flag_init( "sq_disabled" ); + flag_init( "sq_branch_complete" ); + flag_init( "sq_tower_active" ); + flag_init( "sq_player_has_sniper" ); + flag_init( "sq_player_has_ballistic" ); + flag_init( "sq_ric_tower_complete" ); + flag_init( "sq_max_tower_complete" ); + flag_init( "sq_players_out_of_sync" ); + flag_init( "sq_ball_picked_up" ); + register_map_navcard( "navcard_held_zm_highrise", "navcard_held_zm_transit" ); + ss_buttons = getentarray( "sq_ss_button", "targetname" ); - for ( i = 0; i < ss_buttons.size; i++ ) - { - ss_buttons[i] usetriggerrequirelookat(); - ss_buttons[i] sethintstring( "" ); - ss_buttons[i] setcursorhint( "HINT_NOICON" ); - } + for ( i = 0; i < ss_buttons.size; i++ ) + { + ss_buttons[i] usetriggerrequirelookat(); + ss_buttons[i] sethintstring( "" ); + ss_buttons[i] setcursorhint( "HINT_NOICON" ); + } - level thread mahjong_tiles_setup(); - flag_init( "sq_nav_built" ); - declare_sidequest( "sq", ::init_sidequest, ::sidequest_logic, ::complete_sidequest, ::generic_stage_start, ::generic_stage_complete ); - maps\mp\zm_highrise_sq_atd::init(); - maps\mp\zm_highrise_sq_slb::init(); - declare_sidequest( "sq_1", ::init_sidequest_1, ::sidequest_logic_1, ::complete_sidequest, ::generic_stage_start, ::generic_stage_complete ); - maps\mp\zm_highrise_sq_ssp::init_1(); - maps\mp\zm_highrise_sq_pts::init_1(); - declare_sidequest( "sq_2", ::init_sidequest_2, ::sidequest_logic_2, ::complete_sidequest, ::generic_stage_start, ::generic_stage_complete ); - maps\mp\zm_highrise_sq_ssp::init_2(); - maps\mp\zm_highrise_sq_pts::init_2(); - level thread init_navcard(); - level thread init_navcomputer(); - precache_sidequest_assets(); + level thread mahjong_tiles_setup(); + flag_init( "sq_nav_built" ); + declare_sidequest( "sq", ::init_sidequest, ::sidequest_logic, ::complete_sidequest, ::generic_stage_start, ::generic_stage_complete ); + maps\mp\zm_highrise_sq_atd::init(); + maps\mp\zm_highrise_sq_slb::init(); + declare_sidequest( "sq_1", ::init_sidequest_1, ::sidequest_logic_1, ::complete_sidequest, ::generic_stage_start, ::generic_stage_complete ); + maps\mp\zm_highrise_sq_ssp::init_1(); + maps\mp\zm_highrise_sq_pts::init_1(); + declare_sidequest( "sq_2", ::init_sidequest_2, ::sidequest_logic_2, ::complete_sidequest, ::generic_stage_start, ::generic_stage_complete ); + maps\mp\zm_highrise_sq_ssp::init_2(); + maps\mp\zm_highrise_sq_pts::init_2(); + level thread init_navcard(); + level thread init_navcomputer(); + precache_sidequest_assets(); } sidequest_logic() { - level thread watch_nav_computer_built(); - level thread navcomputer_waitfor_navcard(); - flag_wait( "power_on" ); - level thread vo_richtofen_power_on(); - flag_wait( "sq_nav_built" ); + level thread watch_nav_computer_built(); + level thread navcomputer_waitfor_navcard(); + flag_wait( "power_on" ); + level thread vo_richtofen_power_on(); + flag_wait( "sq_nav_built" ); - if ( !is_true( level.navcomputer_spawned ) ) - update_sidequest_stats( "sq_highrise_started" ); + if ( !is_true( level.navcomputer_spawned ) ) + update_sidequest_stats( "sq_highrise_started" ); - stage_start( "sq", "atd" ); + stage_start( "sq", "atd" ); - level waittill( "sq_atd_over" ); + level waittill( "sq_atd_over" ); - stage_start( "sq", "slb" ); + stage_start( "sq", "slb" ); - level waittill( "sq_slb_over" ); + level waittill( "sq_slb_over" ); - if ( !is_true( level.richcompleted ) ) - level thread sidequest_start( "sq_1" ); + if ( !is_true( level.richcompleted ) ) + level thread sidequest_start( "sq_1" ); - if ( !is_true( level.maxcompleted ) ) - level thread sidequest_start( "sq_2" ); + if ( !is_true( level.maxcompleted ) ) + level thread sidequest_start( "sq_2" ); - flag_wait( "sq_branch_complete" ); - tower_punch_watcher(); + flag_wait( "sq_branch_complete" ); + tower_punch_watcher(); - if ( flag( "sq_ric_tower_complete" ) ) - update_sidequest_stats( "sq_highrise_rich_complete" ); - else if ( flag( "sq_max_tower_complete" ) ) - update_sidequest_stats( "sq_highrise_maxis_complete" ); + if ( flag( "sq_ric_tower_complete" ) ) + update_sidequest_stats( "sq_highrise_rich_complete" ); + else if ( flag( "sq_max_tower_complete" ) ) + update_sidequest_stats( "sq_highrise_maxis_complete" ); } tower_punch_watcher() { - level thread playtoweraudio(); - a_leg_trigs = []; + level thread playtoweraudio(); + a_leg_trigs = []; - foreach ( str_wind in level.a_wind_order ) - a_leg_trigs[a_leg_trigs.size] = "sq_tower_" + str_wind; + foreach ( str_wind in level.a_wind_order ) + a_leg_trigs[a_leg_trigs.size] = "sq_tower_" + str_wind; - level.n_cur_leg = 0; - level.sq_leg_punches = 0; + level.n_cur_leg = 0; + level.sq_leg_punches = 0; - foreach ( str_leg in a_leg_trigs ) - { - t_leg = getent( str_leg, "script_noteworthy" ); - t_leg thread tower_punch_watch_leg( a_leg_trigs ); - } + foreach ( str_leg in a_leg_trigs ) + { + t_leg = getent( str_leg, "script_noteworthy" ); + t_leg thread tower_punch_watch_leg( a_leg_trigs ); + } - flag_wait( "sq_tower_active" ); + flag_wait( "sq_tower_active" ); - if ( flag( "sq_ric_tower_complete" ) ) - { - exploder_stop( 1002 ); - exploder_stop( 903 ); - exploder( 1003 ); - } - else - { - exploder_stop( 902 ); - exploder_stop( 1003 ); - exploder( 903 ); - } + if ( flag( "sq_ric_tower_complete" ) ) + { + exploder_stop( 1002 ); + exploder_stop( 903 ); + exploder( 1003 ); + } + else + { + exploder_stop( 902 ); + exploder_stop( 1003 ); + exploder( 903 ); + } - wait 1; - level thread tower_in_sync_lightning(); - wait 1; - level thread sq_give_all_perks(); + wait 1; + level thread tower_in_sync_lightning(); + wait 1; + level thread sq_give_all_perks(); } tower_punch_watch_leg( a_leg_trigs ) { - level.legs_hit = []; + level.legs_hit = []; - while ( !flag( "sq_tower_active" ) ) - { - self waittill( "trigger", who ); + while ( !flag( "sq_tower_active" ) ) + { + self waittill( "trigger", who ); - if ( !isinarray( level.legs_hit, self.script_noteworthy ) && isplayer( who ) && ( who.current_melee_weapon == "tazer_knuckles_zm" || who.current_melee_weapon == "tazer_knuckles_upgraded_zm" ) ) - { - level.legs_hit[level.legs_hit.size] = self.script_noteworthy; - self playsound( "zmb_sq_leg_powerup_" + level.legs_hit.size ); + if ( !isinarray( level.legs_hit, self.script_noteworthy ) && isplayer( who ) && ( who.current_melee_weapon == "tazer_knuckles_zm" || who.current_melee_weapon == "tazer_knuckles_upgraded_zm" ) ) + { + level.legs_hit[level.legs_hit.size] = self.script_noteworthy; + self playsound( "zmb_sq_leg_powerup_" + level.legs_hit.size ); - if ( level.legs_hit.size == 4 ) - flag_set( "sq_tower_active" ); + if ( level.legs_hit.size == 4 ) + flag_set( "sq_tower_active" ); - return; - } - } + return; + } + } } sq_give_all_perks() { - vending_triggers = getentarray( "zombie_vending", "targetname" ); - perks = []; + vending_triggers = getentarray( "zombie_vending", "targetname" ); + perks = []; - for ( i = 0; i < vending_triggers.size; i++ ) - { - perk = vending_triggers[i].script_noteworthy; + for ( i = 0; i < vending_triggers.size; i++ ) + { + perk = vending_triggers[i].script_noteworthy; - if ( perk == "specialty_weapupgrade" ) - continue; + if ( perk == "specialty_weapupgrade" ) + continue; - perks[perks.size] = perk; - } + perks[perks.size] = perk; + } - if ( flag( "sq_ric_tower_complete" ) ) - { - v_fireball_start_loc = ( 1946, 608, 3338 ); - n_fireball_exploder = 1001; - } - else - { - v_fireball_start_loc = ( 1068, -1362, 3340.5 ); - n_fireball_exploder = 901; - } + if ( flag( "sq_ric_tower_complete" ) ) + { + v_fireball_start_loc = ( 1946, 608, 3338 ); + n_fireball_exploder = 1001; + } + else + { + v_fireball_start_loc = ( 1068, -1362, 3340.5 ); + n_fireball_exploder = 901; + } - level thread scripts\zm\replaced\_zm_sq::sq_complete_time_hud(); + level thread scripts\zm\replaced\_zm_sq::sq_complete_time_hud(); - players = getplayers(); - foreach ( player in players ) - { - player thread sq_give_player_perks( perks, v_fireball_start_loc, n_fireball_exploder ); + players = getplayers(); + foreach ( player in players ) + { + player thread sq_give_player_perks( perks, v_fireball_start_loc, n_fireball_exploder ); - level waittill( "sq_fireball_hit_player" ); - } + level waittill( "sq_fireball_hit_player" ); + } } sq_give_player_perks( perks, v_fireball_start_loc, n_fireball_exploder ) { - self endon("disconnect"); + self endon("disconnect"); - exploder( n_fireball_exploder ); - m_fireball = spawn( "script_model", v_fireball_start_loc ); - m_fireball setmodel( "tag_origin" ); - playfxontag( level._effect["sidequest_dragon_fireball_max"], m_fireball, "tag_origin" ); + exploder( n_fireball_exploder ); + m_fireball = spawn( "script_model", v_fireball_start_loc ); + m_fireball setmodel( "tag_origin" ); + playfxontag( level._effect["sidequest_dragon_fireball_max"], m_fireball, "tag_origin" ); - do - { - wait_network_frame(); - v_to_player = vectornormalize( self gettagorigin( "J_SpineLower" ) - m_fireball.origin ); - v_move_spot = m_fireball.origin + v_to_player * 48; - m_fireball.origin = v_move_spot; - } - while ( distancesquared( m_fireball.origin, self gettagorigin( "J_SpineLower" ) ) > 2304 ); + do + { + wait_network_frame(); + v_to_player = vectornormalize( self gettagorigin( "J_SpineLower" ) - m_fireball.origin ); + v_move_spot = m_fireball.origin + v_to_player * 48; + m_fireball.origin = v_move_spot; + } + while ( distancesquared( m_fireball.origin, self gettagorigin( "J_SpineLower" ) ) > 2304 ); - m_fireball.origin = self gettagorigin( "J_SpineLower" ); - m_fireball linkto( self, "J_SpineLower" ); - wait 1.5; - playfx( level._effect["sidequest_flash"], m_fireball.origin ); - m_fireball delete(); - level notify( "sq_fireball_hit_player" ); + m_fireball.origin = self gettagorigin( "J_SpineLower" ); + m_fireball linkto( self, "J_SpineLower" ); + wait 1.5; + playfx( level._effect["sidequest_flash"], m_fireball.origin ); + m_fireball delete(); + level notify( "sq_fireball_hit_player" ); - if ( is_player_valid( self ) ) - { - self thread scripts\zm\replaced\_zm_sq::sq_give_player_all_perks(); - } + if ( is_player_valid( self ) ) + { + self thread scripts\zm\replaced\_zm_sq::sq_give_player_all_perks(); + } } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_highrise_sq_atd.gsc b/scripts/zm/replaced/zm_highrise_sq_atd.gsc index bf897f43..a925640c 100644 --- a/scripts/zm/replaced/zm_highrise_sq_atd.gsc +++ b/scripts/zm/replaced/zm_highrise_sq_atd.gsc @@ -7,112 +7,112 @@ init() { - flag_init( "sq_atd_elevator0" ); - flag_init( "sq_atd_elevator1" ); - flag_init( "sq_atd_elevator2" ); - flag_init( "sq_atd_elevator3" ); - flag_init( "sq_atd_elevator_activated" ); - flag_init( "sq_atd_drg_puzzle_1st_error" ); - flag_init( "sq_atd_drg_puzzle_complete" ); - declare_sidequest_stage( "sq", "atd", ::init_stage, ::stage_logic, ::exit_stage_1 ); - sq_atd_dragon_icon_setup(); + flag_init( "sq_atd_elevator0" ); + flag_init( "sq_atd_elevator1" ); + flag_init( "sq_atd_elevator2" ); + flag_init( "sq_atd_elevator3" ); + flag_init( "sq_atd_elevator_activated" ); + flag_init( "sq_atd_drg_puzzle_1st_error" ); + flag_init( "sq_atd_drg_puzzle_complete" ); + declare_sidequest_stage( "sq", "atd", ::init_stage, ::stage_logic, ::exit_stage_1 ); + sq_atd_dragon_icon_setup(); } stage_logic() { - sq_atd_elevators(); - sq_atd_drg_puzzle(); - stage_completed( "sq", level._cur_stage_name ); + sq_atd_elevators(); + sq_atd_drg_puzzle(); + stage_completed( "sq", level._cur_stage_name ); } sq_atd_elevators() { - a_elevators = array( "elevator_bldg1b_trigger", "elevator_bldg1d_trigger", "elevator_bldg3b_trigger", "elevator_bldg3c_trigger" ); - a_elevator_flags = array( "sq_atd_elevator0", "sq_atd_elevator1", "sq_atd_elevator2", "sq_atd_elevator3" ); + a_elevators = array( "elevator_bldg1b_trigger", "elevator_bldg1d_trigger", "elevator_bldg3b_trigger", "elevator_bldg3c_trigger" ); + a_elevator_flags = array( "sq_atd_elevator0", "sq_atd_elevator1", "sq_atd_elevator2", "sq_atd_elevator3" ); - for ( i = 0; i < a_elevators.size; i++ ) - { - trig_elevator = getent( a_elevators[i], "targetname" ); - trig_elevator thread sq_atd_watch_elevator( a_elevator_flags[i] ); - } + for ( i = 0; i < a_elevators.size; i++ ) + { + trig_elevator = getent( a_elevators[i], "targetname" ); + trig_elevator thread sq_atd_watch_elevator( a_elevator_flags[i] ); + } - while ( !flag( "sq_atd_elevator0" ) || !flag( "sq_atd_elevator1" ) || !flag( "sq_atd_elevator2" ) || !flag( "sq_atd_elevator3" ) ) - { - flag_wait_any_array( a_elevator_flags ); - wait 0.5; - } + while ( !flag( "sq_atd_elevator0" ) || !flag( "sq_atd_elevator1" ) || !flag( "sq_atd_elevator2" ) || !flag( "sq_atd_elevator3" ) ) + { + flag_wait_any_array( a_elevator_flags ); + wait 0.5; + } - flag_set( "sq_atd_elevator_activated" ); - vo_richtofen_atd_elevators(); - level thread vo_maxis_atd_elevators(); + flag_set( "sq_atd_elevator_activated" ); + vo_richtofen_atd_elevators(); + level thread vo_maxis_atd_elevators(); } sq_atd_watch_elevator( str_flag ) { - level endon( "sq_atd_elevator_activated" ); + level endon( "sq_atd_elevator_activated" ); - while ( true ) - { - self waittill( "trigger", e_who ); + while ( true ) + { + self waittill( "trigger", e_who ); - if ( !isplayer( e_who ) ) - { - wait 0.05; - continue; - } + if ( !isplayer( e_who ) ) + { + wait 0.05; + continue; + } - a_dragon_icons = getentarray( "elevator_dragon_icon", "targetname" ); - foreach ( m_icon in a_dragon_icons ) - { - if ( issubstr( self.targetname, m_icon.script_noteworthy ) ) - { - v_off_pos = m_icon.m_lit_icon.origin; - m_icon.m_lit_icon unlink(); - m_icon unlink(); - m_icon.m_lit_icon.origin = m_icon.origin; - m_icon.origin = v_off_pos; - m_icon.m_lit_icon linkto( m_icon.m_elevator ); - m_icon linkto( m_icon.m_elevator ); - m_icon playsound( "zmb_sq_symbol_light" ); - break; - } - } + a_dragon_icons = getentarray( "elevator_dragon_icon", "targetname" ); + foreach ( m_icon in a_dragon_icons ) + { + if ( issubstr( self.targetname, m_icon.script_noteworthy ) ) + { + v_off_pos = m_icon.m_lit_icon.origin; + m_icon.m_lit_icon unlink(); + m_icon unlink(); + m_icon.m_lit_icon.origin = m_icon.origin; + m_icon.origin = v_off_pos; + m_icon.m_lit_icon linkto( m_icon.m_elevator ); + m_icon linkto( m_icon.m_elevator ); + m_icon playsound( "zmb_sq_symbol_light" ); + break; + } + } - flag_set( str_flag ); - return; - } + flag_set( str_flag ); + return; + } } sq_atd_drg_puzzle() { - level.sq_atd_cur_drg = 0; - a_puzzle_trigs = getentarray( "trig_atd_drg_puzzle", "targetname" ); - a_puzzle_trigs = array_randomize( a_puzzle_trigs ); + level.sq_atd_cur_drg = 0; + a_puzzle_trigs = getentarray( "trig_atd_drg_puzzle", "targetname" ); + a_puzzle_trigs = array_randomize( a_puzzle_trigs ); - for ( i = 0; i < a_puzzle_trigs.size; i++ ) - a_puzzle_trigs[i] thread drg_puzzle_trig_think( i ); + for ( i = 0; i < a_puzzle_trigs.size; i++ ) + a_puzzle_trigs[i] thread drg_puzzle_trig_think( i ); - while ( level.sq_atd_cur_drg < 4 ) - wait 1; + while ( level.sq_atd_cur_drg < 4 ) + wait 1; - flag_set( "sq_atd_drg_puzzle_complete" ); - level thread vo_maxis_atd_order_complete(); + flag_set( "sq_atd_drg_puzzle_complete" ); + level thread vo_maxis_atd_order_complete(); } drg_puzzle_trig_think( n_order_id ) { - self.drg_active = 0; - m_unlit = getent( self.target, "targetname" ); - m_lit = m_unlit.lit_icon; - v_top = m_unlit.origin; - v_hidden = m_lit.origin; + self.drg_active = 0; + m_unlit = getent( self.target, "targetname" ); + m_lit = m_unlit.lit_icon; + v_top = m_unlit.origin; + v_hidden = m_lit.origin; - self waittill( "trigger", e_who ); + self waittill( "trigger", e_who ); - m_lit.origin = v_top; - m_unlit.origin = v_hidden; - m_lit playsound( "zmb_sq_symbol_light" ); - self.drg_active = 1; - level thread vo_richtofen_atd_order( level.sq_atd_cur_drg ); - level.sq_atd_cur_drg++; + m_lit.origin = v_top; + m_unlit.origin = v_hidden; + m_lit playsound( "zmb_sq_symbol_light" ); + self.drg_active = 1; + level thread vo_richtofen_atd_order( level.sq_atd_cur_drg ); + level.sq_atd_cur_drg++; } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_highrise_sq_pts.gsc b/scripts/zm/replaced/zm_highrise_sq_pts.gsc index 029f569f..a9a5257c 100644 --- a/scripts/zm/replaced/zm_highrise_sq_pts.gsc +++ b/scripts/zm/replaced/zm_highrise_sq_pts.gsc @@ -8,353 +8,353 @@ init_1() { - flag_init( "pts_1_springpads_placed" ); - declare_sidequest_stage( "sq_1", "pts_1", ::init_stage_1, ::stage_logic_1, ::exit_stage_1 ); + flag_init( "pts_1_springpads_placed" ); + declare_sidequest_stage( "sq_1", "pts_1", ::init_stage_1, ::stage_logic_1, ::exit_stage_1 ); } init_2() { - flag_init( "pts_2_springpads_placed" ); - flag_init( "pts_2_generator_1_started" ); - flag_init( "pts_2_generator_2_started" ); - declare_sidequest_stage( "sq_2", "pts_2", ::init_stage_2, ::stage_logic_2, ::exit_stage_2 ); + flag_init( "pts_2_springpads_placed" ); + flag_init( "pts_2_generator_1_started" ); + flag_init( "pts_2_generator_2_started" ); + declare_sidequest_stage( "sq_2", "pts_2", ::init_stage_2, ::stage_logic_2, ::exit_stage_2 ); } stage_logic_1() { - watch_player_springpads( 0 ); - flag_set( "pts_1_springpads_placed" ); - maps\mp\zm_highrise_sq::light_dragon_fireworks( "r", 1 ); - wait_for_zombies_launched(); - maps\mp\zm_highrise_sq::light_dragon_fireworks( "r", 2 ); - stage_completed( "sq_1", "pts_1" ); + watch_player_springpads( 0 ); + flag_set( "pts_1_springpads_placed" ); + maps\mp\zm_highrise_sq::light_dragon_fireworks( "r", 1 ); + wait_for_zombies_launched(); + maps\mp\zm_highrise_sq::light_dragon_fireworks( "r", 2 ); + stage_completed( "sq_1", "pts_1" ); } stage_logic_2() { - watch_player_springpads( 1 ); - level thread wait_for_balls_launched(); - flag_wait( "pts_2_generator_1_started" ); - maps\mp\zm_highrise_sq::light_dragon_fireworks( "m", 2 ); - flag_wait( "pts_2_generator_2_started" ); - maps\mp\zm_highrise_sq::light_dragon_fireworks( "m", 2 ); - level thread maxis_balls_placed(); - stage_completed( "sq_2", "pts_2" ); + watch_player_springpads( 1 ); + level thread wait_for_balls_launched(); + flag_wait( "pts_2_generator_1_started" ); + maps\mp\zm_highrise_sq::light_dragon_fireworks( "m", 2 ); + flag_wait( "pts_2_generator_2_started" ); + maps\mp\zm_highrise_sq::light_dragon_fireworks( "m", 2 ); + level thread maxis_balls_placed(); + stage_completed( "sq_2", "pts_2" ); } watch_player_springpads( is_generator ) { - level thread springpad_count_watcher( is_generator ); - a_players = get_players(); + level thread springpad_count_watcher( is_generator ); + a_players = get_players(); - foreach ( player in a_players ) - player thread pts_watch_springpad_use( is_generator ); + foreach ( player in a_players ) + player thread pts_watch_springpad_use( is_generator ); } springpad_count_watcher( is_generator ) { - level endon( "sq_pts_springad_count4" ); - str_which_spots = "pts_ghoul"; + level endon( "sq_pts_springad_count4" ); + str_which_spots = "pts_ghoul"; - if ( is_generator ) - str_which_spots = "pts_lion"; + if ( is_generator ) + str_which_spots = "pts_lion"; - a_spots = getstructarray( str_which_spots, "targetname" ); + a_spots = getstructarray( str_which_spots, "targetname" ); - while ( true ) - { - level waittill( "sq_pts_springpad_in_place" ); + while ( true ) + { + level waittill( "sq_pts_springpad_in_place" ); - n_count = 0; + n_count = 0; - foreach ( s_spot in a_spots ) - { - if ( isdefined( s_spot.springpad ) ) - n_count++; - } + foreach ( s_spot in a_spots ) + { + if ( isdefined( s_spot.springpad ) ) + n_count++; + } - level notify( "sq_pts_springad_count" + n_count ); - } + level notify( "sq_pts_springad_count" + n_count ); + } } pts_watch_springpad_use( is_generator ) { - self endon( "death" ); - self endon( "disconnect" ); + self endon( "death" ); + self endon( "disconnect" ); - while ( !flag( "sq_branch_complete" ) ) - { - self waittill( "equipment_placed", weapon, weapname ); + while ( !flag( "sq_branch_complete" ) ) + { + self waittill( "equipment_placed", weapon, weapname ); - if ( weapname == level.springpad_name ) - self thread is_springpad_in_place( weapon, is_generator ); - } + if ( weapname == level.springpad_name ) + self thread is_springpad_in_place( weapon, is_generator ); + } } is_springpad_in_place( m_springpad, is_generator ) { - m_springpad endon( "death" ); + m_springpad endon( "death" ); - m_springpad waittill( "armed" ); + m_springpad waittill( "armed" ); - a_lion_spots = getstructarray( "pts_lion", "targetname" ); - a_ghoul_spots = getstructarray( "pts_ghoul", "targetname" ); - a_spots = arraycombine( a_lion_spots, a_ghoul_spots, 0, 0 ); + a_lion_spots = getstructarray( "pts_lion", "targetname" ); + a_ghoul_spots = getstructarray( "pts_ghoul", "targetname" ); + a_spots = arraycombine( a_lion_spots, a_ghoul_spots, 0, 0 ); - foreach ( s_spot in a_spots ) - { - n_dist = distance2dsquared( m_springpad.origin, s_spot.origin ); + foreach ( s_spot in a_spots ) + { + n_dist = distance2dsquared( m_springpad.origin, s_spot.origin ); - if ( n_dist < 1024 ) - { - v_spot_forward = vectornormalize( anglestoforward( s_spot.angles ) ); - v_pad_forward = vectornormalize( anglestoforward( m_springpad.angles ) ); - n_dot = vectordot( v_spot_forward, v_pad_forward ); + if ( n_dist < 1024 ) + { + v_spot_forward = vectornormalize( anglestoforward( s_spot.angles ) ); + v_pad_forward = vectornormalize( anglestoforward( m_springpad.angles ) ); + n_dot = vectordot( v_spot_forward, v_pad_forward ); - if ( n_dot > 0.98 ) - { - level notify( "sq_pts_springpad_in_place" ); - s_spot.springpad = m_springpad; - self thread pts_springpad_removed_watcher( m_springpad, s_spot ); + if ( n_dot > 0.98 ) + { + level notify( "sq_pts_springpad_in_place" ); + s_spot.springpad = m_springpad; + self thread pts_springpad_removed_watcher( m_springpad, s_spot ); - if ( is_generator ) - { - wait 0.1; - if ( pts_should_springpad_create_trigs( s_spot ) ) - { - thread maps\mp\zombies\_zm_unitrigger::unregister_unitrigger( self.buildablespringpad.stub ); - } - } - else - { - m_springpad.fling_scaler = 2; - m_springpad thread watch_zombie_flings(); - } + if ( is_generator ) + { + wait 0.1; + if ( pts_should_springpad_create_trigs( s_spot ) ) + { + thread maps\mp\zombies\_zm_unitrigger::unregister_unitrigger( self.buildablespringpad.stub ); + } + } + else + { + m_springpad.fling_scaler = 2; + m_springpad thread watch_zombie_flings(); + } - if ( isdefined( s_spot.script_float ) ) - { - s_target = getstruct( "sq_zombie_launch_target", "targetname" ); - v_override_dir = vectornormalize( s_target.origin - m_springpad.origin ); - v_override_dir = vectorscale( v_override_dir, 1024 ); - m_springpad.direction_vec_override = v_override_dir; - m_springpad.fling_scaler = s_spot.script_float; - } + if ( isdefined( s_spot.script_float ) ) + { + s_target = getstruct( "sq_zombie_launch_target", "targetname" ); + v_override_dir = vectornormalize( s_target.origin - m_springpad.origin ); + v_override_dir = vectorscale( v_override_dir, 1024 ); + m_springpad.direction_vec_override = v_override_dir; + m_springpad.fling_scaler = s_spot.script_float; + } - break; - } - } - } + break; + } + } + } } wait_for_zombies_launched() { - level thread richtofen_zombies_launched(); - t_tower = getent( "pts_tower_trig", "targetname" ); - s_tower_top = getstruct( "sq_zombie_launch_target", "targetname" ); + level thread richtofen_zombies_launched(); + t_tower = getent( "pts_tower_trig", "targetname" ); + s_tower_top = getstruct( "sq_zombie_launch_target", "targetname" ); - while ( level.n_launched_zombies < 15 ) - wait 0.5; + while ( level.n_launched_zombies < 15 ) + wait 0.5; } watch_zombie_flings() { - self endon( "death" ); - self endon( "disconnect" ); - self endon( "equip_springpad_zm_taken" ); - self endon( "equip_springpad_zm_pickup" ); + self endon( "death" ); + self endon( "disconnect" ); + self endon( "equip_springpad_zm_taken" ); + self endon( "equip_springpad_zm_pickup" ); - while ( level.n_launched_zombies < 15 ) - { - self waittill( "fling", zombies_only ); + while ( level.n_launched_zombies < 15 ) + { + self waittill( "fling", zombies_only ); - if ( zombies_only ) - { - level.n_launched_zombies++; + if ( zombies_only ) + { + level.n_launched_zombies++; - if ( level.n_launched_zombies == 1 || level.n_launched_zombies == 5 || level.n_launched_zombies == 10 ) - level notify( "pts1_say_next_line" ); - } + if ( level.n_launched_zombies == 1 || level.n_launched_zombies == 5 || level.n_launched_zombies == 10 ) + level notify( "pts1_say_next_line" ); + } - wait 0.1; - } + wait 0.1; + } } wait_for_balls_launched() { - level.current_generator = 1; - a_lion_spots = getstructarray( "pts_lion", "targetname" ); + level.current_generator = 1; + a_lion_spots = getstructarray( "pts_lion", "targetname" ); - foreach ( s_lion_spot in a_lion_spots ) - { - s_lion_spot.a_place_ball_trigs = []; - } + foreach ( s_lion_spot in a_lion_spots ) + { + s_lion_spot.a_place_ball_trigs = []; + } - a_players = getplayers(); + a_players = getplayers(); - foreach ( player in a_players ) - { - player.a_place_ball_trigs = []; + foreach ( player in a_players ) + { + player.a_place_ball_trigs = []; - if ( isdefined( player.zm_sq_has_ball ) ) - player thread player_set_down_ball_watcher(); - } + if ( isdefined( player.zm_sq_has_ball ) ) + player thread player_set_down_ball_watcher(); + } - while ( true ) - { - level waittill( "zm_ball_picked_up", player ); + while ( true ) + { + level waittill( "zm_ball_picked_up", player ); - player thread player_set_down_ball_watcher(); - } + player thread player_set_down_ball_watcher(); + } } player_set_down_ball_watcher() { - self waittill_any( "zm_sq_ball_putdown", "zm_sq_ball_used" ); - pts_putdown_trigs_remove_for_player( self ); + self waittill_any( "zm_sq_ball_putdown", "zm_sq_ball_used" ); + pts_putdown_trigs_remove_for_player( self ); } pts_should_player_create_trigs( player ) { - a_lion_spots = getstructarray( "pts_lion", "targetname" ); + a_lion_spots = getstructarray( "pts_lion", "targetname" ); - foreach ( s_lion_spot in a_lion_spots ) - { - if ( isdefined( s_lion_spot.springpad ) && !isdefined( s_lion_spot.which_ball ) ) - { - pts_putdown_trigs_create_for_spot( s_lion_spot, player ); - return true; - } - } + foreach ( s_lion_spot in a_lion_spots ) + { + if ( isdefined( s_lion_spot.springpad ) && !isdefined( s_lion_spot.which_ball ) ) + { + pts_putdown_trigs_create_for_spot( s_lion_spot, player ); + return true; + } + } - return false; + return false; } pts_should_springpad_create_trigs( s_lion_spot ) { - if ( isdefined( s_lion_spot.springpad ) && !isdefined( s_lion_spot.which_ball ) ) - { - a_players = getplayers(); + if ( isdefined( s_lion_spot.springpad ) && !isdefined( s_lion_spot.which_ball ) ) + { + a_players = getplayers(); - foreach ( player in a_players ) - { - if ( isdefined( player.zm_sq_has_ball ) && player.zm_sq_has_ball ) - { - pts_putdown_trigs_create_for_spot( s_lion_spot, player ); - return true; - } - } - } + foreach ( player in a_players ) + { + if ( isdefined( player.zm_sq_has_ball ) && player.zm_sq_has_ball ) + { + pts_putdown_trigs_create_for_spot( s_lion_spot, player ); + return true; + } + } + } - return false; + return false; } pts_putdown_trigs_create_for_spot( s_lion_spot, player ) { - t_place_ball = sq_pts_create_use_trigger( s_lion_spot.origin, 16, 70, &"ZM_HIGHRISE_SQ_PUTDOWN_BALL" ); - player clientclaimtrigger( t_place_ball ); - t_place_ball.owner = player; - player thread place_ball_think( t_place_ball, s_lion_spot ); + t_place_ball = sq_pts_create_use_trigger( s_lion_spot.origin, 16, 70, &"ZM_HIGHRISE_SQ_PUTDOWN_BALL" ); + player clientclaimtrigger( t_place_ball ); + t_place_ball.owner = player; + player thread place_ball_think( t_place_ball, s_lion_spot ); - if ( !isdefined( s_lion_spot.pts_putdown_trigs ) ) - s_lion_spot.pts_putdown_trigs = []; + if ( !isdefined( s_lion_spot.pts_putdown_trigs ) ) + s_lion_spot.pts_putdown_trigs = []; - s_lion_spot.pts_putdown_trigs[player.characterindex] = t_place_ball; - level thread pts_putdown_trigs_springpad_delete_watcher( player, s_lion_spot ); + s_lion_spot.pts_putdown_trigs[player.characterindex] = t_place_ball; + level thread pts_putdown_trigs_springpad_delete_watcher( player, s_lion_spot ); } sq_pts_create_use_trigger( v_origin, radius, height, str_hint_string ) { - t_pickup = spawn( "trigger_radius_use", v_origin, 0, radius, height ); - t_pickup setcursorhint( "HINT_NOICON" ); - t_pickup sethintstring( str_hint_string ); - t_pickup.targetname = "ball_place_trig"; - t_pickup triggerignoreteam(); - return t_pickup; + t_pickup = spawn( "trigger_radius_use", v_origin, 0, radius, height ); + t_pickup setcursorhint( "HINT_NOICON" ); + t_pickup sethintstring( str_hint_string ); + t_pickup.targetname = "ball_place_trig"; + t_pickup triggerignoreteam(); + return t_pickup; } pts_putdown_trigs_springpad_delete_watcher( player, s_lion_spot ) { - player pts_springpad_waittill_removed( s_lion_spot.springpad ); - pts_putdown_trigs_remove_for_spot( s_lion_spot ); + player pts_springpad_waittill_removed( s_lion_spot.springpad ); + pts_putdown_trigs_remove_for_spot( s_lion_spot ); } place_ball_think( t_place_ball, s_lion_spot ) { - t_place_ball endon( "delete" ); + t_place_ball endon( "delete" ); - while (1) - { - t_place_ball waittill( "trigger" ); + while (1) + { + t_place_ball waittill( "trigger" ); - if (!is_true( self.zm_sq_has_ball ) ) - { - continue; - } + if (!is_true( self.zm_sq_has_ball ) ) + { + continue; + } - pts_putdown_trigs_remove_for_spot( s_lion_spot ); - self.zm_sq_has_ball = undefined; - s_lion_spot.which_ball = self.which_ball; - self notify( "zm_sq_ball_used" ); - s_lion_spot.zm_pts_animating = 1; - flag_set( "pts_2_generator_" + level.current_generator + "_started" ); - s_lion_spot.which_generator = level.current_generator; - level.current_generator++; + pts_putdown_trigs_remove_for_spot( s_lion_spot ); + self.zm_sq_has_ball = undefined; + s_lion_spot.which_ball = self.which_ball; + self notify( "zm_sq_ball_used" ); + s_lion_spot.zm_pts_animating = 1; + flag_set( "pts_2_generator_" + level.current_generator + "_started" ); + s_lion_spot.which_generator = level.current_generator; + level.current_generator++; - s_lion_spot.springpad thread pts_springpad_fling( s_lion_spot.script_noteworthy ); - thread maps\mp\zombies\_zm_unitrigger::register_unitrigger( self.buildablespringpad.stub ); - self.t_putdown_ball delete(); - } + s_lion_spot.springpad thread pts_springpad_fling( s_lion_spot.script_noteworthy ); + thread maps\mp\zombies\_zm_unitrigger::register_unitrigger( self.buildablespringpad.stub ); + self.t_putdown_ball delete(); + } } #using_animtree("fxanim_props"); pts_springpad_fling( str_spot_name ) { - str_anim1 = undefined; - n_anim_length1 = undefined; - str_anim2 = undefined; - n_anim_length2 = undefined; + str_anim1 = undefined; + n_anim_length1 = undefined; + str_anim2 = undefined; + n_anim_length2 = undefined; - switch ( str_spot_name ) - { - case "lion_pair_1": - str_anim1 = "dc"; - str_anim2 = "cd"; - break; - case "lion_pair_2": - str_anim1 = "ab"; - str_anim2 = "ba"; - break; - case "lion_pair_3": - str_anim1 = "cd"; - str_anim2 = "dc"; - break; - case "lion_pair_4": - str_anim1 = "ba"; - str_anim2 = "ab"; - break; - } + switch ( str_spot_name ) + { + case "lion_pair_1": + str_anim1 = "dc"; + str_anim2 = "cd"; + break; + case "lion_pair_2": + str_anim1 = "ab"; + str_anim2 = "ba"; + break; + case "lion_pair_3": + str_anim1 = "cd"; + str_anim2 = "dc"; + break; + case "lion_pair_4": + str_anim1 = "ba"; + str_anim2 = "ab"; + break; + } - m_anim = spawn( "script_model", ( 2090, 675, 3542 ) ); - m_anim.angles = ( 0, 0, 0 ); - m_anim setmodel( "fxanim_zom_highrise_trample_gen_mod" ); - m_anim useanimtree( #animtree ); - m_anim.targetname = "trample_gen_" + str_spot_name; - pts_springpad_anim_ball( m_anim, str_anim1, str_anim2 ); + m_anim = spawn( "script_model", ( 2090, 675, 3542 ) ); + m_anim.angles = ( 0, 0, 0 ); + m_anim setmodel( "fxanim_zom_highrise_trample_gen_mod" ); + m_anim useanimtree( #animtree ); + m_anim.targetname = "trample_gen_" + str_spot_name; + pts_springpad_anim_ball( m_anim, str_anim1, str_anim2 ); } pts_springpad_anim_ball( m_anim, str_anim1, str_anim2 ) { - m_anim endon( "delete" ); - self endon( "delete" ); - n_anim_length1 = getanimlength( level.scr_anim["fxanim_props"]["trample_gen_" + str_anim1] ); - n_anim_length2 = getanimlength( level.scr_anim["fxanim_props"]["trample_gen_" + str_anim2] ); + m_anim endon( "delete" ); + self endon( "delete" ); + n_anim_length1 = getanimlength( level.scr_anim["fxanim_props"]["trample_gen_" + str_anim1] ); + n_anim_length2 = getanimlength( level.scr_anim["fxanim_props"]["trample_gen_" + str_anim2] ); - self notify( "fling", 1 ); + self notify( "fling", 1 ); - if ( isdefined( m_anim ) ) - m_anim setanim( level.scr_anim["fxanim_props"]["trample_gen_" + str_anim1] ); + if ( isdefined( m_anim ) ) + m_anim setanim( level.scr_anim["fxanim_props"]["trample_gen_" + str_anim1] ); - wait( n_anim_length1 ); + wait( n_anim_length1 ); } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_highrise_sq_ssp.gsc b/scripts/zm/replaced/zm_highrise_sq_ssp.gsc index 8588e84c..9ef92314 100644 --- a/scripts/zm/replaced/zm_highrise_sq_ssp.gsc +++ b/scripts/zm/replaced/zm_highrise_sq_ssp.gsc @@ -8,96 +8,96 @@ ssp1_watch_ball( str_complete_flag ) { - self watch_model_sliquification( 10, str_complete_flag ); - self thread ssp1_rotate_ball(); - self playloopsound( "zmb_sq_ball_rotate_loop", 0.25 ); + self watch_model_sliquification( 10, str_complete_flag ); + self thread ssp1_rotate_ball(); + self playloopsound( "zmb_sq_ball_rotate_loop", 0.25 ); } watch_model_sliquification( n_end_limit, str_complete_flag ) { - n_count = 0; - self setcandamage( 1 ); + n_count = 0; + self setcandamage( 1 ); - while ( !flag( str_complete_flag ) ) - { - self waittill( "damage", amount, attacker, direction, point, mod, tagname, modelname, partname, weaponname ); + while ( !flag( str_complete_flag ) ) + { + self waittill( "damage", amount, attacker, direction, point, mod, tagname, modelname, partname, weaponname ); - if ( issubstr( weaponname, "slipgun" ) && !flag( "sq_ball_picked_up" ) ) - { - n_count++; + if ( issubstr( weaponname, "slipgun" ) && !flag( "sq_ball_picked_up" ) ) + { + n_count++; - if ( n_count >= n_end_limit ) - { - self notify( "sq_sliquified" ); + if ( n_count >= n_end_limit ) + { + self notify( "sq_sliquified" ); - if ( isdefined( self.t_pickup ) ) - self.t_pickup delete(); + if ( isdefined( self.t_pickup ) ) + self.t_pickup delete(); - flag_set( str_complete_flag ); - } - else if ( n_count == 1 ) - level notify( "ssp1_ball_first_sliquified" ); - else if ( n_count == 5 ) - level notify( "ssp1_ball_sliquified_2" ); - } - } + flag_set( str_complete_flag ); + } + else if ( n_count == 1 ) + level notify( "ssp1_ball_first_sliquified" ); + else if ( n_count == 5 ) + level notify( "ssp1_ball_sliquified_2" ); + } + } } init_2() { - flag_init( "ssp2_maxis_keep_going_said" ); - flag_init( "ssp2_maxis_reincarnate_said" ); - flag_init( "ssp2_corpses_in_place" ); - flag_init( "ssp2_resurrection_done" ); - flag_init( "ssp2_statue_complete" ); - maps\mp\zombies\_zm_spawner::add_custom_zombie_spawn_logic( ::ssp_2_zombie_death_check ); - declare_sidequest_stage( "sq_2", "ssp_2", ::init_stage_2, ::stage_logic_2, ::exit_stage_2 ); + flag_init( "ssp2_maxis_keep_going_said" ); + flag_init( "ssp2_maxis_reincarnate_said" ); + flag_init( "ssp2_corpses_in_place" ); + flag_init( "ssp2_resurrection_done" ); + flag_init( "ssp2_statue_complete" ); + maps\mp\zombies\_zm_spawner::add_custom_zombie_spawn_logic( ::ssp_2_zombie_death_check ); + declare_sidequest_stage( "sq_2", "ssp_2", ::init_stage_2, ::stage_logic_2, ::exit_stage_2 ); } stage_logic_2() { - level thread ssp2_advance_dragon(); - corpse_room_watcher(); - stage_completed( "sq_2", "ssp_2" ); + level thread ssp2_advance_dragon(); + corpse_room_watcher(); + stage_completed( "sq_2", "ssp_2" ); } ssp_2_zombie_death_check() { - self waittill( "death" ); + self waittill( "death" ); - if ( !isdefined( self ) ) - return; + if ( !isdefined( self ) ) + return; - t_corpse_room = getent( "corpse_room_trigger", "targetname" ); + t_corpse_room = getent( "corpse_room_trigger", "targetname" ); - if ( self istouching( t_corpse_room ) ) - level notify( "ssp2_corpse_made", 1 ); + if ( self istouching( t_corpse_room ) ) + level notify( "ssp2_corpse_made", 1 ); } corpse_room_watcher() { - t_corpse_room = getent( "corpse_room_trigger", "targetname" ); - n_count = 0; + t_corpse_room = getent( "corpse_room_trigger", "targetname" ); + n_count = 0; - while ( !flag( "ssp2_resurrection_done" ) ) - { - level waittill( "ssp2_corpse_made", is_in_room ); + while ( !flag( "ssp2_resurrection_done" ) ) + { + level waittill( "ssp2_corpse_made", is_in_room ); - if ( is_in_room ) - n_count++; - else - n_count = 0; + if ( is_in_room ) + n_count++; + else + n_count = 0; - if ( n_count == 1 && !flag( "ssp2_maxis_keep_going_said" ) ) - { - flag_set( "ssp2_maxis_keep_going_said" ); - level thread maps\mp\zm_highrise_sq::maxissay( "vox_maxi_sidequest_reincar_zombie_0" ); - } - else if ( n_count >= 15 ) - { - flag_set( "ssp2_corpses_in_place" ); - vo_maxis_ssp_complete(); - flag_set( "ssp2_resurrection_done" ); - } - } + if ( n_count == 1 && !flag( "ssp2_maxis_keep_going_said" ) ) + { + flag_set( "ssp2_maxis_keep_going_said" ); + level thread maps\mp\zm_highrise_sq::maxissay( "vox_maxi_sidequest_reincar_zombie_0" ); + } + else if ( n_count >= 15 ) + { + flag_set( "ssp2_corpses_in_place" ); + vo_maxis_ssp_complete(); + flag_set( "ssp2_resurrection_done" ); + } + } } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_melee.gsc b/scripts/zm/replaced/zm_melee.gsc index a1cf698b..290d32ec 100644 --- a/scripts/zm/replaced/zm_melee.gsc +++ b/scripts/zm/replaced/zm_melee.gsc @@ -7,111 +7,111 @@ meleecombat() { - self endon( "end_melee" ); - self endon( "killanimscript" ); - assert( canmeleeanyrange() ); - self orientmode( "face enemy" ); + self endon( "end_melee" ); + self endon( "killanimscript" ); + assert( canmeleeanyrange() ); + self orientmode( "face enemy" ); - if ( is_true( self.sliding_on_goo ) ) - self animmode( "slide" ); - else - self animmode( "zonly_physics" ); + if ( is_true( self.sliding_on_goo ) ) + self animmode( "slide" ); + else + self animmode( "zonly_physics" ); - for (;;) - { - if ( isdefined( self.marked_for_death ) ) - return; + for (;;) + { + if ( isdefined( self.marked_for_death ) ) + return; - if ( isdefined( self.enemy ) ) - { - angles = vectortoangles( self.enemy.origin - self.origin ); - self orientmode( "face angle", angles[1] ); - } + if ( isdefined( self.enemy ) ) + { + angles = vectortoangles( self.enemy.origin - self.origin ); + self orientmode( "face angle", angles[1] ); + } - if ( isdefined( self.zmb_vocals_attack ) ) - self playsound( self.zmb_vocals_attack ); + if ( isdefined( self.zmb_vocals_attack ) ) + self playsound( self.zmb_vocals_attack ); - if ( isdefined( self.nochangeduringmelee ) && self.nochangeduringmelee ) - self.safetochangescript = 0; + if ( isdefined( self.nochangeduringmelee ) && self.nochangeduringmelee ) + self.safetochangescript = 0; - if ( isdefined( self.is_inert ) && self.is_inert ) - return; + if ( isdefined( self.is_inert ) && self.is_inert ) + return; - set_zombie_melee_anim_state( self ); + set_zombie_melee_anim_state( self ); - if ( isdefined( self.melee_anim_func ) ) - self thread [[ self.melee_anim_func ]](); + if ( isdefined( self.melee_anim_func ) ) + self thread [[ self.melee_anim_func ]](); - while ( true ) - { - self waittill( "melee_anim", note ); + while ( true ) + { + self waittill( "melee_anim", note ); - if ( note == "end" ) - break; - else if ( note == "fire" ) - { - if ( !isdefined( self.enemy ) ) - break; + if ( note == "end" ) + break; + else if ( note == "fire" ) + { + if ( !isdefined( self.enemy ) ) + break; - if ( isdefined( self.dont_die_on_me ) && self.dont_die_on_me ) - break; + if ( isdefined( self.dont_die_on_me ) && self.dont_die_on_me ) + break; - if ( is_true( self.enemy.zombie_vars["zombie_powerup_zombie_blood_on"] ) ) - break; + if ( is_true( self.enemy.zombie_vars["zombie_powerup_zombie_blood_on"] ) ) + break; - self.enemy notify( "melee_swipe", self ); - oldhealth = self.enemy.health; - self melee(); + self.enemy notify( "melee_swipe", self ); + oldhealth = self.enemy.health; + self melee(); - if ( !isdefined( self.enemy ) ) - break; + if ( !isdefined( self.enemy ) ) + break; - if ( self.enemy.health >= oldhealth ) - { - if ( isdefined( self.melee_miss_func ) ) - self [[ self.melee_miss_func ]](); - else if ( isdefined( level.melee_miss_func ) ) - self [[ level.melee_miss_func ]](); - } - } - else if ( note == "stop" ) - { - if ( !cancontinuetomelee() ) - break; - } - } + if ( self.enemy.health >= oldhealth ) + { + if ( isdefined( self.melee_miss_func ) ) + self [[ self.melee_miss_func ]](); + else if ( isdefined( level.melee_miss_func ) ) + self [[ level.melee_miss_func ]](); + } + } + else if ( note == "stop" ) + { + if ( !cancontinuetomelee() ) + break; + } + } - if ( is_true( self.sliding_on_goo ) ) - self orientmode( "face enemy" ); - else - self orientmode( "face default" ); + if ( is_true( self.sliding_on_goo ) ) + self orientmode( "face enemy" ); + else + self orientmode( "face default" ); - if ( isdefined( self.nochangeduringmelee ) && self.nochangeduringmelee || is_true( self.sliding_on_goo ) ) - { - if ( isdefined( self.enemy ) ) - { - dist_sq = distancesquared( self.origin, self.enemy.origin ); + if ( isdefined( self.nochangeduringmelee ) && self.nochangeduringmelee || is_true( self.sliding_on_goo ) ) + { + if ( isdefined( self.enemy ) ) + { + dist_sq = distancesquared( self.origin, self.enemy.origin ); - if ( dist_sq > self.meleeattackdist * self.meleeattackdist ) - { - self.safetochangescript = 1; - wait 0.1; - break; - } - } - else - { - self.safetochangescript = 1; - wait 0.1; - break; - } - } - } + if ( dist_sq > self.meleeattackdist * self.meleeattackdist ) + { + self.safetochangescript = 1; + wait 0.1; + break; + } + } + else + { + self.safetochangescript = 1; + wait 0.1; + break; + } + } + } - if ( is_true( self.sliding_on_goo ) ) - self animmode( "slide" ); - else - self animmode( "none" ); + if ( is_true( self.sliding_on_goo ) ) + self animmode( "slide" ); + else + self animmode( "none" ); - self thread maps\mp\animscripts\zm_combat::main(); + self thread maps\mp\animscripts\zm_combat::main(); } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_nuked_perks.gsc b/scripts/zm/replaced/zm_nuked_perks.gsc index 2dcc3a8f..1ed26407 100644 --- a/scripts/zm/replaced/zm_nuked_perks.gsc +++ b/scripts/zm/replaced/zm_nuked_perks.gsc @@ -9,111 +9,111 @@ init_nuked_perks() { - level.perk_arrival_vehicle = getent( "perk_arrival_vehicle", "targetname" ); - level.perk_arrival_vehicle setmodel( "tag_origin" ); - flag_init( "perk_vehicle_bringing_in_perk" ); - structs = getstructarray( "zm_perk_machine", "targetname" ); + level.perk_arrival_vehicle = getent( "perk_arrival_vehicle", "targetname" ); + level.perk_arrival_vehicle setmodel( "tag_origin" ); + flag_init( "perk_vehicle_bringing_in_perk" ); + structs = getstructarray( "zm_perk_machine", "targetname" ); - for ( i = 0; i < structs.size; i++ ) - structs[i] structdelete(); + for ( i = 0; i < structs.size; i++ ) + structs[i] structdelete(); - level.nuked_perks = []; - level.nuked_perks[0] = spawnstruct(); - level.nuked_perks[0].model = "zombie_vending_revive"; - level.nuked_perks[0].script_noteworthy = "specialty_quickrevive"; - level.nuked_perks[0].turn_on_notify = "revive_on"; - level.nuked_perks[1] = spawnstruct(); - level.nuked_perks[1].model = "zombie_vending_sleight"; - level.nuked_perks[1].script_noteworthy = "specialty_fastreload"; - level.nuked_perks[1].turn_on_notify = "sleight_on"; - level.nuked_perks[2] = spawnstruct(); - level.nuked_perks[2].model = "zombie_vending_doubletap2"; - level.nuked_perks[2].script_noteworthy = "specialty_rof"; - level.nuked_perks[2].turn_on_notify = "doubletap_on"; - level.nuked_perks[3] = spawnstruct(); - level.nuked_perks[3].model = "zombie_vending_jugg"; - level.nuked_perks[3].script_noteworthy = "specialty_armorvest"; - level.nuked_perks[3].turn_on_notify = "juggernog_on"; - level.nuked_perks[4] = spawnstruct(); - level.nuked_perks[4].model = "p6_anim_zm_buildable_pap"; - level.nuked_perks[4].script_noteworthy = "specialty_weapupgrade"; - level.nuked_perks[4].turn_on_notify = "Pack_A_Punch_on"; + level.nuked_perks = []; + level.nuked_perks[0] = spawnstruct(); + level.nuked_perks[0].model = "zombie_vending_revive"; + level.nuked_perks[0].script_noteworthy = "specialty_quickrevive"; + level.nuked_perks[0].turn_on_notify = "revive_on"; + level.nuked_perks[1] = spawnstruct(); + level.nuked_perks[1].model = "zombie_vending_sleight"; + level.nuked_perks[1].script_noteworthy = "specialty_fastreload"; + level.nuked_perks[1].turn_on_notify = "sleight_on"; + level.nuked_perks[2] = spawnstruct(); + level.nuked_perks[2].model = "zombie_vending_doubletap2"; + level.nuked_perks[2].script_noteworthy = "specialty_rof"; + level.nuked_perks[2].turn_on_notify = "doubletap_on"; + level.nuked_perks[3] = spawnstruct(); + level.nuked_perks[3].model = "zombie_vending_jugg"; + level.nuked_perks[3].script_noteworthy = "specialty_armorvest"; + level.nuked_perks[3].turn_on_notify = "juggernog_on"; + level.nuked_perks[4] = spawnstruct(); + level.nuked_perks[4].model = "p6_anim_zm_buildable_pap"; + level.nuked_perks[4].script_noteworthy = "specialty_weapupgrade"; + level.nuked_perks[4].turn_on_notify = "Pack_A_Punch_on"; - level.override_perk_targetname = "zm_perk_machine_override"; - random_perk_structs = []; - perk_structs = getstructarray( "zm_random_machine", "script_noteworthy" ); + level.override_perk_targetname = "zm_perk_machine_override"; + random_perk_structs = []; + perk_structs = getstructarray( "zm_random_machine", "script_noteworthy" ); - for ( i = 0; i < perk_structs.size; i++ ) - { - random_perk_structs[i] = getstruct( perk_structs[i].target, "targetname" ); - random_perk_structs[i].script_int = perk_structs[i].script_int; - } + for ( i = 0; i < perk_structs.size; i++ ) + { + random_perk_structs[i] = getstruct( perk_structs[i].target, "targetname" ); + random_perk_structs[i].script_int = perk_structs[i].script_int; + } - level.random_perk_structs = array_randomize( random_perk_structs ); + level.random_perk_structs = array_randomize( random_perk_structs ); - for ( i = 0; i < 5; i++ ) - { - level.random_perk_structs[i].targetname = "zm_perk_machine_override"; - level.random_perk_structs[i].model = level.nuked_perks[i].model; - level.random_perk_structs[i].blocker_model = getent( level.random_perk_structs[i].target, "targetname" ); - level.random_perk_structs[i].script_noteworthy = level.nuked_perks[i].script_noteworthy; - level.random_perk_structs[i].turn_on_notify = level.nuked_perks[i].turn_on_notify; + for ( i = 0; i < 5; i++ ) + { + level.random_perk_structs[i].targetname = "zm_perk_machine_override"; + level.random_perk_structs[i].model = level.nuked_perks[i].model; + level.random_perk_structs[i].blocker_model = getent( level.random_perk_structs[i].target, "targetname" ); + level.random_perk_structs[i].script_noteworthy = level.nuked_perks[i].script_noteworthy; + level.random_perk_structs[i].turn_on_notify = level.nuked_perks[i].turn_on_notify; - if ( !isdefined( level.struct_class_names["targetname"]["zm_perk_machine_override"] ) ) - level.struct_class_names["targetname"]["zm_perk_machine_override"] = []; + if ( !isdefined( level.struct_class_names["targetname"]["zm_perk_machine_override"] ) ) + level.struct_class_names["targetname"]["zm_perk_machine_override"] = []; - level.struct_class_names["targetname"]["zm_perk_machine_override"][level.struct_class_names["targetname"]["zm_perk_machine_override"].size] = level.random_perk_structs[i]; - } + level.struct_class_names["targetname"]["zm_perk_machine_override"][level.struct_class_names["targetname"]["zm_perk_machine_override"].size] = level.random_perk_structs[i]; + } } perks_from_the_sky() { - level thread turn_perks_on(); - top_height = 8000; - machines = []; - machine_triggers = []; - machines[0] = getent( "vending_revive", "targetname" ); + level thread turn_perks_on(); + top_height = 8000; + machines = []; + machine_triggers = []; + machines[0] = getent( "vending_revive", "targetname" ); - if ( !isdefined( machines[0] ) ) - return; + if ( !isdefined( machines[0] ) ) + return; - machine_triggers[0] = getent( "vending_revive", "target" ); - move_perk( machines[0], top_height, 5.0, 0.001 ); - machine_triggers[0] trigger_off(); - machines[1] = getent( "vending_doubletap", "targetname" ); - machine_triggers[1] = getent( "vending_doubletap", "target" ); - move_perk( machines[1], top_height, 5.0, 0.001 ); - machine_triggers[1] trigger_off(); - machines[2] = getent( "vending_sleight", "targetname" ); - machine_triggers[2] = getent( "vending_sleight", "target" ); - move_perk( machines[2], top_height, 5.0, 0.001 ); - machine_triggers[2] trigger_off(); - machines[3] = getent( "vending_jugg", "targetname" ); - machine_triggers[3] = getent( "vending_jugg", "target" ); - move_perk( machines[3], top_height, 5.0, 0.001 ); - machine_triggers[3] trigger_off(); - machine_triggers[4] = getent( "specialty_weapupgrade", "script_noteworthy" ); - machines[4] = getent( machine_triggers[4].target, "targetname" ); - move_perk( machines[4], top_height, 5.0, 0.001 ); - machine_triggers[4] trigger_off(); - flag_wait( "initial_blackscreen_passed" ); + machine_triggers[0] = getent( "vending_revive", "target" ); + move_perk( machines[0], top_height, 5.0, 0.001 ); + machine_triggers[0] trigger_off(); + machines[1] = getent( "vending_doubletap", "targetname" ); + machine_triggers[1] = getent( "vending_doubletap", "target" ); + move_perk( machines[1], top_height, 5.0, 0.001 ); + machine_triggers[1] trigger_off(); + machines[2] = getent( "vending_sleight", "targetname" ); + machine_triggers[2] = getent( "vending_sleight", "target" ); + move_perk( machines[2], top_height, 5.0, 0.001 ); + machine_triggers[2] trigger_off(); + machines[3] = getent( "vending_jugg", "targetname" ); + machine_triggers[3] = getent( "vending_jugg", "target" ); + move_perk( machines[3], top_height, 5.0, 0.001 ); + machine_triggers[3] trigger_off(); + machine_triggers[4] = getent( "specialty_weapupgrade", "script_noteworthy" ); + machines[4] = getent( machine_triggers[4].target, "targetname" ); + move_perk( machines[4], top_height, 5.0, 0.001 ); + machine_triggers[4] trigger_off(); + flag_wait( "initial_blackscreen_passed" ); - wait( randomintrange( 10, 20 ) ); - bring_random_perk( machines, machine_triggers ); + wait( randomintrange( 10, 20 ) ); + bring_random_perk( machines, machine_triggers ); - wait_for_round_range( 5, 6 ); - wait( randomintrange( 30, 60 ) ); - bring_random_perk( machines, machine_triggers ); + wait_for_round_range( 5, 6 ); + wait( randomintrange( 30, 60 ) ); + bring_random_perk( machines, machine_triggers ); - wait_for_round_range( 10, 11 ); - wait( randomintrange( 30, 60 ) ); - bring_random_perk( machines, machine_triggers ); + wait_for_round_range( 10, 11 ); + wait( randomintrange( 30, 60 ) ); + bring_random_perk( machines, machine_triggers ); - wait_for_round_range( 15, 16 ); - wait( randomintrange( 60, 120 ) ); - bring_random_perk( machines, machine_triggers ); + wait_for_round_range( 15, 16 ); + wait( randomintrange( 60, 120 ) ); + bring_random_perk( machines, machine_triggers ); - wait_for_round_range( 20, 21 ); - wait( randomintrange( 60, 120 ) ); - bring_random_perk( machines, machine_triggers ); + wait_for_round_range( 20, 21 ); + wait( randomintrange( 60, 120 ) ); + bring_random_perk( machines, machine_triggers ); } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_prison_sq_bg.gsc b/scripts/zm/replaced/zm_prison_sq_bg.gsc index 43478441..d1a8dc40 100644 --- a/scripts/zm/replaced/zm_prison_sq_bg.gsc +++ b/scripts/zm/replaced/zm_prison_sq_bg.gsc @@ -9,70 +9,70 @@ give_sq_bg_reward() { - s_reward_origin = getstruct( "sq_bg_reward", "targetname" ); - t_near = spawn( "trigger_radius", s_reward_origin.origin, 0, 196, 64 ); + s_reward_origin = getstruct( "sq_bg_reward", "targetname" ); + t_near = spawn( "trigger_radius", s_reward_origin.origin, 0, 196, 64 ); - while ( true ) - { - t_near waittill( "trigger", ent ); + while ( true ) + { + t_near waittill( "trigger", ent ); - if ( isplayer( ent ) ) - { - t_near thread sq_bg_spawn_rumble(); - break; - } + if ( isplayer( ent ) ) + { + t_near thread sq_bg_spawn_rumble(); + break; + } - wait 0.1; - } + wait 0.1; + } - str_reward_weapon = "blundergat_zm"; - str_loc = &"ZM_PRISON_SQ_BG"; - m_reward_model = spawn_weapon_model( str_reward_weapon, undefined, s_reward_origin.origin, s_reward_origin.angles + (0, 0, 90) ); - m_reward_model moveto( m_reward_model.origin + vectorscale( ( 0, 0, 1 ), 14.0 ), 5 ); - level setclientfield( "sq_bg_reward_portal", 1 ); - self sethintstring( str_loc ); + str_reward_weapon = "blundergat_zm"; + str_loc = &"ZM_PRISON_SQ_BG"; + m_reward_model = spawn_weapon_model( str_reward_weapon, undefined, s_reward_origin.origin, s_reward_origin.angles + (0, 0, 90) ); + m_reward_model moveto( m_reward_model.origin + vectorscale( ( 0, 0, 1 ), 14.0 ), 5 ); + level setclientfield( "sq_bg_reward_portal", 1 ); + self sethintstring( str_loc ); - while ( true ) - { - self waittill( "trigger", player ); + while ( true ) + { + self waittill( "trigger", 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 ( player hasweapon( str_reward_weapon ) ) - { - continue; - } - else - { - self delete(); - level setclientfield( "sq_bg_reward_portal", 0 ); - wait_network_frame(); - m_reward_model delete(); - player take_old_weapon_and_give_reward( current_weapon, str_reward_weapon ); - } - } - } + 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 ( player hasweapon( str_reward_weapon ) ) + { + continue; + } + else + { + self delete(); + level setclientfield( "sq_bg_reward_portal", 0 ); + wait_network_frame(); + m_reward_model delete(); + player take_old_weapon_and_give_reward( current_weapon, str_reward_weapon ); + } + } + } - t_near delete(); + t_near delete(); } take_old_weapon_and_give_reward( current_weapon, reward_weapon, weapon_limit_override = 0 ) { - if ( weapon_limit_override == 1 ) - self takeweapon( current_weapon ); - else - { - primaries = self getweaponslistprimaries(); + if ( weapon_limit_override == 1 ) + self takeweapon( current_weapon ); + else + { + primaries = self getweaponslistprimaries(); - if ( isdefined( primaries ) && primaries.size >= get_player_weapon_limit( self ) ) - self takeweapon( current_weapon ); - } + if ( isdefined( primaries ) && primaries.size >= get_player_weapon_limit( self ) ) + self takeweapon( current_weapon ); + } - self giveweapon( reward_weapon ); - self givestartammo( reward_weapon ); - self switchtoweapon( reward_weapon ); - flag_set( "warden_blundergat_obtained" ); - self playsoundtoplayer( "vox_brutus_easter_egg_872_0", self ); + self giveweapon( reward_weapon ); + self givestartammo( reward_weapon ); + self switchtoweapon( reward_weapon ); + flag_set( "warden_blundergat_obtained" ); + self playsoundtoplayer( "vox_brutus_easter_egg_872_0", self ); } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_prison_sq_final.gsc b/scripts/zm/replaced/zm_prison_sq_final.gsc index 630eb9da..3b4616fb 100644 --- a/scripts/zm/replaced/zm_prison_sq_final.gsc +++ b/scripts/zm/replaced/zm_prison_sq_final.gsc @@ -18,424 +18,424 @@ stage_one() { - if ( isdefined( level.gamedifficulty ) && level.gamedifficulty == 0 ) - { - sq_final_easy_cleanup(); - return; - } + if ( isdefined( level.gamedifficulty ) && level.gamedifficulty == 0 ) + { + sq_final_easy_cleanup(); + return; + } - precachemodel( "p6_zm_al_audio_headset_icon" ); - flag_wait( "quest_completed_thrice" ); - flag_wait( "spoon_obtained" ); - flag_wait( "warden_blundergat_obtained" ); + precachemodel( "p6_zm_al_audio_headset_icon" ); + flag_wait( "quest_completed_thrice" ); + flag_wait( "spoon_obtained" ); + flag_wait( "warden_blundergat_obtained" ); - for ( i = 1; i < 4; i++ ) - { - m_nixie_tube = getent( "nixie_tube_" + i, "targetname" ); - m_nixie_tube thread nixie_tube_scramble_protected_effects( i ); - } + for ( i = 1; i < 4; i++ ) + { + m_nixie_tube = getent( "nixie_tube_" + i, "targetname" ); + m_nixie_tube thread nixie_tube_scramble_protected_effects( i ); + } - level waittill_multiple( "nixie_tube_trigger_1", "nixie_tube_trigger_2", "nixie_tube_trigger_3" ); - nixie_tube_off(); + level waittill_multiple( "nixie_tube_trigger_1", "nixie_tube_trigger_2", "nixie_tube_trigger_3" ); + nixie_tube_off(); - m_nixie_tube = getent( "nixie_tube_1", "targetname" ); - m_nixie_tube playsoundwithnotify( "vox_brutus_nixie_right_0", "scary_voice" ); + m_nixie_tube = getent( "nixie_tube_1", "targetname" ); + m_nixie_tube playsoundwithnotify( "vox_brutus_nixie_right_0", "scary_voice" ); - m_nixie_tube waittill( "scary_voice" ); + m_nixie_tube waittill( "scary_voice" ); - wait 3; - level thread stage_two(); + wait 3; + level thread stage_two(); } stage_two() { - audio_logs = []; - audio_logs[0] = []; - audio_logs[0][0] = "vox_guar_tour_vo_1_0"; - audio_logs[0][1] = "vox_guar_tour_vo_2_0"; - audio_logs[0][2] = "vox_guar_tour_vo_3_0"; - audio_logs[2] = []; - audio_logs[2][0] = "vox_guar_tour_vo_4_0"; - audio_logs[3] = []; - audio_logs[3][0] = "vox_guar_tour_vo_5_0"; - audio_logs[3][1] = "vox_guar_tour_vo_6_0"; - audio_logs[4] = []; - audio_logs[4][0] = "vox_guar_tour_vo_7_0"; - audio_logs[5] = []; - audio_logs[5][0] = "vox_guar_tour_vo_8_0"; - audio_logs[6] = []; - audio_logs[6][0] = "vox_guar_tour_vo_9_0"; - audio_logs[6][1] = "vox_guar_tour_vo_10_0"; - play_sq_audio_log( 0, audio_logs[0], 0 ); + audio_logs = []; + audio_logs[0] = []; + audio_logs[0][0] = "vox_guar_tour_vo_1_0"; + audio_logs[0][1] = "vox_guar_tour_vo_2_0"; + audio_logs[0][2] = "vox_guar_tour_vo_3_0"; + audio_logs[2] = []; + audio_logs[2][0] = "vox_guar_tour_vo_4_0"; + audio_logs[3] = []; + audio_logs[3][0] = "vox_guar_tour_vo_5_0"; + audio_logs[3][1] = "vox_guar_tour_vo_6_0"; + audio_logs[4] = []; + audio_logs[4][0] = "vox_guar_tour_vo_7_0"; + audio_logs[5] = []; + audio_logs[5][0] = "vox_guar_tour_vo_8_0"; + audio_logs[6] = []; + audio_logs[6][0] = "vox_guar_tour_vo_9_0"; + audio_logs[6][1] = "vox_guar_tour_vo_10_0"; + play_sq_audio_log( 0, audio_logs[0], 0 ); - for ( i = 2; i <= 6; i++ ) - play_sq_audio_log( i, audio_logs[i], 1 ); + for ( i = 2; i <= 6; i++ ) + play_sq_audio_log( i, audio_logs[i], 1 ); - level.m_headphones delete(); - t_plane_fly_afterlife = getent( "plane_fly_afterlife_trigger", "script_noteworthy" ); - t_plane_fly_afterlife playsound( "zmb_easteregg_laugh" ); - t_plane_fly_afterlife trigger_on(); + level.m_headphones delete(); + t_plane_fly_afterlife = getent( "plane_fly_afterlife_trigger", "script_noteworthy" ); + t_plane_fly_afterlife playsound( "zmb_easteregg_laugh" ); + t_plane_fly_afterlife trigger_on(); - players = get_players(); - foreach ( player in players ) - { - if ( is_player_valid( player ) ) - { - player thread scripts\zm\replaced\_zm_sq::sq_give_player_all_perks(); - } - } + players = get_players(); + foreach ( player in players ) + { + if ( is_player_valid( player ) ) + { + player thread scripts\zm\replaced\_zm_sq::sq_give_player_all_perks(); + } + } } final_flight_trigger() { - t_plane_fly = getent( "plane_fly_trigger", "targetname" ); - self setcursorhint( "HINT_NOICON" ); - self sethintstring( "" ); + t_plane_fly = getent( "plane_fly_trigger", "targetname" ); + self setcursorhint( "HINT_NOICON" ); + self sethintstring( "" ); - while ( isdefined( self ) ) - { - self waittill( "trigger", e_triggerer ); + while ( isdefined( self ) ) + { + self waittill( "trigger", e_triggerer ); - if ( isplayer( e_triggerer ) ) - { - if ( isdefined( level.custom_plane_validation ) ) - { - valid = self [[ level.custom_plane_validation ]]( e_triggerer ); + if ( isplayer( e_triggerer ) ) + { + if ( isdefined( level.custom_plane_validation ) ) + { + valid = self [[ level.custom_plane_validation ]]( e_triggerer ); - if ( !valid ) - continue; - } + if ( !valid ) + continue; + } - players = getplayers(); + players = getplayers(); - b_everyone_is_ready = 1; + b_everyone_is_ready = 1; - foreach ( player in players ) - { - if ( !isdefined( player ) || player.sessionstate == "spectator" || player maps\mp\zombies\_zm_laststand::player_is_in_laststand() ) - b_everyone_is_ready = 0; - } + foreach ( player in players ) + { + if ( !isdefined( player ) || player.sessionstate == "spectator" || player maps\mp\zombies\_zm_laststand::player_is_in_laststand() ) + b_everyone_is_ready = 0; + } - if ( !b_everyone_is_ready ) - continue; + if ( !b_everyone_is_ready ) + continue; - if ( flag( "plane_is_away" ) ) - continue; + if ( flag( "plane_is_away" ) ) + continue; - flag_set( "plane_is_away" ); - t_plane_fly trigger_off(); + flag_set( "plane_is_away" ); + t_plane_fly trigger_off(); - foreach ( player in players ) - { - if ( isdefined( player ) ) - { - player thread final_flight_player_thread(); - } - } + foreach ( player in players ) + { + if ( isdefined( player ) ) + { + player thread final_flight_player_thread(); + } + } - return; - } - } + return; + } + } } final_flight_player_thread() { - self endon( "death_or_disconnect" ); - self.on_a_plane = 1; - self.dontspeak = 1; - self setclientfieldtoplayer( "isspeaking", 1 ); + self endon( "death_or_disconnect" ); + self.on_a_plane = 1; + self.dontspeak = 1; + self setclientfieldtoplayer( "isspeaking", 1 ); - if ( !( isdefined( self.afterlife ) && self.afterlife ) ) - { - self.keep_perks = 1; - self afterlife_remove(); - self.afterlife = 1; - self thread afterlife_laststand(); + if ( !( isdefined( self.afterlife ) && self.afterlife ) ) + { + self.keep_perks = 1; + self afterlife_remove(); + self.afterlife = 1; + self thread afterlife_laststand(); - self waittill( "player_fake_corpse_created" ); - } + self waittill( "player_fake_corpse_created" ); + } - self afterlife_infinite_mana( 1 ); - level.final_flight_activated = 1; - level.final_flight_players[level.final_flight_players.size] = self; - a_nml_teleport_targets = []; + self afterlife_infinite_mana( 1 ); + level.final_flight_activated = 1; + level.final_flight_players[level.final_flight_players.size] = self; + a_nml_teleport_targets = []; - for ( i = 1; i < 6; i++ ) - a_nml_teleport_targets[i - 1] = getstruct( "nml_telepoint_" + i, "targetname" ); + for ( i = 1; i < 6; i++ ) + a_nml_teleport_targets[i - 1] = getstruct( "nml_telepoint_" + i, "targetname" ); - self.n_passenger_index = level.final_flight_players.size; - a_players = []; - a_players = getplayers(); + self.n_passenger_index = level.final_flight_players.size; + a_players = []; + a_players = getplayers(); - if ( a_players.size == 1 ) - self.n_passenger_index = 1; + if ( a_players.size == 1 ) + self.n_passenger_index = 1; - m_plane_craftable = getent( "plane_craftable", "targetname" ); - m_plane_about_to_crash = getent( "plane_about_to_crash", "targetname" ); - m_plane_about_to_crash ghost(); - veh_plane_flyable = getent( "plane_flyable", "targetname" ); - veh_plane_flyable show(); - flag_set( "plane_boarded" ); - t_plane_fly = getent( "plane_fly_trigger", "targetname" ); - str_hint_string = "BOARD FINAL FLIGHT"; - t_plane_fly sethintstring( str_hint_string ); - self playerlinktodelta( m_plane_craftable, "tag_player_crouched_" + ( self.n_passenger_index + 1 ) ); - self allowcrouch( 1 ); - self allowstand( 0 ); - self clientnotify( "sndFFCON" ); - flag_wait( "plane_departed" ); - level notify( "sndStopBrutusLoop" ); - self clientnotify( "sndPS" ); - self playsoundtoplayer( "zmb_plane_takeoff", self ); - level thread maps\mp\zombies\_zm_audio::sndmusicstingerevent( "plane_takeoff", self ); - m_plane_craftable ghost(); - self playerlinktodelta( veh_plane_flyable, "tag_player_crouched_" + ( self.n_passenger_index + 1 ) ); - self setclientfieldtoplayer( "effects_escape_flight", 1 ); - flag_wait( "plane_approach_bridge" ); - self thread maps\mp\zm_alcatraz_sq::snddelayedimp(); - self setclientfieldtoplayer( "effects_escape_flight", 2 ); - self unlink(); - self playerlinktoabsolute( veh_plane_flyable, "tag_player_crouched_" + ( self.n_passenger_index + 1 ) ); - flag_wait( "plane_zapped" ); - flag_set( "activate_player_zone_bridge" ); - self playsoundtoplayer( "zmb_plane_fall", self ); - self setclientfieldtoplayer( "effects_escape_flight", 3 ); - self.dontspeak = 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 ); - flag_wait( "plane_crashed" ); - self thread fadetoblackforxsec( 0, 2, 0, 0.5, "black" ); - self unlink(); - self allowstand( 1 ); - self setstance( "stand" ); - self allowcrouch( 0 ); - flag_clear( "spawn_zombies" ); - self setorigin( a_nml_teleport_targets[self.n_passenger_index].origin ); - e_poi = getstruct( "plane_crash_poi", "targetname" ); - vec_to_target = e_poi.origin - self.origin; - vec_to_target = vectortoangles( vec_to_target ); - vec_to_target = ( 0, vec_to_target[1], 0 ); - self setplayerangles( vec_to_target ); - n_shellshock_duration = 5; - self shellshock( "explosion", n_shellshock_duration ); - self.on_a_plane = 0; - stage_final(); + m_plane_craftable = getent( "plane_craftable", "targetname" ); + m_plane_about_to_crash = getent( "plane_about_to_crash", "targetname" ); + m_plane_about_to_crash ghost(); + veh_plane_flyable = getent( "plane_flyable", "targetname" ); + veh_plane_flyable show(); + flag_set( "plane_boarded" ); + t_plane_fly = getent( "plane_fly_trigger", "targetname" ); + str_hint_string = "BOARD FINAL FLIGHT"; + t_plane_fly sethintstring( str_hint_string ); + self playerlinktodelta( m_plane_craftable, "tag_player_crouched_" + ( self.n_passenger_index + 1 ) ); + self allowcrouch( 1 ); + self allowstand( 0 ); + self clientnotify( "sndFFCON" ); + flag_wait( "plane_departed" ); + level notify( "sndStopBrutusLoop" ); + self clientnotify( "sndPS" ); + self playsoundtoplayer( "zmb_plane_takeoff", self ); + level thread maps\mp\zombies\_zm_audio::sndmusicstingerevent( "plane_takeoff", self ); + m_plane_craftable ghost(); + self playerlinktodelta( veh_plane_flyable, "tag_player_crouched_" + ( self.n_passenger_index + 1 ) ); + self setclientfieldtoplayer( "effects_escape_flight", 1 ); + flag_wait( "plane_approach_bridge" ); + self thread maps\mp\zm_alcatraz_sq::snddelayedimp(); + self setclientfieldtoplayer( "effects_escape_flight", 2 ); + self unlink(); + self playerlinktoabsolute( veh_plane_flyable, "tag_player_crouched_" + ( self.n_passenger_index + 1 ) ); + flag_wait( "plane_zapped" ); + flag_set( "activate_player_zone_bridge" ); + self playsoundtoplayer( "zmb_plane_fall", self ); + self setclientfieldtoplayer( "effects_escape_flight", 3 ); + self.dontspeak = 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 ); + flag_wait( "plane_crashed" ); + self thread fadetoblackforxsec( 0, 2, 0, 0.5, "black" ); + self unlink(); + self allowstand( 1 ); + self setstance( "stand" ); + self allowcrouch( 0 ); + flag_clear( "spawn_zombies" ); + self setorigin( a_nml_teleport_targets[self.n_passenger_index].origin ); + e_poi = getstruct( "plane_crash_poi", "targetname" ); + vec_to_target = e_poi.origin - self.origin; + vec_to_target = vectortoangles( vec_to_target ); + vec_to_target = ( 0, vec_to_target[1], 0 ); + self setplayerangles( vec_to_target ); + n_shellshock_duration = 5; + self shellshock( "explosion", n_shellshock_duration ); + self.on_a_plane = 0; + stage_final(); } stage_final() { - level notify( "stage_final" ); - level endon( "stage_final" ); - b_everyone_alive = 0; + level notify( "stage_final" ); + level endon( "stage_final" ); + b_everyone_alive = 0; - while ( isdefined( b_everyone_alive ) && !b_everyone_alive ) - { - b_everyone_alive = 1; - a_players = getplayers(); + while ( isdefined( b_everyone_alive ) && !b_everyone_alive ) + { + b_everyone_alive = 1; + a_players = getplayers(); - foreach ( player in a_players ) - { - if ( isdefined( player.afterlife ) && player.afterlife ) - { - b_everyone_alive = 0; - wait 0.05; - break; - } - } - } + foreach ( player in a_players ) + { + if ( isdefined( player.afterlife ) && player.afterlife ) + { + b_everyone_alive = 0; + wait 0.05; + break; + } + } + } - level._should_skip_ignore_player_logic = ::final_showdown_zombie_logic; - flag_set( "spawn_zombies" ); - array_func( getplayers(), maps\mp\zombies\_zm_afterlife::afterlife_remove ); - p_weasel = undefined; - a_player_team = []; - a_players = getplayers(); + level._should_skip_ignore_player_logic = ::final_showdown_zombie_logic; + flag_set( "spawn_zombies" ); + array_func( getplayers(), maps\mp\zombies\_zm_afterlife::afterlife_remove ); + p_weasel = undefined; + a_player_team = []; + a_players = getplayers(); - foreach ( player in a_players ) - { - player.dontspeak = 1; - player setclientfieldtoplayer( "isspeaking", 1 ); + foreach ( player in a_players ) + { + player.dontspeak = 1; + player setclientfieldtoplayer( "isspeaking", 1 ); - if ( player.character_name == "Arlington" ) - { - p_weasel = player; - continue; - } + if ( player.character_name == "Arlington" ) + { + p_weasel = player; + continue; + } - a_player_team[a_player_team.size] = player; - } + a_player_team[a_player_team.size] = player; + } - if ( isdefined( p_weasel ) && a_player_team.size > 0 ) - { - level.longregentime = 1000000; - level.playerhealth_regularregendelay = 1000000; - p_weasel.team = level.zombie_team; - p_weasel.pers["team"] = level.zombie_team; - p_weasel.sessionteam = level.zombie_team; - p_weasel.maxhealth = a_player_team.size * 2000; - p_weasel.health = p_weasel.maxhealth; + if ( isdefined( p_weasel ) && a_player_team.size > 0 ) + { + level.longregentime = 1000000; + level.playerhealth_regularregendelay = 1000000; + p_weasel.team = level.zombie_team; + p_weasel.pers["team"] = level.zombie_team; + p_weasel.sessionteam = level.zombie_team; + p_weasel.maxhealth = a_player_team.size * 2000; + p_weasel.health = p_weasel.maxhealth; - foreach ( player in a_player_team ) - { - player.maxhealth = 2000; - player.health = player.maxhealth; - } + foreach ( player in a_player_team ) + { + player.maxhealth = 2000; + player.health = player.maxhealth; + } - level thread final_showdown_track_weasel( p_weasel ); - level thread final_showdown_track_team( a_player_team ); - n_spawns_needed = 2; + level thread final_showdown_track_weasel( p_weasel ); + level thread final_showdown_track_team( a_player_team ); + n_spawns_needed = 2; - for ( i = n_spawns_needed; i > 0; i-- ) - maps\mp\zombies\_zm_ai_brutus::brutus_spawn_in_zone( "zone_golden_gate_bridge", 1 ); + for ( i = n_spawns_needed; i > 0; i-- ) + maps\mp\zombies\_zm_ai_brutus::brutus_spawn_in_zone( "zone_golden_gate_bridge", 1 ); - level thread final_battle_vo( p_weasel, a_player_team ); - level notify( "pop_goes_the_weasel_achieved" ); + level thread final_battle_vo( p_weasel, a_player_team ); + level notify( "pop_goes_the_weasel_achieved" ); - level waittill( "showdown_over" ); - } - else if ( isdefined( p_weasel ) ) - level.winner = "weasel"; - else - level.winner = "team"; + level waittill( "showdown_over" ); + } + else if ( isdefined( p_weasel ) ) + level.winner = "weasel"; + else + level.winner = "team"; - level clientnotify( "sndSQF" ); - level.brutus_respawn_after_despawn = 0; - level thread clean_up_final_brutuses(); - wait 2; + level clientnotify( "sndSQF" ); + level.brutus_respawn_after_despawn = 0; + level thread clean_up_final_brutuses(); + wait 2; - level notify("freeze_timers"); + level notify("freeze_timers"); - if ( level.winner == "weasel" ) - { - a_players = getplayers(); + if ( level.winner == "weasel" ) + { + a_players = getplayers(); - foreach ( player in a_players ) - { - player freezecontrols( 1 ); - player maps\mp\zombies\_zm_stats::increment_client_stat( "prison_ee_good_ending", 0 ); - player thread fadetoblackforxsec( 0, 5, 0.5, 0, "white" ); - player create_ending_message( &"ZM_PRISON_GOOD" ); - player.client_hint.sort = 55; - player.client_hint.color = ( 0, 0, 0 ); - playsoundatposition( "zmb_quest_final_white_good", ( 0, 0, 0 ) ); - level.sndgameovermusicoverride = "game_over_final_good"; - } + foreach ( player in a_players ) + { + player freezecontrols( 1 ); + player maps\mp\zombies\_zm_stats::increment_client_stat( "prison_ee_good_ending", 0 ); + player thread fadetoblackforxsec( 0, 5, 0.5, 0, "white" ); + player create_ending_message( &"ZM_PRISON_GOOD" ); + player.client_hint.sort = 55; + player.client_hint.color = ( 0, 0, 0 ); + playsoundatposition( "zmb_quest_final_white_good", ( 0, 0, 0 ) ); + level.sndgameovermusicoverride = "game_over_final_good"; + } - level.custom_intermission = ::player_intermission_bridge; - } - else - { - a_players = getplayers(); + level.custom_intermission = ::player_intermission_bridge; + } + else + { + a_players = getplayers(); - foreach ( player in a_players ) - { - player freezecontrols( 1 ); - player maps\mp\zombies\_zm_stats::increment_client_stat( "prison_ee_bad_ending", 0 ); - player thread fadetoblackforxsec( 0, 5, 0.5, 0, "white" ); - player create_ending_message( &"ZM_PRISON_BAD" ); - player.client_hint.sort = 55; - player.client_hint.color = ( 0, 0, 0 ); - playsoundatposition( "zmb_quest_final_white_bad", ( 0, 0, 0 ) ); - level.sndgameovermusicoverride = "game_over_final_bad"; - } - } + foreach ( player in a_players ) + { + player freezecontrols( 1 ); + player maps\mp\zombies\_zm_stats::increment_client_stat( "prison_ee_bad_ending", 0 ); + player thread fadetoblackforxsec( 0, 5, 0.5, 0, "white" ); + player create_ending_message( &"ZM_PRISON_BAD" ); + player.client_hint.sort = 55; + player.client_hint.color = ( 0, 0, 0 ); + playsoundatposition( "zmb_quest_final_white_bad", ( 0, 0, 0 ) ); + level.sndgameovermusicoverride = "game_over_final_bad"; + } + } - wait 5; - a_players = getplayers(); + wait 5; + a_players = getplayers(); - foreach ( player in a_players ) - { - if ( isdefined( player.client_hint ) ) - player thread destroy_tutorial_message(); + foreach ( player in a_players ) + { + if ( isdefined( player.client_hint ) ) + player thread destroy_tutorial_message(); - if ( isdefined( player.revivetrigger ) ) - { - player thread revive_success( player, 0 ); - player cleanup_suicide_hud(); - } + if ( isdefined( player.revivetrigger ) ) + { + player thread revive_success( player, 0 ); + player cleanup_suicide_hud(); + } - if ( isdefined( player ) ) - player ghost(); - } + if ( isdefined( player ) ) + player ghost(); + } - if ( isdefined( p_weasel ) ) - { - p_weasel.team = "allies"; - p_weasel.pers["team"] = "allies"; - p_weasel.sessionteam = "allies"; - p_weasel ghost(); - } + if ( isdefined( p_weasel ) ) + { + p_weasel.team = "allies"; + p_weasel.pers["team"] = "allies"; + p_weasel.sessionteam = "allies"; + p_weasel ghost(); + } - level notify( "end_game" ); + level notify( "end_game" ); } final_battle_vo( p_weasel, a_player_team ) { - level endon( "showdown_over" ); - wait 10; - a_players = arraycopy( a_player_team ); - player = a_players[randomintrange( 0, a_players.size )]; - arrayremovevalue( a_players, player ); + level endon( "showdown_over" ); + wait 10; + a_players = arraycopy( a_player_team ); + player = a_players[randomintrange( 0, a_players.size )]; + arrayremovevalue( a_players, player ); - if ( a_players.size > 0 ) - player_2 = a_players[randomintrange( 0, a_players.size )]; + if ( a_players.size > 0 ) + player_2 = a_players[randomintrange( 0, a_players.size )]; - if ( isdefined( player ) ) - player final_battle_reveal(); + if ( isdefined( player ) ) + player final_battle_reveal(); - wait 3; + wait 3; - if ( isdefined( p_weasel ) ) - p_weasel playsoundontag( "vox_plr_3_end_scenario_0", "J_Head" ); + if ( isdefined( p_weasel ) ) + p_weasel playsoundontag( "vox_plr_3_end_scenario_0", "J_Head" ); - wait 1; + wait 1; - foreach ( player in a_player_team ) - { - level thread final_showdown_create_icon( player, p_weasel ); - level thread final_showdown_create_icon( p_weasel, player ); - } + foreach ( player in a_player_team ) + { + level thread final_showdown_create_icon( player, p_weasel ); + level thread final_showdown_create_icon( p_weasel, player ); + } - wait 10; + wait 10; - if ( isdefined( player_2 ) ) - player_2 playsoundontag( "vox_plr_" + player_2.characterindex + "_end_scenario_1", "J_Head" ); - else if ( isdefined( player ) ) - player playsoundontag( "vox_plr_" + player.characterindex + "_end_scenario_1", "J_Head" ); + if ( isdefined( player_2 ) ) + player_2 playsoundontag( "vox_plr_" + player_2.characterindex + "_end_scenario_1", "J_Head" ); + else if ( isdefined( player ) ) + player playsoundontag( "vox_plr_" + player.characterindex + "_end_scenario_1", "J_Head" ); - wait 4; + wait 4; - if ( isdefined( p_weasel ) ) - { - p_weasel playsoundontag( "vox_plr_3_end_scenario_1", "J_Head" ); - p_weasel.dontspeak = 0; - p_weasel setclientfieldtoplayer( "isspeaking", 0 ); - } + if ( isdefined( p_weasel ) ) + { + p_weasel playsoundontag( "vox_plr_3_end_scenario_1", "J_Head" ); + p_weasel.dontspeak = 0; + p_weasel setclientfieldtoplayer( "isspeaking", 0 ); + } - foreach ( player in a_player_team ) - { - player.dontspeak = 0; - player setclientfieldtoplayer( "isspeaking", 0 ); - } + foreach ( player in a_player_team ) + { + player.dontspeak = 0; + player setclientfieldtoplayer( "isspeaking", 0 ); + } } final_showdown_create_icon( player, enemy ) { - height_offset = 72; - waypoint_origin = spawn( "script_model", enemy.origin + (0, 0, height_offset) ); + height_offset = 72; + waypoint_origin = spawn( "script_model", enemy.origin + (0, 0, height_offset) ); waypoint_origin setmodel( "tag_origin" ); waypoint_origin linkto( enemy ); - hud_elem = newclienthudelem( player ); - hud_elem.alpha = 1; - hud_elem.archived = 1; - hud_elem.hidewheninmenu = 1; - hud_elem.color = (1, 0, 0); - hud_elem setwaypoint( 1, "waypoint_kill_red" ); - hud_elem settargetent( waypoint_origin ); + hud_elem = newclienthudelem( player ); + hud_elem.alpha = 1; + hud_elem.archived = 1; + hud_elem.hidewheninmenu = 1; + hud_elem.color = (1, 0, 0); + hud_elem setwaypoint( 1, "waypoint_kill_red" ); + hud_elem settargetent( waypoint_origin ); - waittill_any_ents( level, "showdown_over", enemy, "disconnect" ); + waittill_any_ents( level, "showdown_over", enemy, "disconnect" ); - waypoint_origin delete(); - hud_elem destroy(); + waypoint_origin delete(); + hud_elem destroy(); } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_shared.gsc b/scripts/zm/replaced/zm_shared.gsc index bfffcf39..e86018c1 100644 --- a/scripts/zm/replaced/zm_shared.gsc +++ b/scripts/zm/replaced/zm_shared.gsc @@ -6,45 +6,45 @@ dotraverse( traversestate, traversealias, no_powerups ) { - self endon( "killanimscript" ); - self traversemode( "nogravity" ); - self traversemode( "noclip" ); - old_powerups = 0; + self endon( "killanimscript" ); + self traversemode( "nogravity" ); + self traversemode( "noclip" ); + old_powerups = 0; - if ( isdefined( no_powerups ) && no_powerups ) - { - old_powerups = self.no_powerups; - self.no_powerups = 1; - } + if ( isdefined( no_powerups ) && no_powerups ) + { + old_powerups = self.no_powerups; + self.no_powerups = 1; + } - self.is_traversing = 1; - self notify( "zombie_start_traverse" ); - self.traversestartnode = self getnegotiationstartnode(); - assert( isdefined( self.traversestartnode ) ); - self orientmode( "face angle", self.traversestartnode.angles[1] ); - self.traversestartz = self.origin[2]; + self.is_traversing = 1; + self notify( "zombie_start_traverse" ); + self.traversestartnode = self getnegotiationstartnode(); + assert( isdefined( self.traversestartnode ) ); + self orientmode( "face angle", self.traversestartnode.angles[1] ); + self.traversestartz = self.origin[2]; - if ( isdefined( self.pre_traverse ) ) - self [[ self.pre_traverse ]](); + if ( isdefined( self.pre_traverse ) ) + self [[ self.pre_traverse ]](); - self setanimstatefromasd( traversestate, traversealias ); - self maps\mp\animscripts\zm_shared::donotetracks( "traverse_anim" ); - self traversemode( "gravity" ); - self.a.nodeath = 0; + self setanimstatefromasd( traversestate, traversealias ); + self maps\mp\animscripts\zm_shared::donotetracks( "traverse_anim" ); + self traversemode( "gravity" ); + self.a.nodeath = 0; - if ( isdefined( self.post_traverse ) ) - self [[ self.post_traverse ]](); + if ( isdefined( self.post_traverse ) ) + self [[ self.post_traverse ]](); - self maps\mp\animscripts\zm_run::needsupdate(); + self maps\mp\animscripts\zm_run::needsupdate(); - if ( !self.isdog ) - self maps\mp\animscripts\zm_run::moverun(); + if ( !self.isdog ) + self maps\mp\animscripts\zm_run::moverun(); - self.is_traversing = 0; - self notify( "zombie_end_traverse" ); + self.is_traversing = 0; + self notify( "zombie_end_traverse" ); - if ( isdefined( no_powerups ) && no_powerups && is_true( self.no_powerups ) ) - { - self.no_powerups = old_powerups; - } + if ( isdefined( no_powerups ) && no_powerups && is_true( self.no_powerups ) ) + { + self.no_powerups = old_powerups; + } } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_tomb.gsc b/scripts/zm/replaced/zm_tomb.gsc index 92a02bd8..15ce1b97 100644 --- a/scripts/zm/replaced/zm_tomb.gsc +++ b/scripts/zm/replaced/zm_tomb.gsc @@ -61,69 +61,69 @@ sndmeleewpn_isstaff( weapon ) { - switch ( weapon ) - { - case "staff_water_melee_zm": - case "staff_melee_zm": - case "staff_lightning_melee_zm": - case "staff_fire_melee_zm": - case "staff_air_melee_zm": - isstaff = 1; - break; - default: - isstaff = 0; - } + switch ( weapon ) + { + case "staff_water_melee_zm": + case "staff_melee_zm": + case "staff_lightning_melee_zm": + case "staff_fire_melee_zm": + case "staff_air_melee_zm": + isstaff = 1; + break; + default: + isstaff = 0; + } - return isstaff; + return isstaff; } tomb_can_track_ammo_custom( weap ) { - if ( !isdefined( weap ) ) - return false; + if ( !isdefined( weap ) ) + return false; - switch ( weap ) - { - case "zombie_tazer_flourish": - case "zombie_sickle_flourish": - case "zombie_one_inch_punch_upgrade_flourish": - case "zombie_one_inch_punch_flourish": - case "zombie_knuckle_crack": - case "zombie_fists_zm": - case "zombie_builder_zm": - case "zombie_bowie_flourish": - case "time_bomb_zm": - case "time_bomb_detonator_zm": - case "tazer_knuckles_zm": - case "tazer_knuckles_upgraded_zm": - case "staff_revive_zm": - case "slowgun_zm": - case "slowgun_upgraded_zm": - case "screecher_arms_zm": - case "riotshield_zm": - case "one_inch_punch_zm": - case "one_inch_punch_upgraded_zm": - case "one_inch_punch_lightning_zm": - case "one_inch_punch_ice_zm": - case "one_inch_punch_fire_zm": - case "one_inch_punch_air_zm": - case "none": - case "no_hands_zm": - case "lower_equip_gasmask_zm": - case "humangun_zm": - case "humangun_upgraded_zm": - case "falling_hands_tomb_zm": - case "equip_gasmask_zm": - case "equip_dieseldrone_zm": - case "death_throe_zm": - case "chalk_draw_zm": - case "alcatraz_shield_zm": - case "tomb_shield_zm": - return false; - default: - if ( is_melee_weapon( weap ) || is_zombie_perk_bottle( weap ) || is_placeable_mine( weap ) || is_equipment( weap ) || issubstr( weap, "knife_ballistic_" ) || getsubstr( weap, 0, 3 ) == "gl_" || weaponfuellife( weap ) > 0 || weap == level.revive_tool ) - return false; - } + switch ( weap ) + { + case "zombie_tazer_flourish": + case "zombie_sickle_flourish": + case "zombie_one_inch_punch_upgrade_flourish": + case "zombie_one_inch_punch_flourish": + case "zombie_knuckle_crack": + case "zombie_fists_zm": + case "zombie_builder_zm": + case "zombie_bowie_flourish": + case "time_bomb_zm": + case "time_bomb_detonator_zm": + case "tazer_knuckles_zm": + case "tazer_knuckles_upgraded_zm": + case "staff_revive_zm": + case "slowgun_zm": + case "slowgun_upgraded_zm": + case "screecher_arms_zm": + case "riotshield_zm": + case "one_inch_punch_zm": + case "one_inch_punch_upgraded_zm": + case "one_inch_punch_lightning_zm": + case "one_inch_punch_ice_zm": + case "one_inch_punch_fire_zm": + case "one_inch_punch_air_zm": + case "none": + case "no_hands_zm": + case "lower_equip_gasmask_zm": + case "humangun_zm": + case "humangun_upgraded_zm": + case "falling_hands_tomb_zm": + case "equip_gasmask_zm": + case "equip_dieseldrone_zm": + case "death_throe_zm": + case "chalk_draw_zm": + case "alcatraz_shield_zm": + case "tomb_shield_zm": + return false; + default: + if ( is_melee_weapon( weap ) || is_zombie_perk_bottle( weap ) || is_placeable_mine( weap ) || is_equipment( weap ) || issubstr( weap, "knife_ballistic_" ) || getsubstr( weap, 0, 3 ) == "gl_" || weaponfuellife( weap ) > 0 || weap == level.revive_tool ) + return false; + } - return true; + return true; } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_tomb_capture_zones.gsc b/scripts/zm/replaced/zm_tomb_capture_zones.gsc index 0082a1d4..5d5ffbd2 100644 --- a/scripts/zm/replaced/zm_tomb_capture_zones.gsc +++ b/scripts/zm/replaced/zm_tomb_capture_zones.gsc @@ -22,386 +22,386 @@ setup_capture_zones() { - spawner_capture_zombie = getent( "capture_zombie_spawner", "targetname" ); - spawner_capture_zombie add_spawn_function( scripts\zm\replaced\zm_tomb_utility::capture_zombie_spawn_init ); - a_s_generator = getstructarray( "s_generator", "targetname" ); - registerclientfield( "world", "packapunch_anim", 14000, 3, "int" ); - registerclientfield( "actor", "zone_capture_zombie", 14000, 1, "int" ); - registerclientfield( "scriptmover", "zone_capture_emergence_hole", 14000, 1, "int" ); - registerclientfield( "world", "zc_change_progress_bar_color", 14000, 1, "int" ); - registerclientfield( "world", "zone_capture_hud_all_generators_captured", 14000, 1, "int" ); - registerclientfield( "world", "zone_capture_perk_machine_smoke_fx_always_on", 14000, 1, "int" ); - registerclientfield( "world", "pap_monolith_ring_shake", 14000, 1, "int" ); + spawner_capture_zombie = getent( "capture_zombie_spawner", "targetname" ); + spawner_capture_zombie add_spawn_function( scripts\zm\replaced\zm_tomb_utility::capture_zombie_spawn_init ); + a_s_generator = getstructarray( "s_generator", "targetname" ); + registerclientfield( "world", "packapunch_anim", 14000, 3, "int" ); + registerclientfield( "actor", "zone_capture_zombie", 14000, 1, "int" ); + registerclientfield( "scriptmover", "zone_capture_emergence_hole", 14000, 1, "int" ); + registerclientfield( "world", "zc_change_progress_bar_color", 14000, 1, "int" ); + registerclientfield( "world", "zone_capture_hud_all_generators_captured", 14000, 1, "int" ); + registerclientfield( "world", "zone_capture_perk_machine_smoke_fx_always_on", 14000, 1, "int" ); + registerclientfield( "world", "pap_monolith_ring_shake", 14000, 1, "int" ); - foreach ( struct in a_s_generator ) - { - registerclientfield( "world", struct.script_noteworthy, 14000, 7, "float" ); - registerclientfield( "world", "state_" + struct.script_noteworthy, 14000, 3, "int" ); - registerclientfield( "world", "zone_capture_hud_generator_" + struct.script_int, 14000, 2, "int" ); - registerclientfield( "world", "zone_capture_monolith_crystal_" + struct.script_int, 14000, 1, "int" ); - registerclientfield( "world", "zone_capture_perk_machine_smoke_fx_" + struct.script_int, 14000, 1, "int" ); - } + foreach ( struct in a_s_generator ) + { + registerclientfield( "world", struct.script_noteworthy, 14000, 7, "float" ); + registerclientfield( "world", "state_" + struct.script_noteworthy, 14000, 3, "int" ); + registerclientfield( "world", "zone_capture_hud_generator_" + struct.script_int, 14000, 2, "int" ); + registerclientfield( "world", "zone_capture_monolith_crystal_" + struct.script_int, 14000, 1, "int" ); + registerclientfield( "world", "zone_capture_perk_machine_smoke_fx_" + struct.script_int, 14000, 1, "int" ); + } - flag_wait( "start_zombie_round_logic" ); - level.magic_box_zbarrier_state_func = ::set_magic_box_zbarrier_state; - level.custom_perk_validation = ::check_perk_machine_valid; - level thread track_max_player_zombie_points(); + flag_wait( "start_zombie_round_logic" ); + level.magic_box_zbarrier_state_func = ::set_magic_box_zbarrier_state; + level.custom_perk_validation = ::check_perk_machine_valid; + level thread track_max_player_zombie_points(); - foreach ( s_generator in a_s_generator ) - s_generator thread init_capture_zone(); + foreach ( s_generator in a_s_generator ) + s_generator thread init_capture_zone(); - register_elements_powered_by_zone_capture_generators(); - setup_perk_machines_not_controlled_by_zone_capture(); - pack_a_punch_init(); - level thread recapture_round_tracker(); - level.zone_capture.recapture_zombies = []; - level.zone_capture.last_zone_captured = undefined; - level.zone_capture.spawn_func_capture_zombie = ::init_capture_zombie; - level.zone_capture.spawn_func_recapture_zombie = ::init_recapture_zombie; + register_elements_powered_by_zone_capture_generators(); + setup_perk_machines_not_controlled_by_zone_capture(); + pack_a_punch_init(); + level thread recapture_round_tracker(); + level.zone_capture.recapture_zombies = []; + level.zone_capture.last_zone_captured = undefined; + level.zone_capture.spawn_func_capture_zombie = ::init_capture_zombie; + level.zone_capture.spawn_func_recapture_zombie = ::init_recapture_zombie; - maps\mp\zombies\_zm_spawner::register_zombie_death_event_callback( ::recapture_zombie_death_func ); - level.custom_derive_damage_refs = ::zone_capture_gib_think; - setup_inaccessible_zombie_attack_points(); - level thread quick_revive_game_type_watcher(); - level thread quick_revive_solo_leave_watcher(); - level thread all_zones_captured_vo(); - flag_set( "capture_zones_init_done" ); - level setclientfield( "zone_capture_perk_machine_smoke_fx_always_on", 1 ); - maps\mp\zm_tomb_capture_zones_ffotd::capture_zone_init_end(); + maps\mp\zombies\_zm_spawner::register_zombie_death_event_callback( ::recapture_zombie_death_func ); + level.custom_derive_damage_refs = ::zone_capture_gib_think; + setup_inaccessible_zombie_attack_points(); + level thread quick_revive_game_type_watcher(); + level thread quick_revive_solo_leave_watcher(); + level thread all_zones_captured_vo(); + flag_set( "capture_zones_init_done" ); + level setclientfield( "zone_capture_perk_machine_smoke_fx_always_on", 1 ); + maps\mp\zm_tomb_capture_zones_ffotd::capture_zone_init_end(); } init_capture_zone() { - assert( isdefined( self.script_noteworthy ), "capture zone struct is missing script_noteworthy KVP! This is required for init_capture_zone()" ); + assert( isdefined( self.script_noteworthy ), "capture zone struct is missing script_noteworthy KVP! This is required for init_capture_zone()" ); - if ( !isdefined( level.zone_capture ) ) - level.zone_capture = spawnstruct(); + if ( !isdefined( level.zone_capture ) ) + level.zone_capture = spawnstruct(); - if ( !isdefined( level.zone_capture.zones ) ) - level.zone_capture.zones = []; + if ( !isdefined( level.zone_capture.zones ) ) + level.zone_capture.zones = []; - assert( !isdefined( level.zone_capture.zones[self.script_noteworthy] ), "init_capture_zone() attempting to initialize an existing zone with name '" + self.script_noteworthy + "'" ); - self.n_current_progress = 0; - self.n_last_progress = 0; - self setup_generator_unitrigger(); - self.str_zone = get_zone_from_position( self.origin, 1 ); - self.sndent = spawn( "script_origin", self.origin ); - assert( isdefined( self.script_int ), "script_int KVP is required by init_capture_zone() to identify the objective index, but it's missing on zone '" + self.script_noteworthy + "'" ); - self ent_flag_init( "attacked_by_recapture_zombies" ); - self ent_flag_init( "current_recapture_target_zone" ); - self ent_flag_init( "player_controlled" ); - self ent_flag_init( "zone_contested" ); - self ent_flag_init( "zone_initialized" ); - level.zone_capture.zones[self.script_noteworthy] = self; - self set_zombie_controlled_area( 1 ); - self setup_zombie_attack_points(); - self ent_flag_set( "zone_initialized" ); - self thread wait_for_capture_trigger(); + assert( !isdefined( level.zone_capture.zones[self.script_noteworthy] ), "init_capture_zone() attempting to initialize an existing zone with name '" + self.script_noteworthy + "'" ); + self.n_current_progress = 0; + self.n_last_progress = 0; + self setup_generator_unitrigger(); + self.str_zone = get_zone_from_position( self.origin, 1 ); + self.sndent = spawn( "script_origin", self.origin ); + assert( isdefined( self.script_int ), "script_int KVP is required by init_capture_zone() to identify the objective index, but it's missing on zone '" + self.script_noteworthy + "'" ); + self ent_flag_init( "attacked_by_recapture_zombies" ); + self ent_flag_init( "current_recapture_target_zone" ); + self ent_flag_init( "player_controlled" ); + self ent_flag_init( "zone_contested" ); + self ent_flag_init( "zone_initialized" ); + level.zone_capture.zones[self.script_noteworthy] = self; + self set_zombie_controlled_area( 1 ); + self setup_zombie_attack_points(); + self ent_flag_set( "zone_initialized" ); + self thread wait_for_capture_trigger(); } wait_for_capture_trigger() { - while ( true ) - { - self waittill( "start_generator_capture", e_player ); + while ( true ) + { + self waittill( "start_generator_capture", e_player ); - if ( !flag( "zone_capture_in_progress" ) ) - { - flag_set( "zone_capture_in_progress" ); - self.purchaser = e_player; - self.generator_cost = get_generator_capture_start_cost(); - e_player minus_to_player_score( self.generator_cost ); - e_player delay_thread( 2.5, ::create_and_play_dialog, "zone_capture", "capture_started" ); - self maps\mp\zm_tomb_capture_zones_ffotd::capture_event_start(); - self thread monitor_capture_zombies(); - self thread activate_capture_zone(); - self ent_flag_wait( "zone_contested" ); - capture_event_handle_ai_limit(); - self ent_flag_waitopen( "zone_contested" ); - self maps\mp\zm_tomb_capture_zones_ffotd::capture_event_end(); + if ( !flag( "zone_capture_in_progress" ) ) + { + flag_set( "zone_capture_in_progress" ); + self.purchaser = e_player; + self.generator_cost = get_generator_capture_start_cost(); + e_player minus_to_player_score( self.generator_cost ); + e_player delay_thread( 2.5, ::create_and_play_dialog, "zone_capture", "capture_started" ); + self maps\mp\zm_tomb_capture_zones_ffotd::capture_event_start(); + self thread monitor_capture_zombies(); + self thread activate_capture_zone(); + self ent_flag_wait( "zone_contested" ); + capture_event_handle_ai_limit(); + self ent_flag_waitopen( "zone_contested" ); + self maps\mp\zm_tomb_capture_zones_ffotd::capture_event_end(); - wait 1; + wait 1; - self.purchaser = undefined; - } - else - { - flag_wait( "zone_capture_in_progress" ); - flag_waitopen( "zone_capture_in_progress" ); - } + self.purchaser = undefined; + } + else + { + flag_wait( "zone_capture_in_progress" ); + flag_waitopen( "zone_capture_in_progress" ); + } - capture_event_handle_ai_limit(); + capture_event_handle_ai_limit(); - if ( self ent_flag( "player_controlled" ) ) - self ent_flag_waitopen( "player_controlled" ); - } + if ( self ent_flag( "player_controlled" ) ) + self ent_flag_waitopen( "player_controlled" ); + } } activate_capture_zone( b_show_emergence_holes = 1 ) { - if ( !flag( "recapture_event_in_progress" ) ) - self thread generator_initiated_vo(); + if ( !flag( "recapture_event_in_progress" ) ) + self thread generator_initiated_vo(); - self.a_emergence_hole_structs = getstructarray( self.target, "targetname" ); - self show_emergence_holes( b_show_emergence_holes ); + self.a_emergence_hole_structs = getstructarray( self.target, "targetname" ); + self show_emergence_holes( b_show_emergence_holes ); - if ( flag( "recapture_event_in_progress" ) && self ent_flag( "current_recapture_target_zone" ) ) - { - flag_wait_any( "generator_under_attack", "recapture_zombies_cleared" ); + if ( flag( "recapture_event_in_progress" ) && self ent_flag( "current_recapture_target_zone" ) ) + { + flag_wait_any( "generator_under_attack", "recapture_zombies_cleared" ); - if ( flag( "recapture_zombies_cleared" ) ) - return; - } + if ( flag( "recapture_zombies_cleared" ) ) + return; + } - self capture_progress_think(); - self destroy_emergence_holes(); + self capture_progress_think(); + self destroy_emergence_holes(); } capture_progress_think() { - self init_capture_progress(); - self clear_zone_objective_index(); - self show_zone_capture_objective( 1 ); - self get_zone_objective_index(); + self init_capture_progress(); + self clear_zone_objective_index(); + self show_zone_capture_objective( 1 ); + self get_zone_objective_index(); - while ( self ent_flag( "zone_contested" ) ) - { - a_players = get_players(); - a_players_in_capture_zone = self get_players_in_capture_zone(); + while ( self ent_flag( "zone_contested" ) ) + { + a_players = get_players(); + a_players_in_capture_zone = self get_players_in_capture_zone(); - foreach ( player in a_players ) - { - if ( isinarray( a_players_in_capture_zone, player ) ) - { - if ( !flag( "recapture_event_in_progress" ) || !self ent_flag( "current_recapture_target_zone" ) ) - objective_setplayerusing( self.n_objective_index, player ); + foreach ( player in a_players ) + { + if ( isinarray( a_players_in_capture_zone, player ) ) + { + if ( !flag( "recapture_event_in_progress" ) || !self ent_flag( "current_recapture_target_zone" ) ) + objective_setplayerusing( self.n_objective_index, player ); - continue; - } + continue; + } - if ( is_player_valid( player ) ) - objective_clearplayerusing( self.n_objective_index, player ); - } + if ( is_player_valid( player ) ) + objective_clearplayerusing( self.n_objective_index, player ); + } - self.n_last_progress = self.n_current_progress; - self.n_current_progress += self get_progress_rate( a_players_in_capture_zone.size, a_players.size ); + self.n_last_progress = self.n_current_progress; + self.n_current_progress += self get_progress_rate( a_players_in_capture_zone.size, a_players.size ); - if ( self.n_last_progress != self.n_current_progress ) - { - self.n_current_progress = clamp( self.n_current_progress, 0, 100 ); - objective_setprogress( self.n_objective_index, self.n_current_progress / 100 ); - self zone_capture_sound_state_think(); - level setclientfield( self.script_noteworthy, self.n_current_progress / 100 ); - self generator_set_state(); + if ( self.n_last_progress != self.n_current_progress ) + { + self.n_current_progress = clamp( self.n_current_progress, 0, 100 ); + objective_setprogress( self.n_objective_index, self.n_current_progress / 100 ); + self zone_capture_sound_state_think(); + level setclientfield( self.script_noteworthy, self.n_current_progress / 100 ); + self generator_set_state(); - if ( !flag( "recapture_event_in_progress" ) || !self ent_flag( "attacked_by_recapture_zombies" ) ) - { - b_set_color_to_white = a_players_in_capture_zone.size > 0; + if ( !flag( "recapture_event_in_progress" ) || !self ent_flag( "attacked_by_recapture_zombies" ) ) + { + b_set_color_to_white = a_players_in_capture_zone.size > 0; - if ( !flag( "recapture_event_in_progress" ) && self ent_flag( "current_recapture_target_zone" ) ) - b_set_color_to_white = 1; + if ( !flag( "recapture_event_in_progress" ) && self ent_flag( "current_recapture_target_zone" ) ) + b_set_color_to_white = 1; - level setclientfield( "zc_change_progress_bar_color", b_set_color_to_white ); - } + level setclientfield( "zc_change_progress_bar_color", b_set_color_to_white ); + } - update_objective_on_momentum_change(); + update_objective_on_momentum_change(); - if ( self.n_current_progress == 0 || self.n_current_progress == 100 && !self ent_flag( "attacked_by_recapture_zombies" ) ) - self ent_flag_clear( "zone_contested" ); - } + if ( self.n_current_progress == 0 || self.n_current_progress == 100 && !self ent_flag( "attacked_by_recapture_zombies" ) ) + self ent_flag_clear( "zone_contested" ); + } - show_zone_capture_debug_info(); - wait 0.1; - } + show_zone_capture_debug_info(); + wait 0.1; + } - self ent_flag_clear( "attacked_by_recapture_zombies" ); - self handle_generator_capture(); - self clear_all_zombie_attack_points_in_zone(); + self ent_flag_clear( "attacked_by_recapture_zombies" ); + self handle_generator_capture(); + self clear_all_zombie_attack_points_in_zone(); } handle_generator_capture() { - level setclientfield( "zc_change_progress_bar_color", 0 ); - self show_zone_capture_objective( 0 ); + level setclientfield( "zc_change_progress_bar_color", 0 ); + self show_zone_capture_objective( 0 ); - if ( self.n_current_progress == 100 ) - { - self players_capture_zone(); - self kill_all_capture_zombies(); - } - else if ( self.n_current_progress == 0 ) - { - if ( self ent_flag( "player_controlled" ) ) - { - self.sndent stoploopsound( 0.25 ); - self thread generator_deactivated_vo(); - self.is_playing_audio = 0; + if ( self.n_current_progress == 100 ) + { + self players_capture_zone(); + self kill_all_capture_zombies(); + } + else if ( self.n_current_progress == 0 ) + { + if ( self ent_flag( "player_controlled" ) ) + { + self.sndent stoploopsound( 0.25 ); + self thread generator_deactivated_vo(); + self.is_playing_audio = 0; - foreach ( player in get_players() ) - { - player maps\mp\zombies\_zm_stats::increment_client_stat( "tomb_generator_lost", 0 ); - player maps\mp\zombies\_zm_stats::increment_player_stat( "tomb_generator_lost" ); - } - } + foreach ( player in get_players() ) + { + player maps\mp\zombies\_zm_stats::increment_client_stat( "tomb_generator_lost", 0 ); + player maps\mp\zombies\_zm_stats::increment_player_stat( "tomb_generator_lost" ); + } + } - self set_zombie_controlled_area(); + self set_zombie_controlled_area(); - if ( flag( "recapture_event_in_progress" ) && get_captured_zone_count() > 0 ) - { + if ( flag( "recapture_event_in_progress" ) && get_captured_zone_count() > 0 ) + { - } - else - self kill_all_capture_zombies(); - } + } + else + self kill_all_capture_zombies(); + } - if ( get_contested_zone_count() == 0 ) - flag_clear( "zone_capture_in_progress" ); + if ( get_contested_zone_count() == 0 ) + flag_clear( "zone_capture_in_progress" ); } players_capture_zone() { - self.sndent playsound( "zmb_capturezone_success" ); - self.sndent stoploopsound( 0.25 ); - reward_players_in_capture_zone(); - wait_network_frame(); + self.sndent playsound( "zmb_capturezone_success" ); + self.sndent stoploopsound( 0.25 ); + reward_players_in_capture_zone(); + wait_network_frame(); - if ( !flag( "recapture_event_in_progress" ) && !self ent_flag( "player_controlled" ) ) - self thread zone_capture_complete_vo(); + if ( !flag( "recapture_event_in_progress" ) && !self ent_flag( "player_controlled" ) ) + self thread zone_capture_complete_vo(); - self set_player_controlled_area(); - wait_network_frame(); - playfx( level._effect["capture_complete"], self.origin ); - level thread sndplaygeneratormusicstinger(); + self set_player_controlled_area(); + wait_network_frame(); + playfx( level._effect["capture_complete"], self.origin ); + level thread sndplaygeneratormusicstinger(); } reward_players_in_capture_zone() { - b_challenge_exists = maps\mp\zombies\_zm_challenges::challenge_exists( "zc_zone_captures" ); + b_challenge_exists = maps\mp\zombies\_zm_challenges::challenge_exists( "zc_zone_captures" ); - if ( !self ent_flag( "player_controlled" ) ) - { - foreach ( player in get_players_in_capture_zone() ) - { - if ( isdefined( self.purchaser ) && self.purchaser == player ) - self refund_generator_cost_if_player_captured_it( player ); + if ( !self ent_flag( "player_controlled" ) ) + { + foreach ( player in get_players_in_capture_zone() ) + { + if ( isdefined( self.purchaser ) && self.purchaser == player ) + self refund_generator_cost_if_player_captured_it( player ); - player notify( "completed_zone_capture" ); - player maps\mp\zombies\_zm_score::player_add_points( "bonus_points_powerup", 200 ); + player notify( "completed_zone_capture" ); + player maps\mp\zombies\_zm_score::player_add_points( "bonus_points_powerup", 200 ); - if ( b_challenge_exists ) - player maps\mp\zombies\_zm_challenges::increment_stat( "zc_zone_captures" ); + if ( b_challenge_exists ) + player maps\mp\zombies\_zm_challenges::increment_stat( "zc_zone_captures" ); - player maps\mp\zombies\_zm_stats::increment_client_stat( "tomb_generator_captured", 0 ); - player maps\mp\zombies\_zm_stats::increment_player_stat( "tomb_generator_captured" ); - } - } + player maps\mp\zombies\_zm_stats::increment_client_stat( "tomb_generator_captured", 0 ); + player maps\mp\zombies\_zm_stats::increment_player_stat( "tomb_generator_captured" ); + } + } } recapture_zombie_death_func() { - if ( isdefined( self.is_recapture_zombie ) && self.is_recapture_zombie ) - { - level.recapture_zombies_killed++; + if ( isdefined( self.is_recapture_zombie ) && self.is_recapture_zombie ) + { + level.recapture_zombies_killed++; - if ( isdefined( self.attacker ) && isplayer( self.attacker ) && level.recapture_zombies_killed == get_recapture_zombies_needed() ) - { - self.attacker thread delay_thread( 2, ::create_and_play_dialog, "zone_capture", "recapture_prevented" ); + if ( isdefined( self.attacker ) && isplayer( self.attacker ) && level.recapture_zombies_killed == get_recapture_zombies_needed() ) + { + self.attacker thread delay_thread( 2, ::create_and_play_dialog, "zone_capture", "recapture_prevented" ); - foreach ( player in get_players() ) - { - player maps\mp\zombies\_zm_stats::increment_client_stat( "tomb_generator_defended", 0 ); - player maps\mp\zombies\_zm_stats::increment_player_stat( "tomb_generator_defended" ); - } - } + foreach ( player in get_players() ) + { + player maps\mp\zombies\_zm_stats::increment_client_stat( "tomb_generator_defended", 0 ); + player maps\mp\zombies\_zm_stats::increment_player_stat( "tomb_generator_defended" ); + } + } - if ( level.recapture_zombies_killed == get_recapture_zombies_needed() && is_true( level.b_is_first_generator_attack ) ) - self drop_max_ammo_at_death_location(); - } + if ( level.recapture_zombies_killed == get_recapture_zombies_needed() && is_true( level.b_is_first_generator_attack ) ) + self drop_max_ammo_at_death_location(); + } } recapture_round_tracker() { - n_next_recapture_round = 10; + n_next_recapture_round = 10; - while ( true ) - { - level waittill_any( "between_round_over", "force_recapture_start" ); + while ( true ) + { + level waittill_any( "between_round_over", "force_recapture_start" ); - if ( level.round_number >= n_next_recapture_round && !flag( "zone_capture_in_progress" ) && get_captured_zone_count() >= get_player_controlled_zone_count_for_recapture() ) - { - n_next_recapture_round = level.round_number + randomintrange( 3, 6 ); - level thread recapture_round_start(); - } - } + if ( level.round_number >= n_next_recapture_round && !flag( "zone_capture_in_progress" ) && get_captured_zone_count() >= get_player_controlled_zone_count_for_recapture() ) + { + n_next_recapture_round = level.round_number + randomintrange( 3, 6 ); + level thread recapture_round_start(); + } + } } recapture_round_start() { - flag_set( "recapture_event_in_progress" ); - flag_clear( "recapture_zombies_cleared" ); - flag_clear( "generator_under_attack" ); - level.recapture_zombies_killed = 0; - level.b_is_first_generator_attack = 1; - s_recapture_target_zone = undefined; - capture_event_handle_ai_limit(); - recapture_round_audio_starts(); + flag_set( "recapture_event_in_progress" ); + flag_clear( "recapture_zombies_cleared" ); + flag_clear( "generator_under_attack" ); + level.recapture_zombies_killed = 0; + level.b_is_first_generator_attack = 1; + s_recapture_target_zone = undefined; + capture_event_handle_ai_limit(); + recapture_round_audio_starts(); - while ( !flag( "recapture_zombies_cleared" ) && get_captured_zone_count() > 0 ) - { - s_recapture_target_zone = get_recapture_zone( s_recapture_target_zone ); - level.zone_capture.recapture_target = s_recapture_target_zone.script_noteworthy; - s_recapture_target_zone maps\mp\zm_tomb_capture_zones_ffotd::recapture_event_start(); + while ( !flag( "recapture_zombies_cleared" ) && get_captured_zone_count() > 0 ) + { + s_recapture_target_zone = get_recapture_zone( s_recapture_target_zone ); + level.zone_capture.recapture_target = s_recapture_target_zone.script_noteworthy; + s_recapture_target_zone maps\mp\zm_tomb_capture_zones_ffotd::recapture_event_start(); - if ( level.b_is_first_generator_attack ) - s_recapture_target_zone thread monitor_recapture_zombies(); + if ( level.b_is_first_generator_attack ) + s_recapture_target_zone thread monitor_recapture_zombies(); - set_recapture_zombie_attack_target( s_recapture_target_zone ); - s_recapture_target_zone thread generator_under_attack_warnings(); - s_recapture_target_zone ent_flag_set( "current_recapture_target_zone" ); - s_recapture_target_zone thread hide_zone_objective_while_recapture_group_runs_to_next_generator( level.b_is_first_generator_attack ); - s_recapture_target_zone activate_capture_zone( level.b_is_first_generator_attack ); - s_recapture_target_zone ent_flag_clear( "attacked_by_recapture_zombies" ); - s_recapture_target_zone ent_flag_clear( "current_recapture_target_zone" ); + set_recapture_zombie_attack_target( s_recapture_target_zone ); + s_recapture_target_zone thread generator_under_attack_warnings(); + s_recapture_target_zone ent_flag_set( "current_recapture_target_zone" ); + s_recapture_target_zone thread hide_zone_objective_while_recapture_group_runs_to_next_generator( level.b_is_first_generator_attack ); + s_recapture_target_zone activate_capture_zone( level.b_is_first_generator_attack ); + s_recapture_target_zone ent_flag_clear( "attacked_by_recapture_zombies" ); + s_recapture_target_zone ent_flag_clear( "current_recapture_target_zone" ); - if ( level.b_is_first_generator_attack && !s_recapture_target_zone ent_flag( "player_controlled" ) ) - delay_thread( 3, ::broadcast_vo_category_to_team, "recapture_started" ); + if ( level.b_is_first_generator_attack && !s_recapture_target_zone ent_flag( "player_controlled" ) ) + delay_thread( 3, ::broadcast_vo_category_to_team, "recapture_started" ); - level.b_is_first_generator_attack = 0; - s_recapture_target_zone maps\mp\zm_tomb_capture_zones_ffotd::recapture_event_end(); - wait 0.05; - } + level.b_is_first_generator_attack = 0; + s_recapture_target_zone maps\mp\zm_tomb_capture_zones_ffotd::recapture_event_end(); + wait 0.05; + } - //if ( s_recapture_target_zone.n_current_progress == 0 || s_recapture_target_zone.n_current_progress == 100 ) - // s_recapture_target_zone handle_generator_capture(); + //if ( s_recapture_target_zone.n_current_progress == 0 || s_recapture_target_zone.n_current_progress == 100 ) + // s_recapture_target_zone handle_generator_capture(); - capture_event_handle_ai_limit(); - kill_all_recapture_zombies(); - recapture_round_audio_ends(); - flag_clear( "recapture_event_in_progress" ); - flag_clear( "generator_under_attack" ); + capture_event_handle_ai_limit(); + kill_all_recapture_zombies(); + recapture_round_audio_ends(); + flag_clear( "recapture_event_in_progress" ); + flag_clear( "generator_under_attack" ); } magic_box_stub_update_prompt( player ) { - self setcursorhint( "HINT_NOICON" ); + self setcursorhint( "HINT_NOICON" ); - if ( !self trigger_visible_to_player( player ) ) - return false; + if ( !self trigger_visible_to_player( player ) ) + return false; - self.stub.hint_parm1 = undefined; + self.stub.hint_parm1 = undefined; - if ( isdefined( self.stub.trigger_target.grab_weapon_hint ) && self.stub.trigger_target.grab_weapon_hint ) - self.stub.hint_string = &"ZOMBIE_TRADE_WEAPON"; - else if ( !level.zone_capture.zones[self.stub.zone] ent_flag( "player_controlled" ) ) - { - self.stub.hint_string = &"ZM_TOMB_ZC"; - return false; - } - else - { - self.stub.hint_parm1 = self.stub.trigger_target.zombie_cost; - self.stub.hint_string = get_hint_string( self, "default_treasure_chest" ); - } + if ( isdefined( self.stub.trigger_target.grab_weapon_hint ) && self.stub.trigger_target.grab_weapon_hint ) + self.stub.hint_string = &"ZOMBIE_TRADE_WEAPON"; + else if ( !level.zone_capture.zones[self.stub.zone] ent_flag( "player_controlled" ) ) + { + self.stub.hint_string = &"ZM_TOMB_ZC"; + return false; + } + else + { + self.stub.hint_parm1 = self.stub.trigger_target.zombie_cost; + self.stub.hint_string = get_hint_string( self, "default_treasure_chest" ); + } - return true; + return true; } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_tomb_challenges.gsc b/scripts/zm/replaced/zm_tomb_challenges.gsc index 87c56d38..5ad40b3a 100644 --- a/scripts/zm/replaced/zm_tomb_challenges.gsc +++ b/scripts/zm/replaced/zm_tomb_challenges.gsc @@ -16,50 +16,50 @@ challenges_init() { - level.challenges_add_stats = ::tomb_challenges_add_stats; - maps\mp\zombies\_zm_challenges::init(); + level.challenges_add_stats = ::tomb_challenges_add_stats; + maps\mp\zombies\_zm_challenges::init(); } tomb_challenges_add_stats() { - n_kills = 115; - n_zone_caps = 6; - n_points_spent = 30000; - n_boxes_filled = 4; + n_kills = 115; + n_zone_caps = 6; + n_points_spent = 30000; + n_boxes_filled = 4; - add_stat( "zc_headshots", 0, &"ZM_TOMB_CH1", n_kills, undefined, ::reward_packed_weapon ); - add_stat( "zc_zone_captures", 0, &"ZM_TOMB_CH2", n_zone_caps, undefined, ::reward_powerup_max_ammo ); - add_stat( "zc_points_spent", 0, &"ZM_TOMB_CH3", n_points_spent, undefined, ::reward_random_perk, ::track_points_spent ); - add_stat( "zc_boxes_filled", 1, &"ZM_TOMB_CHT", n_boxes_filled, undefined, ::reward_one_inch_punch, ::init_box_footprints ); + add_stat( "zc_headshots", 0, &"ZM_TOMB_CH1", n_kills, undefined, ::reward_packed_weapon ); + add_stat( "zc_zone_captures", 0, &"ZM_TOMB_CH2", n_zone_caps, undefined, ::reward_powerup_max_ammo ); + add_stat( "zc_points_spent", 0, &"ZM_TOMB_CH3", n_points_spent, undefined, ::reward_random_perk, ::track_points_spent ); + add_stat( "zc_boxes_filled", 1, &"ZM_TOMB_CHT", n_boxes_filled, undefined, ::reward_one_inch_punch, ::init_box_footprints ); } reward_packed_weapon( player, s_stat ) { - if ( !isdefined( s_stat.str_reward_weapon ) ) - { - a_weapons = array( "scar_zm", "galil_zm", "mp44_zm" ); - s_stat.str_reward_weapon = maps\mp\zombies\_zm_weapons::get_upgrade_weapon( random( a_weapons ) ); - } + if ( !isdefined( s_stat.str_reward_weapon ) ) + { + a_weapons = array( "scar_zm", "galil_zm", "mp44_zm" ); + s_stat.str_reward_weapon = maps\mp\zombies\_zm_weapons::get_upgrade_weapon( random( a_weapons ) ); + } - m_weapon = spawn( "script_model", self.origin ); - m_weapon.angles = self.angles + vectorscale( ( 0, 1, 0 ), 180.0 ); - m_weapon playsound( "zmb_spawn_powerup" ); - m_weapon playloopsound( "zmb_spawn_powerup_loop", 0.5 ); - str_model = getweaponmodel( s_stat.str_reward_weapon ); - options = player maps\mp\zombies\_zm_weapons::get_pack_a_punch_weapon_options( s_stat.str_reward_weapon ); - m_weapon useweaponmodel( s_stat.str_reward_weapon, str_model, options ); - wait_network_frame(); + m_weapon = spawn( "script_model", self.origin ); + m_weapon.angles = self.angles + vectorscale( ( 0, 1, 0 ), 180.0 ); + m_weapon playsound( "zmb_spawn_powerup" ); + m_weapon playloopsound( "zmb_spawn_powerup_loop", 0.5 ); + str_model = getweaponmodel( s_stat.str_reward_weapon ); + options = player maps\mp\zombies\_zm_weapons::get_pack_a_punch_weapon_options( s_stat.str_reward_weapon ); + m_weapon useweaponmodel( s_stat.str_reward_weapon, str_model, options ); + wait_network_frame(); - if ( !reward_rise_and_grab( m_weapon, 50, 2, 2, 10 ) ) - return false; + if ( !reward_rise_and_grab( m_weapon, 50, 2, 2, 10 ) ) + return false; - player maps\mp\zombies\_zm_weapons::weapon_give( s_stat.str_reward_weapon ); + player maps\mp\zombies\_zm_weapons::weapon_give( s_stat.str_reward_weapon ); - player switchtoweapon( s_stat.str_reward_weapon ); - m_weapon stoploopsound( 0.1 ); - player playsound( "zmb_powerup_grabbed" ); - m_weapon delete(); - return true; + player switchtoweapon( s_stat.str_reward_weapon ); + m_weapon stoploopsound( 0.1 ); + player playsound( "zmb_powerup_grabbed" ); + m_weapon delete(); + return true; } reward_random_perk( player, s_stat ) @@ -139,105 +139,105 @@ get_random_perk() init_box_footprints() { - level.n_soul_boxes_completed = 0; - flag_init( "vo_soul_box_intro_played" ); - flag_init( "vo_soul_box_continue_played" ); - a_boxes = getentarray( "foot_box", "script_noteworthy" ); - array_thread( a_boxes, ::box_footprint_think ); + level.n_soul_boxes_completed = 0; + flag_init( "vo_soul_box_intro_played" ); + flag_init( "vo_soul_box_continue_played" ); + a_boxes = getentarray( "foot_box", "script_noteworthy" ); + array_thread( a_boxes, ::box_footprint_think ); } #using_animtree("fxanim_props_dlc4"); box_footprint_think() { - self.n_souls_absorbed = 0; - n_souls_required = 20; + self.n_souls_absorbed = 0; + n_souls_required = 20; - self useanimtree( #animtree ); - self thread watch_for_foot_stomp(); - wait 1; - self setclientfield( "foot_print_box_glow", 1 ); - wait 1; - self setclientfield( "foot_print_box_glow", 0 ); + self useanimtree( #animtree ); + self thread watch_for_foot_stomp(); + wait 1; + self setclientfield( "foot_print_box_glow", 1 ); + wait 1; + self setclientfield( "foot_print_box_glow", 0 ); - while ( self.n_souls_absorbed < n_souls_required ) - { - self waittill( "soul_absorbed", player ); + while ( self.n_souls_absorbed < n_souls_required ) + { + self waittill( "soul_absorbed", player ); - self.n_souls_absorbed++; + self.n_souls_absorbed++; - if ( self.n_souls_absorbed == 1 ) - { - self clearanim( %o_zombie_dlc4_challenge_box_close, 0 ); - self setanim( %o_zombie_dlc4_challenge_box_open ); - self delay_thread( 1, ::setclientfield, "foot_print_box_glow", 1 ); + if ( self.n_souls_absorbed == 1 ) + { + self clearanim( %o_zombie_dlc4_challenge_box_close, 0 ); + self setanim( %o_zombie_dlc4_challenge_box_open ); + self delay_thread( 1, ::setclientfield, "foot_print_box_glow", 1 ); - if ( isdefined( player ) && !flag( "vo_soul_box_intro_played" ) ) - player delay_thread( 1.5, ::richtofenrespondvoplay, "zm_box_start", 0, "vo_soul_box_intro_played" ); - } + if ( isdefined( player ) && !flag( "vo_soul_box_intro_played" ) ) + player delay_thread( 1.5, ::richtofenrespondvoplay, "zm_box_start", 0, "vo_soul_box_intro_played" ); + } - if ( self.n_souls_absorbed == floor( n_souls_required / 4 ) ) - { - if ( isdefined( player ) && flag( "vo_soul_box_intro_played" ) && !flag( "vo_soul_box_continue_played" ) ) - player thread richtofenrespondvoplay( "zm_box_continue", 1, "vo_soul_box_continue_played" ); - } + if ( self.n_souls_absorbed == floor( n_souls_required / 4 ) ) + { + if ( isdefined( player ) && flag( "vo_soul_box_intro_played" ) && !flag( "vo_soul_box_continue_played" ) ) + player thread richtofenrespondvoplay( "zm_box_continue", 1, "vo_soul_box_continue_played" ); + } - if ( self.n_souls_absorbed == floor( n_souls_required / 2 ) || self.n_souls_absorbed == floor( n_souls_required / 1.3 ) ) - { - if ( isdefined( player ) ) - player create_and_play_dialog( "soul_box", "zm_box_encourage" ); - } + if ( self.n_souls_absorbed == floor( n_souls_required / 2 ) || self.n_souls_absorbed == floor( n_souls_required / 1.3 ) ) + { + if ( isdefined( player ) ) + player create_and_play_dialog( "soul_box", "zm_box_encourage" ); + } - if ( self.n_souls_absorbed == n_souls_required ) - { - wait 1; - self clearanim( %o_zombie_dlc4_challenge_box_open, 0 ); - self setanim( %o_zombie_dlc4_challenge_box_close ); - } - } + if ( self.n_souls_absorbed == n_souls_required ) + { + wait 1; + self clearanim( %o_zombie_dlc4_challenge_box_open, 0 ); + self setanim( %o_zombie_dlc4_challenge_box_close ); + } + } - self notify( "box_finished" ); - level.n_soul_boxes_completed++; - e_volume = getent( self.target, "targetname" ); - e_volume delete(); - self delay_thread( 0.5, ::setclientfield, "foot_print_box_glow", 0 ); - wait 1; - self movez( 30, 1, 1 ); - wait 0.5; - n_rotations = randomintrange( 5, 7 ); - v_start_angles = self.angles; + self notify( "box_finished" ); + level.n_soul_boxes_completed++; + e_volume = getent( self.target, "targetname" ); + e_volume delete(); + self delay_thread( 0.5, ::setclientfield, "foot_print_box_glow", 0 ); + wait 1; + self movez( 30, 1, 1 ); + wait 0.5; + n_rotations = randomintrange( 5, 7 ); + v_start_angles = self.angles; - for ( i = 0; i < n_rotations; i++ ) - { - v_rotate_angles = v_start_angles + ( randomfloatrange( -10, 10 ), randomfloatrange( -10, 10 ), randomfloatrange( -10, 10 ) ); - n_rotate_time = randomfloatrange( 0.2, 0.4 ); - self rotateto( v_rotate_angles, n_rotate_time ); + for ( i = 0; i < n_rotations; i++ ) + { + v_rotate_angles = v_start_angles + ( randomfloatrange( -10, 10 ), randomfloatrange( -10, 10 ), randomfloatrange( -10, 10 ) ); + n_rotate_time = randomfloatrange( 0.2, 0.4 ); + self rotateto( v_rotate_angles, n_rotate_time ); - self waittill( "rotatedone" ); - } + self waittill( "rotatedone" ); + } - self rotateto( v_start_angles, 0.3 ); - self movez( -60, 0.5, 0.5 ); + self rotateto( v_start_angles, 0.3 ); + self movez( -60, 0.5, 0.5 ); - self waittill( "rotatedone" ); + self waittill( "rotatedone" ); - trace_start = self.origin + vectorscale( ( 0, 0, 1 ), 200.0 ); - trace_end = self.origin; - fx_trace = bullettrace( trace_start, trace_end, 0, self ); - playfx( level._effect["mech_booster_landing"], fx_trace["position"], anglestoforward( self.angles ), anglestoup( self.angles ) ); - playsoundatposition( "zmb_footprintbox_disappear", self.origin ); + trace_start = self.origin + vectorscale( ( 0, 0, 1 ), 200.0 ); + trace_end = self.origin; + fx_trace = bullettrace( trace_start, trace_end, 0, self ); + playfx( level._effect["mech_booster_landing"], fx_trace["position"], anglestoforward( self.angles ), anglestoup( self.angles ) ); + playsoundatposition( "zmb_footprintbox_disappear", self.origin ); - self waittill( "movedone" ); + self waittill( "movedone" ); - level maps\mp\zombies\_zm_challenges::increment_stat( "zc_boxes_filled" ); + level maps\mp\zombies\_zm_challenges::increment_stat( "zc_boxes_filled" ); - if ( isdefined( player ) ) - { - if ( level.n_soul_boxes_completed == 1 ) - player thread richtofenrespondvoplay( "zm_box_complete" ); - else if ( level.n_soul_boxes_completed == 4 ) - player thread richtofenrespondvoplay( "zm_box_final_complete", 1 ); - } + if ( isdefined( player ) ) + { + if ( level.n_soul_boxes_completed == 1 ) + player thread richtofenrespondvoplay( "zm_box_complete" ); + else if ( level.n_soul_boxes_completed == 4 ) + player thread richtofenrespondvoplay( "zm_box_final_complete", 1 ); + } - self delete(); + self delete(); } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_tomb_craftables.gsc b/scripts/zm/replaced/zm_tomb_craftables.gsc index 16c8da56..fadf6f1d 100644 --- a/scripts/zm/replaced/zm_tomb_craftables.gsc +++ b/scripts/zm/replaced/zm_tomb_craftables.gsc @@ -15,198 +15,198 @@ init_craftables() { - precachemodel( "p6_zm_tm_quadrotor_stand" ); - flag_init( "quadrotor_cooling_down" ); - level.craftable_piece_count = 4; - flag_init( "any_crystal_picked_up" ); - flag_init( "staff_air_zm_enabled" ); - flag_init( "staff_fire_zm_enabled" ); - flag_init( "staff_lightning_zm_enabled" ); - flag_init( "staff_water_zm_enabled" ); - register_clientfields(); - add_zombie_craftable( "equip_dieseldrone_zm", &"ZM_TOMB_CRQ", &"ZM_TOMB_CRQ", &"ZM_TOMB_TQ", ::onfullycrafted_quadrotor, 1 ); - add_zombie_craftable_vox_category( "equip_dieseldrone_zm", "build_dd" ); - make_zombie_craftable_open( "equip_dieseldrone_zm", "veh_t6_dlc_zm_quadrotor", ( 0, 0, 0 ), ( 0, -4, 10 ) ); - add_zombie_craftable( "tomb_shield_zm", &"ZM_TOMB_CRRI", undefined, &"ZOMBIE_BOUGHT_RIOT", undefined, 1 ); - add_zombie_craftable_vox_category( "tomb_shield_zm", "build_zs" ); - make_zombie_craftable_open( "tomb_shield_zm", "t6_wpn_zmb_shield_dlc4_dmg0_world", vectorscale( ( 0, -1, 0 ), 90.0 ), ( 0, 0, level.riotshield_placement_zoffset ) ); - add_zombie_craftable( "elemental_staff_fire", &"ZM_TOMB_CRF", &"ZM_TOMB_INS", &"ZM_TOMB_BOF", ::staff_fire_fullycrafted, 1 ); - add_zombie_craftable_vox_category( "elemental_staff_fire", "fire_staff" ); - add_zombie_craftable( "elemental_staff_air", &"ZM_TOMB_CRA", &"ZM_TOMB_INS", &"ZM_TOMB_BOA", ::staff_air_fullycrafted, 1 ); - add_zombie_craftable_vox_category( "elemental_staff_air", "air_staff" ); - add_zombie_craftable( "elemental_staff_lightning", &"ZM_TOMB_CRL", &"ZM_TOMB_INS", &"ZM_TOMB_BOL", ::staff_lightning_fullycrafted, 1 ); - add_zombie_craftable_vox_category( "elemental_staff_lightning", "light_staff" ); - add_zombie_craftable( "elemental_staff_water", &"ZM_TOMB_CRW", &"ZM_TOMB_INS", &"ZM_TOMB_BOW", ::staff_water_fullycrafted, 1 ); - add_zombie_craftable_vox_category( "elemental_staff_water", "ice_staff" ); - add_zombie_craftable( "gramophone", &"ZM_TOMB_CRAFT_GRAMOPHONE", &"ZM_TOMB_CRAFT_GRAMOPHONE", &"ZM_TOMB_BOUGHT_GRAMOPHONE", undefined, 0 ); - add_zombie_craftable_vox_category( "gramophone", "gramophone" ); - level.zombie_craftable_persistent_weapon = ::tomb_check_crafted_weapon_persistence; - level.custom_craftable_validation = ::tomb_custom_craftable_validation; - level.zombie_custom_equipment_setup = ::setup_quadrotor_purchase; - level thread hide_staff_model(); - level.quadrotor_status = spawnstruct(); - level.quadrotor_status.crafted = 0; - level.quadrotor_status.picked_up = 0; - level.num_staffpieces_picked_up = []; - level.n_staffs_crafted = 0; + precachemodel( "p6_zm_tm_quadrotor_stand" ); + flag_init( "quadrotor_cooling_down" ); + level.craftable_piece_count = 4; + flag_init( "any_crystal_picked_up" ); + flag_init( "staff_air_zm_enabled" ); + flag_init( "staff_fire_zm_enabled" ); + flag_init( "staff_lightning_zm_enabled" ); + flag_init( "staff_water_zm_enabled" ); + register_clientfields(); + add_zombie_craftable( "equip_dieseldrone_zm", &"ZM_TOMB_CRQ", &"ZM_TOMB_CRQ", &"ZM_TOMB_TQ", ::onfullycrafted_quadrotor, 1 ); + add_zombie_craftable_vox_category( "equip_dieseldrone_zm", "build_dd" ); + make_zombie_craftable_open( "equip_dieseldrone_zm", "veh_t6_dlc_zm_quadrotor", ( 0, 0, 0 ), ( 0, -4, 10 ) ); + add_zombie_craftable( "tomb_shield_zm", &"ZM_TOMB_CRRI", undefined, &"ZOMBIE_BOUGHT_RIOT", undefined, 1 ); + add_zombie_craftable_vox_category( "tomb_shield_zm", "build_zs" ); + make_zombie_craftable_open( "tomb_shield_zm", "t6_wpn_zmb_shield_dlc4_dmg0_world", vectorscale( ( 0, -1, 0 ), 90.0 ), ( 0, 0, level.riotshield_placement_zoffset ) ); + add_zombie_craftable( "elemental_staff_fire", &"ZM_TOMB_CRF", &"ZM_TOMB_INS", &"ZM_TOMB_BOF", ::staff_fire_fullycrafted, 1 ); + add_zombie_craftable_vox_category( "elemental_staff_fire", "fire_staff" ); + add_zombie_craftable( "elemental_staff_air", &"ZM_TOMB_CRA", &"ZM_TOMB_INS", &"ZM_TOMB_BOA", ::staff_air_fullycrafted, 1 ); + add_zombie_craftable_vox_category( "elemental_staff_air", "air_staff" ); + add_zombie_craftable( "elemental_staff_lightning", &"ZM_TOMB_CRL", &"ZM_TOMB_INS", &"ZM_TOMB_BOL", ::staff_lightning_fullycrafted, 1 ); + add_zombie_craftable_vox_category( "elemental_staff_lightning", "light_staff" ); + add_zombie_craftable( "elemental_staff_water", &"ZM_TOMB_CRW", &"ZM_TOMB_INS", &"ZM_TOMB_BOW", ::staff_water_fullycrafted, 1 ); + add_zombie_craftable_vox_category( "elemental_staff_water", "ice_staff" ); + add_zombie_craftable( "gramophone", &"ZM_TOMB_CRAFT_GRAMOPHONE", &"ZM_TOMB_CRAFT_GRAMOPHONE", &"ZM_TOMB_BOUGHT_GRAMOPHONE", undefined, 0 ); + add_zombie_craftable_vox_category( "gramophone", "gramophone" ); + level.zombie_craftable_persistent_weapon = ::tomb_check_crafted_weapon_persistence; + level.custom_craftable_validation = ::tomb_custom_craftable_validation; + level.zombie_custom_equipment_setup = ::setup_quadrotor_purchase; + level thread hide_staff_model(); + level.quadrotor_status = spawnstruct(); + level.quadrotor_status.crafted = 0; + level.quadrotor_status.picked_up = 0; + level.num_staffpieces_picked_up = []; + level.n_staffs_crafted = 0; } include_craftables() { - level thread run_craftables_devgui(); - craftable_name = "equip_dieseldrone_zm"; - quadrotor_body = generate_zombie_craftable_piece( craftable_name, "body", "veh_t6_dlc_zm_quad_piece_body", 32, 64, 0, undefined, ::onpickup_common, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_quadrotor_zm_body", 1, "build_dd" ); - quadrotor_brain = generate_zombie_craftable_piece( craftable_name, "brain", "veh_t6_dlc_zm_quad_piece_brain", 32, 64, 0, undefined, ::onpickup_common, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_quadrotor_zm_brain", 1, "build_dd_brain" ); - quadrotor_engine = generate_zombie_craftable_piece( craftable_name, "engine", "veh_t6_dlc_zm_quad_piece_engine", 32, 64, 0, undefined, ::onpickup_common, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_quadrotor_zm_engine", 1, "build_dd" ); - quadrotor = spawnstruct(); - quadrotor.name = craftable_name; - quadrotor add_craftable_piece( quadrotor_body ); - quadrotor add_craftable_piece( quadrotor_brain ); - quadrotor add_craftable_piece( quadrotor_engine ); - quadrotor.triggerthink = ::quadrotorcraftable; - include_zombie_craftable( quadrotor ); - level thread add_craftable_cheat( quadrotor ); - craftable_name = "tomb_shield_zm"; - riotshield_top = generate_zombie_craftable_piece( craftable_name, "top", "t6_wpn_zmb_shield_dlc4_top", 48, 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_dlc4_door", 48, 15, 25, undefined, ::onpickup_common, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_riotshield_door", 1, "build_zs" ); - riotshield_bracket = generate_zombie_craftable_piece( craftable_name, "bracket", "t6_wpn_zmb_shield_dlc4_bracket", 48, 15, 0, undefined, ::onpickup_common, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_riotshield_clamp", 1, "build_zs" ); - riotshield = spawnstruct(); - riotshield.name = craftable_name; - riotshield add_craftable_piece( riotshield_top ); - riotshield add_craftable_piece( riotshield_door ); - riotshield add_craftable_piece( riotshield_bracket ); - riotshield.onbuyweapon = ::onbuyweapon_riotshield; - riotshield.triggerthink = ::riotshieldcraftable; - include_craftable( riotshield ); - level thread add_craftable_cheat( riotshield ); - craftable_name = "elemental_staff_air"; - staff_air_gem = generate_zombie_craftable_piece( craftable_name, "gem", "t6_wpn_zmb_staff_crystal_air_part", 48, 64, 0, undefined, ::onpickup_aircrystal, ::ondrop_aircrystal, undefined, undefined, undefined, undefined, undefined, 0, "crystal", 1 ); - staff_air_upper_staff = generate_zombie_craftable_piece( craftable_name, "upper_staff", "t6_wpn_zmb_staff_tip_air_world", 32, 64, 0, undefined, ::onpickup_staffpiece, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_staff_zm_ustaff_air", 1, "staff_part" ); - staff_air_middle_staff = generate_zombie_craftable_piece( craftable_name, "middle_staff", "t6_wpn_zmb_staff_stem_air_part", 32, 64, 0, undefined, ::onpickup_staffpiece, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_staff_zm_mstaff_air", 1, "staff_part" ); - staff_air_lower_staff = generate_zombie_craftable_piece( craftable_name, "lower_staff", "t6_wpn_zmb_staff_revive_part", 32, 64, 0, undefined, ::onpickup_staffpiece, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_staff_zm_lstaff_air", 1, "staff_part" ); - staff = spawnstruct(); - staff.name = craftable_name; - staff add_craftable_piece( staff_air_gem ); - staff add_craftable_piece( staff_air_upper_staff ); - staff add_craftable_piece( staff_air_middle_staff ); - staff add_craftable_piece( staff_air_lower_staff ); - staff.triggerthink = ::staffcraftable_air; - staff.custom_craftablestub_update_prompt = ::tomb_staff_update_prompt; - include_zombie_craftable( staff ); - level thread add_craftable_cheat( staff ); - count_staff_piece_pickup( array( staff_air_upper_staff, staff_air_middle_staff, staff_air_lower_staff ) ); - craftable_name = "elemental_staff_fire"; - staff_fire_gem = generate_zombie_craftable_piece( craftable_name, "gem", "t6_wpn_zmb_staff_crystal_fire_part", 48, 64, 0, undefined, ::onpickup_firecrystal, ::ondrop_firecrystal, undefined, undefined, undefined, undefined, undefined, 0, "crystal", 1 ); - staff_fire_upper_staff = generate_zombie_craftable_piece( craftable_name, "upper_staff", "t6_wpn_zmb_staff_tip_fire_world", 32, 64, 0, undefined, ::onpickup_staffpiece, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_staff_zm_ustaff_fire", 1, "staff_part" ); - staff_fire_middle_staff = generate_zombie_craftable_piece( craftable_name, "middle_staff", "t6_wpn_zmb_staff_stem_fire_part", 32, 64, 0, undefined, ::onpickup_staffpiece, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_staff_zm_mstaff_fire", 1, "staff_part" ); - staff_fire_lower_staff = generate_zombie_craftable_piece( craftable_name, "lower_staff", "t6_wpn_zmb_staff_revive_part", 64, 128, 0, undefined, ::onpickup_staffpiece, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_staff_zm_lstaff_fire", 1, "staff_part" ); - level thread maps\mp\zm_tomb_main_quest::staff_mechz_drop_pieces( staff_fire_lower_staff ); - level thread maps\mp\zm_tomb_main_quest::staff_biplane_drop_pieces( array( staff_fire_middle_staff ) ); - level thread maps\mp\zm_tomb_main_quest::staff_unlock_with_zone_capture( staff_fire_upper_staff ); - staff = spawnstruct(); - staff.name = craftable_name; - staff add_craftable_piece( staff_fire_gem ); - staff add_craftable_piece( staff_fire_upper_staff ); - staff add_craftable_piece( staff_fire_middle_staff ); - staff add_craftable_piece( staff_fire_lower_staff ); - staff.triggerthink = ::staffcraftable_fire; - staff.custom_craftablestub_update_prompt = ::tomb_staff_update_prompt; - include_zombie_craftable( staff ); - level thread add_craftable_cheat( staff ); - count_staff_piece_pickup( array( staff_fire_upper_staff, staff_fire_middle_staff, staff_fire_lower_staff ) ); - craftable_name = "elemental_staff_lightning"; - staff_lightning_gem = generate_zombie_craftable_piece( craftable_name, "gem", "t6_wpn_zmb_staff_crystal_bolt_part", 48, 64, 0, undefined, ::onpickup_lightningcrystal, ::ondrop_lightningcrystal, undefined, undefined, undefined, undefined, undefined, 0, "crystal", 1 ); - staff_lightning_upper_staff = generate_zombie_craftable_piece( craftable_name, "upper_staff", "t6_wpn_zmb_staff_tip_lightning_world", 32, 64, 0, undefined, ::onpickup_staffpiece, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_staff_zm_ustaff_lightning", 1, "staff_part" ); - staff_lightning_middle_staff = generate_zombie_craftable_piece( craftable_name, "middle_staff", "t6_wpn_zmb_staff_stem_bolt_part", 32, 64, 0, undefined, ::onpickup_staffpiece, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_staff_zm_mstaff_lightning", 1, "staff_part" ); - staff_lightning_lower_staff = generate_zombie_craftable_piece( craftable_name, "lower_staff", "t6_wpn_zmb_staff_revive_part", 32, 64, 0, undefined, ::onpickup_staffpiece, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_staff_zm_lstaff_lightning", 1, "staff_part" ); - staff = spawnstruct(); - staff.name = craftable_name; - staff add_craftable_piece( staff_lightning_gem ); - staff add_craftable_piece( staff_lightning_upper_staff ); - staff add_craftable_piece( staff_lightning_middle_staff ); - staff add_craftable_piece( staff_lightning_lower_staff ); - staff.triggerthink = ::staffcraftable_lightning; - staff.custom_craftablestub_update_prompt = ::tomb_staff_update_prompt; - include_zombie_craftable( staff ); - level thread add_craftable_cheat( staff ); - count_staff_piece_pickup( array( staff_lightning_upper_staff, staff_lightning_middle_staff, staff_lightning_lower_staff ) ); - craftable_name = "elemental_staff_water"; - staff_water_gem = generate_zombie_craftable_piece( craftable_name, "gem", "t6_wpn_zmb_staff_crystal_water_part", 48, 64, 0, undefined, ::onpickup_watercrystal, ::ondrop_watercrystal, undefined, undefined, undefined, undefined, undefined, 0, "crystal", 1 ); - staff_water_upper_staff = generate_zombie_craftable_piece( craftable_name, "upper_staff", "t6_wpn_zmb_staff_tip_water_world", 32, 64, 0, undefined, ::onpickup_staffpiece, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_staff_zm_ustaff_water", 1, "staff_part" ); - staff_water_middle_staff = generate_zombie_craftable_piece( craftable_name, "middle_staff", "t6_wpn_zmb_staff_stem_water_part", 32, 64, 0, undefined, ::onpickup_staffpiece, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_staff_zm_mstaff_water", 1, "staff_part" ); - staff_water_lower_staff = generate_zombie_craftable_piece( craftable_name, "lower_staff", "t6_wpn_zmb_staff_revive_part", 32, 64, 0, undefined, ::onpickup_staffpiece, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_staff_zm_lstaff_water", 1, "staff_part" ); - a_ice_staff_parts = array( staff_water_lower_staff, staff_water_middle_staff, staff_water_upper_staff ); - level thread maps\mp\zm_tomb_main_quest::staff_ice_dig_pieces( a_ice_staff_parts ); - staff = spawnstruct(); - staff.name = craftable_name; - staff add_craftable_piece( staff_water_gem ); - staff add_craftable_piece( staff_water_upper_staff ); - staff add_craftable_piece( staff_water_middle_staff ); - staff add_craftable_piece( staff_water_lower_staff ); - staff.triggerthink = ::staffcraftable_water; - staff.custom_craftablestub_update_prompt = ::tomb_staff_update_prompt; - include_zombie_craftable( staff ); - level thread add_craftable_cheat( staff ); - count_staff_piece_pickup( array( staff_water_upper_staff, staff_water_middle_staff, staff_water_lower_staff ) ); - craftable_name = "gramophone"; - vinyl_pickup_player = vinyl_add_pickup( craftable_name, "vinyl_player", "p6_zm_tm_gramophone", undefined, undefined, "gramophone" ); - vinyl_pickup_master = vinyl_add_pickup( craftable_name, "vinyl_master", "p6_zm_tm_record_master", undefined, undefined, "record" ); - vinyl_pickup_air = vinyl_add_pickup( craftable_name, "vinyl_air", "p6_zm_tm_record_wind", "piece_record_zm_vinyl_air", "quest_state2", "record" ); - vinyl_pickup_ice = vinyl_add_pickup( craftable_name, "vinyl_ice", "p6_zm_tm_record_ice", "piece_record_zm_vinyl_water", "quest_state4", "record" ); - vinyl_pickup_fire = vinyl_add_pickup( craftable_name, "vinyl_fire", "p6_zm_tm_record_fire", "piece_record_zm_vinyl_fire", "quest_state1", "record" ); - vinyl_pickup_elec = vinyl_add_pickup( craftable_name, "vinyl_elec", "p6_zm_tm_record_lightning", "piece_record_zm_vinyl_lightning", "quest_state3", "record" ); - vinyl_pickup_player.sam_line = "gramophone_found"; - vinyl_pickup_master.sam_line = "master_found"; - vinyl_pickup_air.sam_line = "first_record_found"; - vinyl_pickup_ice.sam_line = "first_record_found"; - vinyl_pickup_fire.sam_line = "first_record_found"; - vinyl_pickup_elec.sam_line = "first_record_found"; - level thread maps\mp\zm_tomb_vo::watch_one_shot_samantha_line( "vox_sam_1st_record_found_0", "first_record_found" ); - level thread maps\mp\zm_tomb_vo::watch_one_shot_samantha_line( "vox_sam_gramophone_found_0", "gramophone_found" ); - level thread maps\mp\zm_tomb_vo::watch_one_shot_samantha_line( "vox_sam_master_found_0", "master_found" ); - gramophone = spawnstruct(); - gramophone.name = craftable_name; - gramophone add_craftable_piece( vinyl_pickup_player ); - gramophone add_craftable_piece( vinyl_pickup_master ); - gramophone add_craftable_piece( vinyl_pickup_air ); - gramophone add_craftable_piece( vinyl_pickup_ice ); - gramophone add_craftable_piece( vinyl_pickup_fire ); - gramophone add_craftable_piece( vinyl_pickup_elec ); - gramophone.triggerthink = ::gramophonecraftable; - include_zombie_craftable( gramophone ); - level thread add_craftable_cheat( gramophone ); - staff_fire_gem thread watch_part_pickup( "quest_state1", 2 ); - staff_air_gem thread watch_part_pickup( "quest_state2", 2 ); - staff_lightning_gem thread watch_part_pickup( "quest_state3", 2 ); - staff_water_gem thread watch_part_pickup( "quest_state4", 2 ); - staff_fire_gem thread staff_crystal_wait_for_teleport( 1 ); - staff_air_gem thread staff_crystal_wait_for_teleport( 2 ); - staff_lightning_gem thread staff_crystal_wait_for_teleport( 3 ); - staff_water_gem thread staff_crystal_wait_for_teleport( 4 ); - level thread maps\mp\zm_tomb_vo::staff_craft_vo(); - level thread maps\mp\zm_tomb_vo::samantha_discourage_think(); - level thread maps\mp\zm_tomb_vo::samantha_encourage_think(); - level thread craftable_add_glow_fx(); + level thread run_craftables_devgui(); + craftable_name = "equip_dieseldrone_zm"; + quadrotor_body = generate_zombie_craftable_piece( craftable_name, "body", "veh_t6_dlc_zm_quad_piece_body", 32, 64, 0, undefined, ::onpickup_common, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_quadrotor_zm_body", 1, "build_dd" ); + quadrotor_brain = generate_zombie_craftable_piece( craftable_name, "brain", "veh_t6_dlc_zm_quad_piece_brain", 32, 64, 0, undefined, ::onpickup_common, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_quadrotor_zm_brain", 1, "build_dd_brain" ); + quadrotor_engine = generate_zombie_craftable_piece( craftable_name, "engine", "veh_t6_dlc_zm_quad_piece_engine", 32, 64, 0, undefined, ::onpickup_common, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_quadrotor_zm_engine", 1, "build_dd" ); + quadrotor = spawnstruct(); + quadrotor.name = craftable_name; + quadrotor add_craftable_piece( quadrotor_body ); + quadrotor add_craftable_piece( quadrotor_brain ); + quadrotor add_craftable_piece( quadrotor_engine ); + quadrotor.triggerthink = ::quadrotorcraftable; + include_zombie_craftable( quadrotor ); + level thread add_craftable_cheat( quadrotor ); + craftable_name = "tomb_shield_zm"; + riotshield_top = generate_zombie_craftable_piece( craftable_name, "top", "t6_wpn_zmb_shield_dlc4_top", 48, 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_dlc4_door", 48, 15, 25, undefined, ::onpickup_common, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_riotshield_door", 1, "build_zs" ); + riotshield_bracket = generate_zombie_craftable_piece( craftable_name, "bracket", "t6_wpn_zmb_shield_dlc4_bracket", 48, 15, 0, undefined, ::onpickup_common, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_riotshield_clamp", 1, "build_zs" ); + riotshield = spawnstruct(); + riotshield.name = craftable_name; + riotshield add_craftable_piece( riotshield_top ); + riotshield add_craftable_piece( riotshield_door ); + riotshield add_craftable_piece( riotshield_bracket ); + riotshield.onbuyweapon = ::onbuyweapon_riotshield; + riotshield.triggerthink = ::riotshieldcraftable; + include_craftable( riotshield ); + level thread add_craftable_cheat( riotshield ); + craftable_name = "elemental_staff_air"; + staff_air_gem = generate_zombie_craftable_piece( craftable_name, "gem", "t6_wpn_zmb_staff_crystal_air_part", 48, 64, 0, undefined, ::onpickup_aircrystal, ::ondrop_aircrystal, undefined, undefined, undefined, undefined, undefined, 0, "crystal", 1 ); + staff_air_upper_staff = generate_zombie_craftable_piece( craftable_name, "upper_staff", "t6_wpn_zmb_staff_tip_air_world", 32, 64, 0, undefined, ::onpickup_staffpiece, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_staff_zm_ustaff_air", 1, "staff_part" ); + staff_air_middle_staff = generate_zombie_craftable_piece( craftable_name, "middle_staff", "t6_wpn_zmb_staff_stem_air_part", 32, 64, 0, undefined, ::onpickup_staffpiece, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_staff_zm_mstaff_air", 1, "staff_part" ); + staff_air_lower_staff = generate_zombie_craftable_piece( craftable_name, "lower_staff", "t6_wpn_zmb_staff_revive_part", 32, 64, 0, undefined, ::onpickup_staffpiece, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_staff_zm_lstaff_air", 1, "staff_part" ); + staff = spawnstruct(); + staff.name = craftable_name; + staff add_craftable_piece( staff_air_gem ); + staff add_craftable_piece( staff_air_upper_staff ); + staff add_craftable_piece( staff_air_middle_staff ); + staff add_craftable_piece( staff_air_lower_staff ); + staff.triggerthink = ::staffcraftable_air; + staff.custom_craftablestub_update_prompt = ::tomb_staff_update_prompt; + include_zombie_craftable( staff ); + level thread add_craftable_cheat( staff ); + count_staff_piece_pickup( array( staff_air_upper_staff, staff_air_middle_staff, staff_air_lower_staff ) ); + craftable_name = "elemental_staff_fire"; + staff_fire_gem = generate_zombie_craftable_piece( craftable_name, "gem", "t6_wpn_zmb_staff_crystal_fire_part", 48, 64, 0, undefined, ::onpickup_firecrystal, ::ondrop_firecrystal, undefined, undefined, undefined, undefined, undefined, 0, "crystal", 1 ); + staff_fire_upper_staff = generate_zombie_craftable_piece( craftable_name, "upper_staff", "t6_wpn_zmb_staff_tip_fire_world", 32, 64, 0, undefined, ::onpickup_staffpiece, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_staff_zm_ustaff_fire", 1, "staff_part" ); + staff_fire_middle_staff = generate_zombie_craftable_piece( craftable_name, "middle_staff", "t6_wpn_zmb_staff_stem_fire_part", 32, 64, 0, undefined, ::onpickup_staffpiece, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_staff_zm_mstaff_fire", 1, "staff_part" ); + staff_fire_lower_staff = generate_zombie_craftable_piece( craftable_name, "lower_staff", "t6_wpn_zmb_staff_revive_part", 64, 128, 0, undefined, ::onpickup_staffpiece, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_staff_zm_lstaff_fire", 1, "staff_part" ); + level thread maps\mp\zm_tomb_main_quest::staff_mechz_drop_pieces( staff_fire_lower_staff ); + level thread maps\mp\zm_tomb_main_quest::staff_biplane_drop_pieces( array( staff_fire_middle_staff ) ); + level thread maps\mp\zm_tomb_main_quest::staff_unlock_with_zone_capture( staff_fire_upper_staff ); + staff = spawnstruct(); + staff.name = craftable_name; + staff add_craftable_piece( staff_fire_gem ); + staff add_craftable_piece( staff_fire_upper_staff ); + staff add_craftable_piece( staff_fire_middle_staff ); + staff add_craftable_piece( staff_fire_lower_staff ); + staff.triggerthink = ::staffcraftable_fire; + staff.custom_craftablestub_update_prompt = ::tomb_staff_update_prompt; + include_zombie_craftable( staff ); + level thread add_craftable_cheat( staff ); + count_staff_piece_pickup( array( staff_fire_upper_staff, staff_fire_middle_staff, staff_fire_lower_staff ) ); + craftable_name = "elemental_staff_lightning"; + staff_lightning_gem = generate_zombie_craftable_piece( craftable_name, "gem", "t6_wpn_zmb_staff_crystal_bolt_part", 48, 64, 0, undefined, ::onpickup_lightningcrystal, ::ondrop_lightningcrystal, undefined, undefined, undefined, undefined, undefined, 0, "crystal", 1 ); + staff_lightning_upper_staff = generate_zombie_craftable_piece( craftable_name, "upper_staff", "t6_wpn_zmb_staff_tip_lightning_world", 32, 64, 0, undefined, ::onpickup_staffpiece, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_staff_zm_ustaff_lightning", 1, "staff_part" ); + staff_lightning_middle_staff = generate_zombie_craftable_piece( craftable_name, "middle_staff", "t6_wpn_zmb_staff_stem_bolt_part", 32, 64, 0, undefined, ::onpickup_staffpiece, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_staff_zm_mstaff_lightning", 1, "staff_part" ); + staff_lightning_lower_staff = generate_zombie_craftable_piece( craftable_name, "lower_staff", "t6_wpn_zmb_staff_revive_part", 32, 64, 0, undefined, ::onpickup_staffpiece, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_staff_zm_lstaff_lightning", 1, "staff_part" ); + staff = spawnstruct(); + staff.name = craftable_name; + staff add_craftable_piece( staff_lightning_gem ); + staff add_craftable_piece( staff_lightning_upper_staff ); + staff add_craftable_piece( staff_lightning_middle_staff ); + staff add_craftable_piece( staff_lightning_lower_staff ); + staff.triggerthink = ::staffcraftable_lightning; + staff.custom_craftablestub_update_prompt = ::tomb_staff_update_prompt; + include_zombie_craftable( staff ); + level thread add_craftable_cheat( staff ); + count_staff_piece_pickup( array( staff_lightning_upper_staff, staff_lightning_middle_staff, staff_lightning_lower_staff ) ); + craftable_name = "elemental_staff_water"; + staff_water_gem = generate_zombie_craftable_piece( craftable_name, "gem", "t6_wpn_zmb_staff_crystal_water_part", 48, 64, 0, undefined, ::onpickup_watercrystal, ::ondrop_watercrystal, undefined, undefined, undefined, undefined, undefined, 0, "crystal", 1 ); + staff_water_upper_staff = generate_zombie_craftable_piece( craftable_name, "upper_staff", "t6_wpn_zmb_staff_tip_water_world", 32, 64, 0, undefined, ::onpickup_staffpiece, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_staff_zm_ustaff_water", 1, "staff_part" ); + staff_water_middle_staff = generate_zombie_craftable_piece( craftable_name, "middle_staff", "t6_wpn_zmb_staff_stem_water_part", 32, 64, 0, undefined, ::onpickup_staffpiece, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_staff_zm_mstaff_water", 1, "staff_part" ); + staff_water_lower_staff = generate_zombie_craftable_piece( craftable_name, "lower_staff", "t6_wpn_zmb_staff_revive_part", 32, 64, 0, undefined, ::onpickup_staffpiece, ::ondrop_common, undefined, undefined, undefined, undefined, "piece_staff_zm_lstaff_water", 1, "staff_part" ); + a_ice_staff_parts = array( staff_water_lower_staff, staff_water_middle_staff, staff_water_upper_staff ); + level thread maps\mp\zm_tomb_main_quest::staff_ice_dig_pieces( a_ice_staff_parts ); + staff = spawnstruct(); + staff.name = craftable_name; + staff add_craftable_piece( staff_water_gem ); + staff add_craftable_piece( staff_water_upper_staff ); + staff add_craftable_piece( staff_water_middle_staff ); + staff add_craftable_piece( staff_water_lower_staff ); + staff.triggerthink = ::staffcraftable_water; + staff.custom_craftablestub_update_prompt = ::tomb_staff_update_prompt; + include_zombie_craftable( staff ); + level thread add_craftable_cheat( staff ); + count_staff_piece_pickup( array( staff_water_upper_staff, staff_water_middle_staff, staff_water_lower_staff ) ); + craftable_name = "gramophone"; + vinyl_pickup_player = vinyl_add_pickup( craftable_name, "vinyl_player", "p6_zm_tm_gramophone", undefined, undefined, "gramophone" ); + vinyl_pickup_master = vinyl_add_pickup( craftable_name, "vinyl_master", "p6_zm_tm_record_master", undefined, undefined, "record" ); + vinyl_pickup_air = vinyl_add_pickup( craftable_name, "vinyl_air", "p6_zm_tm_record_wind", "piece_record_zm_vinyl_air", "quest_state2", "record" ); + vinyl_pickup_ice = vinyl_add_pickup( craftable_name, "vinyl_ice", "p6_zm_tm_record_ice", "piece_record_zm_vinyl_water", "quest_state4", "record" ); + vinyl_pickup_fire = vinyl_add_pickup( craftable_name, "vinyl_fire", "p6_zm_tm_record_fire", "piece_record_zm_vinyl_fire", "quest_state1", "record" ); + vinyl_pickup_elec = vinyl_add_pickup( craftable_name, "vinyl_elec", "p6_zm_tm_record_lightning", "piece_record_zm_vinyl_lightning", "quest_state3", "record" ); + vinyl_pickup_player.sam_line = "gramophone_found"; + vinyl_pickup_master.sam_line = "master_found"; + vinyl_pickup_air.sam_line = "first_record_found"; + vinyl_pickup_ice.sam_line = "first_record_found"; + vinyl_pickup_fire.sam_line = "first_record_found"; + vinyl_pickup_elec.sam_line = "first_record_found"; + level thread maps\mp\zm_tomb_vo::watch_one_shot_samantha_line( "vox_sam_1st_record_found_0", "first_record_found" ); + level thread maps\mp\zm_tomb_vo::watch_one_shot_samantha_line( "vox_sam_gramophone_found_0", "gramophone_found" ); + level thread maps\mp\zm_tomb_vo::watch_one_shot_samantha_line( "vox_sam_master_found_0", "master_found" ); + gramophone = spawnstruct(); + gramophone.name = craftable_name; + gramophone add_craftable_piece( vinyl_pickup_player ); + gramophone add_craftable_piece( vinyl_pickup_master ); + gramophone add_craftable_piece( vinyl_pickup_air ); + gramophone add_craftable_piece( vinyl_pickup_ice ); + gramophone add_craftable_piece( vinyl_pickup_fire ); + gramophone add_craftable_piece( vinyl_pickup_elec ); + gramophone.triggerthink = ::gramophonecraftable; + include_zombie_craftable( gramophone ); + level thread add_craftable_cheat( gramophone ); + staff_fire_gem thread watch_part_pickup( "quest_state1", 2 ); + staff_air_gem thread watch_part_pickup( "quest_state2", 2 ); + staff_lightning_gem thread watch_part_pickup( "quest_state3", 2 ); + staff_water_gem thread watch_part_pickup( "quest_state4", 2 ); + staff_fire_gem thread staff_crystal_wait_for_teleport( 1 ); + staff_air_gem thread staff_crystal_wait_for_teleport( 2 ); + staff_lightning_gem thread staff_crystal_wait_for_teleport( 3 ); + staff_water_gem thread staff_crystal_wait_for_teleport( 4 ); + level thread maps\mp\zm_tomb_vo::staff_craft_vo(); + level thread maps\mp\zm_tomb_vo::samantha_discourage_think(); + level thread maps\mp\zm_tomb_vo::samantha_encourage_think(); + level thread craftable_add_glow_fx(); } onfullycrafted_quadrotor( player ) { - if (is_true(level.quadrotor_status.crafted)) - { - return 1; - } + if (is_true(level.quadrotor_status.crafted)) + { + return 1; + } - level.quadrotor_status.crafted = 1; - pickup_trig = level.quadrotor_status.pickup_trig; - level.quadrotor_status.str_zone = maps\mp\zombies\_zm_zonemgr::get_zone_from_position( pickup_trig.origin, 1 ); - level.quadrotor_status.pickup_indicator = spawn( "script_model", pickup_trig.model.origin + vectorscale( ( 0, 0, -1 ), 10.0 ) ); - level.quadrotor_status.pickup_indicator.angles = pickup_trig.model.angles; - level.quadrotor_status.pickup_indicator setmodel( "p6_zm_tm_quadrotor_stand" ); - pickup_trig.model.origin += (0, 0, 6.5); - pickup_trig.model.angles += (0, -90, 0); + level.quadrotor_status.crafted = 1; + pickup_trig = level.quadrotor_status.pickup_trig; + level.quadrotor_status.str_zone = maps\mp\zombies\_zm_zonemgr::get_zone_from_position( pickup_trig.origin, 1 ); + level.quadrotor_status.pickup_indicator = spawn( "script_model", pickup_trig.model.origin + vectorscale( ( 0, 0, -1 ), 10.0 ) ); + level.quadrotor_status.pickup_indicator.angles = pickup_trig.model.angles; + level.quadrotor_status.pickup_indicator setmodel( "p6_zm_tm_quadrotor_stand" ); + pickup_trig.model.origin += (0, 0, 6.5); + pickup_trig.model.angles += (0, -90, 0); - level notify( "quest_progressed", player, 1 ); - return 1; + level notify( "quest_progressed", player, 1 ); + return 1; } quadrotor_control_thread() @@ -218,20 +218,20 @@ quadrotor_control_thread() { if ( self actionslottwobuttonpressed() && self hasweapon( "equip_dieseldrone_zm" ) ) { - prev_wep = self getCurrentWeapon(); + prev_wep = self getCurrentWeapon(); self waittill( "weapon_change_complete" ); self playsound( "veh_qrdrone_takeoff" ); - if(self hasweapon(prev_wep) && prev_wep != "equip_dieseldrone_zm") - { - self switchtoweapon( prev_wep ); - } - else - { - self switchtoweapon( self getweaponslistprimaries()[0] ); - } + if(self hasweapon(prev_wep) && prev_wep != "equip_dieseldrone_zm") + { + self switchtoweapon( prev_wep ); + } + else + { + self switchtoweapon( self getweaponslistprimaries()[0] ); + } self waittill( "weapon_change_complete" ); @@ -259,208 +259,208 @@ quadrotor_control_thread() setup_quadrotor_purchase( player ) { - if ( self.stub.weaponname == "equip_dieseldrone_zm" ) - { - if ( players_has_weapon( "equip_dieseldrone_zm" ) ) - return true; + if ( self.stub.weaponname == "equip_dieseldrone_zm" ) + { + if ( players_has_weapon( "equip_dieseldrone_zm" ) ) + return true; - quadrotor = getentarray( "quadrotor_ai", "targetname" ); + quadrotor = getentarray( "quadrotor_ai", "targetname" ); - if ( quadrotor.size >= 1 ) - return true; + if ( quadrotor.size >= 1 ) + return true; player maps\mp\zombies\_zm_score::minus_to_player_score( self.stub.cost ); self play_sound_on_ent( "purchase" ); - quadrotor_set_unavailable(); - player giveweapon( "equip_dieseldrone_zm" ); - player setweaponammoclip( "equip_dieseldrone_zm", 1 ); - player playsoundtoplayer( "zmb_buildable_pickup_complete", player ); + quadrotor_set_unavailable(); + player giveweapon( "equip_dieseldrone_zm" ); + player setweaponammoclip( "equip_dieseldrone_zm", 1 ); + player playsoundtoplayer( "zmb_buildable_pickup_complete", player ); - if ( isdefined( self.stub.craftablestub.use_actionslot ) ) - player setactionslot( self.stub.craftablestub.use_actionslot, "weapon", "equip_dieseldrone_zm" ); - else - player setactionslot( 2, "weapon", "equip_dieseldrone_zm" ); + if ( isdefined( self.stub.craftablestub.use_actionslot ) ) + player setactionslot( self.stub.craftablestub.use_actionslot, "weapon", "equip_dieseldrone_zm" ); + else + player setactionslot( 2, "weapon", "equip_dieseldrone_zm" ); - player notify( "equip_dieseldrone_zm_given" ); - level thread quadrotor_watcher( player ); - player thread maps\mp\zombies\_zm_audio::create_and_play_dialog( "general", "build_dd_plc" ); + player notify( "equip_dieseldrone_zm_given" ); + level thread quadrotor_watcher( player ); + player thread maps\mp\zombies\_zm_audio::create_and_play_dialog( "general", "build_dd_plc" ); self.stub.hint_string = "Took " + getWeaponDisplayName(self.stub.weaponname); self sethintstring(self.stub.hint_string); - return true; - } + return true; + } - return false; + return false; } quadrotor_watcher( player ) { - quadrotor_set_unavailable(); - player thread quadrotor_return_condition_watcher(); - player thread quadrotor_control_thread(); + quadrotor_set_unavailable(); + player thread quadrotor_return_condition_watcher(); + player thread quadrotor_control_thread(); - level waittill( "drone_available" ); + level waittill( "drone_available" ); - level.maxis_quadrotor = undefined; + level.maxis_quadrotor = undefined; - if ( flag( "ee_quadrotor_disabled" ) ) - flag_waitopen( "ee_quadrotor_disabled" ); + if ( flag( "ee_quadrotor_disabled" ) ) + flag_waitopen( "ee_quadrotor_disabled" ); - quadrotor_set_available(); + quadrotor_set_available(); } quadrotor_set_unavailable() { - level.quadrotor_status.picked_up = 1; + level.quadrotor_status.picked_up = 1; level.quadrotor_status.pickup_trig.model ghost(); } quadrotor_set_available() { - playfx( level._effect["tesla_elec_kill"], level.quadrotor_status.pickup_trig.model.origin ); - level.quadrotor_status.pickup_trig.model playsound( "zmb_qrdrone_leave" ); - level.quadrotor_status.picked_up = 0; - level.quadrotor_status.pickup_trig.model show(); - flag_set( "quadrotor_cooling_down" ); - str_zone = level.quadrotor_status.str_zone; + playfx( level._effect["tesla_elec_kill"], level.quadrotor_status.pickup_trig.model.origin ); + level.quadrotor_status.pickup_trig.model playsound( "zmb_qrdrone_leave" ); + level.quadrotor_status.picked_up = 0; + level.quadrotor_status.pickup_trig.model show(); + flag_set( "quadrotor_cooling_down" ); + str_zone = level.quadrotor_status.str_zone; - switch ( str_zone ) - { - case "zone_nml_9": - setclientfield( "cooldown_steam", 1 ); - break; - case "zone_bunker_5a": - setclientfield( "cooldown_steam", 2 ); - break; - case "zone_village_1": - setclientfield( "cooldown_steam", 3 ); - break; - } + switch ( str_zone ) + { + case "zone_nml_9": + setclientfield( "cooldown_steam", 1 ); + break; + case "zone_bunker_5a": + setclientfield( "cooldown_steam", 2 ); + break; + case "zone_village_1": + setclientfield( "cooldown_steam", 3 ); + break; + } - vox_line = "vox_maxi_drone_cool_down_3"; - thread maxissay( vox_line, level.quadrotor_status.pickup_trig.model ); - wait 30; - flag_clear( "quadrotor_cooling_down" ); - setclientfield( "cooldown_steam", 0 ); - level.quadrotor_status.pickup_trig trigger_on(); - vox_line = "vox_maxi_drone_cool_down_4"; - maxissay( vox_line, level.quadrotor_status.pickup_trig.model ); + vox_line = "vox_maxi_drone_cool_down_3"; + thread maxissay( vox_line, level.quadrotor_status.pickup_trig.model ); + wait 30; + flag_clear( "quadrotor_cooling_down" ); + setclientfield( "cooldown_steam", 0 ); + level.quadrotor_status.pickup_trig trigger_on(); + vox_line = "vox_maxi_drone_cool_down_4"; + maxissay( vox_line, level.quadrotor_status.pickup_trig.model ); } quadrotor_timer() { - self endon( "death" ); - level endon( "drone_available" ); - wait 50; - vox_line = "vox_maxi_drone_cool_down_" + randomintrange( 0, 2 ); - self thread maps\mp\zm_tomb_vo::maxissay( vox_line, self ); - wait 10; - vox_line = "vox_maxi_drone_cool_down_2"; - self thread maps\mp\zm_tomb_vo::maxissay( vox_line, self ); - level notify( "drone_should_return" ); + self endon( "death" ); + level endon( "drone_available" ); + wait 50; + vox_line = "vox_maxi_drone_cool_down_" + randomintrange( 0, 2 ); + self thread maps\mp\zm_tomb_vo::maxissay( vox_line, self ); + wait 10; + vox_line = "vox_maxi_drone_cool_down_2"; + self thread maps\mp\zm_tomb_vo::maxissay( vox_line, self ); + level notify( "drone_should_return" ); } quadrotor_instance_watcher( player_owner ) { - self endon( "death" ); - self.player_owner = player_owner; - self.health = 200; - level.maxis_quadrotor = self; - self makevehicleunusable(); - self thread maps\mp\zombies\_zm_ai_quadrotor::quadrotor_think(); - self thread follow_ent( player_owner ); - self thread quadrotor_timer(); + self endon( "death" ); + self.player_owner = player_owner; + self.health = 200; + level.maxis_quadrotor = self; + self makevehicleunusable(); + self thread maps\mp\zombies\_zm_ai_quadrotor::quadrotor_think(); + self thread follow_ent( player_owner ); + self thread quadrotor_timer(); - level waittill( "drone_should_return" ); + level waittill( "drone_should_return" ); - self quadrotor_fly_back_to_table(); + self quadrotor_fly_back_to_table(); } tomb_check_crafted_weapon_persistence( player ) { - if ( self.stub.equipname == "equip_dieseldrone_zm" ) - { - if ( level.quadrotor_status.picked_up ) - return true; - else if ( level.quadrotor_status.crafted ) - return false; - } - else if ( self.stub.weaponname == "staff_air_zm" || self.stub.weaponname == "staff_fire_zm" || self.stub.weaponname == "staff_lightning_zm" || self.stub.weaponname == "staff_water_zm" ) - { - if ( self is_unclaimed_staff_weapon( self.stub.weaponname ) ) - { - s_elemental_staff = get_staff_info_from_weapon_name( self.stub.weaponname, 0 ); - player maps\mp\zombies\_zm_weapons::weapon_give( s_elemental_staff.weapname, 0, 0 ); + if ( self.stub.equipname == "equip_dieseldrone_zm" ) + { + if ( level.quadrotor_status.picked_up ) + return true; + else if ( level.quadrotor_status.crafted ) + return false; + } + else if ( self.stub.weaponname == "staff_air_zm" || self.stub.weaponname == "staff_fire_zm" || self.stub.weaponname == "staff_lightning_zm" || self.stub.weaponname == "staff_water_zm" ) + { + if ( self is_unclaimed_staff_weapon( self.stub.weaponname ) ) + { + s_elemental_staff = get_staff_info_from_weapon_name( self.stub.weaponname, 0 ); + player maps\mp\zombies\_zm_weapons::weapon_give( s_elemental_staff.weapname, 0, 0 ); - if ( isdefined( s_elemental_staff.prev_ammo_stock ) && isdefined( s_elemental_staff.prev_ammo_clip ) ) - { - clip_size = weaponclipsize( s_elemental_staff.weapname ); + if ( isdefined( s_elemental_staff.prev_ammo_stock ) && isdefined( s_elemental_staff.prev_ammo_clip ) ) + { + clip_size = weaponclipsize( s_elemental_staff.weapname ); - if ( s_elemental_staff.prev_ammo_clip < clip_size ) - { - clip_add = clip_size - s_elemental_staff.prev_ammo_clip; + if ( s_elemental_staff.prev_ammo_clip < clip_size ) + { + clip_add = clip_size - s_elemental_staff.prev_ammo_clip; - if (clip_add > s_elemental_staff.prev_ammo_stock) - { - clip_add = s_elemental_staff.prev_ammo_stock; - } + if (clip_add > s_elemental_staff.prev_ammo_stock) + { + clip_add = s_elemental_staff.prev_ammo_stock; + } - s_elemental_staff.prev_ammo_clip += clip_add; - s_elemental_staff.prev_ammo_stock -= clip_add; - } + s_elemental_staff.prev_ammo_clip += clip_add; + s_elemental_staff.prev_ammo_stock -= clip_add; + } - player setweaponammostock( s_elemental_staff.weapname, s_elemental_staff.prev_ammo_stock ); - player setweaponammoclip( s_elemental_staff.weapname, s_elemental_staff.prev_ammo_clip ); - } + player setweaponammostock( s_elemental_staff.weapname, s_elemental_staff.prev_ammo_stock ); + player setweaponammoclip( s_elemental_staff.weapname, s_elemental_staff.prev_ammo_clip ); + } - if ( isdefined( level.zombie_craftablestubs[self.stub.equipname].str_taken ) ) - self.stub.hint_string = level.zombie_craftablestubs[self.stub.equipname].str_taken; - else - self.stub.hint_string = ""; + if ( isdefined( level.zombie_craftablestubs[self.stub.equipname].str_taken ) ) + self.stub.hint_string = level.zombie_craftablestubs[self.stub.equipname].str_taken; + else + self.stub.hint_string = ""; - self sethintstring( self.stub.hint_string ); - player track_craftables_pickedup( self.stub.craftablespawn ); - model = getent( "craftable_" + self.stub.weaponname, "targetname" ); - model ghost(); - self.stub thread track_crafted_staff_trigger(); - self.stub thread track_staff_weapon_respawn( player ); - set_player_staff( self.stub.weaponname, player ); - } - else - { - self.stub.hint_string = ""; - self sethintstring( self.stub.hint_string ); - } + self sethintstring( self.stub.hint_string ); + player track_craftables_pickedup( self.stub.craftablespawn ); + model = getent( "craftable_" + self.stub.weaponname, "targetname" ); + model ghost(); + self.stub thread track_crafted_staff_trigger(); + self.stub thread track_staff_weapon_respawn( player ); + set_player_staff( self.stub.weaponname, player ); + } + else + { + self.stub.hint_string = ""; + self sethintstring( self.stub.hint_string ); + } - return true; - } + return true; + } - return false; + return false; } tomb_custom_craftable_validation( player ) { - if ( self.stub.equipname == "equip_dieseldrone_zm" ) - { - level.quadrotor_status.pickup_trig = self.stub; + if ( self.stub.equipname == "equip_dieseldrone_zm" ) + { + level.quadrotor_status.pickup_trig = self.stub; - if ( level.quadrotor_status.crafted ) - return !level.quadrotor_status.picked_up && !flag( "quadrotor_cooling_down" ); - } + if ( level.quadrotor_status.crafted ) + return !level.quadrotor_status.picked_up && !flag( "quadrotor_cooling_down" ); + } - if ( !issubstr( self.stub.weaponname, "staff" ) ) - return 1; + if ( !issubstr( self.stub.weaponname, "staff" ) ) + return 1; - if ( !( isdefined( level.craftables_crafted[self.stub.equipname] ) && level.craftables_crafted[self.stub.equipname] ) ) - return 1; + if ( !( isdefined( level.craftables_crafted[self.stub.equipname] ) && level.craftables_crafted[self.stub.equipname] ) ) + return 1; - if ( !player scripts\zm\replaced\zm_tomb_main_quest::can_pickup_staff() ) - { - self thread swap_staff_hint_craftable(); - return 0; - } + if ( !player scripts\zm\replaced\zm_tomb_main_quest::can_pickup_staff() ) + { + self thread swap_staff_hint_craftable(); + return 0; + } e_upgraded_staff = maps\mp\zm_tomb_craftables::get_staff_info_from_weapon_name( self.stub.weaponname ); @@ -469,137 +469,137 @@ tomb_custom_craftable_validation( player ) return 0; } - s_elemental_staff = get_staff_info_from_weapon_name( self.stub.weaponname, 0 ); - weapons = player getweaponslistprimaries(); + s_elemental_staff = get_staff_info_from_weapon_name( self.stub.weaponname, 0 ); + weapons = player getweaponslistprimaries(); - foreach ( weapon in weapons ) - { - if ( issubstr( weapon, "staff" ) && weapon != s_elemental_staff.weapname ) - player takeweapon( weapon ); - } + foreach ( weapon in weapons ) + { + if ( issubstr( weapon, "staff" ) && weapon != s_elemental_staff.weapname ) + player takeweapon( weapon ); + } - return 1; + return 1; } swap_staff_hint_craftable() { - self notify("swap_staff_hint_craftable"); - self endon("swap_staff_hint_craftable"); - self endon("death"); + self notify("swap_staff_hint_craftable"); + self endon("swap_staff_hint_craftable"); + self endon("death"); - self sethintstring(&"ZM_TOMB_OSO"); + self sethintstring(&"ZM_TOMB_OSO"); - wait 3; + wait 3; - self sethintstring(self.stub.hint_string); + self sethintstring(self.stub.hint_string); } track_staff_weapon_respawn( player ) { - self notify( "kill_track_staff_weapon_respawn" ); - self endon( "kill_track_staff_weapon_respawn" ); - player endon( "disconnect" ); + self notify( "kill_track_staff_weapon_respawn" ); + self endon( "kill_track_staff_weapon_respawn" ); + player endon( "disconnect" ); - self thread track_staff_weapon_respawn_player_disconnect_monitor( player ); + self thread track_staff_weapon_respawn_player_disconnect_monitor( player ); - s_elemental_staff = get_staff_info_from_weapon_name( self.weaponname, 1 ); - s_upgraded_staff = s_elemental_staff.upgrade; + s_elemental_staff = get_staff_info_from_weapon_name( self.weaponname, 1 ); + s_upgraded_staff = s_elemental_staff.upgrade; - if ( !isdefined( self.base_weaponname ) ) - self.base_weaponname = s_elemental_staff.weapname; + if ( !isdefined( self.base_weaponname ) ) + self.base_weaponname = s_elemental_staff.weapname; - flag_clear( self.base_weaponname + "_enabled" ); + flag_clear( self.base_weaponname + "_enabled" ); - for ( has_weapon = 0; isalive( player ); has_weapon = 0 ) - { - if ( isdefined( s_elemental_staff.charger.is_inserted ) && s_elemental_staff.charger.is_inserted || isdefined( s_upgraded_staff.charger.is_inserted ) && s_upgraded_staff.charger.is_inserted || isdefined( s_upgraded_staff.ee_in_use ) && s_upgraded_staff.ee_in_use ) - has_weapon = 1; - else - { - weapons = player getweaponslistprimaries(); + for ( has_weapon = 0; isalive( player ); has_weapon = 0 ) + { + if ( isdefined( s_elemental_staff.charger.is_inserted ) && s_elemental_staff.charger.is_inserted || isdefined( s_upgraded_staff.charger.is_inserted ) && s_upgraded_staff.charger.is_inserted || isdefined( s_upgraded_staff.ee_in_use ) && s_upgraded_staff.ee_in_use ) + has_weapon = 1; + else + { + weapons = player getweaponslistprimaries(); - foreach ( weapon in weapons ) - { - n_melee_element = 0; + foreach ( weapon in weapons ) + { + n_melee_element = 0; - if ( weapon == self.base_weaponname ) - { - s_elemental_staff.prev_ammo_stock = player getweaponammostock( weapon ); - s_elemental_staff.prev_ammo_clip = player getweaponammoclip( weapon ); - has_weapon = 1; - } - else if ( weapon == s_upgraded_staff.weapname ) - { - s_upgraded_staff.prev_ammo_stock = player getweaponammostock( weapon ); - s_upgraded_staff.prev_ammo_clip = player getweaponammoclip( weapon ); - has_weapon = 1; - n_melee_element = s_upgraded_staff.enum; - } + if ( weapon == self.base_weaponname ) + { + s_elemental_staff.prev_ammo_stock = player getweaponammostock( weapon ); + s_elemental_staff.prev_ammo_clip = player getweaponammoclip( weapon ); + has_weapon = 1; + } + else if ( weapon == s_upgraded_staff.weapname ) + { + s_upgraded_staff.prev_ammo_stock = player getweaponammostock( weapon ); + s_upgraded_staff.prev_ammo_clip = player getweaponammoclip( weapon ); + has_weapon = 1; + n_melee_element = s_upgraded_staff.enum; + } - if ( player hasweapon( "staff_revive_zm" ) ) - { - s_upgraded_staff.revive_ammo_stock = player getweaponammostock( "staff_revive_zm" ); - s_upgraded_staff.revive_ammo_clip = player getweaponammoclip( "staff_revive_zm" ); - } + if ( player hasweapon( "staff_revive_zm" ) ) + { + s_upgraded_staff.revive_ammo_stock = player getweaponammostock( "staff_revive_zm" ); + s_upgraded_staff.revive_ammo_clip = player getweaponammoclip( "staff_revive_zm" ); + } - if ( has_weapon ) - { - cur_weapon = player getcurrentweapon(); - cur_melee_weapon = player get_player_melee_weapon(); + if ( has_weapon ) + { + cur_weapon = player getcurrentweapon(); + cur_melee_weapon = player get_player_melee_weapon(); - if ( !issubstr( cur_melee_weapon, "one_inch_punch" ) && n_melee_element != 0 ) - { - if ( cur_weapon != weapon && ( isdefined( player.use_staff_melee ) && player.use_staff_melee ) ) - { - player update_staff_accessories( 0 ); - continue; - } + if ( !issubstr( cur_melee_weapon, "one_inch_punch" ) && n_melee_element != 0 ) + { + if ( cur_weapon != weapon && ( isdefined( player.use_staff_melee ) && player.use_staff_melee ) ) + { + player update_staff_accessories( 0 ); + continue; + } - if ( cur_weapon == weapon && !( isdefined( player.use_staff_melee ) && player.use_staff_melee ) ) - player update_staff_accessories( n_melee_element ); - } - } - } - } + if ( cur_weapon == weapon && !( isdefined( player.use_staff_melee ) && player.use_staff_melee ) ) + player update_staff_accessories( n_melee_element ); + } + } + } + } - if ( !has_weapon ) - break; + if ( !has_weapon ) + break; - wait 0.5; - } + wait 0.5; + } - b_staff_in_use = 0; - a_players = getplayers(); + b_staff_in_use = 0; + a_players = getplayers(); - foreach ( check_player in a_players ) - { - weapons = check_player getweaponslistprimaries(); + foreach ( check_player in a_players ) + { + weapons = check_player getweaponslistprimaries(); - foreach ( weapon in weapons ) - { - if ( weapon == self.base_weaponname || weapon == s_upgraded_staff.weapname ) - b_staff_in_use = 1; - } - } + foreach ( weapon in weapons ) + { + if ( weapon == self.base_weaponname || weapon == s_upgraded_staff.weapname ) + b_staff_in_use = 1; + } + } - if ( !b_staff_in_use ) - { - model = getent( "craftable_" + self.base_weaponname, "targetname" ); - model show(); - flag_set( self.base_weaponname + "_enabled" ); - } + if ( !b_staff_in_use ) + { + model = getent( "craftable_" + self.base_weaponname, "targetname" ); + model show(); + flag_set( self.base_weaponname + "_enabled" ); + } - clear_player_staff( self.base_weaponname, player ); + clear_player_staff( self.base_weaponname, player ); } track_staff_weapon_respawn_player_disconnect_monitor( player ) { - self notify( "track_staff_weapon_respawn_player_disconnect_monitor" ); - self endon( "track_staff_weapon_respawn_player_disconnect_monitor" ); + self notify( "track_staff_weapon_respawn_player_disconnect_monitor" ); + self endon( "track_staff_weapon_respawn_player_disconnect_monitor" ); - player waittill( "disconnect" ); + player waittill( "disconnect" ); - model = getent( "craftable_" + self.base_weaponname, "targetname" ); - model show(); - flag_set( self.base_weaponname + "_enabled" ); + model = getent( "craftable_" + self.base_weaponname, "targetname" ); + model show(); + flag_set( self.base_weaponname + "_enabled" ); } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_tomb_dig.gsc b/scripts/zm/replaced/zm_tomb_dig.gsc index 5cec9781..dacd15d0 100644 --- a/scripts/zm/replaced/zm_tomb_dig.gsc +++ b/scripts/zm/replaced/zm_tomb_dig.gsc @@ -15,35 +15,35 @@ init_shovel() { - precachemodel( "p6_zm_tm_dig_mound" ); - precachemodel( "p6_zm_tm_dig_mound_blood" ); - precachemodel( "p6_zm_tm_shovel" ); - precachemodel( "zombie_pickup_perk_bottle" ); - precachemodel( "t6_wpn_claymore_world" ); - maps\mp\zombies\_zm_audio_announcer::createvox( "blood_money", "powerup_blood_money" ); - onplayerconnect_callback( ::init_shovel_player ); + precachemodel( "p6_zm_tm_dig_mound" ); + precachemodel( "p6_zm_tm_dig_mound_blood" ); + precachemodel( "p6_zm_tm_shovel" ); + precachemodel( "zombie_pickup_perk_bottle" ); + precachemodel( "t6_wpn_claymore_world" ); + maps\mp\zombies\_zm_audio_announcer::createvox( "blood_money", "powerup_blood_money" ); + onplayerconnect_callback( ::init_shovel_player ); - level.get_player_perk_purchase_limit = ::get_player_perk_purchase_limit; - level.bonus_points_powerup_override = ::bonus_points_powerup_override; - level thread dig_powerups_tracking(); - level thread dig_spots_init(); - registerclientfield( "world", "shovel_player1", 14000, 2, "int", undefined, 0 ); - registerclientfield( "world", "shovel_player2", 14000, 2, "int", undefined, 0 ); - registerclientfield( "world", "shovel_player3", 14000, 2, "int", undefined, 0 ); - registerclientfield( "world", "shovel_player4", 14000, 2, "int", undefined, 0 ); - registerclientfield( "world", "helmet_player1", 14000, 1, "int", undefined, 0 ); - registerclientfield( "world", "helmet_player2", 14000, 1, "int", undefined, 0 ); - registerclientfield( "world", "helmet_player3", 14000, 1, "int", undefined, 0 ); - registerclientfield( "world", "helmet_player4", 14000, 1, "int", undefined, 0 ); + level.get_player_perk_purchase_limit = ::get_player_perk_purchase_limit; + level.bonus_points_powerup_override = ::bonus_points_powerup_override; + level thread dig_powerups_tracking(); + level thread dig_spots_init(); + registerclientfield( "world", "shovel_player1", 14000, 2, "int", undefined, 0 ); + registerclientfield( "world", "shovel_player2", 14000, 2, "int", undefined, 0 ); + registerclientfield( "world", "shovel_player3", 14000, 2, "int", undefined, 0 ); + registerclientfield( "world", "shovel_player4", 14000, 2, "int", undefined, 0 ); + registerclientfield( "world", "helmet_player1", 14000, 1, "int", undefined, 0 ); + registerclientfield( "world", "helmet_player2", 14000, 1, "int", undefined, 0 ); + registerclientfield( "world", "helmet_player3", 14000, 1, "int", undefined, 0 ); + registerclientfield( "world", "helmet_player4", 14000, 1, "int", undefined, 0 ); } init_shovel_player() { - self.dig_vars["has_shovel"] = 1; - self.dig_vars["has_upgraded_shovel"] = 0; - self.dig_vars["has_helmet"] = 0; - self.dig_vars["n_spots_dug"] = 0; - self.dig_vars["n_losing_streak"] = 0; + self.dig_vars["has_shovel"] = 1; + self.dig_vars["has_upgraded_shovel"] = 0; + self.dig_vars["has_helmet"] = 0; + self.dig_vars["n_spots_dug"] = 0; + self.dig_vars["n_losing_streak"] = 0; n_player = self getentitynumber() + 1; level setclientfield( "shovel_player" + n_player, 1 ); @@ -60,223 +60,223 @@ dig_disconnect_watch( n_player ) waittill_dug( s_dig_spot ) { - while ( true ) - { - self waittill( "trigger", player ); + while ( true ) + { + self waittill( "trigger", player ); - if ( isdefined( player.dig_vars["has_shovel"] ) && player.dig_vars["has_shovel"] ) - { - player playsound( "evt_dig" ); - s_dig_spot.dug = 1; - level.n_dig_spots_cur--; - playfx( level._effect["digging"], self.origin ); - player setclientfieldtoplayer( "player_rumble_and_shake", 1 ); - player maps\mp\zombies\_zm_stats::increment_client_stat( "tomb_dig", 0 ); - player maps\mp\zombies\_zm_stats::increment_player_stat( "tomb_dig" ); - s_staff_piece = s_dig_spot maps\mp\zm_tomb_main_quest::dig_spot_get_staff_piece( player ); + if ( isdefined( player.dig_vars["has_shovel"] ) && player.dig_vars["has_shovel"] ) + { + player playsound( "evt_dig" ); + s_dig_spot.dug = 1; + level.n_dig_spots_cur--; + playfx( level._effect["digging"], self.origin ); + player setclientfieldtoplayer( "player_rumble_and_shake", 1 ); + player maps\mp\zombies\_zm_stats::increment_client_stat( "tomb_dig", 0 ); + player maps\mp\zombies\_zm_stats::increment_player_stat( "tomb_dig" ); + s_staff_piece = s_dig_spot maps\mp\zm_tomb_main_quest::dig_spot_get_staff_piece( player ); - if ( isdefined( s_staff_piece ) ) - { - s_staff_piece maps\mp\zm_tomb_main_quest::show_ice_staff_piece( self.origin ); - player dig_reward_dialog( "dig_staff_part" ); - } - else - { - n_good_chance = 50; + if ( isdefined( s_staff_piece ) ) + { + s_staff_piece maps\mp\zm_tomb_main_quest::show_ice_staff_piece( self.origin ); + player dig_reward_dialog( "dig_staff_part" ); + } + else + { + n_good_chance = 50; - if ( player.dig_vars["n_spots_dug"] == 0 || player.dig_vars["n_losing_streak"] == 3 ) - { - player.dig_vars["n_losing_streak"] = 0; - n_good_chance = 100; - } + if ( player.dig_vars["n_spots_dug"] == 0 || player.dig_vars["n_losing_streak"] == 3 ) + { + player.dig_vars["n_losing_streak"] = 0; + n_good_chance = 100; + } - if ( player.dig_vars["has_upgraded_shovel"] ) - { - if ( !player.dig_vars["has_helmet"] ) - { - player.dig_vars["n_spots_dug"]++; + if ( player.dig_vars["has_upgraded_shovel"] ) + { + if ( !player.dig_vars["has_helmet"] ) + { + player.dig_vars["n_spots_dug"]++; - if ( player.dig_vars["n_spots_dug"] >= 40 ) - { - player.dig_vars["has_helmet"] = 1; - n_player = player getentitynumber() + 1; - level setclientfield( "helmet_player" + n_player, 1 ); - player playsoundtoplayer( "zmb_squest_golden_anything", player ); - player maps\mp\zombies\_zm_stats::increment_client_stat( "tomb_golden_hard_hat", 0 ); - player maps\mp\zombies\_zm_stats::increment_player_stat( "tomb_golden_hard_hat" ); - return; - } - } + if ( player.dig_vars["n_spots_dug"] >= 40 ) + { + player.dig_vars["has_helmet"] = 1; + n_player = player getentitynumber() + 1; + level setclientfield( "helmet_player" + n_player, 1 ); + player playsoundtoplayer( "zmb_squest_golden_anything", player ); + player maps\mp\zombies\_zm_stats::increment_client_stat( "tomb_golden_hard_hat", 0 ); + player maps\mp\zombies\_zm_stats::increment_player_stat( "tomb_golden_hard_hat" ); + return; + } + } - n_good_chance = 70; - } + n_good_chance = 70; + } - n_prize_roll = randomint( 100 ); + n_prize_roll = randomint( 100 ); - if ( n_prize_roll > n_good_chance ) - { - if ( cointoss() ) - { - player dig_reward_dialog( "dig_grenade" ); - self thread dig_up_grenade( player ); - } - else - { - player dig_reward_dialog( "dig_zombie" ); - self thread dig_up_zombie( player, s_dig_spot ); - } + if ( n_prize_roll > n_good_chance ) + { + if ( cointoss() ) + { + player dig_reward_dialog( "dig_grenade" ); + self thread dig_up_grenade( player ); + } + else + { + player dig_reward_dialog( "dig_zombie" ); + self thread dig_up_zombie( player, s_dig_spot ); + } - player.dig_vars["n_losing_streak"]++; - } - else if ( cointoss() ) - self thread dig_up_powerup( player ); - else - { - player dig_reward_dialog( "dig_gun" ); - self thread dig_up_weapon( player ); - } - } + player.dig_vars["n_losing_streak"]++; + } + else if ( cointoss() ) + self thread dig_up_powerup( player ); + else + { + player dig_reward_dialog( "dig_gun" ); + self thread dig_up_weapon( player ); + } + } - if ( !player.dig_vars["has_upgraded_shovel"] ) - { - player.dig_vars["n_spots_dug"]++; + if ( !player.dig_vars["has_upgraded_shovel"] ) + { + player.dig_vars["n_spots_dug"]++; - if ( player.dig_vars["n_spots_dug"] >= 20 ) - { - player.dig_vars["has_upgraded_shovel"] = 1; - player thread ee_zombie_blood_dig(); - n_player = player getentitynumber() + 1; - level setclientfield( "shovel_player" + n_player, 2 ); - player playsoundtoplayer( "zmb_squest_golden_anything", player ); - player maps\mp\zombies\_zm_stats::increment_client_stat( "tomb_golden_shovel", 0 ); - player maps\mp\zombies\_zm_stats::increment_player_stat( "tomb_golden_shovel" ); - } - } + if ( player.dig_vars["n_spots_dug"] >= 20 ) + { + player.dig_vars["has_upgraded_shovel"] = 1; + player thread ee_zombie_blood_dig(); + n_player = player getentitynumber() + 1; + level setclientfield( "shovel_player" + n_player, 2 ); + player playsoundtoplayer( "zmb_squest_golden_anything", player ); + player maps\mp\zombies\_zm_stats::increment_client_stat( "tomb_golden_shovel", 0 ); + player maps\mp\zombies\_zm_stats::increment_player_stat( "tomb_golden_shovel" ); + } + } - return; - } - } + return; + } + } } increment_player_perk_purchase_limit() { - perk = maps\mp\zombies\_zm_perk_random::get_weighted_random_perk(self); + perk = maps\mp\zombies\_zm_perk_random::get_weighted_random_perk(self); - if (self hasPerk(perk)) - { - return; - } + if (self hasPerk(perk)) + { + return; + } - self maps\mp\zombies\_zm_perks::give_perk(perk); + self maps\mp\zombies\_zm_perks::give_perk(perk); } dig_up_weapon( digger ) { - a_common_weapons = array( "ballista_zm", "c96_zm", "870mcs_zm" ); - a_rare_weapons = array( "dsr50_zm", "srm1216_zm" ); + a_common_weapons = array( "ballista_zm", "c96_zm", "870mcs_zm" ); + a_rare_weapons = array( "dsr50_zm", "srm1216_zm" ); - if ( digger.dig_vars["has_upgraded_shovel"] ) - a_rare_weapons = combinearrays( a_rare_weapons, array( "claymore_zm", "ak74u_zm", "ksg_zm", "mp40_zm", "mp44_zm" ) ); + if ( digger.dig_vars["has_upgraded_shovel"] ) + a_rare_weapons = combinearrays( a_rare_weapons, array( "claymore_zm", "ak74u_zm", "ksg_zm", "mp40_zm", "mp44_zm" ) ); - str_weapon = undefined; + str_weapon = undefined; - if ( randomint( 100 ) < 90 ) - str_weapon = a_common_weapons[getarraykeys( a_common_weapons )[randomint( getarraykeys( a_common_weapons ).size )]]; - else - str_weapon = a_rare_weapons[getarraykeys( a_rare_weapons )[randomint( getarraykeys( a_rare_weapons ).size )]]; + if ( randomint( 100 ) < 90 ) + str_weapon = a_common_weapons[getarraykeys( a_common_weapons )[randomint( getarraykeys( a_common_weapons ).size )]]; + else + str_weapon = a_rare_weapons[getarraykeys( a_rare_weapons )[randomint( getarraykeys( a_rare_weapons ).size )]]; - v_spawnpt = self.origin + ( 0, 0, 40 ); - v_spawnang = ( 0, 0, 0 ); - str_spec_model = undefined; + v_spawnpt = self.origin + ( 0, 0, 40 ); + v_spawnang = ( 0, 0, 0 ); + str_spec_model = undefined; - if ( str_weapon == "claymore_zm" ) - { - str_spec_model = "t6_wpn_claymore_world"; - v_spawnang += vectorscale( ( 0, 1, 0 ), 90.0 ); - } + if ( str_weapon == "claymore_zm" ) + { + str_spec_model = "t6_wpn_claymore_world"; + v_spawnang += vectorscale( ( 0, 1, 0 ), 90.0 ); + } - v_angles = digger getplayerangles(); - v_angles = ( 0, v_angles[1], 0 ) + vectorscale( ( 0, 1, 0 ), 90.0 ) + v_spawnang; - m_weapon = spawn_weapon_model( str_weapon, str_spec_model, v_spawnpt, v_angles ); + v_angles = digger getplayerangles(); + v_angles = ( 0, v_angles[1], 0 ) + vectorscale( ( 0, 1, 0 ), 90.0 ) + v_spawnang; + m_weapon = spawn_weapon_model( str_weapon, str_spec_model, v_spawnpt, v_angles ); - if ( str_weapon == "claymore_zm" ) - { - m_weapon setmodel( "t6_wpn_claymore_world" ); - v_spawnang += vectorscale( ( 0, 0, 1 ), 90.0 ); - } + if ( str_weapon == "claymore_zm" ) + { + m_weapon setmodel( "t6_wpn_claymore_world" ); + v_spawnang += vectorscale( ( 0, 0, 1 ), 90.0 ); + } - m_weapon.angles = v_angles; - m_weapon playloopsound( "evt_weapon_digup" ); - m_weapon thread timer_til_despawn( v_spawnpt, 40 * -1 ); - m_weapon endon( "dig_up_weapon_timed_out" ); - playfxontag( level._effect["special_glow"], m_weapon, "tag_origin" ); - m_weapon.trigger = tomb_spawn_trigger_radius( v_spawnpt, 100, 1 ); - m_weapon.trigger.hint_string = &"ZM_TOMB_X2PU"; - m_weapon.trigger.hint_parm1 = getweapondisplayname( str_weapon ); + m_weapon.angles = v_angles; + m_weapon playloopsound( "evt_weapon_digup" ); + m_weapon thread timer_til_despawn( v_spawnpt, 40 * -1 ); + m_weapon endon( "dig_up_weapon_timed_out" ); + playfxontag( level._effect["special_glow"], m_weapon, "tag_origin" ); + m_weapon.trigger = tomb_spawn_trigger_radius( v_spawnpt, 100, 1 ); + m_weapon.trigger.hint_string = &"ZM_TOMB_X2PU"; + m_weapon.trigger.hint_parm1 = getweapondisplayname( str_weapon ); - while (1) - { - m_weapon.trigger waittill( "trigger", player ); + while (1) + { + m_weapon.trigger waittill( "trigger", player ); - current_weapon = player getCurrentWeapon(); + current_weapon = player getCurrentWeapon(); - if ( is_player_valid( player ) && !player.is_drinking && !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() ) - { - break; - } - } + if ( is_player_valid( player ) && !player.is_drinking && !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() ) + { + break; + } + } - m_weapon.trigger notify( "weapon_grabbed" ); - m_weapon.trigger thread swap_weapon( str_weapon, player ); + m_weapon.trigger notify( "weapon_grabbed" ); + m_weapon.trigger thread swap_weapon( str_weapon, player ); - if ( isdefined( m_weapon.trigger ) ) - { - m_weapon.trigger tomb_unitrigger_delete(); - m_weapon.trigger = undefined; - } + if ( isdefined( m_weapon.trigger ) ) + { + m_weapon.trigger tomb_unitrigger_delete(); + m_weapon.trigger = undefined; + } - if ( isdefined( m_weapon ) ) - m_weapon delete(); + if ( isdefined( m_weapon ) ) + m_weapon delete(); - if ( player != digger ) - digger notify( "dig_up_weapon_shared" ); + if ( player != digger ) + digger notify( "dig_up_weapon_shared" ); } swap_weapon( str_weapon, e_player ) { - str_current_weapon = e_player getcurrentweapon(); + str_current_weapon = e_player getcurrentweapon(); - if ( str_weapon == "claymore_zm" ) - { - if ( !e_player hasweapon( str_weapon ) ) - { - e_player thread maps\mp\zombies\_zm_weap_claymore::show_claymore_hint( "claymore_purchased" ); - e_player thread maps\mp\zombies\_zm_weap_claymore::claymore_setup(); - e_player thread maps\mp\zombies\_zm_audio::create_and_play_dialog( "weapon_pickup", "grenade" ); - } - else - e_player givemaxammo( str_weapon ); + if ( str_weapon == "claymore_zm" ) + { + if ( !e_player hasweapon( str_weapon ) ) + { + e_player thread maps\mp\zombies\_zm_weap_claymore::show_claymore_hint( "claymore_purchased" ); + e_player thread maps\mp\zombies\_zm_weap_claymore::claymore_setup(); + e_player thread maps\mp\zombies\_zm_audio::create_and_play_dialog( "weapon_pickup", "grenade" ); + } + else + e_player givemaxammo( str_weapon ); - return; - } + return; + } - if ( is_player_valid( e_player ) && !e_player.is_drinking && !is_placeable_mine( str_current_weapon ) && !is_equipment( str_current_weapon ) && level.revive_tool != str_current_weapon && "none" != str_current_weapon && !e_player hacker_active() ) - { - if ( !e_player hasweapon( str_weapon ) ) - e_player take_old_weapon_and_give_new( str_current_weapon, str_weapon ); - else - e_player givemaxammo( str_weapon ); - } + if ( is_player_valid( e_player ) && !e_player.is_drinking && !is_placeable_mine( str_current_weapon ) && !is_equipment( str_current_weapon ) && level.revive_tool != str_current_weapon && "none" != str_current_weapon && !e_player hacker_active() ) + { + if ( !e_player hasweapon( str_weapon ) ) + e_player take_old_weapon_and_give_new( str_current_weapon, str_weapon ); + else + e_player givemaxammo( str_weapon ); + } } take_old_weapon_and_give_new( current_weapon, weapon ) { - a_weapons = self getweaponslistprimaries(); + a_weapons = self getweaponslistprimaries(); - if ( isdefined( a_weapons ) && a_weapons.size >= get_player_weapon_limit( self ) ) - self takeweapon( current_weapon ); + if ( isdefined( a_weapons ) && a_weapons.size >= get_player_weapon_limit( self ) ) + self takeweapon( current_weapon ); - self giveweapon( weapon ); - self givestartammo( weapon ); - self switchtoweapon( weapon ); + self giveweapon( weapon ); + self givestartammo( weapon ); + self switchtoweapon( weapon ); } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_tomb_distance_tracking.gsc b/scripts/zm/replaced/zm_tomb_distance_tracking.gsc index aebf9acd..ba07fe3c 100644 --- a/scripts/zm/replaced/zm_tomb_distance_tracking.gsc +++ b/scripts/zm/replaced/zm_tomb_distance_tracking.gsc @@ -9,85 +9,85 @@ delete_zombie_noone_looking( how_close, how_high ) { - self endon( "death" ); + self endon( "death" ); - if ( !isdefined( how_close ) ) - how_close = 1500; + if ( !isdefined( how_close ) ) + how_close = 1500; - if ( !isdefined( how_high ) ) - how_high = 600; + if ( !isdefined( how_high ) ) + how_high = 600; - distance_squared_check = how_close * how_close; - too_far_dist = distance_squared_check * 3; + distance_squared_check = how_close * how_close; + too_far_dist = distance_squared_check * 3; - if ( isdefined( level.zombie_tracking_too_far_dist ) ) - too_far_dist = level.zombie_tracking_too_far_dist * 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; - self.inview = 0; - self.player_close = 0; - n_distance_squared = 0; - n_height_difference = 0; - players = get_players(); + self.inview = 0; + self.player_close = 0; + n_distance_squared = 0; + n_height_difference = 0; + players = get_players(); - for ( i = 0; i < players.size; i++ ) - { - if ( players[i].sessionstate == "spectator" ) - continue; + for ( i = 0; i < players.size; i++ ) + { + if ( players[i].sessionstate == "spectator" ) + continue; - if ( isdefined( level.only_track_targeted_players ) ) - { - if ( !isdefined( self.favoriteenemy ) || self.favoriteenemy != players[i] ) - continue; - } + if ( isdefined( level.only_track_targeted_players ) ) + { + if ( !isdefined( self.favoriteenemy ) || self.favoriteenemy != players[i] ) + 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 ) - self.inview++; + if ( can_be_seen && distancesquared( self.origin, players[i].origin ) < too_far_dist ) + self.inview++; - n_modifier = 1.0; + n_modifier = 1.0; - if ( isdefined( players[i].b_in_tunnels ) && players[i].b_in_tunnels ) - n_modifier = 2.25; + if ( isdefined( players[i].b_in_tunnels ) && players[i].b_in_tunnels ) + n_modifier = 2.25; - n_distance_squared = distancesquared( self.origin, players[i].origin ); - n_height_difference = abs( self.origin[2] - players[i].origin[2] ); + n_distance_squared = distancesquared( self.origin, players[i].origin ); + n_height_difference = abs( self.origin[2] - players[i].origin[2] ); - if ( n_distance_squared < distance_squared_check * n_modifier && n_height_difference < how_high ) - self.player_close++; - } + if ( n_distance_squared < distance_squared_check * n_modifier && n_height_difference < how_high ) + self.player_close++; + } - if ( self.inview == 0 && self.player_close == 0 ) - { - if ( !isdefined( self.animname ) || self.animname != "zombie" && self.animname != "mechz_zombie" ) - return; + if ( self.inview == 0 && self.player_close == 0 ) + { + if ( !isdefined( self.animname ) || self.animname != "zombie" && self.animname != "mechz_zombie" ) + return; - if ( isdefined( self.electrified ) && self.electrified == 1 ) - return; + if ( isdefined( self.electrified ) && self.electrified == 1 ) + return; - if ( isdefined( self.in_the_ground ) && self.in_the_ground == 1 ) - return; + if ( isdefined( self.in_the_ground ) && self.in_the_ground == 1 ) + return; - if ( !( isdefined( self.exclude_distance_cleanup_adding_to_total ) && self.exclude_distance_cleanup_adding_to_total ) && !( isdefined( self.isscreecher ) && self.isscreecher ) ) - { - level.zombie_total++; + if ( !( isdefined( self.exclude_distance_cleanup_adding_to_total ) && self.exclude_distance_cleanup_adding_to_total ) && !( isdefined( self.isscreecher ) && self.isscreecher ) ) + { + level.zombie_total++; - if ( self.health < level.zombie_health ) - level.zombie_respawned_health[level.zombie_respawned_health.size] = self.health; - } + if ( self.health < level.zombie_health ) + level.zombie_respawned_health[level.zombie_respawned_health.size] = self.health; + } - self maps\mp\zombies\_zm_spawner::reset_attack_spot(); - self notify( "zombie_delete" ); + self maps\mp\zombies\_zm_spawner::reset_attack_spot(); + self notify( "zombie_delete" ); - if ( isdefined( self.is_mechz ) && self.is_mechz ) - { - self notify( "mechz_cleanup" ); - level.mechz_left_to_spawn++; - wait_network_frame(); - level notify( "spawn_mechz" ); - } + if ( isdefined( self.is_mechz ) && self.is_mechz ) + { + self notify( "mechz_cleanup" ); + level.mechz_left_to_spawn++; + wait_network_frame(); + level notify( "spawn_mechz" ); + } - self delete(); - recalc_zombie_array(); - } + self delete(); + recalc_zombie_array(); + } } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_tomb_ee_main.gsc b/scripts/zm/replaced/zm_tomb_ee_main.gsc index b5f6bea4..ffbedef2 100644 --- a/scripts/zm/replaced/zm_tomb_ee_main.gsc +++ b/scripts/zm/replaced/zm_tomb_ee_main.gsc @@ -26,16 +26,16 @@ all_staffs_inserted_in_puzzle_room() { - n_staffs_inserted = 0; + n_staffs_inserted = 0; - foreach ( staff in level.a_elemental_staffs ) - { - if ( staff.upgrade.charger.is_inserted && staff.upgrade.charger.full ) - n_staffs_inserted++; - } + foreach ( staff in level.a_elemental_staffs ) + { + if ( staff.upgrade.charger.is_inserted && staff.upgrade.charger.full ) + n_staffs_inserted++; + } - if ( n_staffs_inserted == 4 ) - return true; - else - return false; + if ( n_staffs_inserted == 4 ) + return true; + else + return false; } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_tomb_ee_main_step_2.gsc b/scripts/zm/replaced/zm_tomb_ee_main_step_2.gsc index 3071f3a1..5b9c5505 100644 --- a/scripts/zm/replaced/zm_tomb_ee_main_step_2.gsc +++ b/scripts/zm/replaced/zm_tomb_ee_main_step_2.gsc @@ -10,123 +10,123 @@ create_robot_head_trigger( unitrigger_stub ) { - playfx( level._effect["teleport_1p"], unitrigger_stub.origin ); - playsoundatposition( "zmb_footprintbox_disappear", unitrigger_stub.origin ); - wait 3; - unitrigger_stub.radius = 50; - unitrigger_stub.height = 256; - unitrigger_stub.script_unitrigger_type = "unitrigger_radius_use"; - unitrigger_stub.cursor_hint = "HINT_NOICON"; - unitrigger_stub.require_look_at = 1; - m_coll = spawn( "script_model", unitrigger_stub.origin ); - m_coll setmodel( "drone_collision" ); - unitrigger_stub.m_coll = m_coll; - wait_network_frame(); - m_plinth = spawn( "script_model", unitrigger_stub.origin ); - m_plinth.angles = unitrigger_stub.angles; - m_plinth setmodel( "p6_zm_tm_staff_holder" ); - unitrigger_stub.m_plinth = m_plinth; - wait_network_frame(); - m_sign = spawn( "script_model", unitrigger_stub.origin ); - m_sign setmodel( "p6_zm_tm_runes" ); - m_sign linkto( unitrigger_stub.m_plinth, "tag_origin", ( 0, 15, 40 ) ); - m_sign hidepart( "j_fire" ); - m_sign hidepart( "j_ice" ); - m_sign hidepart( "j_lightning" ); - m_sign hidepart( "j_wind" ); + playfx( level._effect["teleport_1p"], unitrigger_stub.origin ); + playsoundatposition( "zmb_footprintbox_disappear", unitrigger_stub.origin ); + wait 3; + unitrigger_stub.radius = 50; + unitrigger_stub.height = 256; + unitrigger_stub.script_unitrigger_type = "unitrigger_radius_use"; + unitrigger_stub.cursor_hint = "HINT_NOICON"; + unitrigger_stub.require_look_at = 1; + m_coll = spawn( "script_model", unitrigger_stub.origin ); + m_coll setmodel( "drone_collision" ); + unitrigger_stub.m_coll = m_coll; + wait_network_frame(); + m_plinth = spawn( "script_model", unitrigger_stub.origin ); + m_plinth.angles = unitrigger_stub.angles; + m_plinth setmodel( "p6_zm_tm_staff_holder" ); + unitrigger_stub.m_plinth = m_plinth; + wait_network_frame(); + m_sign = spawn( "script_model", unitrigger_stub.origin ); + m_sign setmodel( "p6_zm_tm_runes" ); + m_sign linkto( unitrigger_stub.m_plinth, "tag_origin", ( 0, 15, 40 ) ); + m_sign hidepart( "j_fire" ); + m_sign hidepart( "j_ice" ); + m_sign hidepart( "j_lightning" ); + m_sign hidepart( "j_wind" ); - switch ( unitrigger_stub.script_noteworthy ) - { - case "fire": - m_sign showpart( "j_fire" ); - break; - case "water": - m_sign showpart( "j_ice" ); - break; - case "lightning": - m_sign showpart( "j_lightning" ); - break; - case "air": - m_sign showpart( "j_wind" ); - break; - } + switch ( unitrigger_stub.script_noteworthy ) + { + case "fire": + m_sign showpart( "j_fire" ); + break; + case "water": + m_sign showpart( "j_ice" ); + break; + case "lightning": + m_sign showpart( "j_lightning" ); + break; + case "air": + m_sign showpart( "j_wind" ); + break; + } - m_sign maps\mp\zombies\_zm_powerup_zombie_blood::make_zombie_blood_entity(); - unitrigger_stub.m_sign = m_sign; - unitrigger_stub.origin += vectorscale( ( 0, 0, 1 ), 30.0 ); - maps\mp\zombies\_zm_unitrigger::register_static_unitrigger( unitrigger_stub, ::robot_head_trigger_think ); + m_sign maps\mp\zombies\_zm_powerup_zombie_blood::make_zombie_blood_entity(); + unitrigger_stub.m_sign = m_sign; + unitrigger_stub.origin += vectorscale( ( 0, 0, 1 ), 30.0 ); + maps\mp\zombies\_zm_unitrigger::register_static_unitrigger( unitrigger_stub, ::robot_head_trigger_think ); } robot_head_trigger_think() { - self endon( "kill_trigger" ); + self endon( "kill_trigger" ); - str_weap_staffs = array("staff_air_upgraded_zm", "staff_lightning_upgraded_zm", "staff_fire_upgraded_zm", "staff_water_upgraded_zm"); + str_weap_staffs = array("staff_air_upgraded_zm", "staff_lightning_upgraded_zm", "staff_fire_upgraded_zm", "staff_water_upgraded_zm"); - while ( true ) - { - self waittill( "trigger", player ); + while ( true ) + { + self waittill( "trigger", player ); - if (is_true(self.stub.staff_placed)) - { - continue; - } + if (is_true(self.stub.staff_placed)) + { + continue; + } - for (i = 0; i < str_weap_staffs.size; i++) - { - if ( player hasweapon( str_weap_staffs[i] ) ) - { - self.stub.staff_placed = 1; + for (i = 0; i < str_weap_staffs.size; i++) + { + if ( player hasweapon( str_weap_staffs[i] ) ) + { + self.stub.staff_placed = 1; - e_upgraded_staff = maps\mp\zm_tomb_craftables::get_staff_info_from_weapon_name( str_weap_staffs[i] ); + e_upgraded_staff = maps\mp\zm_tomb_craftables::get_staff_info_from_weapon_name( str_weap_staffs[i] ); - for (j = 0; j < level.a_elemental_staffs_upgraded.size; j++) - { - if (level.a_elemental_staffs_upgraded[j].weapname == str_weap_staffs[i]) - { - level.a_elemental_staffs_upgraded[j].ee_in_use = 1; + for (j = 0; j < level.a_elemental_staffs_upgraded.size; j++) + { + if (level.a_elemental_staffs_upgraded[j].weapname == str_weap_staffs[i]) + { + level.a_elemental_staffs_upgraded[j].ee_in_use = 1; - } - } + } + } - player takeweapon( str_weap_staffs[i] ); - maps\mp\zm_tomb_craftables::clear_player_staff( str_weap_staffs[i] ); - level.n_ee_robot_staffs_planted++; + player takeweapon( str_weap_staffs[i] ); + maps\mp\zm_tomb_craftables::clear_player_staff( str_weap_staffs[i] ); + level.n_ee_robot_staffs_planted++; - if ( level.n_ee_robot_staffs_planted == 4 ) - { - flag_set( "ee_all_staffs_placed" ); - } + if ( level.n_ee_robot_staffs_planted == 4 ) + { + flag_set( "ee_all_staffs_placed" ); + } - e_upgraded_staff thread place_staff( self.stub.m_plinth ); - } - } - } + e_upgraded_staff thread place_staff( self.stub.m_plinth ); + } + } + } } remove_plinth() { - playfx( level._effect["teleport_1p"], self.m_plinth.origin ); - playsoundatposition( "zmb_footprintbox_disappear", self.m_plinth.origin ); - wait 3; + playfx( level._effect["teleport_1p"], self.m_plinth.origin ); + playsoundatposition( "zmb_footprintbox_disappear", self.m_plinth.origin ); + wait 3; - if ( isdefined( self.m_plinth.m_staff ) ) - { - self.m_plinth.m_staff unlink(); - self.m_plinth.m_staff.origin = self.m_plinth.v_old_origin; - self.m_plinth.m_staff.angles = self.m_plinth.v_old_angles; + if ( isdefined( self.m_plinth.m_staff ) ) + { + self.m_plinth.m_staff unlink(); + self.m_plinth.m_staff.origin = self.m_plinth.v_old_origin; + self.m_plinth.m_staff.angles = self.m_plinth.v_old_angles; - for (i = 0; i < level.a_elemental_staffs_upgraded.size; i++) - { - if (level.a_elemental_staffs_upgraded[i].weapname == self.m_plinth.e_staff.upgrade.weapname) - { - level.a_elemental_staffs_upgraded[i].ee_in_use = undefined; - } - } - } + for (i = 0; i < level.a_elemental_staffs_upgraded.size; i++) + { + if (level.a_elemental_staffs_upgraded[i].weapname == self.m_plinth.e_staff.upgrade.weapname) + { + level.a_elemental_staffs_upgraded[i].ee_in_use = undefined; + } + } + } - self.m_sign delete(); - self.m_plinth delete(); - self.m_coll delete(); - unregister_unitrigger( self ); + self.m_sign delete(); + self.m_plinth delete(); + self.m_coll delete(); + unregister_unitrigger( self ); } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_tomb_ee_main_step_3.gsc b/scripts/zm/replaced/zm_tomb_ee_main_step_3.gsc index e3756c59..0da99e0d 100644 --- a/scripts/zm/replaced/zm_tomb_ee_main_step_3.gsc +++ b/scripts/zm/replaced/zm_tomb_ee_main_step_3.gsc @@ -8,46 +8,46 @@ ready_to_activate( unitrigger_stub ) { - self endon( "death" ); - self playsoundwithnotify( "vox_maxi_robot_sync_0", "sync_done" ); + self endon( "death" ); + self playsoundwithnotify( "vox_maxi_robot_sync_0", "sync_done" ); - self waittill( "sync_done" ); + self waittill( "sync_done" ); - wait 0.5; - self playsoundwithnotify( "vox_maxi_robot_await_0", "ready_to_use" ); + wait 0.5; + self playsoundwithnotify( "vox_maxi_robot_await_0", "ready_to_use" ); - self waittill( "ready_to_use" ); + self waittill( "ready_to_use" ); - maps\mp\zombies\_zm_unitrigger::register_static_unitrigger( unitrigger_stub, ::activate_fire_link ); + maps\mp\zombies\_zm_unitrigger::register_static_unitrigger( unitrigger_stub, ::activate_fire_link ); } activate_fire_link() { - self endon( "kill_trigger" ); + self endon( "kill_trigger" ); - while ( true ) - { - self waittill( "trigger", player ); + while ( true ) + { + self waittill( "trigger", player ); - self playsound( "zmb_squest_robot_button" ); + self playsound( "zmb_squest_robot_button" ); - level thread fire_link_cooldown( self ); - self playsound( "zmb_squest_robot_button_activate" ); - self playloopsound( "zmb_squest_robot_button_timer", 0.5 ); - flag_waitopen( "fire_link_enabled" ); - self stoploopsound( 0.5 ); - self playsound( "zmb_squest_robot_button_deactivate" ); - } + level thread fire_link_cooldown( self ); + self playsound( "zmb_squest_robot_button_activate" ); + self playloopsound( "zmb_squest_robot_button_timer", 0.5 ); + flag_waitopen( "fire_link_enabled" ); + self stoploopsound( 0.5 ); + self playsound( "zmb_squest_robot_button_deactivate" ); + } } fire_link_cooldown( t_button ) { - level notify( "fire_link_cooldown" ); - level endon( "fire_link_cooldown" ); - flag_set( "fire_link_enabled" ); + level notify( "fire_link_cooldown" ); + level endon( "fire_link_cooldown" ); + flag_set( "fire_link_enabled" ); - if ( isdefined( t_button ) ) - { - t_button playsound( "vox_maxi_robot_activated_0" ); - } + if ( isdefined( t_button ) ) + { + t_button playsound( "vox_maxi_robot_activated_0" ); + } } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_tomb_ee_main_step_8.gsc b/scripts/zm/replaced/zm_tomb_ee_main_step_8.gsc index 98a75300..c1ed1387 100644 --- a/scripts/zm/replaced/zm_tomb_ee_main_step_8.gsc +++ b/scripts/zm/replaced/zm_tomb_ee_main_step_8.gsc @@ -12,66 +12,66 @@ init() { - declare_sidequest_stage( "little_girl_lost", "step_8", ::init_stage, ::stage_logic, ::exit_stage ); + declare_sidequest_stage( "little_girl_lost", "step_8", ::init_stage, ::stage_logic, ::exit_stage ); } stage_logic() { - level notify( "tomb_sidequest_complete" ); + level notify( "tomb_sidequest_complete" ); - s_pos = getstruct( "player_portal_final", "targetname" ); + s_pos = getstruct( "player_portal_final", "targetname" ); - foreach ( player in get_players() ) - { - if ( player is_player_in_chamber() ) - player thread fadetoblackforxsec( 0, 0.3, 0.5, 0.5, "white" ); - } + foreach ( player in get_players() ) + { + if ( player is_player_in_chamber() ) + player thread fadetoblackforxsec( 0, 0.3, 0.5, 0.5, "white" ); + } - a_zombies = getaispeciesarray( level.zombie_team, "all" ); - foreach ( zombie in a_zombies ) - { - if ( is_point_in_chamber( zombie.origin ) && !is_true( zombie.is_mechz ) && is_true( zombie.has_legs ) && is_true( zombie.completed_emerging_into_playable_area ) ) - { - zombie.v_punched_from = s_pos.origin; - zombie animcustom( maps\mp\zombies\_zm_weap_one_inch_punch::knockdown_zombie_animate ); - } - } + a_zombies = getaispeciesarray( level.zombie_team, "all" ); + foreach ( zombie in a_zombies ) + { + if ( is_point_in_chamber( zombie.origin ) && !is_true( zombie.is_mechz ) && is_true( zombie.has_legs ) && is_true( zombie.completed_emerging_into_playable_area ) ) + { + zombie.v_punched_from = s_pos.origin; + zombie animcustom( maps\mp\zombies\_zm_weap_one_inch_punch::knockdown_zombie_animate ); + } + } - wait 0.5; - level setclientfield( "ee_sam_portal", 2 ); - level notify( "stop_random_chamber_walls" ); - a_walls = getentarray( "chamber_wall", "script_noteworthy" ); + wait 0.5; + level setclientfield( "ee_sam_portal", 2 ); + level notify( "stop_random_chamber_walls" ); + a_walls = getentarray( "chamber_wall", "script_noteworthy" ); - foreach ( e_wall in a_walls ) - { - e_wall thread maps\mp\zm_tomb_chamber::move_wall_up(); - e_wall hide(); - } + foreach ( e_wall in a_walls ) + { + e_wall thread maps\mp\zm_tomb_chamber::move_wall_up(); + e_wall hide(); + } - players = get_players(); - foreach ( player in players ) - { - if ( is_player_valid( player ) ) - { - player thread scripts\zm\replaced\_zm_sq::sq_give_player_all_perks(); - } - } + players = get_players(); + foreach ( player in players ) + { + if ( is_player_valid( player ) ) + { + player thread scripts\zm\replaced\_zm_sq::sq_give_player_all_perks(); + } + } - flag_wait( "ee_quadrotor_disabled" ); - wait 1; - level thread ee_samantha_say( "vox_sam_all_staff_freedom_0" ); + flag_wait( "ee_quadrotor_disabled" ); + wait 1; + level thread ee_samantha_say( "vox_sam_all_staff_freedom_0" ); - t_portal = tomb_spawn_trigger_radius( s_pos.origin, 100, 1 ); - t_portal.hint_string = &"ZM_TOMB_TELE"; - t_portal thread waittill_player_activates(); - level.ee_ending_beam_fx = spawn( "script_model", s_pos.origin + vectorscale( ( 0, 0, -1 ), 300.0 ) ); - level.ee_ending_beam_fx.angles = vectorscale( ( 0, 1, 0 ), 90.0 ); - level.ee_ending_beam_fx setmodel( "tag_origin" ); - playfxontag( level._effect["ee_beam"], level.ee_ending_beam_fx, "tag_origin" ); - level.ee_ending_beam_fx playsound( "zmb_squest_crystal_sky_pillar_start" ); - level.ee_ending_beam_fx playloopsound( "zmb_squest_crystal_sky_pillar_loop", 3 ); - flag_wait( "ee_samantha_released" ); - t_portal tomb_unitrigger_delete(); - wait_network_frame(); - stage_completed( "little_girl_lost", level._cur_stage_name ); + t_portal = tomb_spawn_trigger_radius( s_pos.origin, 100, 1 ); + t_portal.hint_string = &"ZM_TOMB_TELE"; + t_portal thread waittill_player_activates(); + level.ee_ending_beam_fx = spawn( "script_model", s_pos.origin + vectorscale( ( 0, 0, -1 ), 300.0 ) ); + level.ee_ending_beam_fx.angles = vectorscale( ( 0, 1, 0 ), 90.0 ); + level.ee_ending_beam_fx setmodel( "tag_origin" ); + playfxontag( level._effect["ee_beam"], level.ee_ending_beam_fx, "tag_origin" ); + level.ee_ending_beam_fx playsound( "zmb_squest_crystal_sky_pillar_start" ); + level.ee_ending_beam_fx playloopsound( "zmb_squest_crystal_sky_pillar_loop", 3 ); + flag_wait( "ee_samantha_released" ); + t_portal tomb_unitrigger_delete(); + wait_network_frame(); + stage_completed( "little_girl_lost", level._cur_stage_name ); } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_tomb_ee_side.gsc b/scripts/zm/replaced/zm_tomb_ee_side.gsc index 52a75d67..82bdebd8 100644 --- a/scripts/zm/replaced/zm_tomb_ee_side.gsc +++ b/scripts/zm/replaced/zm_tomb_ee_side.gsc @@ -17,27 +17,27 @@ swap_mg( e_player ) { - str_current_weapon = e_player getcurrentweapon(); - str_reward_weapon = maps\mp\zombies\_zm_weapons::get_upgrade_weapon( "mg08_zm" ); + str_current_weapon = e_player getcurrentweapon(); + str_reward_weapon = maps\mp\zombies\_zm_weapons::get_upgrade_weapon( "mg08_zm" ); - if ( is_player_valid( e_player ) && !e_player.is_drinking && !is_melee_weapon( str_current_weapon ) && !is_placeable_mine( str_current_weapon ) && !is_equipment( str_current_weapon ) && level.revive_tool != str_current_weapon && "none" != str_current_weapon && !e_player hacker_active() ) - { - if ( e_player hasweapon( str_reward_weapon ) ) - e_player givemaxammo( str_reward_weapon ); - else - { - a_weapons = e_player getweaponslistprimaries(); + if ( is_player_valid( e_player ) && !e_player.is_drinking && !is_melee_weapon( str_current_weapon ) && !is_placeable_mine( str_current_weapon ) && !is_equipment( str_current_weapon ) && level.revive_tool != str_current_weapon && "none" != str_current_weapon && !e_player hacker_active() ) + { + if ( e_player hasweapon( str_reward_weapon ) ) + e_player givemaxammo( str_reward_weapon ); + else + { + a_weapons = e_player getweaponslistprimaries(); - if ( isdefined( a_weapons ) && a_weapons.size >= get_player_weapon_limit( e_player ) ) - e_player takeweapon( str_current_weapon ); + if ( isdefined( a_weapons ) && a_weapons.size >= get_player_weapon_limit( e_player ) ) + e_player takeweapon( str_current_weapon ); - e_player giveweapon( str_reward_weapon, 0, e_player maps\mp\zombies\_zm_weapons::get_pack_a_punch_weapon_options( str_reward_weapon ) ); - e_player givestartammo( str_reward_weapon ); - e_player switchtoweapon( str_reward_weapon ); - } + e_player giveweapon( str_reward_weapon, 0, e_player maps\mp\zombies\_zm_weapons::get_pack_a_punch_weapon_options( str_reward_weapon ) ); + e_player givestartammo( str_reward_weapon ); + e_player switchtoweapon( str_reward_weapon ); + } - return true; - } - else - return false; + return true; + } + else + return false; } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_tomb_giant_robot.gsc b/scripts/zm/replaced/zm_tomb_giant_robot.gsc index 185f9764..a519c100 100644 --- a/scripts/zm/replaced/zm_tomb_giant_robot.gsc +++ b/scripts/zm/replaced/zm_tomb_giant_robot.gsc @@ -24,64 +24,64 @@ robot_cycling() { - three_robot_round = 0; - last_robot = -1; - level thread giant_robot_intro_walk( 1 ); + three_robot_round = 0; + last_robot = -1; + level thread giant_robot_intro_walk( 1 ); - level waittill( "giant_robot_intro_complete" ); + level waittill( "giant_robot_intro_complete" ); - while ( true ) - { - if ( !( level.round_number % 4 ) && three_robot_round != level.round_number ) - flag_set( "three_robot_round" ); + while ( true ) + { + if ( !( level.round_number % 4 ) && three_robot_round != level.round_number ) + flag_set( "three_robot_round" ); - if ( flag( "ee_all_staffs_upgraded" ) && !flag( "ee_mech_zombie_hole_opened" ) ) - flag_set( "three_robot_round" ); + if ( flag( "ee_all_staffs_upgraded" ) && !flag( "ee_mech_zombie_hole_opened" ) ) + flag_set( "three_robot_round" ); - if ( flag( "three_robot_round" ) ) - { - level.zombie_ai_limit = 22; - random_number = randomint( 3 ); + if ( flag( "three_robot_round" ) ) + { + level.zombie_ai_limit = 22; + random_number = randomint( 3 ); - level thread giant_robot_start_walk( 2 ); + level thread giant_robot_start_walk( 2 ); - wait 5; + wait 5; - level thread giant_robot_start_walk( 0 ); + level thread giant_robot_start_walk( 0 ); - wait 5; + wait 5; - level thread giant_robot_start_walk( 1 ); + level thread giant_robot_start_walk( 1 ); - level waittill( "giant_robot_walk_cycle_complete" ); + level waittill( "giant_robot_walk_cycle_complete" ); - level waittill( "giant_robot_walk_cycle_complete" ); + level waittill( "giant_robot_walk_cycle_complete" ); - level waittill( "giant_robot_walk_cycle_complete" ); + level waittill( "giant_robot_walk_cycle_complete" ); - wait 5; - level.zombie_ai_limit = 24; - three_robot_round = level.round_number; - last_robot = -1; - flag_clear( "three_robot_round" ); - } - else - { - if ( !flag( "activate_zone_nml" ) ) - random_number = randomint( 2 ); - else - { - do - random_number = randomint( 3 ); - while ( random_number == last_robot ); - } + wait 5; + level.zombie_ai_limit = 24; + three_robot_round = level.round_number; + last_robot = -1; + flag_clear( "three_robot_round" ); + } + else + { + if ( !flag( "activate_zone_nml" ) ) + random_number = randomint( 2 ); + else + { + do + random_number = randomint( 3 ); + while ( random_number == last_robot ); + } - last_robot = random_number; - level thread giant_robot_start_walk( random_number ); + last_robot = random_number; + level thread giant_robot_start_walk( random_number ); - level waittill( "giant_robot_walk_cycle_complete" ); + level waittill( "giant_robot_walk_cycle_complete" ); - wait 5; - } - } + wait 5; + } + } } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_tomb_main_quest.gsc b/scripts/zm/replaced/zm_tomb_main_quest.gsc index e5bd0b96..f3825f59 100644 --- a/scripts/zm/replaced/zm_tomb_main_quest.gsc +++ b/scripts/zm/replaced/zm_tomb_main_quest.gsc @@ -26,645 +26,645 @@ main_quest_init() { - flag_init( "dug" ); - flag_init( "air_open" ); - flag_init( "fire_open" ); - flag_init( "lightning_open" ); - flag_init( "ice_open" ); - flag_init( "panels_solved" ); - flag_init( "fire_solved" ); - flag_init( "ice_solved" ); - flag_init( "chamber_puzzle_cheat" ); - flag_init( "activate_zone_crypt" ); - level.callbackvehicledamage = ::aircrystalbiplanecallback_vehicledamage; - level.game_mode_custom_onplayerdisconnect = ::player_disconnect_callback; - onplayerconnect_callback( ::onplayerconnect ); - staff_air = getent( "prop_staff_air", "targetname" ); - staff_fire = getent( "prop_staff_fire", "targetname" ); - staff_lightning = getent( "prop_staff_lightning", "targetname" ); - staff_water = getent( "prop_staff_water", "targetname" ); - staff_air.weapname = "staff_air_zm"; - staff_fire.weapname = "staff_fire_zm"; - staff_lightning.weapname = "staff_lightning_zm"; - staff_water.weapname = "staff_water_zm"; - staff_air.element = "air"; - staff_fire.element = "fire"; - staff_lightning.element = "lightning"; - staff_water.element = "water"; - staff_air.craftable_name = "elemental_staff_air"; - staff_fire.craftable_name = "elemental_staff_fire"; - staff_lightning.craftable_name = "elemental_staff_lightning"; - staff_water.craftable_name = "elemental_staff_water"; - staff_air.charger = getstruct( "staff_air_charger", "script_noteworthy" ); - staff_fire.charger = getstruct( "staff_fire_charger", "script_noteworthy" ); - staff_lightning.charger = getstruct( "zone_bolt_chamber", "script_noteworthy" ); - staff_water.charger = getstruct( "staff_ice_charger", "script_noteworthy" ); - staff_fire.quest_clientfield = "quest_state1"; - staff_air.quest_clientfield = "quest_state2"; - staff_lightning.quest_clientfield = "quest_state3"; - staff_water.quest_clientfield = "quest_state4"; - staff_fire.enum = 1; - staff_air.enum = 2; - staff_lightning.enum = 3; - staff_water.enum = 4; - level.a_elemental_staffs = []; - level.a_elemental_staffs[level.a_elemental_staffs.size] = staff_air; - level.a_elemental_staffs[level.a_elemental_staffs.size] = staff_fire; - level.a_elemental_staffs[level.a_elemental_staffs.size] = staff_lightning; - level.a_elemental_staffs[level.a_elemental_staffs.size] = staff_water; + flag_init( "dug" ); + flag_init( "air_open" ); + flag_init( "fire_open" ); + flag_init( "lightning_open" ); + flag_init( "ice_open" ); + flag_init( "panels_solved" ); + flag_init( "fire_solved" ); + flag_init( "ice_solved" ); + flag_init( "chamber_puzzle_cheat" ); + flag_init( "activate_zone_crypt" ); + level.callbackvehicledamage = ::aircrystalbiplanecallback_vehicledamage; + level.game_mode_custom_onplayerdisconnect = ::player_disconnect_callback; + onplayerconnect_callback( ::onplayerconnect ); + staff_air = getent( "prop_staff_air", "targetname" ); + staff_fire = getent( "prop_staff_fire", "targetname" ); + staff_lightning = getent( "prop_staff_lightning", "targetname" ); + staff_water = getent( "prop_staff_water", "targetname" ); + staff_air.weapname = "staff_air_zm"; + staff_fire.weapname = "staff_fire_zm"; + staff_lightning.weapname = "staff_lightning_zm"; + staff_water.weapname = "staff_water_zm"; + staff_air.element = "air"; + staff_fire.element = "fire"; + staff_lightning.element = "lightning"; + staff_water.element = "water"; + staff_air.craftable_name = "elemental_staff_air"; + staff_fire.craftable_name = "elemental_staff_fire"; + staff_lightning.craftable_name = "elemental_staff_lightning"; + staff_water.craftable_name = "elemental_staff_water"; + staff_air.charger = getstruct( "staff_air_charger", "script_noteworthy" ); + staff_fire.charger = getstruct( "staff_fire_charger", "script_noteworthy" ); + staff_lightning.charger = getstruct( "zone_bolt_chamber", "script_noteworthy" ); + staff_water.charger = getstruct( "staff_ice_charger", "script_noteworthy" ); + staff_fire.quest_clientfield = "quest_state1"; + staff_air.quest_clientfield = "quest_state2"; + staff_lightning.quest_clientfield = "quest_state3"; + staff_water.quest_clientfield = "quest_state4"; + staff_fire.enum = 1; + staff_air.enum = 2; + staff_lightning.enum = 3; + staff_water.enum = 4; + level.a_elemental_staffs = []; + level.a_elemental_staffs[level.a_elemental_staffs.size] = staff_air; + level.a_elemental_staffs[level.a_elemental_staffs.size] = staff_fire; + level.a_elemental_staffs[level.a_elemental_staffs.size] = staff_lightning; + level.a_elemental_staffs[level.a_elemental_staffs.size] = staff_water; - foreach ( staff in level.a_elemental_staffs ) - { - staff.charger.charges_received = 0; - staff.charger.is_inserted = 0; - staff thread place_staffs_encasement(); - staff thread staff_charger_check(); - staff ghost(); - } + foreach ( staff in level.a_elemental_staffs ) + { + staff.charger.charges_received = 0; + staff.charger.is_inserted = 0; + staff thread place_staffs_encasement(); + staff thread staff_charger_check(); + staff ghost(); + } - staff_air_upgraded = getent( "prop_staff_air_upgraded", "targetname" ); - staff_fire_upgraded = getent( "prop_staff_fire_upgraded", "targetname" ); - staff_lightning_upgraded = getent( "prop_staff_lightning_upgraded", "targetname" ); - staff_water_upgraded = getent( "prop_staff_water_upgraded", "targetname" ); - staff_air_upgraded.weapname = "staff_air_upgraded_zm"; - staff_fire_upgraded.weapname = "staff_fire_upgraded_zm"; - staff_lightning_upgraded.weapname = "staff_lightning_upgraded_zm"; - staff_water_upgraded.weapname = "staff_water_upgraded_zm"; - staff_air_upgraded.melee = "staff_air_melee_zm"; - staff_fire_upgraded.melee = "staff_fire_melee_zm"; - staff_lightning_upgraded.melee = "staff_lightning_melee_zm"; - staff_water_upgraded.melee = "staff_water_melee_zm"; - staff_air_upgraded.base_weapname = "staff_air_zm"; - staff_fire_upgraded.base_weapname = "staff_fire_zm"; - staff_lightning_upgraded.base_weapname = "staff_lightning_zm"; - staff_water_upgraded.base_weapname = "staff_water_zm"; - staff_air_upgraded.element = "air"; - staff_fire_upgraded.element = "fire"; - staff_lightning_upgraded.element = "lightning"; - staff_water_upgraded.element = "water"; - staff_air_upgraded.charger = staff_air.charger; - staff_fire_upgraded.charger = staff_fire.charger; - staff_lightning_upgraded.charger = staff_lightning.charger; - staff_water_upgraded.charger = staff_water.charger; - staff_fire_upgraded.enum = 1; - staff_air_upgraded.enum = 2; - staff_lightning_upgraded.enum = 3; - staff_water_upgraded.enum = 4; - staff_air.upgrade = staff_air_upgraded; - staff_fire.upgrade = staff_fire_upgraded; - staff_water.upgrade = staff_water_upgraded; - staff_lightning.upgrade = staff_lightning_upgraded; - level.a_elemental_staffs_upgraded = []; - level.a_elemental_staffs_upgraded[level.a_elemental_staffs_upgraded.size] = staff_air_upgraded; - level.a_elemental_staffs_upgraded[level.a_elemental_staffs_upgraded.size] = staff_fire_upgraded; - level.a_elemental_staffs_upgraded[level.a_elemental_staffs_upgraded.size] = staff_lightning_upgraded; - level.a_elemental_staffs_upgraded[level.a_elemental_staffs_upgraded.size] = staff_water_upgraded; + staff_air_upgraded = getent( "prop_staff_air_upgraded", "targetname" ); + staff_fire_upgraded = getent( "prop_staff_fire_upgraded", "targetname" ); + staff_lightning_upgraded = getent( "prop_staff_lightning_upgraded", "targetname" ); + staff_water_upgraded = getent( "prop_staff_water_upgraded", "targetname" ); + staff_air_upgraded.weapname = "staff_air_upgraded_zm"; + staff_fire_upgraded.weapname = "staff_fire_upgraded_zm"; + staff_lightning_upgraded.weapname = "staff_lightning_upgraded_zm"; + staff_water_upgraded.weapname = "staff_water_upgraded_zm"; + staff_air_upgraded.melee = "staff_air_melee_zm"; + staff_fire_upgraded.melee = "staff_fire_melee_zm"; + staff_lightning_upgraded.melee = "staff_lightning_melee_zm"; + staff_water_upgraded.melee = "staff_water_melee_zm"; + staff_air_upgraded.base_weapname = "staff_air_zm"; + staff_fire_upgraded.base_weapname = "staff_fire_zm"; + staff_lightning_upgraded.base_weapname = "staff_lightning_zm"; + staff_water_upgraded.base_weapname = "staff_water_zm"; + staff_air_upgraded.element = "air"; + staff_fire_upgraded.element = "fire"; + staff_lightning_upgraded.element = "lightning"; + staff_water_upgraded.element = "water"; + staff_air_upgraded.charger = staff_air.charger; + staff_fire_upgraded.charger = staff_fire.charger; + staff_lightning_upgraded.charger = staff_lightning.charger; + staff_water_upgraded.charger = staff_water.charger; + staff_fire_upgraded.enum = 1; + staff_air_upgraded.enum = 2; + staff_lightning_upgraded.enum = 3; + staff_water_upgraded.enum = 4; + staff_air.upgrade = staff_air_upgraded; + staff_fire.upgrade = staff_fire_upgraded; + staff_water.upgrade = staff_water_upgraded; + staff_lightning.upgrade = staff_lightning_upgraded; + level.a_elemental_staffs_upgraded = []; + level.a_elemental_staffs_upgraded[level.a_elemental_staffs_upgraded.size] = staff_air_upgraded; + level.a_elemental_staffs_upgraded[level.a_elemental_staffs_upgraded.size] = staff_fire_upgraded; + level.a_elemental_staffs_upgraded[level.a_elemental_staffs_upgraded.size] = staff_lightning_upgraded; + level.a_elemental_staffs_upgraded[level.a_elemental_staffs_upgraded.size] = staff_water_upgraded; - foreach ( staff_upgraded in level.a_elemental_staffs_upgraded ) - { - staff_upgraded.charger.charges_received = 0; - staff_upgraded.charger.is_inserted = 0; - staff_upgraded.charger.is_charged = 0; - staff_upgraded.prev_ammo_clip = weaponclipsize( staff_upgraded.weapname ); - staff_upgraded.prev_ammo_stock = weaponmaxammo( staff_upgraded.weapname ); - staff_upgraded thread place_staffs_encasement(); - staff_upgraded ghost(); - } + foreach ( staff_upgraded in level.a_elemental_staffs_upgraded ) + { + staff_upgraded.charger.charges_received = 0; + staff_upgraded.charger.is_inserted = 0; + staff_upgraded.charger.is_charged = 0; + staff_upgraded.prev_ammo_clip = weaponclipsize( staff_upgraded.weapname ); + staff_upgraded.prev_ammo_stock = weaponmaxammo( staff_upgraded.weapname ); + staff_upgraded thread place_staffs_encasement(); + staff_upgraded ghost(); + } - foreach ( staff in level.a_elemental_staffs ) - { - staff.prev_ammo_clip = weaponclipsize( staff.weapname ); - staff.prev_ammo_stock = weaponmaxammo( staff.weapname ); - staff.upgrade.downgrade = staff; - staff.upgrade useweaponmodel( staff.weapname ); - staff.upgrade showallparts(); - } + foreach ( staff in level.a_elemental_staffs ) + { + staff.prev_ammo_clip = weaponclipsize( staff.weapname ); + staff.prev_ammo_stock = weaponmaxammo( staff.weapname ); + staff.upgrade.downgrade = staff; + staff.upgrade useweaponmodel( staff.weapname ); + staff.upgrade showallparts(); + } - level.staffs_charged = 0; - array_thread( level.zombie_spawners, ::add_spawn_function, ::zombie_spawn_func ); - level thread watch_for_staff_upgrades(); - level thread chambers_init(); - level thread maps\mp\zm_tomb_quest_air::main(); - level thread maps\mp\zm_tomb_quest_fire::main(); - level thread maps\mp\zm_tomb_quest_ice::main(); - level thread maps\mp\zm_tomb_quest_elec::main(); - level thread maps\mp\zm_tomb_quest_crypt::main(); - level thread maps\mp\zm_tomb_chamber::main(); - level thread maps\mp\zm_tomb_vo::watch_occasional_line( "puzzle", "puzzle_confused", "vo_puzzle_confused" ); - level thread maps\mp\zm_tomb_vo::watch_occasional_line( "puzzle", "puzzle_good", "vo_puzzle_good" ); - level thread maps\mp\zm_tomb_vo::watch_occasional_line( "puzzle", "puzzle_bad", "vo_puzzle_bad" ); - level thread maps\mp\zm_tomb_vo::watch_one_shot_samantha_clue( "vox_sam_ice_staff_clue_0", "sam_clue_dig", "elemental_staff_water_all_pieces_found" ); - level thread maps\mp\zm_tomb_vo::watch_one_shot_samantha_clue( "vox_sam_fire_staff_clue_0", "sam_clue_mechz", "mechz_killed" ); - level thread maps\mp\zm_tomb_vo::watch_one_shot_samantha_clue( "vox_sam_fire_staff_clue_1", "sam_clue_biplane", "biplane_down" ); - level thread maps\mp\zm_tomb_vo::watch_one_shot_samantha_clue( "vox_sam_fire_staff_clue_2", "sam_clue_zonecap", "staff_piece_capture_complete" ); - level thread maps\mp\zm_tomb_vo::watch_one_shot_samantha_clue( "vox_sam_lightning_staff_clue_0", "sam_clue_tank", "elemental_staff_lightning_all_pieces_found" ); - level thread maps\mp\zm_tomb_vo::watch_one_shot_samantha_clue( "vox_sam_wind_staff_clue_0", "sam_clue_giant", "elemental_staff_air_all_pieces_found" ); - level.dig_spawners = getentarray( "zombie_spawner_dig", "script_noteworthy" ); - array_thread( level.dig_spawners, ::add_spawn_function, ::dug_zombie_spawn_init ); + level.staffs_charged = 0; + array_thread( level.zombie_spawners, ::add_spawn_function, ::zombie_spawn_func ); + level thread watch_for_staff_upgrades(); + level thread chambers_init(); + level thread maps\mp\zm_tomb_quest_air::main(); + level thread maps\mp\zm_tomb_quest_fire::main(); + level thread maps\mp\zm_tomb_quest_ice::main(); + level thread maps\mp\zm_tomb_quest_elec::main(); + level thread maps\mp\zm_tomb_quest_crypt::main(); + level thread maps\mp\zm_tomb_chamber::main(); + level thread maps\mp\zm_tomb_vo::watch_occasional_line( "puzzle", "puzzle_confused", "vo_puzzle_confused" ); + level thread maps\mp\zm_tomb_vo::watch_occasional_line( "puzzle", "puzzle_good", "vo_puzzle_good" ); + level thread maps\mp\zm_tomb_vo::watch_occasional_line( "puzzle", "puzzle_bad", "vo_puzzle_bad" ); + level thread maps\mp\zm_tomb_vo::watch_one_shot_samantha_clue( "vox_sam_ice_staff_clue_0", "sam_clue_dig", "elemental_staff_water_all_pieces_found" ); + level thread maps\mp\zm_tomb_vo::watch_one_shot_samantha_clue( "vox_sam_fire_staff_clue_0", "sam_clue_mechz", "mechz_killed" ); + level thread maps\mp\zm_tomb_vo::watch_one_shot_samantha_clue( "vox_sam_fire_staff_clue_1", "sam_clue_biplane", "biplane_down" ); + level thread maps\mp\zm_tomb_vo::watch_one_shot_samantha_clue( "vox_sam_fire_staff_clue_2", "sam_clue_zonecap", "staff_piece_capture_complete" ); + level thread maps\mp\zm_tomb_vo::watch_one_shot_samantha_clue( "vox_sam_lightning_staff_clue_0", "sam_clue_tank", "elemental_staff_lightning_all_pieces_found" ); + level thread maps\mp\zm_tomb_vo::watch_one_shot_samantha_clue( "vox_sam_wind_staff_clue_0", "sam_clue_giant", "elemental_staff_air_all_pieces_found" ); + level.dig_spawners = getentarray( "zombie_spawner_dig", "script_noteworthy" ); + array_thread( level.dig_spawners, ::add_spawn_function, ::dug_zombie_spawn_init ); } zombie_spawn_func() { - self.actor_killed_override = ::zombie_killed_override; + self.actor_killed_override = ::zombie_killed_override; } zombie_killed_override( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime ) { - if ( flag( "ee_sam_portal_active" ) && !flag( "ee_souls_absorbed" ) ) - { - maps\mp\zm_tomb_ee_main_step_7::ee_zombie_killed_override( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime ); - return; - } + if ( flag( "ee_sam_portal_active" ) && !flag( "ee_souls_absorbed" ) ) + { + maps\mp\zm_tomb_ee_main_step_7::ee_zombie_killed_override( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime ); + return; + } - if ( maps\mp\zm_tomb_challenges::footprint_zombie_killed( attacker ) ) - return; + if ( maps\mp\zm_tomb_challenges::footprint_zombie_killed( attacker ) ) + return; - n_max_dist_sq = 9000000; + n_max_dist_sq = 9000000; - if ( isplayer( attacker ) || sweapon == "one_inch_punch_zm" ) - { - if ( !flag( "fire_puzzle_1_complete" ) ) - maps\mp\zm_tomb_quest_fire::sacrifice_puzzle_zombie_killed( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime ); + if ( isplayer( attacker ) || sweapon == "one_inch_punch_zm" ) + { + if ( !flag( "fire_puzzle_1_complete" ) ) + maps\mp\zm_tomb_quest_fire::sacrifice_puzzle_zombie_killed( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime ); - s_nearest_staff = undefined; - n_nearest_dist_sq = n_max_dist_sq; + s_nearest_staff = undefined; + n_nearest_dist_sq = n_max_dist_sq; - foreach ( staff in level.a_elemental_staffs ) - { - if ( isdefined( staff.charger.full ) && staff.charger.full ) - continue; + foreach ( staff in level.a_elemental_staffs ) + { + if ( isdefined( staff.charger.full ) && staff.charger.full ) + continue; - if ( staff.charger.is_inserted || staff.upgrade.charger.is_inserted ) - { - dist_sq = distance2dsquared( self.origin, staff.origin ); + if ( staff.charger.is_inserted || staff.upgrade.charger.is_inserted ) + { + dist_sq = distance2dsquared( self.origin, staff.origin ); - if ( dist_sq <= n_nearest_dist_sq ) - { - n_nearest_dist_sq = dist_sq; - s_nearest_staff = staff; - } - } - } + if ( dist_sq <= n_nearest_dist_sq ) + { + n_nearest_dist_sq = dist_sq; + s_nearest_staff = staff; + } + } + } - if ( isdefined( s_nearest_staff ) && !isSubStr(sweapon, "staff") ) - { - s_nearest_staff.charger.charges_received++; - s_nearest_staff.charger thread zombie_soul_to_charger( self, s_nearest_staff.enum ); - } - } + if ( isdefined( s_nearest_staff ) && !isSubStr(sweapon, "staff") ) + { + s_nearest_staff.charger.charges_received++; + s_nearest_staff.charger thread zombie_soul_to_charger( self, s_nearest_staff.enum ); + } + } } place_staff_in_charger() { - flag_set( "charger_ready_" + self.enum ); - v_trigger_pos = self.charger.origin; - v_trigger_pos = ( v_trigger_pos[0], v_trigger_pos[1], v_trigger_pos[2] - 30.0 ); + flag_set( "charger_ready_" + self.enum ); + v_trigger_pos = self.charger.origin; + v_trigger_pos = ( v_trigger_pos[0], v_trigger_pos[1], v_trigger_pos[2] - 30.0 ); - if ( !isDefined( self.charge_trigger ) ) - { - self.charge_trigger = tomb_spawn_trigger_radius( v_trigger_pos, 120, 1, ::staff_charger_get_player_msg ); - self.charge_trigger.require_look_at = 1; - self.charge_trigger.staff_data = self; - } + if ( !isDefined( self.charge_trigger ) ) + { + self.charge_trigger = tomb_spawn_trigger_radius( v_trigger_pos, 120, 1, ::staff_charger_get_player_msg ); + self.charge_trigger.require_look_at = 1; + self.charge_trigger.staff_data = self; + } - self.trigger set_unitrigger_hint_string( "" ); - insert_message = self staff_get_insert_message(); - self.charge_trigger set_unitrigger_hint_string( insert_message ); - self.charge_trigger trigger_on(); + self.trigger set_unitrigger_hint_string( "" ); + insert_message = self staff_get_insert_message(); + self.charge_trigger set_unitrigger_hint_string( insert_message ); + self.charge_trigger trigger_on(); - waittill_staff_inserted(); + waittill_staff_inserted(); } waittill_staff_inserted() { - while ( true ) - { - self.charge_trigger waittill( "trigger", player ); + while ( true ) + { + self.charge_trigger waittill( "trigger", player ); - weapon_available = 1; + weapon_available = 1; - if ( isdefined( player ) ) - { - weapon_available = player getcurrentweapon() == self.weapname; + if ( isdefined( player ) ) + { + weapon_available = player getcurrentweapon() == self.weapname; - if ( weapon_available ) - player takeweapon( self.weapname ); - } + if ( weapon_available ) + player takeweapon( self.weapname ); + } - if ( weapon_available ) - { - self.charger.is_inserted = 1; - self thread debug_staff_charge(); - maps\mp\zm_tomb_craftables::clear_player_staff( self.weapname ); - self.charge_trigger set_unitrigger_hint_string( "" ); - self.charge_trigger trigger_off(); + if ( weapon_available ) + { + self.charger.is_inserted = 1; + self thread debug_staff_charge(); + maps\mp\zm_tomb_craftables::clear_player_staff( self.weapname ); + self.charge_trigger set_unitrigger_hint_string( "" ); + self.charge_trigger trigger_off(); - if ( isdefined( self.charger.angles ) ) - self.angles = self.charger.angles; + if ( isdefined( self.charger.angles ) ) + self.angles = self.charger.angles; - self moveto( self.charger.origin, 0.05 ); + self moveto( self.charger.origin, 0.05 ); - self waittill( "movedone" ); + self waittill( "movedone" ); - self setclientfield( "staff_charger", self.enum ); - self.charger.full = 0; - self show(); - self playsound( "zmb_squest_charge_place_staff" ); - return; - } - else - { - self.charge_trigger thread insert_staff_hint_charger(player, self.enum); - } - } + self setclientfield( "staff_charger", self.enum ); + self.charger.full = 0; + self show(); + self playsound( "zmb_squest_charge_place_staff" ); + return; + } + else + { + self.charge_trigger thread insert_staff_hint_charger(player, self.enum); + } + } } watch_for_player_pickup_staff() { - staff_picked_up = 0; - pickup_message = self staff_get_pickup_message(); - self.trigger set_unitrigger_hint_string( pickup_message ); - self show(); - self.trigger trigger_on(); + staff_picked_up = 0; + pickup_message = self staff_get_pickup_message(); + self.trigger set_unitrigger_hint_string( pickup_message ); + self show(); + self.trigger trigger_on(); - while ( !staff_picked_up ) - { - self.trigger waittill( "trigger", player ); + while ( !staff_picked_up ) + { + self.trigger waittill( "trigger", player ); - self notify( "retrieved", player ); + self notify( "retrieved", player ); - if ( player can_pickup_staff() ) - { - weapon_drop = player getcurrentweapon(); - a_weapons = player getweaponslistprimaries(); - n_max_other_weapons = get_player_weapon_limit( player ) - 1; + if ( player can_pickup_staff() ) + { + weapon_drop = player getcurrentweapon(); + a_weapons = player getweaponslistprimaries(); + n_max_other_weapons = get_player_weapon_limit( player ) - 1; - if ( issubstr( weapon_drop, "staff" ) ) - { - n_index = get_staff_enum_from_element_weapon( weapon_drop ); - e_staff_standard = get_staff_info_from_element_index( n_index ); - e_staff_standard_upgraded = e_staff_standard.upgrade; - e_staff_standard_upgraded.charge_trigger notify( "trigger", player ); - } - else if ( a_weapons.size > n_max_other_weapons ) - { - player takeweapon( weapon_drop ); - } + if ( issubstr( weapon_drop, "staff" ) ) + { + n_index = get_staff_enum_from_element_weapon( weapon_drop ); + e_staff_standard = get_staff_info_from_element_index( n_index ); + e_staff_standard_upgraded = e_staff_standard.upgrade; + e_staff_standard_upgraded.charge_trigger notify( "trigger", player ); + } + else if ( a_weapons.size > n_max_other_weapons ) + { + player takeweapon( weapon_drop ); + } - player thread watch_staff_ammo_reload(); - self ghost(); - self setinvisibletoall(); - player giveweapon( self.weapname ); - player switchtoweapon( self.weapname ); - clip_size = weaponclipsize( self.weapname ); - player setweaponammoclip( self.weapname, clip_size ); - player givemaxammo( self.weapname ); - player givemaxammo( "staff_revive_zm" ); - self.owner = player; - level notify( "stop_staff_sound" ); - self notify( "staff_equip" ); - staff_picked_up = 1; - self.charger.is_inserted = 0; - self setclientfield( "staff_charger", 0 ); - self.charger.full = 1; - maps\mp\zm_tomb_craftables::set_player_staff( self.weapname, player ); - } - else - { - self.trigger thread swap_staff_hint_charger(player); - } - } + player thread watch_staff_ammo_reload(); + self ghost(); + self setinvisibletoall(); + player giveweapon( self.weapname ); + player switchtoweapon( self.weapname ); + clip_size = weaponclipsize( self.weapname ); + player setweaponammoclip( self.weapname, clip_size ); + player givemaxammo( self.weapname ); + player givemaxammo( "staff_revive_zm" ); + self.owner = player; + level notify( "stop_staff_sound" ); + self notify( "staff_equip" ); + staff_picked_up = 1; + self.charger.is_inserted = 0; + self setclientfield( "staff_charger", 0 ); + self.charger.full = 1; + maps\mp\zm_tomb_craftables::set_player_staff( self.weapname, player ); + } + else + { + self.trigger thread swap_staff_hint_charger(player); + } + } } get_staff_enum_from_element_weapon(weapon_drop) { - if (isSubStr(weapon_drop, "fire")) - { - return 1; - } - else if (isSubStr(weapon_drop, "air")) - { - return 2; - } - else if (isSubStr(weapon_drop, "lightning")) - { - return 3; - } - else if (isSubStr(weapon_drop, "water")) - { - return 4; - } + if (isSubStr(weapon_drop, "fire")) + { + return 1; + } + else if (isSubStr(weapon_drop, "air")) + { + return 2; + } + else if (isSubStr(weapon_drop, "lightning")) + { + return 3; + } + else if (isSubStr(weapon_drop, "water")) + { + return 4; + } - return 1; + return 1; } can_pickup_staff() { - if ( is_melee_weapon( self getcurrentweapon() ) || is_placeable_mine( self getcurrentweapon() ) ) - { - return 0; - } + if ( is_melee_weapon( self getcurrentweapon() ) || is_placeable_mine( self getcurrentweapon() ) ) + { + return 0; + } - b_has_staff = self player_has_staff(); - b_staff_equipped = issubstr( self getcurrentweapon(), "staff" ) && self getcurrentweapon() != "staff_revive_zm"; + b_has_staff = self player_has_staff(); + b_staff_equipped = issubstr( self getcurrentweapon(), "staff" ) && self getcurrentweapon() != "staff_revive_zm"; - return !b_has_staff || b_staff_equipped; + return !b_has_staff || b_staff_equipped; } insert_staff_hint_charger(player, enum) { - num = player getentitynumber(); + num = player getentitynumber(); - self.playertrigger[num] notify("insert_staff_hint_charger"); - self.playertrigger[num] endon("insert_staff_hint_charger"); - self.playertrigger[num] endon("death"); + self.playertrigger[num] notify("insert_staff_hint_charger"); + self.playertrigger[num] endon("insert_staff_hint_charger"); + self.playertrigger[num] endon("death"); - element = ""; - if (enum == 1) - { - element = "Fire"; - } - else if (enum == 2) - { - element = "Wind"; - } - else if (enum == 3) - { - element = "Lightning"; - } - else if (enum == 4) - { - element = "Ice"; - } + element = ""; + if (enum == 1) + { + element = "Fire"; + } + else if (enum == 2) + { + element = "Wind"; + } + else if (enum == 3) + { + element = "Lightning"; + } + else if (enum == 4) + { + element = "Ice"; + } - self.playertrigger[num] sethintstring(element + " Staff Required"); + self.playertrigger[num] sethintstring(element + " Staff Required"); - wait 3; + wait 3; - self.playertrigger[num] sethintstring(self.hint_string); + self.playertrigger[num] sethintstring(self.hint_string); } swap_staff_hint_charger(player) { - num = player getentitynumber(); + num = player getentitynumber(); - self.playertrigger[num] notify("swap_staff_hint_charger"); - self.playertrigger[num] endon("swap_staff_hint_charger"); - self.playertrigger[num] endon("death"); + self.playertrigger[num] notify("swap_staff_hint_charger"); + self.playertrigger[num] endon("swap_staff_hint_charger"); + self.playertrigger[num] endon("death"); - self.playertrigger[num] sethintstring(&"ZM_TOMB_OSO"); + self.playertrigger[num] sethintstring(&"ZM_TOMB_OSO"); - wait 3; + wait 3; - self.playertrigger[num] sethintstring(self.hint_string); + self.playertrigger[num] sethintstring(self.hint_string); } staff_upgraded_reload() { - self endon( "staff_equip" ); + self endon( "staff_equip" ); - clip_size = weaponclipsize( self.weapname ); - max_ammo = weaponmaxammo( self.weapname ); - revive_max_ammo = weaponmaxammo( "staff_revive_zm" ); - n_count = int( max_ammo / 20 ); - b_reloaded = 0; + clip_size = weaponclipsize( self.weapname ); + max_ammo = weaponmaxammo( self.weapname ); + revive_max_ammo = weaponmaxammo( "staff_revive_zm" ); + n_count = int( max_ammo / 20 ); + b_reloaded = 0; - while ( true ) - { - if ( self.prev_ammo_clip < clip_size ) - { - clip_add = clip_size - self.prev_ammo_clip; + while ( true ) + { + if ( self.prev_ammo_clip < clip_size ) + { + clip_add = clip_size - self.prev_ammo_clip; - if (clip_add > self.prev_ammo_stock) - { - clip_add = self.prev_ammo_stock; - } + if (clip_add > self.prev_ammo_stock) + { + clip_add = self.prev_ammo_stock; + } - self.prev_ammo_clip += clip_add; - self.prev_ammo_stock -= clip_add; - } + self.prev_ammo_clip += clip_add; + self.prev_ammo_stock -= clip_add; + } - if ( self.revive_ammo_clip < 1 && self.revive_ammo_stock >= 1 ) - { - self.revive_ammo_clip += 1; - self.revive_ammo_stock -= 1; - } + if ( self.revive_ammo_clip < 1 && self.revive_ammo_stock >= 1 ) + { + self.revive_ammo_clip += 1; + self.revive_ammo_stock -= 1; + } - if ( self.prev_ammo_stock >= max_ammo && self.revive_ammo_stock >= revive_max_ammo ) - { - self.prev_ammo_stock = max_ammo; - self.revive_ammo_stock = revive_max_ammo; - self setclientfield( "staff_charger", 0 ); - self.charger.full = 1; - self thread staff_glow_fx(); - } + if ( self.prev_ammo_stock >= max_ammo && self.revive_ammo_stock >= revive_max_ammo ) + { + self.prev_ammo_stock = max_ammo; + self.revive_ammo_stock = revive_max_ammo; + self setclientfield( "staff_charger", 0 ); + self.charger.full = 1; + self thread staff_glow_fx(); + } - self.charger waittill( "soul_received" ); + self.charger waittill( "soul_received" ); - self.prev_ammo_stock += n_count; - self.revive_ammo_stock += 1; - } + self.prev_ammo_stock += n_count; + self.revive_ammo_stock += 1; + } } staff_glow_fx() { - e_staff_standard = get_staff_info_from_element_index( self.enum ); + e_staff_standard = get_staff_info_from_element_index( self.enum ); - if (isDefined(e_staff_standard.e_fx)) - { - return; - } + if (isDefined(e_staff_standard.e_fx)) + { + return; + } - e_staff_standard.e_fx = spawn( "script_model", e_staff_standard.upgrade.origin + vectorscale( ( 0, 0, 1 ), 8.0 ) ); - e_staff_standard.e_fx setmodel( "tag_origin" ); - e_staff_standard.e_fx setclientfield( "element_glow_fx", e_staff_standard.upgrade.enum ); + e_staff_standard.e_fx = spawn( "script_model", e_staff_standard.upgrade.origin + vectorscale( ( 0, 0, 1 ), 8.0 ) ); + e_staff_standard.e_fx setmodel( "tag_origin" ); + e_staff_standard.e_fx setclientfield( "element_glow_fx", e_staff_standard.upgrade.enum ); - self waittill( "staff_equip" ); + self waittill( "staff_equip" ); - e_staff_standard.e_fx delete(); + e_staff_standard.e_fx delete(); } chambers_init() { - flag_init( "gramophone_placed" ); - array_thread( getentarray( "trigger_death_floor", "targetname" ), ::monitor_chamber_death_trigs ); - a_stargate_gramophones = getstructarray( "stargate_gramophone_pos", "targetname" ); - array_thread( a_stargate_gramophones, ::run_gramophone_teleporter ); - a_door_main = getentarray( "chamber_entrance", "targetname" ); - array_thread( a_door_main, ::run_gramophone_door, "vinyl_master" ); + flag_init( "gramophone_placed" ); + array_thread( getentarray( "trigger_death_floor", "targetname" ), ::monitor_chamber_death_trigs ); + a_stargate_gramophones = getstructarray( "stargate_gramophone_pos", "targetname" ); + array_thread( a_stargate_gramophones, ::run_gramophone_teleporter ); + a_door_main = getentarray( "chamber_entrance", "targetname" ); + array_thread( a_door_main, ::run_gramophone_door, "vinyl_master" ); } run_gramophone_teleporter( str_vinyl_record ) { - self.has_vinyl = 0; - self.gramophone_model = undefined; - self thread watch_gramophone_vinyl_pickup(); - t_gramophone = tomb_spawn_trigger_radius( self.origin, 60.0, 1 ); - t_gramophone set_unitrigger_hint_string( &"ZM_TOMB_PLGR" ); + self.has_vinyl = 0; + self.gramophone_model = undefined; + self thread watch_gramophone_vinyl_pickup(); + t_gramophone = tomb_spawn_trigger_radius( self.origin, 60.0, 1 ); + t_gramophone set_unitrigger_hint_string( &"ZM_TOMB_PLGR" ); - if (!isDefined(level.gramophone_teleporter_triggers)) - { - level.gramophone_teleporter_triggers = []; - } + if (!isDefined(level.gramophone_teleporter_triggers)) + { + level.gramophone_teleporter_triggers = []; + } - level.gramophone_teleporter_triggers[level.gramophone_teleporter_triggers.size] = t_gramophone; + level.gramophone_teleporter_triggers[level.gramophone_teleporter_triggers.size] = t_gramophone; - level waittill( "gramophone_vinyl_player_picked_up" ); + level waittill( "gramophone_vinyl_player_picked_up" ); - while ( true ) - { - t_gramophone waittill( "trigger", player ); + while ( true ) + { + t_gramophone waittill( "trigger", player ); - if ( !isdefined( self.gramophone_model ) ) - { - if ( !flag( "gramophone_placed" ) ) - { - self.gramophone_model = spawn( "script_model", self.origin ); - self.gramophone_model.angles = self.angles; - self.gramophone_model setmodel( "p6_zm_tm_gramophone" ); - //level setclientfield( "piece_record_zm_player", 0 ); - flag_set( "gramophone_placed" ); + if ( !isdefined( self.gramophone_model ) ) + { + if ( !flag( "gramophone_placed" ) ) + { + self.gramophone_model = spawn( "script_model", self.origin ); + self.gramophone_model.angles = self.angles; + self.gramophone_model setmodel( "p6_zm_tm_gramophone" ); + //level setclientfield( "piece_record_zm_player", 0 ); + flag_set( "gramophone_placed" ); - foreach (trigger in level.gramophone_teleporter_triggers) - { - if (trigger != t_gramophone) - { - trigger set_unitrigger_hint_string( &"ZM_TOMB_GREL" ); - } - } + foreach (trigger in level.gramophone_teleporter_triggers) + { + if (trigger != t_gramophone) + { + trigger set_unitrigger_hint_string( &"ZM_TOMB_GREL" ); + } + } - t_gramophone set_unitrigger_hint_string( "" ); - t_gramophone trigger_off(); - str_song_id = self get_gramophone_song(); - self.gramophone_model playsound( str_song_id ); - player thread maps\mp\zm_tomb_vo::play_gramophone_place_vo(); - maps\mp\zm_tomb_teleporter::stargate_teleport_enable( self.script_int ); - flag_wait( "teleporter_building_" + self.script_int ); - flag_waitopen( "teleporter_building_" + self.script_int ); - t_gramophone trigger_on(); - t_gramophone set_unitrigger_hint_string( &"ZM_TOMB_PUGR" ); + t_gramophone set_unitrigger_hint_string( "" ); + t_gramophone trigger_off(); + str_song_id = self get_gramophone_song(); + self.gramophone_model playsound( str_song_id ); + player thread maps\mp\zm_tomb_vo::play_gramophone_place_vo(); + maps\mp\zm_tomb_teleporter::stargate_teleport_enable( self.script_int ); + flag_wait( "teleporter_building_" + self.script_int ); + flag_waitopen( "teleporter_building_" + self.script_int ); + t_gramophone trigger_on(); + t_gramophone set_unitrigger_hint_string( &"ZM_TOMB_PUGR" ); - if ( isdefined( self.script_flag ) ) - flag_set( self.script_flag ); - } - else - { - t_gramophone set_unitrigger_hint_string( &"ZM_TOMB_GREL" ); - } - } - else - { - self.gramophone_model stopsounds(); - self.gramophone_model ghost(); - player playsound( "zmb_craftable_pickup" ); - flag_clear( "gramophone_placed" ); - //level setclientfield( "piece_record_zm_player", 1 ); - break; - } - } + if ( isdefined( self.script_flag ) ) + flag_set( self.script_flag ); + } + else + { + t_gramophone set_unitrigger_hint_string( &"ZM_TOMB_GREL" ); + } + } + else + { + self.gramophone_model stopsounds(); + self.gramophone_model ghost(); + player playsound( "zmb_craftable_pickup" ); + flag_clear( "gramophone_placed" ); + //level setclientfield( "piece_record_zm_player", 1 ); + break; + } + } - arrayremovevalue(level.gramophone_teleporter_triggers, t_gramophone); - foreach (trigger in level.gramophone_teleporter_triggers) - { - if (trigger != t_gramophone) - { - trigger set_unitrigger_hint_string( &"ZM_TOMB_PLGR" ); - } - } + arrayremovevalue(level.gramophone_teleporter_triggers, t_gramophone); + foreach (trigger in level.gramophone_teleporter_triggers) + { + if (trigger != t_gramophone) + { + trigger set_unitrigger_hint_string( &"ZM_TOMB_PLGR" ); + } + } - t_gramophone tomb_unitrigger_delete(); + t_gramophone tomb_unitrigger_delete(); - wait 0.1; + wait 0.1; - self.gramophone_model delete(); - self.gramophone_model = undefined; + self.gramophone_model delete(); + self.gramophone_model = undefined; } run_gramophone_door( str_vinyl_record ) { - flag_init( self.targetname + "_opened" ); - trig_position = getstruct( self.targetname + "_position", "targetname" ); - trig_position.has_vinyl = 0; - trig_position.gramophone_model = undefined; - trig_position.script_int = randomIntRange(1, 5); - trig_position thread watch_gramophone_vinyl_pickup(); - trig_position thread door_watch_open_sesame(); - t_door = tomb_spawn_trigger_radius( trig_position.origin, 60.0, 1 ); - t_door set_unitrigger_hint_string( &"ZM_TOMB_PLGR" ); - level waittill_any( "gramophone_vinyl_player_picked_up", "open_sesame", "open_all_gramophone_doors" ); - trig_position.trigger = t_door; + flag_init( self.targetname + "_opened" ); + trig_position = getstruct( self.targetname + "_position", "targetname" ); + trig_position.has_vinyl = 0; + trig_position.gramophone_model = undefined; + trig_position.script_int = randomIntRange(1, 5); + trig_position thread watch_gramophone_vinyl_pickup(); + trig_position thread door_watch_open_sesame(); + t_door = tomb_spawn_trigger_radius( trig_position.origin, 60.0, 1 ); + t_door set_unitrigger_hint_string( &"ZM_TOMB_PLGR" ); + level waittill_any( "gramophone_vinyl_player_picked_up", "open_sesame", "open_all_gramophone_doors" ); + trig_position.trigger = t_door; - while ( !trig_position.has_vinyl ) - wait 0.05; + while ( !trig_position.has_vinyl ) + wait 0.05; - t_door.initial_placed = 1; - trig_position.gramophone_model = spawn( "script_model", trig_position.origin ); - trig_position.gramophone_model.angles = trig_position.angles; - trig_position.gramophone_model setmodel( "p6_zm_tm_gramophone" ); - flag_set( "gramophone_placed" ); - //level setclientfield( "piece_record_zm_player", 0 ); + t_door.initial_placed = 1; + trig_position.gramophone_model = spawn( "script_model", trig_position.origin ); + trig_position.gramophone_model.angles = trig_position.angles; + trig_position.gramophone_model setmodel( "p6_zm_tm_gramophone" ); + flag_set( "gramophone_placed" ); + //level setclientfield( "piece_record_zm_player", 0 ); - foreach (trigger in level.gramophone_teleporter_triggers) - { - trigger set_unitrigger_hint_string( &"ZM_TOMB_GREL" ); - } + foreach (trigger in level.gramophone_teleporter_triggers) + { + trigger set_unitrigger_hint_string( &"ZM_TOMB_GREL" ); + } - while ( true ) - { - t_door waittill( "trigger", player ); + while ( true ) + { + t_door waittill( "trigger", player ); - if ( is_true( t_door.initial_placed ) ) - { - t_door.initial_placed = 0; - t_door set_unitrigger_hint_string( "" ); - t_door trigger_off(); - str_song = trig_position get_gramophone_song(); - trig_position.gramophone_model playsound(str_song); + if ( is_true( t_door.initial_placed ) ) + { + t_door.initial_placed = 0; + t_door set_unitrigger_hint_string( "" ); + t_door trigger_off(); + str_song = trig_position get_gramophone_song(); + trig_position.gramophone_model playsound(str_song); - self playsound( "zmb_crypt_stairs" ); - wait 6.0; - chamber_blocker(); - flag_set( self.targetname + "_opened" ); + self playsound( "zmb_crypt_stairs" ); + wait 6.0; + chamber_blocker(); + flag_set( self.targetname + "_opened" ); - if ( isdefined( trig_position.script_flag ) ) - flag_set( trig_position.script_flag ); + if ( isdefined( trig_position.script_flag ) ) + flag_set( trig_position.script_flag ); - level setclientfield( "crypt_open_exploder", 1 ); - self movez( -260, 10.0, 1.0, 1.0 ); + level setclientfield( "crypt_open_exploder", 1 ); + self movez( -260, 10.0, 1.0, 1.0 ); - self waittill( "movedone" ); + self waittill( "movedone" ); - self connectpaths(); - self delete(); - t_door trigger_on(); - t_door set_unitrigger_hint_string( &"ZM_TOMB_PUGR" ); - } - else - { - trig_position.gramophone_model stopsounds(); - trig_position.gramophone_model ghost(); - flag_clear( "gramophone_placed" ); - player playsound( "zmb_craftable_pickup" ); - //level setclientfield( "piece_record_zm_player", 1 ); - break; - } - } + self connectpaths(); + self delete(); + t_door trigger_on(); + t_door set_unitrigger_hint_string( &"ZM_TOMB_PUGR" ); + } + else + { + trig_position.gramophone_model stopsounds(); + trig_position.gramophone_model ghost(); + flag_clear( "gramophone_placed" ); + player playsound( "zmb_craftable_pickup" ); + //level setclientfield( "piece_record_zm_player", 1 ); + break; + } + } - foreach (trigger in level.gramophone_teleporter_triggers) - { - trigger set_unitrigger_hint_string( &"ZM_TOMB_PLGR" ); - } + foreach (trigger in level.gramophone_teleporter_triggers) + { + trigger set_unitrigger_hint_string( &"ZM_TOMB_PLGR" ); + } - t_door tomb_unitrigger_delete(); - trig_position.trigger = undefined; + t_door tomb_unitrigger_delete(); + trig_position.trigger = undefined; - wait 0.1; + wait 0.1; - trig_position.gramophone_model delete(); - trig_position.gramophone_model = undefined; + trig_position.gramophone_model delete(); + trig_position.gramophone_model = undefined; } watch_staff_ammo_reload() { - // removed max ammo clip fill + // removed max ammo clip fill } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_tomb_quest_air.gsc b/scripts/zm/replaced/zm_tomb_quest_air.gsc index e505f8ba..27c37369 100644 --- a/scripts/zm/replaced/zm_tomb_quest_air.gsc +++ b/scripts/zm/replaced/zm_tomb_quest_air.gsc @@ -10,6 +10,6 @@ air_puzzle_1_run() { - level waittill( "elemental_staff_air_crafted", player ); - flag_set( "staff_air_zm_upgrade_unlocked" ); + level waittill( "elemental_staff_air_crafted", player ); + flag_set( "staff_air_zm_upgrade_unlocked" ); } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_tomb_quest_elec.gsc b/scripts/zm/replaced/zm_tomb_quest_elec.gsc index 65961e32..244a70cd 100644 --- a/scripts/zm/replaced/zm_tomb_quest_elec.gsc +++ b/scripts/zm/replaced/zm_tomb_quest_elec.gsc @@ -12,6 +12,6 @@ electric_puzzle_1_run() { - level waittill( "elemental_staff_lightning_crafted", player ); - flag_set( "staff_lightning_zm_upgrade_unlocked" ); + level waittill( "elemental_staff_lightning_crafted", player ); + flag_set( "staff_lightning_zm_upgrade_unlocked" ); } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_tomb_quest_fire.gsc b/scripts/zm/replaced/zm_tomb_quest_fire.gsc index 33e42ece..b2b094a9 100644 --- a/scripts/zm/replaced/zm_tomb_quest_fire.gsc +++ b/scripts/zm/replaced/zm_tomb_quest_fire.gsc @@ -11,6 +11,6 @@ fire_puzzle_1_run() { - level waittill( "elemental_staff_fire_crafted", player ); - flag_set( "staff_fire_zm_upgrade_unlocked" ); + level waittill( "elemental_staff_fire_crafted", player ); + flag_set( "staff_fire_zm_upgrade_unlocked" ); } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_tomb_quest_ice.gsc b/scripts/zm/replaced/zm_tomb_quest_ice.gsc index 6d848099..0c348bc6 100644 --- a/scripts/zm/replaced/zm_tomb_quest_ice.gsc +++ b/scripts/zm/replaced/zm_tomb_quest_ice.gsc @@ -10,21 +10,21 @@ ice_puzzle_1_run() { - level waittill( "elemental_staff_water_crafted", player ); - flag_set( "staff_water_zm_upgrade_unlocked" ); + level waittill( "elemental_staff_water_crafted", player ); + flag_set( "staff_water_zm_upgrade_unlocked" ); } ice_puzzle_1_init() { - ice_tiles_randomize(); - a_ceiling_tile_brushes = getentarray( "ice_ceiling_tile", "script_noteworthy" ); - level.unsolved_tiles = a_ceiling_tile_brushes; + ice_tiles_randomize(); + a_ceiling_tile_brushes = getentarray( "ice_ceiling_tile", "script_noteworthy" ); + level.unsolved_tiles = a_ceiling_tile_brushes; - a_ice_ternary_digit_brushes = getentarray( "ice_chamber_digit", "targetname" ); + a_ice_ternary_digit_brushes = getentarray( "ice_chamber_digit", "targetname" ); - foreach ( digit in a_ice_ternary_digit_brushes ) - { - digit ghost(); - digit notsolid(); - } + foreach ( digit in a_ice_ternary_digit_brushes ) + { + digit ghost(); + digit notsolid(); + } } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_tomb_tank.gsc b/scripts/zm/replaced/zm_tomb_tank.gsc index 05958ab9..948a9fa4 100644 --- a/scripts/zm/replaced/zm_tomb_tank.gsc +++ b/scripts/zm/replaced/zm_tomb_tank.gsc @@ -18,53 +18,53 @@ players_on_tank_update() { - flag_wait( "start_zombie_round_logic" ); - self thread tank_disconnect_paths(); + flag_wait( "start_zombie_round_logic" ); + self thread tank_disconnect_paths(); - while ( true ) - { - a_players = getplayers(); + while ( true ) + { + a_players = getplayers(); - foreach ( e_player in a_players ) - { - if ( is_player_valid( e_player ) ) - { - if ( isdefined( e_player.b_already_on_tank ) && !e_player.b_already_on_tank && e_player entity_on_tank() ) - { - e_player.b_already_on_tank = 1; - self.n_players_on++; + foreach ( e_player in a_players ) + { + if ( is_player_valid( e_player ) ) + { + if ( isdefined( e_player.b_already_on_tank ) && !e_player.b_already_on_tank && e_player entity_on_tank() ) + { + e_player.b_already_on_tank = 1; + self.n_players_on++; - if ( self ent_flag( "tank_cooldown" ) ) - level notify( "vo_tank_cooling", e_player ); + if ( self ent_flag( "tank_cooldown" ) ) + level notify( "vo_tank_cooling", e_player ); - e_player thread tank_rumble_update(); - e_player thread tank_rides_around_map_achievement_watcher(); - continue; - } + e_player thread tank_rumble_update(); + e_player thread tank_rides_around_map_achievement_watcher(); + continue; + } - if ( isdefined( e_player.b_already_on_tank ) && e_player.b_already_on_tank && !e_player entity_on_tank() ) - { - e_player.b_already_on_tank = 0; - self.n_players_on--; - level notify( "vo_tank_leave", e_player ); - e_player notify( "player_jumped_off_tank" ); - e_player setclientfieldtoplayer( "player_rumble_and_shake", 0 ); - } - } - } + if ( isdefined( e_player.b_already_on_tank ) && e_player.b_already_on_tank && !e_player entity_on_tank() ) + { + e_player.b_already_on_tank = 0; + self.n_players_on--; + level notify( "vo_tank_leave", e_player ); + e_player notify( "player_jumped_off_tank" ); + e_player setclientfieldtoplayer( "player_rumble_and_shake", 0 ); + } + } + } - wait 0.05; - } + wait 0.05; + } } wait_for_tank_cooldown() { - self thread snd_fuel(); + self thread snd_fuel(); - self.n_cooldown_timer = 30; + self.n_cooldown_timer = 30; - wait( self.n_cooldown_timer ); - level notify( "stp_cd" ); - self playsound( "zmb_tank_ready" ); - self playloopsound( "zmb_tank_idle" ); + wait( self.n_cooldown_timer ); + level notify( "stp_cd" ); + self playsound( "zmb_tank_ready" ); + self playloopsound( "zmb_tank_idle" ); } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_tomb_teleporter.gsc b/scripts/zm/replaced/zm_tomb_teleporter.gsc index ad131b02..3e9375b5 100644 --- a/scripts/zm/replaced/zm_tomb_teleporter.gsc +++ b/scripts/zm/replaced/zm_tomb_teleporter.gsc @@ -13,194 +13,194 @@ teleporter_init() { - registerclientfield( "scriptmover", "teleporter_fx", 14000, 1, "int" ); - precacheshellshock( "lava" ); - level.teleport = []; - level.n_active_links = 0; - level.n_countdown = 0; - level.n_teleport_delay = 0; - level.teleport_cost = 0; - level.n_teleport_cooldown = 0; - level.is_cooldown = 0; - level.n_active_timer = -1; - level.n_teleport_time = 0; - level.a_teleport_models = []; - a_entrance_models = getentarray( "teleport_model", "targetname" ); + registerclientfield( "scriptmover", "teleporter_fx", 14000, 1, "int" ); + precacheshellshock( "lava" ); + level.teleport = []; + level.n_active_links = 0; + level.n_countdown = 0; + level.n_teleport_delay = 0; + level.teleport_cost = 0; + level.n_teleport_cooldown = 0; + level.is_cooldown = 0; + level.n_active_timer = -1; + level.n_teleport_time = 0; + level.a_teleport_models = []; + a_entrance_models = getentarray( "teleport_model", "targetname" ); - foreach ( e_model in a_entrance_models ) - { - e_model useanimtree( #animtree ); - level.a_teleport_models[e_model.script_int] = e_model; - } + foreach ( e_model in a_entrance_models ) + { + e_model useanimtree( #animtree ); + level.a_teleport_models[e_model.script_int] = e_model; + } - array_thread( a_entrance_models, ::teleporter_samantha_chamber_line ); - a_portal_frames = getentarray( "portal_exit_frame", "script_noteworthy" ); - level.a_portal_exit_frames = []; + array_thread( a_entrance_models, ::teleporter_samantha_chamber_line ); + a_portal_frames = getentarray( "portal_exit_frame", "script_noteworthy" ); + level.a_portal_exit_frames = []; - foreach ( e_frame in a_portal_frames ) - { - e_frame useanimtree( #animtree ); - e_frame ghost(); - level.a_portal_exit_frames[e_frame.script_int] = e_frame; - } + foreach ( e_frame in a_portal_frames ) + { + e_frame useanimtree( #animtree ); + e_frame ghost(); + level.a_portal_exit_frames[e_frame.script_int] = e_frame; + } - level.a_teleport_exits = []; - a_exits = getstructarray( "portal_exit", "script_noteworthy" ); + level.a_teleport_exits = []; + a_exits = getstructarray( "portal_exit", "script_noteworthy" ); - foreach ( s_portal in a_exits ) - level.a_teleport_exits[s_portal.script_int] = s_portal; + foreach ( s_portal in a_exits ) + level.a_teleport_exits[s_portal.script_int] = s_portal; - level.a_teleport_exit_triggers = []; - a_trigs = getstructarray( "chamber_exit_trigger", "script_noteworthy" ); + level.a_teleport_exit_triggers = []; + a_trigs = getstructarray( "chamber_exit_trigger", "script_noteworthy" ); - foreach ( s_trig in a_trigs ) - level.a_teleport_exit_triggers[s_trig.script_int] = s_trig; + foreach ( s_trig in a_trigs ) + level.a_teleport_exit_triggers[s_trig.script_int] = s_trig; - a_s_teleporters = getstructarray( "trigger_teleport_pad", "targetname" ); - array_thread( a_s_teleporters, ::run_chamber_entrance_teleporter ); - spawn_stargate_fx_origins(); - root = %root; - i = %fxanim_zom_tomb_portal_open_anim; - i = %fxanim_zom_tomb_portal_collapse_anim; + a_s_teleporters = getstructarray( "trigger_teleport_pad", "targetname" ); + array_thread( a_s_teleporters, ::run_chamber_entrance_teleporter ); + spawn_stargate_fx_origins(); + root = %root; + i = %fxanim_zom_tomb_portal_open_anim; + i = %fxanim_zom_tomb_portal_collapse_anim; } run_chamber_entrance_teleporter() { - self endon( "death" ); - fx_glow = get_teleport_fx_from_enum( self.script_int ); - e_model = level.a_teleport_models[self.script_int]; - self.origin = e_model gettagorigin( "fx_portal_jnt" ); - self.angles = e_model gettagangles( "fx_portal_jnt" ); - self.angles = ( self.angles[0], self.angles[1] + 180, self.angles[2] ); - self.trigger_stub = tomb_spawn_trigger_radius( self.origin - vectorscale( ( 0, 0, 1 ), 30.0 ), 50.0 ); - flag_init( "enable_teleporter_" + self.script_int ); - str_building_flag = "teleporter_building_" + self.script_int; - flag_init( str_building_flag ); - collapse_time = getanimlength( %fxanim_zom_tomb_portal_collapse_anim ); - open_time = getanimlength( %fxanim_zom_tomb_portal_open_anim ); - flag_wait( "start_zombie_round_logic" ); - e_model setanim( %fxanim_zom_tomb_portal_collapse_anim, 1.0, 0.1, 1 ); - wait( collapse_time ); + self endon( "death" ); + fx_glow = get_teleport_fx_from_enum( self.script_int ); + e_model = level.a_teleport_models[self.script_int]; + self.origin = e_model gettagorigin( "fx_portal_jnt" ); + self.angles = e_model gettagangles( "fx_portal_jnt" ); + self.angles = ( self.angles[0], self.angles[1] + 180, self.angles[2] ); + self.trigger_stub = tomb_spawn_trigger_radius( self.origin - vectorscale( ( 0, 0, 1 ), 30.0 ), 50.0 ); + flag_init( "enable_teleporter_" + self.script_int ); + str_building_flag = "teleporter_building_" + self.script_int; + flag_init( str_building_flag ); + collapse_time = getanimlength( %fxanim_zom_tomb_portal_collapse_anim ); + open_time = getanimlength( %fxanim_zom_tomb_portal_open_anim ); + flag_wait( "start_zombie_round_logic" ); + e_model setanim( %fxanim_zom_tomb_portal_collapse_anim, 1.0, 0.1, 1 ); + wait( collapse_time ); - flag_wait( "enable_teleporter_" + self.script_int ); - flag_set( str_building_flag ); + flag_wait( "enable_teleporter_" + self.script_int ); + flag_set( str_building_flag ); - e_model thread whirlwind_rumble_nearby_players( str_building_flag ); - e_model setanim( %fxanim_zom_tomb_portal_open_anim, 1.0, 0.1, 1 ); - e_model playloopsound( "zmb_teleporter_loop_pre", 1 ); + e_model thread whirlwind_rumble_nearby_players( str_building_flag ); + e_model setanim( %fxanim_zom_tomb_portal_open_anim, 1.0, 0.1, 1 ); + e_model playloopsound( "zmb_teleporter_loop_pre", 1 ); - if ( !( isdefined( self.exit_enabled ) && self.exit_enabled ) ) - { - self.exit_enabled = 1; - level thread run_chamber_exit( self.script_int ); - } + if ( !( isdefined( self.exit_enabled ) && self.exit_enabled ) ) + { + self.exit_enabled = 1; + level thread run_chamber_exit( self.script_int ); + } - wait( open_time ); - e_model setanim( %fxanim_zom_tomb_portal_open_1frame_anim, 1.0, 0.1, 1 ); - wait_network_frame(); - e_fx = spawn( "script_model", self.origin ); - e_fx.angles = self.angles; - e_fx setmodel( "tag_origin" ); - e_fx setclientfield( "element_glow_fx", self.script_int + 4 ); - rumble_nearby_players( e_fx.origin, 1000, 2 ); - e_model playloopsound( "zmb_teleporter_loop_post", 1 ); + wait( open_time ); + e_model setanim( %fxanim_zom_tomb_portal_open_1frame_anim, 1.0, 0.1, 1 ); + wait_network_frame(); + e_fx = spawn( "script_model", self.origin ); + e_fx.angles = self.angles; + e_fx setmodel( "tag_origin" ); + e_fx setclientfield( "element_glow_fx", self.script_int + 4 ); + rumble_nearby_players( e_fx.origin, 1000, 2 ); + e_model playloopsound( "zmb_teleporter_loop_post", 1 ); - self thread stargate_teleport_think(); - flag_clear( str_building_flag ); + self thread stargate_teleport_think(); + flag_clear( str_building_flag ); - level notify( "player_teleported", undefined, self.script_int ); + level notify( "player_teleported", undefined, self.script_int ); } run_chamber_exit( n_enum ) { - s_portal = level.a_teleport_exits[n_enum]; - s_activate_pos = level.a_teleport_exit_triggers[n_enum]; - e_portal_frame = level.a_portal_exit_frames[n_enum]; - e_portal_frame show(); - str_building_flag = e_portal_frame.targetname + "_building"; - flag_init( str_building_flag ); - s_activate_pos.trigger_stub = tomb_spawn_trigger_radius( s_activate_pos.origin, 50.0, 1 ); - s_activate_pos.trigger_stub set_unitrigger_hint_string( &"ZM_TOMB_TELE" ); - s_portal.target = s_activate_pos.target; - s_portal.origin = e_portal_frame gettagorigin( "fx_portal_jnt" ); - s_portal.angles = e_portal_frame gettagangles( "fx_portal_jnt" ); - s_portal.angles = ( s_portal.angles[0], s_portal.angles[1] + 180, s_portal.angles[2] ); - str_fx = get_teleport_fx_from_enum( n_enum ); - collapse_time = getanimlength( %fxanim_zom_tomb_portal_collapse_anim ); - open_time = getanimlength( %fxanim_zom_tomb_portal_open_anim ); - flag_wait( "start_zombie_round_logic" ); + s_portal = level.a_teleport_exits[n_enum]; + s_activate_pos = level.a_teleport_exit_triggers[n_enum]; + e_portal_frame = level.a_portal_exit_frames[n_enum]; + e_portal_frame show(); + str_building_flag = e_portal_frame.targetname + "_building"; + flag_init( str_building_flag ); + s_activate_pos.trigger_stub = tomb_spawn_trigger_radius( s_activate_pos.origin, 50.0, 1 ); + s_activate_pos.trigger_stub set_unitrigger_hint_string( &"ZM_TOMB_TELE" ); + s_portal.target = s_activate_pos.target; + s_portal.origin = e_portal_frame gettagorigin( "fx_portal_jnt" ); + s_portal.angles = e_portal_frame gettagangles( "fx_portal_jnt" ); + s_portal.angles = ( s_portal.angles[0], s_portal.angles[1] + 180, s_portal.angles[2] ); + str_fx = get_teleport_fx_from_enum( n_enum ); + collapse_time = getanimlength( %fxanim_zom_tomb_portal_collapse_anim ); + open_time = getanimlength( %fxanim_zom_tomb_portal_open_anim ); + flag_wait( "start_zombie_round_logic" ); - s_activate_pos.trigger_stub set_unitrigger_hint_string( "" ); - s_activate_pos.trigger_stub trigger_off(); + s_activate_pos.trigger_stub set_unitrigger_hint_string( "" ); + s_activate_pos.trigger_stub trigger_off(); - e_portal_frame playloopsound( "zmb_teleporter_loop_pre", 1 ); - e_portal_frame setanim( %fxanim_zom_tomb_portal_open_anim, 1.0, 0.1, 1 ); - flag_set( str_building_flag ); - e_portal_frame thread whirlwind_rumble_nearby_players( str_building_flag ); - wait( open_time ); - e_portal_frame setanim( %fxanim_zom_tomb_portal_open_1frame_anim, 1.0, 0.1, 1 ); - wait_network_frame(); - flag_clear( str_building_flag ); - e_fx = spawn( "script_model", s_portal.origin ); - e_fx.angles = s_portal.angles; - e_fx setmodel( "tag_origin" ); - e_fx setclientfield( "element_glow_fx", n_enum + 4 ); - rumble_nearby_players( e_fx.origin, 1000, 2 ); - e_portal_frame playloopsound( "zmb_teleporter_loop_post", 1 ); - s_portal thread teleporter_radius_think(); + e_portal_frame playloopsound( "zmb_teleporter_loop_pre", 1 ); + e_portal_frame setanim( %fxanim_zom_tomb_portal_open_anim, 1.0, 0.1, 1 ); + flag_set( str_building_flag ); + e_portal_frame thread whirlwind_rumble_nearby_players( str_building_flag ); + wait( open_time ); + e_portal_frame setanim( %fxanim_zom_tomb_portal_open_1frame_anim, 1.0, 0.1, 1 ); + wait_network_frame(); + flag_clear( str_building_flag ); + e_fx = spawn( "script_model", s_portal.origin ); + e_fx.angles = s_portal.angles; + e_fx setmodel( "tag_origin" ); + e_fx setclientfield( "element_glow_fx", n_enum + 4 ); + rumble_nearby_players( e_fx.origin, 1000, 2 ); + e_portal_frame playloopsound( "zmb_teleporter_loop_post", 1 ); + s_portal thread teleporter_radius_think(); } teleporter_radius_think( radius = 120.0 ) { - self endon( "teleporter_radius_stop" ); - radius_sq = radius * radius; + self endon( "teleporter_radius_stop" ); + radius_sq = radius * radius; - while ( true ) - { - a_players = getplayers(); + while ( true ) + { + a_players = getplayers(); - foreach ( e_player in a_players ) - { - dist_sq = distancesquared( e_player.origin, self.origin ); + foreach ( e_player in a_players ) + { + dist_sq = distancesquared( e_player.origin, self.origin ); - if ( !is_true(e_player.divetoprone) && dist_sq < radius_sq && !( isdefined( e_player.teleporting ) && e_player.teleporting ) ) - { - if ( e_player getstance() == "prone" ) - { - e_player setstance( "crouch" ); - } + if ( !is_true(e_player.divetoprone) && dist_sq < radius_sq && !( isdefined( e_player.teleporting ) && e_player.teleporting ) ) + { + if ( e_player getstance() == "prone" ) + { + e_player setstance( "crouch" ); + } - playfx( level._effect["teleport_3p"], self.origin, ( 1, 0, 0 ), ( 0, 0, 1 ) ); - playsoundatposition( "zmb_teleporter_tele_3d", self.origin ); - level thread stargate_teleport_player( self.target, e_player ); - } - } + playfx( level._effect["teleport_3p"], self.origin, ( 1, 0, 0 ), ( 0, 0, 1 ) ); + playsoundatposition( "zmb_teleporter_tele_3d", self.origin ); + level thread stargate_teleport_player( self.target, e_player ); + } + } - wait_network_frame(); - } + wait_network_frame(); + } } stargate_teleport_think() { - self endon( "death" ); - level endon( "disable_teleporter_" + self.script_int ); - e_potal = level.a_teleport_models[self.script_int]; + self endon( "death" ); + level endon( "disable_teleporter_" + self.script_int ); + e_potal = level.a_teleport_models[self.script_int]; - while ( true ) - { - self.trigger_stub waittill( "trigger", e_player ); + while ( true ) + { + self.trigger_stub waittill( "trigger", e_player ); - if ( !is_true(e_player.divetoprone) && !( isdefined( e_player.teleporting ) && e_player.teleporting ) ) - { - if ( e_player getstance() == "prone" ) - { - e_player setstance( "crouch" ); - } + if ( !is_true(e_player.divetoprone) && !( isdefined( e_player.teleporting ) && e_player.teleporting ) ) + { + if ( e_player getstance() == "prone" ) + { + e_player setstance( "crouch" ); + } - playfx( level._effect["teleport_3p"], self.origin, ( 1, 0, 0 ), ( 0, 0, 1 ) ); - playsoundatposition( "zmb_teleporter_tele_3d", self.origin ); - level notify( "player_teleported", e_player, self.script_int ); - level thread stargate_teleport_player( self.target, e_player ); - } - } + playfx( level._effect["teleport_3p"], self.origin, ( 1, 0, 0 ), ( 0, 0, 1 ) ); + playsoundatposition( "zmb_teleporter_tele_3d", self.origin ); + level notify( "player_teleported", e_player, self.script_int ); + level thread stargate_teleport_player( self.target, e_player ); + } + } } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_tomb_utility.gsc b/scripts/zm/replaced/zm_tomb_utility.gsc index d7c28f20..83afc158 100644 --- a/scripts/zm/replaced/zm_tomb_utility.gsc +++ b/scripts/zm/replaced/zm_tomb_utility.gsc @@ -20,203 +20,203 @@ capture_zombie_spawn_init( animname_set = 0 ) { - self.targetname = "capture_zombie_ai"; + self.targetname = "capture_zombie_ai"; - if ( !animname_set ) - self.animname = "zombie"; + if ( !animname_set ) + self.animname = "zombie"; - self.sndname = "capzomb"; + self.sndname = "capzomb"; - if ( isdefined( get_gamemode_var( "pre_init_zombie_spawn_func" ) ) ) - self [[ get_gamemode_var( "pre_init_zombie_spawn_func" ) ]](); + if ( isdefined( get_gamemode_var( "pre_init_zombie_spawn_func" ) ) ) + self [[ get_gamemode_var( "pre_init_zombie_spawn_func" ) ]](); - self thread play_ambient_zombie_vocals(); - self.zmb_vocals_attack = "zmb_vocals_capzomb_attack"; - self.no_damage_points = 1; - self.deathpoints_already_given = 1; - self.ignore_enemy_count = 1; - self.ignoreall = 1; - self.ignoreme = 1; - self.allowdeath = 1; - self.force_gib = 1; - self.is_zombie = 1; - self.has_legs = 1; - self allowedstances( "stand" ); - self.zombie_damaged_by_bar_knockdown = 0; - self.gibbed = 0; - self.head_gibbed = 0; - self.disablearrivals = 1; - self.disableexits = 1; - self.grenadeawareness = 0; - self.badplaceawareness = 0; - self.ignoresuppression = 1; - self.suppressionthreshold = 1; - self.nododgemove = 1; - self.dontshootwhilemoving = 1; - self.pathenemylookahead = 0; - self.badplaceawareness = 0; - self.chatinitialized = 0; - self.a.disablepain = 1; - self disable_react(); + self thread play_ambient_zombie_vocals(); + self.zmb_vocals_attack = "zmb_vocals_capzomb_attack"; + self.no_damage_points = 1; + self.deathpoints_already_given = 1; + self.ignore_enemy_count = 1; + self.ignoreall = 1; + self.ignoreme = 1; + self.allowdeath = 1; + self.force_gib = 1; + self.is_zombie = 1; + self.has_legs = 1; + self allowedstances( "stand" ); + self.zombie_damaged_by_bar_knockdown = 0; + self.gibbed = 0; + self.head_gibbed = 0; + self.disablearrivals = 1; + self.disableexits = 1; + self.grenadeawareness = 0; + self.badplaceawareness = 0; + self.ignoresuppression = 1; + self.suppressionthreshold = 1; + self.nododgemove = 1; + self.dontshootwhilemoving = 1; + self.pathenemylookahead = 0; + self.badplaceawareness = 0; + self.chatinitialized = 0; + self.a.disablepain = 1; + self disable_react(); - if ( isdefined( level.zombie_health ) ) - { - self.maxhealth = level.zombie_health; + if ( isdefined( level.zombie_health ) ) + { + self.maxhealth = level.zombie_health; - if ( isdefined( level.zombie_respawned_health ) && level.zombie_respawned_health.size > 0 ) - { - self.health = level.zombie_respawned_health[0]; - arrayremovevalue( level.zombie_respawned_health, level.zombie_respawned_health[0] ); - } - else - self.health = level.zombie_health; - } - else - { - self.maxhealth = level.zombie_vars["zombie_health_start"]; - self.health = self.maxhealth; - } + if ( isdefined( level.zombie_respawned_health ) && level.zombie_respawned_health.size > 0 ) + { + self.health = level.zombie_respawned_health[0]; + arrayremovevalue( level.zombie_respawned_health, level.zombie_respawned_health[0] ); + } + else + self.health = level.zombie_health; + } + else + { + self.maxhealth = level.zombie_vars["zombie_health_start"]; + self.health = self.maxhealth; + } - self.freezegun_damage = 0; - self.dropweapon = 0; - level thread zombie_death_event( self ); - self set_zombie_run_cycle(); - self thread dug_zombie_think(); - self thread zombie_gib_on_damage(); - self thread zombie_damage_failsafe(); - self thread enemy_death_detection(); + self.freezegun_damage = 0; + self.dropweapon = 0; + level thread zombie_death_event( self ); + self set_zombie_run_cycle(); + self thread dug_zombie_think(); + self thread zombie_gib_on_damage(); + self thread zombie_damage_failsafe(); + self thread enemy_death_detection(); - if ( !isdefined( self.no_eye_glow ) || !self.no_eye_glow ) - { - if ( !( isdefined( self.is_inert ) && self.is_inert ) ) - self thread delayed_zombie_eye_glow(); - } + if ( !isdefined( self.no_eye_glow ) || !self.no_eye_glow ) + { + if ( !( isdefined( self.is_inert ) && self.is_inert ) ) + self thread delayed_zombie_eye_glow(); + } - self.deathfunction = ::zombie_death_animscript; - self.flame_damage_time = 0; - self.meleedamage = 50; - self.no_powerups = 1; - self zombie_history( "zombie_spawn_init -> Spawned = " + self.origin ); - self.thundergun_knockdown_func = level.basic_zombie_thundergun_knockdown; - self.tesla_head_gib_func = ::zombie_tesla_head_gib; - self.team = level.zombie_team; + self.deathfunction = ::zombie_death_animscript; + self.flame_damage_time = 0; + self.meleedamage = 50; + self.no_powerups = 1; + self zombie_history( "zombie_spawn_init -> Spawned = " + self.origin ); + self.thundergun_knockdown_func = level.basic_zombie_thundergun_knockdown; + self.tesla_head_gib_func = ::zombie_tesla_head_gib; + self.team = level.zombie_team; - if ( isdefined( get_gamemode_var( "post_init_zombie_spawn_func" ) ) ) - self [[ get_gamemode_var( "post_init_zombie_spawn_func" ) ]](); + if ( isdefined( get_gamemode_var( "post_init_zombie_spawn_func" ) ) ) + self [[ get_gamemode_var( "post_init_zombie_spawn_func" ) ]](); - self.zombie_init_done = 1; - self notify( "zombie_init_done" ); + self.zombie_init_done = 1; + self notify( "zombie_init_done" ); } update_staff_accessories( n_element_index ) { - cur_weapon = self get_player_melee_weapon(); + cur_weapon = self get_player_melee_weapon(); - if ( !issubstr( cur_weapon, "one_inch_punch" ) ) - { - weapon_to_keep = "knife_zm"; - self.use_staff_melee = 0; + if ( !issubstr( cur_weapon, "one_inch_punch" ) ) + { + weapon_to_keep = "knife_zm"; + self.use_staff_melee = 0; - if ( n_element_index != 0 ) - { - staff_info = maps\mp\zm_tomb_craftables::get_staff_info_from_element_index( n_element_index ); + if ( n_element_index != 0 ) + { + staff_info = maps\mp\zm_tomb_craftables::get_staff_info_from_element_index( n_element_index ); - if ( staff_info.charger.is_charged ) - staff_info = staff_info.upgrade; + if ( staff_info.charger.is_charged ) + staff_info = staff_info.upgrade; - if ( isdefined( staff_info.melee ) ) - { - weapon_to_keep = staff_info.melee; - self.use_staff_melee = 1; - } - } + if ( isdefined( staff_info.melee ) ) + { + weapon_to_keep = staff_info.melee; + self.use_staff_melee = 1; + } + } - melee_changed = 0; + melee_changed = 0; - if ( cur_weapon != weapon_to_keep ) - { - self takeweapon( cur_weapon ); - self giveweapon( weapon_to_keep ); - self set_player_melee_weapon( weapon_to_keep ); - melee_changed = 1; - } - } - else if ( issubstr( cur_weapon, "one_inch_punch" ) && is_true( self.b_punch_upgraded ) ) - { - self.str_punch_element = get_punch_element_from_index(n_element_index); - weapon_to_keep = "one_inch_punch_" + self.str_punch_element + "_zm"; + if ( cur_weapon != weapon_to_keep ) + { + self takeweapon( cur_weapon ); + self giveweapon( weapon_to_keep ); + self set_player_melee_weapon( weapon_to_keep ); + melee_changed = 1; + } + } + else if ( issubstr( cur_weapon, "one_inch_punch" ) && is_true( self.b_punch_upgraded ) ) + { + self.str_punch_element = get_punch_element_from_index(n_element_index); + weapon_to_keep = "one_inch_punch_" + self.str_punch_element + "_zm"; - if ( cur_weapon != weapon_to_keep ) - { - self takeweapon( cur_weapon ); - self giveweapon( weapon_to_keep ); - self set_player_melee_weapon( weapon_to_keep ); - } - } + if ( cur_weapon != weapon_to_keep ) + { + self takeweapon( cur_weapon ); + self giveweapon( weapon_to_keep ); + self set_player_melee_weapon( weapon_to_keep ); + } + } - has_revive = self hasweapon( "staff_revive_zm" ); - has_upgraded_staff = 0; - a_weapons = self getweaponslistprimaries(); - staff_info = maps\mp\zm_tomb_craftables::get_staff_info_from_element_index( n_element_index ); + has_revive = self hasweapon( "staff_revive_zm" ); + has_upgraded_staff = 0; + a_weapons = self getweaponslistprimaries(); + staff_info = maps\mp\zm_tomb_craftables::get_staff_info_from_element_index( n_element_index ); - foreach ( str_weapon in a_weapons ) - { - if ( is_weapon_upgraded_staff( str_weapon ) ) - has_upgraded_staff = 1; - } + foreach ( str_weapon in a_weapons ) + { + if ( is_weapon_upgraded_staff( str_weapon ) ) + has_upgraded_staff = 1; + } - if ( has_revive && !has_upgraded_staff ) - { - self setactionslot( 3, "altmode" ); - self takeweapon( "staff_revive_zm" ); - } - else if ( !has_revive && has_upgraded_staff ) - { - self setactionslot( 3, "weapon", "staff_revive_zm" ); - self giveweapon( "staff_revive_zm" ); + if ( has_revive && !has_upgraded_staff ) + { + self setactionslot( 3, "altmode" ); + self takeweapon( "staff_revive_zm" ); + } + else if ( !has_revive && has_upgraded_staff ) + { + self setactionslot( 3, "weapon", "staff_revive_zm" ); + self giveweapon( "staff_revive_zm" ); - if ( isdefined( staff_info ) && isdefined( staff_info.upgrade.revive_ammo_stock ) ) - { - if ( staff_info.upgrade.revive_ammo_clip < 1 && staff_info.upgrade.revive_ammo_stock >= 1 ) - { - staff_info.upgrade.revive_ammo_clip += 1; - staff_info.upgrade.revive_ammo_stock -= 1; - } + if ( isdefined( staff_info ) && isdefined( staff_info.upgrade.revive_ammo_stock ) ) + { + if ( staff_info.upgrade.revive_ammo_clip < 1 && staff_info.upgrade.revive_ammo_stock >= 1 ) + { + staff_info.upgrade.revive_ammo_clip += 1; + staff_info.upgrade.revive_ammo_stock -= 1; + } - self setweaponammostock( "staff_revive_zm", staff_info.upgrade.revive_ammo_stock ); - self setweaponammoclip( "staff_revive_zm", staff_info.upgrade.revive_ammo_clip ); - } - else - { - self setweaponammostock( "staff_revive_zm", 3 ); - self setweaponammoclip( "staff_revive_zm", 1 ); - } - } + self setweaponammostock( "staff_revive_zm", staff_info.upgrade.revive_ammo_stock ); + self setweaponammoclip( "staff_revive_zm", staff_info.upgrade.revive_ammo_clip ); + } + else + { + self setweaponammostock( "staff_revive_zm", 3 ); + self setweaponammoclip( "staff_revive_zm", 1 ); + } + } } get_punch_element_from_index(ind) { - if ( ind == 1 ) - { - return "fire"; - } - else if ( ind == 2 ) - { - return "air"; - } - else if ( ind == 3 ) - { - return "lightning"; - } - else if ( ind == 4 ) - { - return "ice"; - } + if ( ind == 1 ) + { + return "fire"; + } + else if ( ind == 2 ) + { + return "air"; + } + else if ( ind == 3 ) + { + return "lightning"; + } + else if ( ind == 4 ) + { + return "ice"; + } - return "upgraded"; + return "upgraded"; } check_solo_status() { - level.is_forever_solo_game = 0; + level.is_forever_solo_game = 0; } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_transit_ai_screecher.gsc b/scripts/zm/replaced/zm_transit_ai_screecher.gsc index 34911dbb..94e11dab 100644 --- a/scripts/zm/replaced/zm_transit_ai_screecher.gsc +++ b/scripts/zm/replaced/zm_transit_ai_screecher.gsc @@ -12,66 +12,66 @@ init() { - level.screecher_should_burrow = ::screecher_should_burrow; - level.screecher_should_runaway = ::screecher_should_runaway; - level.screecher_cleanup = ::transit_screecher_cleanup; - level.screecher_init_done = ::screecher_init_done; - level.portals = []; + level.screecher_should_burrow = ::screecher_should_burrow; + level.screecher_should_runaway = ::screecher_should_runaway; + level.screecher_cleanup = ::transit_screecher_cleanup; + level.screecher_init_done = ::screecher_init_done; + level.portals = []; } screecher_init_done() { - self endon( "death" ); + self endon( "death" ); - self.maxhealth = 150; - self.health = self.maxhealth; + self.maxhealth = 150; + self.health = self.maxhealth; - while ( true ) - { - ground_ent = self getgroundent(); + while ( true ) + { + ground_ent = self getgroundent(); - if ( isdefined( ground_ent ) && ground_ent == level.the_bus ) - { - self dodamage( self.health + 666, self.origin ); - } + if ( isdefined( ground_ent ) && ground_ent == level.the_bus ) + { + self dodamage( self.health + 666, self.origin ); + } - wait 0.1; - } + wait 0.1; + } } player_wait_land() { - self endon( "disconnect" ); + self endon( "disconnect" ); - while ( !self isonground() ) - wait 0.1; + while ( !self isonground() ) + wait 0.1; - if ( level.portals.size > 0 ) - { - remove_portal = undefined; + if ( level.portals.size > 0 ) + { + remove_portal = undefined; - foreach ( portal in level.portals ) - { - dist_sq = distance2dsquared( self.origin, portal.origin ); + foreach ( portal in level.portals ) + { + dist_sq = distance2dsquared( self.origin, portal.origin ); - if ( dist_sq < 4096 ) - { - remove_portal = portal; - break; - } - } + if ( dist_sq < 4096 ) + { + remove_portal = portal; + break; + } + } - if ( isdefined( remove_portal ) ) - { - portal portal_use( self ); - wait 0.5; - } - } + if ( isdefined( remove_portal ) ) + { + portal portal_use( self ); + wait 0.5; + } + } } portal_use( player ) { - player playsoundtoplayer( "zmb_screecher_portal_warp_2d", player ); - self thread teleport_player( player ); - playsoundatposition( "zmb_screecher_portal_end", self.hole.origin ); + player playsoundtoplayer( "zmb_screecher_portal_warp_2d", player ); + self thread teleport_player( player ); + playsoundatposition( "zmb_screecher_portal_end", self.hole.origin ); } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_transit_bus.gsc b/scripts/zm/replaced/zm_transit_bus.gsc index fbfbcb61..57efe825 100644 --- a/scripts/zm/replaced/zm_transit_bus.gsc +++ b/scripts/zm/replaced/zm_transit_bus.gsc @@ -25,725 +25,725 @@ bussetup() { - flag_init( "ladder_attached" ); - flag_init( "catcher_attached" ); - flag_init( "hatch_attached" ); - self.immediatespeed = 0; - self.currentspeed = 0; - self.targetspeed = 0; - self.ismoving = 0; - self.isstopping = 0; - self.gas = 100; - self.accel = 20; - self.decel = 60; - self.radius = 88; - self.height = 240; - self.frontdist = 340; - self.backdist = 55; - self.floor = 36; - self.frontlocal = ( self.frontdist - self.radius / 2.0, 0, 0 ); - self.backlocal = ( self.backdist * -1 + self.radius / 2.0, 0, 0 ); - self.drivepath = 0; - self.zone = "zone_pri"; - self.roadzone = self.zone; - self.zombiesinside = 0; - self.zombiesatwindow = 0; - self.zombiesonroof = 0; - self.numplayers = 0; - self.numplayerson = 0; - self.numplayersonroof = 0; - self.numplayersinsidebus = 0; - self.numplayersnear = 0; - self.numaliveplayersridingbus = 0; - self.numflattires = 0; - self.doorsclosed = 1; - self.doorsdisabledfortime = 0; - self.stalled = 0; - self.issafe = 1; - self.waittimeatdestination = 0; - self.gracetimeatdestination = 10; - self.path_blocking = 0; - self.chase_pos = self.origin; - self.chase_pos_time = 0; - self.istouchingignorewindowsvolume = 0; - level.zm_mantle_over_40_move_speed_override = ::zm_mantle_over_40_move_speed_override; - self setmovingplatformenabled( 1 ); - self.supportsanimscripted = 1; - self setvehmaxspeed( 50 ); - self useanimtree( #animtree ); - level.callbackactordamage = ::transit_actor_damage_override_wrapper; - self maps\mp\zm_transit_automaton::main(); - maps\mp\zm_transit_cling::initializecling(); - self maps\mp\zm_transit_openings::main(); - self bus_upgrades(); - self thread busplowsetup(); - self buslightssetup(); - self busdoorssetup(); - self buspathblockersetup(); - self bussetupbounds(); - self bus_roof_watch(); - self bus_set_nodes(); - self bus_set_exit_triggers(); - self thread bus_audio_setup(); - level thread init_bus_door_anims(); - level thread init_bus_props_anims(); - self thread bususeanimtree(); - self thread bususedoor( 0 ); - self thread busidledoor(); - self thread play_lava_audio(); - self thread busthink(); - self thread busopeningscene(); - busschedule(); - self thread busschedulethink(); - self thread bus_bridge_speedcontrol(); - self.door_nodes_linked = 1; - self thread bussetdoornodes( 0 ); + flag_init( "ladder_attached" ); + flag_init( "catcher_attached" ); + flag_init( "hatch_attached" ); + self.immediatespeed = 0; + self.currentspeed = 0; + self.targetspeed = 0; + self.ismoving = 0; + self.isstopping = 0; + self.gas = 100; + self.accel = 20; + self.decel = 60; + self.radius = 88; + self.height = 240; + self.frontdist = 340; + self.backdist = 55; + self.floor = 36; + self.frontlocal = ( self.frontdist - self.radius / 2.0, 0, 0 ); + self.backlocal = ( self.backdist * -1 + self.radius / 2.0, 0, 0 ); + self.drivepath = 0; + self.zone = "zone_pri"; + self.roadzone = self.zone; + self.zombiesinside = 0; + self.zombiesatwindow = 0; + self.zombiesonroof = 0; + self.numplayers = 0; + self.numplayerson = 0; + self.numplayersonroof = 0; + self.numplayersinsidebus = 0; + self.numplayersnear = 0; + self.numaliveplayersridingbus = 0; + self.numflattires = 0; + self.doorsclosed = 1; + self.doorsdisabledfortime = 0; + self.stalled = 0; + self.issafe = 1; + self.waittimeatdestination = 0; + self.gracetimeatdestination = 10; + self.path_blocking = 0; + self.chase_pos = self.origin; + self.chase_pos_time = 0; + self.istouchingignorewindowsvolume = 0; + level.zm_mantle_over_40_move_speed_override = ::zm_mantle_over_40_move_speed_override; + self setmovingplatformenabled( 1 ); + self.supportsanimscripted = 1; + self setvehmaxspeed( 50 ); + self useanimtree( #animtree ); + level.callbackactordamage = ::transit_actor_damage_override_wrapper; + self maps\mp\zm_transit_automaton::main(); + maps\mp\zm_transit_cling::initializecling(); + self maps\mp\zm_transit_openings::main(); + self bus_upgrades(); + self thread busplowsetup(); + self buslightssetup(); + self busdoorssetup(); + self buspathblockersetup(); + self bussetupbounds(); + self bus_roof_watch(); + self bus_set_nodes(); + self bus_set_exit_triggers(); + self thread bus_audio_setup(); + level thread init_bus_door_anims(); + level thread init_bus_props_anims(); + self thread bususeanimtree(); + self thread bususedoor( 0 ); + self thread busidledoor(); + self thread play_lava_audio(); + self thread busthink(); + self thread busopeningscene(); + busschedule(); + self thread busschedulethink(); + self thread bus_bridge_speedcontrol(); + self.door_nodes_linked = 1; + self thread bussetdoornodes( 0 ); } busscheduleadd( stopname, isambush, maxwaittimebeforeleaving, busspeedleaving, gasusage ) { - assert( isdefined( stopname ) ); - assert( isdefined( isambush ) ); - assert( isdefined( maxwaittimebeforeleaving ) ); - assert( isdefined( busspeedleaving ) ); - destinationindex = self.destinations.size; - self.destinations[destinationindex] = spawnstruct(); - self.destinations[destinationindex].name = stopname; - self.destinations[destinationindex].isambush = isambush; - self.destinations[destinationindex].maxwaittimebeforeleaving = maxwaittimebeforeleaving; - self.destinations[destinationindex].busspeedleaving = busspeedleaving * 2; - self.destinations[destinationindex].gasusage = gasusage; + assert( isdefined( stopname ) ); + assert( isdefined( isambush ) ); + assert( isdefined( maxwaittimebeforeleaving ) ); + assert( isdefined( busspeedleaving ) ); + destinationindex = self.destinations.size; + self.destinations[destinationindex] = spawnstruct(); + self.destinations[destinationindex].name = stopname; + self.destinations[destinationindex].isambush = isambush; + self.destinations[destinationindex].maxwaittimebeforeleaving = maxwaittimebeforeleaving; + self.destinations[destinationindex].busspeedleaving = busspeedleaving * 2; + self.destinations[destinationindex].gasusage = gasusage; } busschedulethink() { - self endon( "death" ); + self endon( "death" ); - while ( true ) - { - self waittill( "noteworthy", noteworthy, noteworthynode ); + while ( true ) + { + self waittill( "noteworthy", noteworthy, noteworthynode ); - zoneisempty = 1; - shouldremovegas = 0; - destinationindex = level.busschedule busschedulegetdestinationindex( noteworthy ); + zoneisempty = 1; + shouldremovegas = 0; + destinationindex = level.busschedule busschedulegetdestinationindex( noteworthy ); - if ( !isdefined( destinationindex ) || !isdefined( noteworthynode ) ) - { - continue; - } + if ( !isdefined( destinationindex ) || !isdefined( noteworthynode ) ) + { + continue; + } - self.destinationindex = destinationindex; - self.waittimeatdestination = level.busschedule busschedulegetmaxwaittimebeforeleaving( self.destinationindex ); - self.currentnode = noteworthynode; - targetspeed = level.busschedule busschedulegetbusspeedleaving( self.destinationindex ); + self.destinationindex = destinationindex; + self.waittimeatdestination = level.busschedule busschedulegetmaxwaittimebeforeleaving( self.destinationindex ); + self.currentnode = noteworthynode; + targetspeed = level.busschedule busschedulegetbusspeedleaving( self.destinationindex ); - foreach ( zone in level.zones ) - { - if ( !isdefined( zone.volumes ) || zone.volumes.size == 0 ) - continue; + foreach ( zone in level.zones ) + { + if ( !isdefined( zone.volumes ) || zone.volumes.size == 0 ) + continue; - zonename = zone.volumes[0].targetname; + zonename = zone.volumes[0].targetname; - if ( self maps\mp\zombies\_zm_zonemgr::entity_in_zone( zonename ) ) - { - self.zone = zonename; - zonestocheck = []; - zonestocheck[zonestocheck.size] = zonename; + if ( self maps\mp\zombies\_zm_zonemgr::entity_in_zone( zonename ) ) + { + self.zone = zonename; + zonestocheck = []; + zonestocheck[zonestocheck.size] = zonename; - switch ( zonename ) - { - case "zone_station_ext": - zonestocheck[zonestocheck.size] = "zone_trans_1"; - zonestocheck[zonestocheck.size] = "zone_pri"; - zonestocheck[zonestocheck.size] = "zone_pri2"; - zonestocheck[zonestocheck.size] = "zone_amb_bridge"; - zonestocheck[zonestocheck.size] = "zone_trans_2b"; - break; - case "zone_gas": - zonestocheck[zonestocheck.size] = "zone_trans_2"; - zonestocheck[zonestocheck.size] = "zone_amb_tunnel"; - zonestocheck[zonestocheck.size] = "zone_gar"; - zonestocheck[zonestocheck.size] = "zone_trans_diner"; - zonestocheck[zonestocheck.size] = "zone_trans_diner2"; - zonestocheck[zonestocheck.size] = "zone_diner_roof"; - zonestocheck[zonestocheck.size] = "zone_din"; - zonestocheck[zonestocheck.size] = "zone_roadside_west"; - zonestocheck[zonestocheck.size] = "zone_roadside_east"; - zonestocheck[zonestocheck.size] = "zone_trans_3"; - break; - case "zone_far": - zonestocheck[zonestocheck.size] = "zone_amb_forest"; - zonestocheck[zonestocheck.size] = "zone_far_ext"; - zonestocheck[zonestocheck.size] = "zone_farm_house"; - zonestocheck[zonestocheck.size] = "zone_brn"; - zonestocheck[zonestocheck.size] = "zone_trans_5"; - zonestocheck[zonestocheck.size] = "zone_trans_6"; - break; - case "zone_pow": - zonestocheck[zonestocheck.size] = "zone_trans_6"; - zonestocheck[zonestocheck.size] = "zone_amb_cornfield"; - zonestocheck[zonestocheck.size] = "zone_trans_7"; - zonestocheck[zonestocheck.size] = "zone_pow_ext1"; - zonestocheck[zonestocheck.size] = "zone_prr"; - zonestocheck[zonestocheck.size] = "zone_pcr"; - zonestocheck[zonestocheck.size] = "zone_pow_warehouse"; - break; - case "zone_town_north": - zonestocheck[zonestocheck.size] = "zone_trans_8"; - zonestocheck[zonestocheck.size] = "zone_amb_power2town"; - zonestocheck[zonestocheck.size] = "zone_tbu"; - zonestocheck[zonestocheck.size] = "zone_town_church"; - zonestocheck[zonestocheck.size] = "zone_bar"; - zonestocheck[zonestocheck.size] = "zone_town_east"; - zonestocheck[zonestocheck.size] = "zone_tow"; - zonestocheck[zonestocheck.size] = "zone_ban"; - zonestocheck[zonestocheck.size] = "zone_ban_vault"; - zonestocheck[zonestocheck.size] = "zone_town_west"; - zonestocheck[zonestocheck.size] = "zone_town_west2"; - zonestocheck[zonestocheck.size] = "zone_town_barber"; - zonestocheck[zonestocheck.size] = "zone_town_south"; - zonestocheck[zonestocheck.size] = "zone_trans_9"; - break; - } + switch ( zonename ) + { + case "zone_station_ext": + zonestocheck[zonestocheck.size] = "zone_trans_1"; + zonestocheck[zonestocheck.size] = "zone_pri"; + zonestocheck[zonestocheck.size] = "zone_pri2"; + zonestocheck[zonestocheck.size] = "zone_amb_bridge"; + zonestocheck[zonestocheck.size] = "zone_trans_2b"; + break; + case "zone_gas": + zonestocheck[zonestocheck.size] = "zone_trans_2"; + zonestocheck[zonestocheck.size] = "zone_amb_tunnel"; + zonestocheck[zonestocheck.size] = "zone_gar"; + zonestocheck[zonestocheck.size] = "zone_trans_diner"; + zonestocheck[zonestocheck.size] = "zone_trans_diner2"; + zonestocheck[zonestocheck.size] = "zone_diner_roof"; + zonestocheck[zonestocheck.size] = "zone_din"; + zonestocheck[zonestocheck.size] = "zone_roadside_west"; + zonestocheck[zonestocheck.size] = "zone_roadside_east"; + zonestocheck[zonestocheck.size] = "zone_trans_3"; + break; + case "zone_far": + zonestocheck[zonestocheck.size] = "zone_amb_forest"; + zonestocheck[zonestocheck.size] = "zone_far_ext"; + zonestocheck[zonestocheck.size] = "zone_farm_house"; + zonestocheck[zonestocheck.size] = "zone_brn"; + zonestocheck[zonestocheck.size] = "zone_trans_5"; + zonestocheck[zonestocheck.size] = "zone_trans_6"; + break; + case "zone_pow": + zonestocheck[zonestocheck.size] = "zone_trans_6"; + zonestocheck[zonestocheck.size] = "zone_amb_cornfield"; + zonestocheck[zonestocheck.size] = "zone_trans_7"; + zonestocheck[zonestocheck.size] = "zone_pow_ext1"; + zonestocheck[zonestocheck.size] = "zone_prr"; + zonestocheck[zonestocheck.size] = "zone_pcr"; + zonestocheck[zonestocheck.size] = "zone_pow_warehouse"; + break; + case "zone_town_north": + zonestocheck[zonestocheck.size] = "zone_trans_8"; + zonestocheck[zonestocheck.size] = "zone_amb_power2town"; + zonestocheck[zonestocheck.size] = "zone_tbu"; + zonestocheck[zonestocheck.size] = "zone_town_church"; + zonestocheck[zonestocheck.size] = "zone_bar"; + zonestocheck[zonestocheck.size] = "zone_town_east"; + zonestocheck[zonestocheck.size] = "zone_tow"; + zonestocheck[zonestocheck.size] = "zone_ban"; + zonestocheck[zonestocheck.size] = "zone_ban_vault"; + zonestocheck[zonestocheck.size] = "zone_town_west"; + zonestocheck[zonestocheck.size] = "zone_town_west2"; + zonestocheck[zonestocheck.size] = "zone_town_barber"; + zonestocheck[zonestocheck.size] = "zone_town_south"; + zonestocheck[zonestocheck.size] = "zone_trans_9"; + break; + } - foreach ( zone in zonestocheck ) - { - if ( !( isdefined( zoneisempty ) && zoneisempty ) ) - continue; + foreach ( zone in zonestocheck ) + { + if ( !( isdefined( zoneisempty ) && zoneisempty ) ) + continue; - if ( maps\mp\zombies\_zm_zonemgr::player_in_zone( zone ) ) - { - zoneisempty = 0; - } - } + if ( maps\mp\zombies\_zm_zonemgr::player_in_zone( zone ) ) + { + zoneisempty = 0; + } + } - if ( isdefined( zoneisempty ) && zoneisempty ) - { - continue; - } - } - } + if ( isdefined( zoneisempty ) && zoneisempty ) + { + continue; + } + } + } - if ( isdefined( shouldremovegas ) && shouldremovegas ) - self busgasremove( level.busschedule busschedulegetbusgasusage( self.destinationindex ) ); + if ( isdefined( shouldremovegas ) && shouldremovegas ) + self busgasremove( level.busschedule busschedulegetbusgasusage( self.destinationindex ) ); - if ( isdefined( zoneisempty ) && zoneisempty ) - { - self busstartmoving( targetspeed ); - continue; - } + if ( isdefined( zoneisempty ) && zoneisempty ) + { + self busstartmoving( targetspeed ); + continue; + } - if ( isdefined( self.skip_next_destination ) && self.skip_next_destination ) - { - self notify( "skipping_destination" ); - self busstartmoving( targetspeed ); - continue; - } + if ( isdefined( self.skip_next_destination ) && self.skip_next_destination ) + { + self notify( "skipping_destination" ); + self busstartmoving( targetspeed ); + continue; + } - if ( level.busschedule busschedulegetisambushstop( self.destinationindex ) ) - { - if ( maps\mp\zm_transit_ambush::shouldstartambushround() && self.numplayersinsidebus != 0 ) - { - self busstopmoving( 1 ); - level.nml_zone_name = "zone_amb_" + noteworthy; - thread maps\mp\zm_transit_ambush::ambushstartround(); - thread automatonspeak( "inform", "out_of_gas" ); - flag_waitopen( "ambush_round" ); - shouldremovegas = 1; - thread automatonspeak( "inform", "refueled_gas" ); - } - else - { - continue; - } - } - else - { - self notify( "reached_destination" ); - shouldremovegas = 1; - thread do_automaton_arrival_vox( noteworthy ); + if ( level.busschedule busschedulegetisambushstop( self.destinationindex ) ) + { + if ( maps\mp\zm_transit_ambush::shouldstartambushround() && self.numplayersinsidebus != 0 ) + { + self busstopmoving( 1 ); + level.nml_zone_name = "zone_amb_" + noteworthy; + thread maps\mp\zm_transit_ambush::ambushstartround(); + thread automatonspeak( "inform", "out_of_gas" ); + flag_waitopen( "ambush_round" ); + shouldremovegas = 1; + thread automatonspeak( "inform", "refueled_gas" ); + } + else + { + continue; + } + } + else + { + self notify( "reached_destination" ); + shouldremovegas = 1; + thread do_automaton_arrival_vox( noteworthy ); - if ( noteworthy == "diner" || noteworthy == "town" || noteworthy == "power" ) - { - self busstopmoving( 1 ); + if ( noteworthy == "diner" || noteworthy == "town" || noteworthy == "power" ) + { + self busstopmoving( 1 ); - if ( noteworthy == "diner" ) - self bussetdineropenings( 0 ); - else if ( noteworthy == "power" ) - self bussetpoweropenings( 0 ); - else if ( noteworthy == "town" ) - self bussettownopenings( 0 ); - } - else - self busstopmoving(); + if ( noteworthy == "diner" ) + self bussetdineropenings( 0 ); + else if ( noteworthy == "power" ) + self bussetpoweropenings( 0 ); + else if ( noteworthy == "town" ) + self bussettownopenings( 0 ); + } + else + self busstopmoving(); - self thread busscheduledepartearly(); - } + self thread busscheduledepartearly(); + } - waittimeatdestination = self.waittimeatdestination; + waittimeatdestination = self.waittimeatdestination; - self thread busshowleavinghud( waittimeatdestination ); + self thread busshowleavinghud( waittimeatdestination ); - self waittill_any_timeout( waittimeatdestination, "depart_early" ); + self waittill_any_timeout( waittimeatdestination, "depart_early" ); - self notify( "ready_to_depart" ); - self thread buslightsflash(); - self thread buslightsignal( "turn_signal_left" ); - thread automatonspeak( "inform", "leaving_warning" ); - self thread play_bus_audio( "grace" ); - wait( self.gracetimeatdestination ); - thread automatonspeak( "inform", "leaving" ); - self.accel = 2; - self busstartmoving( targetspeed ); - self notify( "departing" ); - self setclientfield( "bus_flashing_lights", 0 ); - } + self notify( "ready_to_depart" ); + self thread buslightsflash(); + self thread buslightsignal( "turn_signal_left" ); + thread automatonspeak( "inform", "leaving_warning" ); + self thread play_bus_audio( "grace" ); + wait( self.gracetimeatdestination ); + thread automatonspeak( "inform", "leaving" ); + self.accel = 2; + self busstartmoving( targetspeed ); + self notify( "departing" ); + self setclientfield( "bus_flashing_lights", 0 ); + } } busshowleavinghud( time ) { - self endon("depart_early"); + self endon("depart_early"); - self thread busshowleavinghud_destroy_on_depart_early(); + self thread busshowleavinghud_destroy_on_depart_early(); - while (time > 0) - { - players = get_players(); - foreach (player in players) - { - if (!isDefined(player.busleavehud)) - { - hud = newclienthudelem( player ); - hud.alignx = "center"; - hud.aligny = "middle"; - hud.horzalign = "center"; - hud.vertalign = "bottom"; - hud.y = -75; - hud.foreground = 1; - hud.hidewheninmenu = 1; - hud.font = "default"; - hud.fontscale = 1; - hud.alpha = 1; - hud.color = ( 1, 1, 1 ); - hud.label = &"Bus departs in: "; - hud setTimer( time ); - player.busleavehud = hud; - } + while (time > 0) + { + players = get_players(); + foreach (player in players) + { + if (!isDefined(player.busleavehud)) + { + hud = newclienthudelem( player ); + hud.alignx = "center"; + hud.aligny = "middle"; + hud.horzalign = "center"; + hud.vertalign = "bottom"; + hud.y = -75; + hud.foreground = 1; + hud.hidewheninmenu = 1; + hud.font = "default"; + hud.fontscale = 1; + hud.alpha = 1; + hud.color = ( 1, 1, 1 ); + hud.label = &"Bus departs in: "; + hud setTimer( time ); + player.busleavehud = hud; + } - if (!is_true(player.isonbus)) - { - player.busleavehud.alpha = 0; - } - else - { - player.busleavehud.alpha = 1; - } - } + if (!is_true(player.isonbus)) + { + player.busleavehud.alpha = 0; + } + else + { + player.busleavehud.alpha = 1; + } + } - time -= 0.05; - wait 0.05; - } + time -= 0.05; + wait 0.05; + } - players = get_players(); - foreach (player in players) - { - if (isDefined(player.busleavehud)) - { - player.busleavehud destroy(); - player.busleavehud = undefined; - } - } + players = get_players(); + foreach (player in players) + { + if (isDefined(player.busleavehud)) + { + player.busleavehud destroy(); + player.busleavehud = undefined; + } + } } busshowleavinghud_destroy_on_depart_early() { - self waittill("depart_early"); + self waittill("depart_early"); - players = get_players(); - foreach (player in players) - { - if (isDefined(player.busleavehud)) - { - player.busleavehud destroy(); - player.busleavehud = undefined; - } - } + players = get_players(); + foreach (player in players) + { + if (isDefined(player.busleavehud)) + { + player.busleavehud destroy(); + player.busleavehud = undefined; + } + } } bus_bridge_speedcontrol() { - while ( true ) - { - self waittill( "reached_node", nextpoint ); + while ( true ) + { + self waittill( "reached_node", nextpoint ); - if ( isdefined( nextpoint.script_string ) ) - { - if (nextpoint.script_string == "map_out_tunnel" || nextpoint.script_string == "map_out_1forest" || nextpoint.script_string == "map_out_corn" || nextpoint.script_string == "map_out_2forest" || nextpoint.script_string == "map_out_bridge") - { - self setspeed( self.targetspeed / 2, 10, 10 ); - } - } + if ( isdefined( nextpoint.script_string ) ) + { + if (nextpoint.script_string == "map_out_tunnel" || nextpoint.script_string == "map_out_1forest" || nextpoint.script_string == "map_out_corn" || nextpoint.script_string == "map_out_2forest" || nextpoint.script_string == "map_out_bridge") + { + self setspeed( self.targetspeed / 2, 10, 10 ); + } + } - if ( isdefined( nextpoint.script_string ) ) - { - if ( nextpoint.script_string == "arrival_slowdown" ) - self thread start_stopping_bus(); + if ( isdefined( nextpoint.script_string ) ) + { + if ( nextpoint.script_string == "arrival_slowdown" ) + self thread start_stopping_bus(); - if ( nextpoint.script_string == "arrival_slowdown_fast" ) - self thread start_stopping_bus( 1 ); - } + if ( nextpoint.script_string == "arrival_slowdown_fast" ) + self thread start_stopping_bus( 1 ); + } - if ( isdefined( nextpoint.script_noteworthy ) ) - { - if ( nextpoint.script_noteworthy == "slow_down" ) - { - self.targetspeed = 20; + if ( isdefined( nextpoint.script_noteworthy ) ) + { + if ( nextpoint.script_noteworthy == "slow_down" ) + { + self.targetspeed = 20; - if ( isdefined( nextpoint.script_float ) ) - { - self.targetspeed = nextpoint.script_float * 2; - } + if ( isdefined( nextpoint.script_float ) ) + { + self.targetspeed = nextpoint.script_float * 2; + } - self setspeed( self.targetspeed, 160, 10 ); - } - else if ( nextpoint.script_noteworthy == "turn_signal_left" || nextpoint.script_noteworthy == "turn_signal_right" ) - self thread buslightsignal( nextpoint.script_noteworthy ); - else if ( nextpoint.script_noteworthy == "resume_speed" ) - { - self.targetspeed = 24; + self setspeed( self.targetspeed, 160, 10 ); + } + else if ( nextpoint.script_noteworthy == "turn_signal_left" || nextpoint.script_noteworthy == "turn_signal_right" ) + self thread buslightsignal( nextpoint.script_noteworthy ); + else if ( nextpoint.script_noteworthy == "resume_speed" ) + { + self.targetspeed = 24; - if ( isdefined( nextpoint.script_float ) ) - { - self.targetspeed = nextpoint.script_float * 2; - } + if ( isdefined( nextpoint.script_float ) ) + { + self.targetspeed = nextpoint.script_float * 2; + } - self setspeed( self.targetspeed, 120, 120 ); - } - else if ( nextpoint.script_noteworthy == "emp_stop_point" ) - self notify( "reached_emp_stop_point" ); - else if ( nextpoint.script_noteworthy == "start_lava" ) - playfxontag( level._effect["bus_lava_driving"], self, "tag_origin" ); - else if ( nextpoint.script_noteworthy == "stop_lava" ) - { + self setspeed( self.targetspeed, 120, 120 ); + } + else if ( nextpoint.script_noteworthy == "emp_stop_point" ) + self notify( "reached_emp_stop_point" ); + else if ( nextpoint.script_noteworthy == "start_lava" ) + playfxontag( level._effect["bus_lava_driving"], self, "tag_origin" ); + else if ( nextpoint.script_noteworthy == "stop_lava" ) + { - } - else if ( nextpoint.script_noteworthy == "bus_scrape" ) - self playsound( "zmb_bus_car_scrape" ); - else if ( nextpoint.script_noteworthy == "arriving" ) - { - self thread begin_arrival_slowdown(); - self thread play_bus_audio( "arriving" ); - level thread do_player_bus_zombie_vox( "bus_stop", 10 ); - self thread buslightsignal( "turn_signal_right" ); - } - else if ( nextpoint.script_noteworthy == "enter_transition" ) - playfxontag( level._effect["fx_zbus_trans_fog"], self, "tag_headlights" ); - else if ( nextpoint.script_noteworthy == "bridge" ) - { - level thread do_automaton_arrival_vox( "bridge" ); - player_near = 0; - node = getvehiclenode( "bridge_accel_point", "script_noteworthy" ); + } + else if ( nextpoint.script_noteworthy == "bus_scrape" ) + self playsound( "zmb_bus_car_scrape" ); + else if ( nextpoint.script_noteworthy == "arriving" ) + { + self thread begin_arrival_slowdown(); + self thread play_bus_audio( "arriving" ); + level thread do_player_bus_zombie_vox( "bus_stop", 10 ); + self thread buslightsignal( "turn_signal_right" ); + } + else if ( nextpoint.script_noteworthy == "enter_transition" ) + playfxontag( level._effect["fx_zbus_trans_fog"], self, "tag_headlights" ); + else if ( nextpoint.script_noteworthy == "bridge" ) + { + level thread do_automaton_arrival_vox( "bridge" ); + player_near = 0; + node = getvehiclenode( "bridge_accel_point", "script_noteworthy" ); - if ( isdefined( node ) ) - { - players = get_players(); + if ( isdefined( node ) ) + { + players = get_players(); - foreach ( player in players ) - { - if ( player.isonbus ) - continue; + foreach ( player in players ) + { + if ( player.isonbus ) + continue; - if ( distancesquared( player.origin, node.origin ) < 6760000 ) - player_near = 1; - } - } + if ( distancesquared( player.origin, node.origin ) < 6760000 ) + player_near = 1; + } + } - if ( player_near ) - { - trig = getent( "bridge_trig", "targetname" ); - trig notify( "trigger" ); - } - } - else if ( nextpoint.script_noteworthy == "depot" ) - { - volume = getent( "depot_lava_pit", "targetname" ); - traverse_volume = getent( "depot_pit_traverse", "targetname" ); + if ( player_near ) + { + trig = getent( "bridge_trig", "targetname" ); + trig notify( "trigger" ); + } + } + else if ( nextpoint.script_noteworthy == "depot" ) + { + volume = getent( "depot_lava_pit", "targetname" ); + traverse_volume = getent( "depot_pit_traverse", "targetname" ); - if ( isdefined( volume ) ) - { - zombies = getaiarray( level.zombie_team ); + if ( isdefined( volume ) ) + { + zombies = getaiarray( level.zombie_team ); - for ( i = 0; i < zombies.size; i++ ) - { - if ( isdefined( zombies[i].depot_lava_pit ) ) - { - if ( zombies[i] istouching( volume ) ) - zombies[i] thread [[ zombies[i].depot_lava_pit ]](); + for ( i = 0; i < zombies.size; i++ ) + { + if ( isdefined( zombies[i].depot_lava_pit ) ) + { + if ( zombies[i] istouching( volume ) ) + zombies[i] thread [[ zombies[i].depot_lava_pit ]](); - continue; - } + continue; + } - if ( zombies[i] istouching( volume ) ) - { - zombies[i] dodamage( zombies[i].health + 100, zombies[i].origin ); - continue; - } + if ( zombies[i] istouching( volume ) ) + { + zombies[i] dodamage( zombies[i].health + 100, zombies[i].origin ); + continue; + } - if ( zombies[i] istouching( traverse_volume ) ) - zombies[i] dodamage( zombies[i].health + 100, zombies[i].origin ); - } - } - } - } + if ( zombies[i] istouching( traverse_volume ) ) + zombies[i] dodamage( zombies[i].health + 100, zombies[i].origin ); + } + } + } + } - waittillframeend; - } + waittillframeend; + } } start_stopping_bus( stop_fast ) { - if ( isdefined( stop_fast ) && stop_fast ) - self setspeed( 4, 30 ); - else - self setspeed( 4, 10 ); + if ( isdefined( stop_fast ) && stop_fast ) + self setspeed( 4, 30 ); + else + self setspeed( 4, 10 ); } begin_arrival_slowdown() { - self setspeed( 10, 10, 10 ); + self setspeed( 10, 10, 10 ); } buspathblockersetup() { - self.path_blockers = getentarray( "bus_path_blocker", "targetname" ); + self.path_blockers = getentarray( "bus_path_blocker", "targetname" ); - for ( i = 0; i < self.path_blockers.size; i++ ) - self.path_blockers[i] linkto( self, "", self worldtolocalcoords( self.path_blockers[i].origin ), self.path_blockers[i].angles + self.angles ); + for ( i = 0; i < self.path_blockers.size; i++ ) + self.path_blockers[i] linkto( self, "", self worldtolocalcoords( self.path_blockers[i].origin ), self.path_blockers[i].angles + self.angles ); - cow_catcher_blocker = getent( "cow_catcher_path_blocker", "targetname" ); + cow_catcher_blocker = getent( "cow_catcher_path_blocker", "targetname" ); - if ( isdefined( cow_catcher_blocker ) ) - cow_catcher_blocker linkto( self, "", self worldtolocalcoords( cow_catcher_blocker.origin ), cow_catcher_blocker.angles + self.angles ); + if ( isdefined( cow_catcher_blocker ) ) + cow_catcher_blocker linkto( self, "", self worldtolocalcoords( cow_catcher_blocker.origin ), cow_catcher_blocker.angles + self.angles ); - trig = getent( "bus_buyable_weapon1", "script_noteworthy" ); - trig enablelinkto(); - trig linkto( self, "", self worldtolocalcoords( trig.origin ), ( 0, 0, 0 ) ); - trig setinvisibletoall(); - self.buyable_weapon = trig; - level._spawned_wallbuys[level._spawned_wallbuys.size] = trig; - weapon_model = getent( trig.target, "targetname" ); - weapon_model.origin += (0, 0, 1); - weapon_model linkto( self, "", self worldtolocalcoords( weapon_model.origin ), weapon_model.angles + self.angles ); - weapon_model setmovingplatformenabled( 1 ); - weapon_model._linked_ent = trig; - weapon_model hide(); + trig = getent( "bus_buyable_weapon1", "script_noteworthy" ); + trig enablelinkto(); + trig linkto( self, "", self worldtolocalcoords( trig.origin ), ( 0, 0, 0 ) ); + trig setinvisibletoall(); + self.buyable_weapon = trig; + level._spawned_wallbuys[level._spawned_wallbuys.size] = trig; + weapon_model = getent( trig.target, "targetname" ); + weapon_model.origin += (0, 0, 1); + weapon_model linkto( self, "", self worldtolocalcoords( weapon_model.origin ), weapon_model.angles + self.angles ); + weapon_model setmovingplatformenabled( 1 ); + weapon_model._linked_ent = trig; + weapon_model hide(); - self thread bus_buyable_weapon_unitrigger_setup(trig); + self thread bus_buyable_weapon_unitrigger_setup(trig); } bus_buyable_weapon_unitrigger_setup(trig) { - unitrigger = undefined; - while (!isDefined(unitrigger)) - { - for(i = 0; i < level._unitriggers.trigger_stubs.size; i++) - { - if(IsDefined(level._unitriggers.trigger_stubs[i].zombie_weapon_upgrade) && level._unitriggers.trigger_stubs[i].zombie_weapon_upgrade == "beretta93r_zm") - { - unitrigger = level._unitriggers.trigger_stubs[i]; - break; - } - } + unitrigger = undefined; + while (!isDefined(unitrigger)) + { + for(i = 0; i < level._unitriggers.trigger_stubs.size; i++) + { + if(IsDefined(level._unitriggers.trigger_stubs[i].zombie_weapon_upgrade) && level._unitriggers.trigger_stubs[i].zombie_weapon_upgrade == "beretta93r_zm") + { + unitrigger = level._unitriggers.trigger_stubs[i]; + break; + } + } - wait 1; - } + wait 1; + } - unitrigger.target = trig.target; - unitrigger.origin_parent = trig; - unitrigger.link_parent = trig; - unitrigger.originfunc = ::bus_buyable_weapon_get_unitrigger_origin; - unitrigger.onspawnfunc = ::bus_buyable_weapon_on_spawn_trigger; + unitrigger.target = trig.target; + unitrigger.origin_parent = trig; + unitrigger.link_parent = trig; + unitrigger.originfunc = ::bus_buyable_weapon_get_unitrigger_origin; + unitrigger.onspawnfunc = ::bus_buyable_weapon_on_spawn_trigger; } bus_buyable_weapon_get_unitrigger_origin() { - return self.origin_parent.origin + (0, 0, -32); + return self.origin_parent.origin + (0, 0, -32); } bus_buyable_weapon_on_spawn_trigger(trigger) { - trigger enablelinkto(); - trigger linkto(self.link_parent); - trigger setmovingplatformenabled(1); + trigger enablelinkto(); + trigger linkto(self.link_parent); + trigger setmovingplatformenabled(1); } busthink() { - no_danger = 0; - self thread busupdatechasers(); - self thread busupdateplayers(); - self thread busupdatenearzombies(); + no_danger = 0; + self thread busupdatechasers(); + self thread busupdateplayers(); + self thread busupdatenearzombies(); - while ( true ) - { - waittillframeend; - self busupdatespeed(); - self busupdateignorewindows(); + while ( true ) + { + waittillframeend; + self busupdatespeed(); + self busupdateignorewindows(); - if ( self.ismoving ) - self busupdatenearequipment(); + if ( self.ismoving ) + self busupdatenearequipment(); - if ( !( isdefined( level.bus_zombie_danger ) && level.bus_zombie_danger ) && ( self.numplayersonroof || self.numplayersinsidebus ) ) - { - no_danger++; + if ( !( isdefined( level.bus_zombie_danger ) && level.bus_zombie_danger ) && ( self.numplayersonroof || self.numplayersinsidebus ) ) + { + no_danger++; - if ( no_danger > 40 ) - { - level thread do_player_bus_zombie_vox( "bus_zom_none", 40, 60 ); - no_danger = 0; - } - } - else - no_danger = 0; + if ( no_danger > 40 ) + { + level thread do_player_bus_zombie_vox( "bus_zom_none", 40, 60 ); + no_danger = 0; + } + } + else + no_danger = 0; - wait 0.1; - } + wait 0.1; + } } busupdateplayers() { - level endon( "end_game" ); + level endon( "end_game" ); - while ( true ) - { - self.numplayers = 0; - self.numplayerson = 0; - self.numplayersonroof = 0; - self.numplayersinsidebus = 0; - self.numplayersnear = 0; - self.numaliveplayersridingbus = 0; - self.frontworld = self localtoworldcoords( self.frontlocal ); - self.backworld = self localtoworldcoords( self.backlocal ); - self.bus_riders_alive = []; + while ( true ) + { + self.numplayers = 0; + self.numplayerson = 0; + self.numplayersonroof = 0; + self.numplayersinsidebus = 0; + self.numplayersnear = 0; + self.numaliveplayersridingbus = 0; + self.frontworld = self localtoworldcoords( self.frontlocal ); + self.backworld = self localtoworldcoords( self.backlocal ); + self.bus_riders_alive = []; - players = get_players(); + players = get_players(); - foreach ( player in players ) - { - if ( !isalive( player ) ) - continue; + foreach ( player in players ) + { + if ( !isalive( player ) ) + continue; - self.numplayers++; + self.numplayers++; - if ( distance2d( player.origin, self.origin ) < 1700 ) - self.numplayersnear++; + if ( distance2d( player.origin, self.origin ) < 1700 ) + self.numplayersnear++; - playerisinbus = 0; - mover = player getmoverent(); + playerisinbus = 0; + mover = player getmoverent(); - if ( isdefined( mover ) ) - { - if ( isdefined( mover.targetname ) ) - { - if ( mover.targetname == "the_bus" || mover.targetname == "bus_path_blocker" || mover.targetname == "hatch_clip" || mover.targetname == "ladder_mantle" ) - playerisinbus = 1; - } + if ( isdefined( mover ) ) + { + if ( isdefined( mover.targetname ) ) + { + if ( mover.targetname == "the_bus" || mover.targetname == "bus_path_blocker" || mover.targetname == "hatch_clip" || mover.targetname == "ladder_mantle" ) + playerisinbus = 1; + } - if ( isdefined( mover.equipname ) ) - { - if ( mover.equipname == "riotshield_zm" ) - { - if ( isdefined( mover.isonbus ) && mover.isonbus ) - playerisinbus = 1; - } - } + if ( isdefined( mover.equipname ) ) + { + if ( mover.equipname == "riotshield_zm" ) + { + if ( isdefined( mover.isonbus ) && mover.isonbus ) + playerisinbus = 1; + } + } - if ( isdefined( mover.is_zombie ) && mover.is_zombie && ( isdefined( mover.isonbus ) && mover.isonbus ) ) - playerisinbus = 1; - } + if ( isdefined( mover.is_zombie ) && mover.is_zombie && ( isdefined( mover.isonbus ) && mover.isonbus ) ) + playerisinbus = 1; + } - if ( playerisinbus ) - { - self.numplayerson++; + if ( playerisinbus ) + { + self.numplayerson++; - if ( is_player_valid( player ) ) - { - self.numaliveplayersridingbus++; - self.bus_riders_alive[self.bus_riders_alive.size] = player; - } - } + if ( is_player_valid( player ) ) + { + self.numaliveplayersridingbus++; + self.bus_riders_alive[self.bus_riders_alive.size] = player; + } + } - ground_ent = player getgroundent(); + ground_ent = player getgroundent(); - if ( player isonladder() ) - ground_ent = mover; + if ( player isonladder() ) + ground_ent = mover; - if ( isdefined( ground_ent ) ) - { - if ( isdefined( ground_ent.is_zombie ) && ground_ent.is_zombie ) - player thread zombie_surf( ground_ent ); - else - { - if ( playerisinbus && !( isdefined( player.isonbus ) && player.isonbus ) ) - { - bbprint( "zombie_events", "category %s type %s round %d playername %s", "BUS", "player_enter", level.round_number, player.name ); - player thread bus_audio_interior_loop( self ); - player clientnotify( "OBS" ); - player setclientplayerpushamount( 0 ); + if ( isdefined( ground_ent ) ) + { + if ( isdefined( ground_ent.is_zombie ) && ground_ent.is_zombie ) + player thread zombie_surf( ground_ent ); + else + { + if ( playerisinbus && !( isdefined( player.isonbus ) && player.isonbus ) ) + { + bbprint( "zombie_events", "category %s type %s round %d playername %s", "BUS", "player_enter", level.round_number, player.name ); + player thread bus_audio_interior_loop( self ); + player clientnotify( "OBS" ); + player setclientplayerpushamount( 0 ); - if ( randomint( 100 ) > 80 && level.automaton.greeting_timer == 0 ) - { - thread automatonspeak( "convo", "player_enter" ); - level.automaton thread greeting_timer(); - } - } + if ( randomint( 100 ) > 80 && level.automaton.greeting_timer == 0 ) + { + thread automatonspeak( "convo", "player_enter" ); + level.automaton thread greeting_timer(); + } + } - if ( !playerisinbus && ( isdefined( player.isonbus ) && player.isonbus ) ) - { - bbprint( "zombie_events", "category %s type %s round %d playername %s", "BUS", "player_exit", level.round_number, player.name ); - player setclientplayerpushamount( 1 ); - player notify( "left bus" ); - player clientnotify( "LBS" ); + if ( !playerisinbus && ( isdefined( player.isonbus ) && player.isonbus ) ) + { + bbprint( "zombie_events", "category %s type %s round %d playername %s", "BUS", "player_exit", level.round_number, player.name ); + player setclientplayerpushamount( 1 ); + player notify( "left bus" ); + player clientnotify( "LBS" ); - if ( randomint( 100 ) > 80 && level.automaton.greeting_timer == 0 ) - { - thread automatonspeak( "convo", "player_leave" ); - level.automaton thread greeting_timer(); - } - } + if ( randomint( 100 ) > 80 && level.automaton.greeting_timer == 0 ) + { + thread automatonspeak( "convo", "player_leave" ); + level.automaton thread greeting_timer(); + } + } - player.isonbus = playerisinbus; - player.isonbusroof = player _entityisonroof(); - } - } + player.isonbus = playerisinbus; + player.isonbusroof = player _entityisonroof(); + } + } - if ( isdefined( player.isonbusroof ) && player.isonbusroof ) - { - self.numplayersonroof++; - } - else if ( isdefined( player.isonbus ) && player.isonbus ) - { - self.numplayersinsidebus++; - } + if ( isdefined( player.isonbusroof ) && player.isonbusroof ) + { + self.numplayersonroof++; + } + else if ( isdefined( player.isonbus ) && player.isonbus ) + { + self.numplayersinsidebus++; + } - wait 0.05; - } + wait 0.05; + } - wait 0.05; - } + wait 0.05; + } } busplowkillzombieuntildeath() { - self endon( "death" ); + self endon( "death" ); - while ( isdefined( self ) && isalive( self ) ) - { - if ( isdefined( self.health ) ) - { - self dodamage( self.health + 666, self.origin, self, self, "none", "MOD_SUICIDE" ); - } + while ( isdefined( self ) && isalive( self ) ) + { + if ( isdefined( self.health ) ) + { + self dodamage( self.health + 666, self.origin, self, self, "none", "MOD_SUICIDE" ); + } - wait 1; - } + wait 1; + } } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_transit_classic.gsc b/scripts/zm/replaced/zm_transit_classic.gsc index dbd9a47e..e97f010b 100644 --- a/scripts/zm/replaced/zm_transit_classic.gsc +++ b/scripts/zm/replaced/zm_transit_classic.gsc @@ -27,30 +27,30 @@ inert_zombies_init() { - inert_spawn_location = getstructarray( "inert_location", "script_noteworthy" ); + inert_spawn_location = getstructarray( "inert_location", "script_noteworthy" ); - if ( isdefined( inert_spawn_location ) ) - array_thread( inert_spawn_location, ::spawn_inert_zombies ); + if ( isdefined( inert_spawn_location ) ) + array_thread( inert_spawn_location, ::spawn_inert_zombies ); } spawn_inert_zombies() { - if ( !isdefined( self.angles ) ) - self.angles = ( 0, 0, 0 ); + if ( !isdefined( self.angles ) ) + self.angles = ( 0, 0, 0 ); flag_wait("initial_players_connected"); - wait 0.1; + wait 0.1; - if ( isdefined( level.zombie_spawners ) ) - { - spawner = random( level.zombie_spawners ); - ai = spawn_zombie( spawner ); - } + if ( isdefined( level.zombie_spawners ) ) + { + spawner = random( level.zombie_spawners ); + ai = spawn_zombie( spawner ); + } - if ( isdefined( ai ) ) - { - ai forceteleport( self.origin, self.angles ); - ai.start_inert = 1; - } + if ( isdefined( ai ) ) + { + ai forceteleport( self.origin, self.angles ); + ai.start_inert = 1; + } } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_transit_distance_tracking.gsc b/scripts/zm/replaced/zm_transit_distance_tracking.gsc index 2c877b45..a64909bd 100644 --- a/scripts/zm/replaced/zm_transit_distance_tracking.gsc +++ b/scripts/zm/replaced/zm_transit_distance_tracking.gsc @@ -6,67 +6,67 @@ delete_zombie_noone_looking( how_close ) { - self endon( "death" ); + self endon( "death" ); - if ( !isdefined( how_close ) ) - how_close = 1000; + if ( !isdefined( how_close ) ) + how_close = 1000; - distance_squared_check = how_close * how_close; - too_far_dist = distance_squared_check * 3; + distance_squared_check = how_close * how_close; + too_far_dist = distance_squared_check * 3; - if ( isdefined( level.zombie_tracking_too_far_dist ) ) - too_far_dist = level.zombie_tracking_too_far_dist * 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; - self.inview = 0; - self.player_close = 0; - players = get_players(); + self.inview = 0; + self.player_close = 0; + players = get_players(); - for ( i = 0; i < players.size; i++ ) - { - if ( players[i].sessionstate == "spectator" ) - continue; + for ( i = 0; i < players.size; i++ ) + { + if ( players[i].sessionstate == "spectator" ) + continue; - if ( isdefined( level.only_track_targeted_players ) ) - { - if ( !isdefined( self.favoriteenemy ) || self.favoriteenemy != players[i] ) - continue; - } + if ( isdefined( level.only_track_targeted_players ) ) + { + if ( !isdefined( self.favoriteenemy ) || self.favoriteenemy != players[i] ) + 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 ) - self.inview++; + if ( can_be_seen && distancesquared( self.origin, players[i].origin ) < too_far_dist ) + self.inview++; - if ( distancesquared( self.origin, players[i].origin ) < distance_squared_check ) - self.player_close++; - } + if ( distancesquared( self.origin, players[i].origin ) < distance_squared_check ) + self.player_close++; + } - wait 0.1; + wait 0.1; - if ( self.inview == 0 && self.player_close == 0 ) - { - if ( !isdefined( self.animname ) || isdefined( self.animname ) && self.animname != "zombie" ) - return; + if ( self.inview == 0 && self.player_close == 0 ) + { + if ( !isdefined( self.animname ) || isdefined( self.animname ) && self.animname != "zombie" ) + return; - if ( isdefined( self.electrified ) && self.electrified == 1 ) - return; + if ( isdefined( self.electrified ) && self.electrified == 1 ) + return; - if ( isdefined( self.in_the_ground ) && self.in_the_ground == 1 ) - return; + if ( isdefined( self.in_the_ground ) && self.in_the_ground == 1 ) + return; - zombies = getaiarray( "axis" ); + zombies = getaiarray( "axis" ); - if ( !( isdefined( self.exclude_distance_cleanup_adding_to_total ) && self.exclude_distance_cleanup_adding_to_total ) && !( isdefined( self.isscreecher ) && self.isscreecher ) ) - { - level.zombie_total++; + if ( !( isdefined( self.exclude_distance_cleanup_adding_to_total ) && self.exclude_distance_cleanup_adding_to_total ) && !( isdefined( self.isscreecher ) && self.isscreecher ) ) + { + level.zombie_total++; - if ( self.health < level.zombie_health ) - level.zombie_respawned_health[level.zombie_respawned_health.size] = self.health; - } + if ( self.health < level.zombie_health ) + level.zombie_respawned_health[level.zombie_respawned_health.size] = self.health; + } - self maps\mp\zombies\_zm_spawner::reset_attack_spot(); - self notify( "zombie_delete" ); - self delete(); - recalc_zombie_array(); - } + self maps\mp\zombies\_zm_spawner::reset_attack_spot(); + self notify( "zombie_delete" ); + self delete(); + recalc_zombie_array(); + } } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_transit_gamemodes.gsc b/scripts/zm/replaced/zm_transit_gamemodes.gsc index cc04ae1c..8db5087d 100644 --- a/scripts/zm/replaced/zm_transit_gamemodes.gsc +++ b/scripts/zm/replaced/zm_transit_gamemodes.gsc @@ -31,7 +31,7 @@ init() add_map_location_gamemode( "zstandard", "transit", scripts\zm\replaced\zm_transit_standard_station::precache, scripts\zm\replaced\zm_transit_standard_station::main ); add_map_location_gamemode( "zstandard", "farm", maps\mp\zm_transit_standard_farm::precache, maps\mp\zm_transit_standard_farm::main ); add_map_location_gamemode( "zstandard", "town", maps\mp\zm_transit_standard_town::precache, maps\mp\zm_transit_standard_town::main ); - add_map_location_gamemode( "zstandard", "diner", scripts\zm\locs\zm_transit_loc_diner::precache, scripts\zm\locs\zm_transit_loc_diner::main ); + add_map_location_gamemode( "zstandard", "diner", scripts\zm\locs\zm_transit_loc_diner::precache, scripts\zm\locs\zm_transit_loc_diner::main ); add_map_location_gamemode( "zstandard", "power", scripts\zm\locs\zm_transit_loc_power::precache, scripts\zm\locs\zm_transit_loc_power::main ); add_map_location_gamemode( "zstandard", "tunnel", scripts\zm\locs\zm_transit_loc_tunnel::precache, scripts\zm\locs\zm_transit_loc_tunnel::main ); add_map_location_gamemode( "zstandard", "cornfield", scripts\zm\locs\zm_transit_loc_cornfield::precache, scripts\zm\locs\zm_transit_loc_cornfield::main ); @@ -39,17 +39,17 @@ init() add_map_location_gamemode( "zgrief", "transit", scripts\zm\replaced\zm_transit_grief_station::precache, scripts\zm\replaced\zm_transit_grief_station::main ); add_map_location_gamemode( "zgrief", "farm", maps\mp\zm_transit_grief_farm::precache, maps\mp\zm_transit_grief_farm::main ); add_map_location_gamemode( "zgrief", "town", maps\mp\zm_transit_grief_town::precache, maps\mp\zm_transit_grief_town::main ); - add_map_location_gamemode( "zgrief", "diner", scripts\zm\locs\zm_transit_loc_diner::precache, scripts\zm\locs\zm_transit_loc_diner::main ); + add_map_location_gamemode( "zgrief", "diner", scripts\zm\locs\zm_transit_loc_diner::precache, scripts\zm\locs\zm_transit_loc_diner::main ); add_map_location_gamemode( "zgrief", "power", scripts\zm\locs\zm_transit_loc_power::precache, scripts\zm\locs\zm_transit_loc_power::main ); add_map_location_gamemode( "zgrief", "tunnel", scripts\zm\locs\zm_transit_loc_tunnel::precache, scripts\zm\locs\zm_transit_loc_tunnel::main ); add_map_location_gamemode( "zgrief", "cornfield", scripts\zm\locs\zm_transit_loc_cornfield::precache, scripts\zm\locs\zm_transit_loc_cornfield::main ); - scripts\zm\replaced\utility::add_struct_location_gamemode_func( "zstandard", "diner", scripts\zm\locs\zm_transit_loc_diner::struct_init ); - scripts\zm\replaced\utility::add_struct_location_gamemode_func( "zgrief", "diner", scripts\zm\locs\zm_transit_loc_diner::struct_init ); + scripts\zm\replaced\utility::add_struct_location_gamemode_func( "zstandard", "diner", scripts\zm\locs\zm_transit_loc_diner::struct_init ); + scripts\zm\replaced\utility::add_struct_location_gamemode_func( "zgrief", "diner", scripts\zm\locs\zm_transit_loc_diner::struct_init ); scripts\zm\replaced\utility::add_struct_location_gamemode_func( "zstandard", "power", scripts\zm\locs\zm_transit_loc_power::struct_init ); - scripts\zm\replaced\utility::add_struct_location_gamemode_func( "zgrief", "power", scripts\zm\locs\zm_transit_loc_power::struct_init ); + scripts\zm\replaced\utility::add_struct_location_gamemode_func( "zgrief", "power", scripts\zm\locs\zm_transit_loc_power::struct_init ); scripts\zm\replaced\utility::add_struct_location_gamemode_func( "zstandard", "tunnel", scripts\zm\locs\zm_transit_loc_tunnel::struct_init ); - scripts\zm\replaced\utility::add_struct_location_gamemode_func( "zgrief", "tunnel", scripts\zm\locs\zm_transit_loc_tunnel::struct_init ); + scripts\zm\replaced\utility::add_struct_location_gamemode_func( "zgrief", "tunnel", scripts\zm\locs\zm_transit_loc_tunnel::struct_init ); scripts\zm\replaced\utility::add_struct_location_gamemode_func( "zstandard", "cornfield", scripts\zm\locs\zm_transit_loc_cornfield::struct_init ); - scripts\zm\replaced\utility::add_struct_location_gamemode_func( "zgrief", "cornfield", scripts\zm\locs\zm_transit_loc_cornfield::struct_init ); + scripts\zm\replaced\utility::add_struct_location_gamemode_func( "zgrief", "cornfield", scripts\zm\locs\zm_transit_loc_cornfield::struct_init ); } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_transit_grief_station.gsc b/scripts/zm/replaced/zm_transit_grief_station.gsc index 48c36aee..a966efeb 100644 --- a/scripts/zm/replaced/zm_transit_grief_station.gsc +++ b/scripts/zm/replaced/zm_transit_grief_station.gsc @@ -28,12 +28,12 @@ main() //collision = spawn( "script_model", ( -6896, 4744, 0 ), 1 ); //collision setmodel( "zm_collision_transit_busdepot_survival" ); //collision disconnectpaths(); - remove_lava_collision(); + remove_lava_collision(); flag_wait( "initial_blackscreen_passed" ); level thread maps\mp\zombies\_zm_perks::perk_machine_removal( "specialty_quickrevive", "p_glo_tools_chest_tall" ); flag_set( "power_on" ); level setclientfield( "zombie_power_on", 1 ); - level thread open_electric_doors_on_door_opened(); + level thread open_electric_doors_on_door_opened(); } enemy_location_override( zombie, enemy ) @@ -94,20 +94,20 @@ remove_lava_collision() open_electric_doors_on_door_opened() { - level.local_doors_stay_open = 1; - door = undefined; - zombie_doors = getentarray( "zombie_door", "targetname" ); + level.local_doors_stay_open = 1; + door = undefined; + zombie_doors = getentarray( "zombie_door", "targetname" ); foreach ( door in zombie_doors ) { - if(door.target == "busstop_doors") - { - break; - } - } + if(door.target == "busstop_doors") + { + break; + } + } - door waittill( "door_opened" ); + door waittill( "door_opened" ); - zombie_doors = getentarray( "zombie_door", "targetname" ); + zombie_doors = getentarray( "zombie_door", "targetname" ); foreach ( door in zombie_doors ) { if ( isDefined( door.script_noteworthy ) && door.script_noteworthy == "local_electric_door" ) diff --git a/scripts/zm/replaced/zm_transit_lava.gsc b/scripts/zm/replaced/zm_transit_lava.gsc index 158034f2..97589ac9 100644 --- a/scripts/zm/replaced/zm_transit_lava.gsc +++ b/scripts/zm/replaced/zm_transit_lava.gsc @@ -7,81 +7,81 @@ player_lava_damage( trig ) { - self endon( "zombified" ); - self endon( "death" ); - self endon( "disconnect" ); - max_dmg = 15; - min_dmg = 5; - burn_time = 1; + self endon( "zombified" ); + self endon( "death" ); + self endon( "disconnect" ); + max_dmg = 15; + min_dmg = 5; + burn_time = 1; - if ( isdefined( self.is_zombie ) && self.is_zombie ) - return; + if ( isdefined( self.is_zombie ) && self.is_zombie ) + return; - self thread player_stop_burning(); + self thread player_stop_burning(); - if ( isdefined( trig.script_float ) ) - { - max_dmg *= trig.script_float; - min_dmg *= trig.script_float; - burn_time *= trig.script_float; + if ( isdefined( trig.script_float ) ) + { + max_dmg *= trig.script_float; + min_dmg *= trig.script_float; + burn_time *= trig.script_float; - if ( burn_time >= 1.5 ) - burn_time = 1.5; - } + if ( burn_time >= 1.5 ) + burn_time = 1.5; + } if (max_dmg < 15) { max_dmg = 5; } - if ( !isdefined( self.is_burning ) && is_player_valid( self ) ) - { - self.is_burning = 1; - maps\mp\_visionset_mgr::vsmgr_activate( "overlay", "zm_transit_burn", self, burn_time, level.zm_transit_burn_max_duration ); - self notify( "burned" ); + if ( !isdefined( self.is_burning ) && is_player_valid( self ) ) + { + self.is_burning = 1; + maps\mp\_visionset_mgr::vsmgr_activate( "overlay", "zm_transit_burn", self, burn_time, level.zm_transit_burn_max_duration ); + self notify( "burned" ); - if ( isdefined( trig.script_float ) && trig.script_float >= 0.1 ) - self thread player_burning_fx(); + if ( isdefined( trig.script_float ) && trig.script_float >= 0.1 ) + self thread player_burning_fx(); radiusdamage( self.origin, 10, max_dmg, min_dmg ); wait 0.5; - self.is_burning = undefined; - } + self.is_burning = undefined; + } } zombie_exploding_death( zombie_dmg, trap ) { - self endon( "stop_flame_damage" ); + self endon( "stop_flame_damage" ); - if ( isdefined( self.isdog ) && self.isdog && isdefined( self.a.nodeath ) ) - return; + if ( isdefined( self.isdog ) && self.isdog && isdefined( self.a.nodeath ) ) + return; - while ( isdefined( self ) && self.health >= zombie_dmg && ( isdefined( self.is_on_fire ) && self.is_on_fire ) ) - wait 0.5; + while ( isdefined( self ) && self.health >= zombie_dmg && ( isdefined( self.is_on_fire ) && self.is_on_fire ) ) + wait 0.5; - if ( !isdefined( self ) || !( isdefined( self.is_on_fire ) && self.is_on_fire ) || isdefined( self.damageweapon ) && ( self.damageweapon == "tazer_knuckles_zm" || self.damageweapon == "jetgun_zm" ) || isdefined( self.knuckles_extinguish_flames ) && self.knuckles_extinguish_flames ) - return; + if ( !isdefined( self ) || !( isdefined( self.is_on_fire ) && self.is_on_fire ) || isdefined( self.damageweapon ) && ( self.damageweapon == "tazer_knuckles_zm" || self.damageweapon == "jetgun_zm" ) || isdefined( self.knuckles_extinguish_flames ) && self.knuckles_extinguish_flames ) + return; - tag = "J_SpineLower"; + tag = "J_SpineLower"; - if ( isdefined( self.animname ) && self.animname == "zombie_dog" ) - tag = "tag_origin"; + if ( isdefined( self.animname ) && self.animname == "zombie_dog" ) + tag = "tag_origin"; - if ( is_mature() ) - { - if ( isdefined( level._effect["zomb_gib"] ) ) - playfx( level._effect["zomb_gib"], self gettagorigin( tag ) ); - } - else if ( isdefined( level._effect["spawn_cloud"] ) ) - playfx( level._effect["spawn_cloud"], self gettagorigin( tag ) ); + if ( is_mature() ) + { + if ( isdefined( level._effect["zomb_gib"] ) ) + playfx( level._effect["zomb_gib"], self gettagorigin( tag ) ); + } + else if ( isdefined( level._effect["spawn_cloud"] ) ) + playfx( level._effect["spawn_cloud"], self gettagorigin( tag ) ); - self radiusdamage( self.origin, 128, 15, 15, undefined, "MOD_EXPLOSIVE" ); - self ghost(); + self radiusdamage( self.origin, 128, 15, 15, undefined, "MOD_EXPLOSIVE" ); + self ghost(); - if ( isdefined( self.isdog ) && self.isdog ) - self hide(); - else - self delay_thread( 1, ::self_delete ); + if ( isdefined( self.isdog ) && self.isdog ) + self hide(); + else + self delay_thread( 1, ::self_delete ); } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_transit_sq.gsc b/scripts/zm/replaced/zm_transit_sq.gsc index b44d5eae..495dfd2b 100644 --- a/scripts/zm/replaced/zm_transit_sq.gsc +++ b/scripts/zm/replaced/zm_transit_sq.gsc @@ -15,142 +15,142 @@ maxis_sidequest_a() { - level endon( "power_on" ); - level.sq_progress["maxis"]["A_turbine_1"] = undefined; - level.sq_progress["maxis"]["A_turbine_2"] = undefined; + level endon( "power_on" ); + level.sq_progress["maxis"]["A_turbine_1"] = undefined; + level.sq_progress["maxis"]["A_turbine_2"] = undefined; - if ( !( isdefined( level.sq_progress["maxis"]["B_complete"] ) && level.sq_progress["maxis"]["B_complete"] ) ) - level.sq_progress["maxis"]["A_complete"] = 0; + if ( !( isdefined( level.sq_progress["maxis"]["B_complete"] ) && level.sq_progress["maxis"]["B_complete"] ) ) + level.sq_progress["maxis"]["A_complete"] = 0; - while ( true ) - { - players = get_players(); + while ( true ) + { + players = get_players(); - foreach ( player in players ) - { - if ( isdefined( player.buildableturbine ) && player.buildableturbine istouching( level.sq_volume ) ) - { - level notify( "maxi_terminal_vox" ); - player.buildableturbine thread turbine_watch_cleanup(); + foreach ( player in players ) + { + if ( isdefined( player.buildableturbine ) && player.buildableturbine istouching( level.sq_volume ) ) + { + level notify( "maxi_terminal_vox" ); + player.buildableturbine thread turbine_watch_cleanup(); - if ( !isdefined( level.sq_progress["maxis"]["A_turbine_1"] ) ) - { - level.sq_progress["maxis"]["A_turbine_1"] = player.buildableturbine; - level.sq_progress["maxis"]["A_turbine_1"] thread turbine_power_watcher( player ); - continue; - } + if ( !isdefined( level.sq_progress["maxis"]["A_turbine_1"] ) ) + { + level.sq_progress["maxis"]["A_turbine_1"] = player.buildableturbine; + level.sq_progress["maxis"]["A_turbine_1"] thread turbine_power_watcher( player ); + continue; + } - if ( !isdefined( level.sq_progress["maxis"]["A_turbine_2"] ) ) - { - level.sq_progress["maxis"]["A_turbine_2"] = player.buildableturbine; - level.sq_progress["maxis"]["A_turbine_2"] thread turbine_power_watcher( player ); - } - } - } + if ( !isdefined( level.sq_progress["maxis"]["A_turbine_2"] ) ) + { + level.sq_progress["maxis"]["A_turbine_2"] = player.buildableturbine; + level.sq_progress["maxis"]["A_turbine_2"] thread turbine_power_watcher( player ); + } + } + } - if ( get_how_many_progressed_from( "maxis", "A_turbine_1", "A_turbine_2" ) >= 1 ) - { - if ( avogadro_at_tower() ) - level thread maxissay( "vox_maxi_turbine_2tower_avo_0", ( 7737, -416, -142 ) ); - else - level thread maxissay( "vox_maxi_turbine_2tower_0", ( 7737, -416, -142 ) ); + if ( get_how_many_progressed_from( "maxis", "A_turbine_1", "A_turbine_2" ) >= 1 ) + { + if ( avogadro_at_tower() ) + level thread maxissay( "vox_maxi_turbine_2tower_avo_0", ( 7737, -416, -142 ) ); + else + level thread maxissay( "vox_maxi_turbine_2tower_0", ( 7737, -416, -142 ) ); - update_sidequest_stats( "sq_transit_maxis_stage_2" ); - level thread maxis_sidequest_complete_check( "A_complete" ); - } + update_sidequest_stats( "sq_transit_maxis_stage_2" ); + level thread maxis_sidequest_complete_check( "A_complete" ); + } - level waittill_either( "turbine_deployed", "equip_turbine_zm_cleaned_up" ); + level waittill_either( "turbine_deployed", "equip_turbine_zm_cleaned_up" ); - if ( !level.sq_progress["maxis"]["B_complete"] ) - level.sq_progress["maxis"]["A_complete"] = 0; - else - break; - } + if ( !level.sq_progress["maxis"]["B_complete"] ) + level.sq_progress["maxis"]["A_complete"] = 0; + else + break; + } } turbine_power_watcher( player ) { - level endon( "end_avogadro_turbines" ); - self endon( "death" ); - self.powered = undefined; - turbine_failed_vo = undefined; + level endon( "end_avogadro_turbines" ); + self endon( "death" ); + self.powered = undefined; + turbine_failed_vo = undefined; - while ( isdefined( self ) ) - { - wait 0.05; + while ( isdefined( self ) ) + { + wait 0.05; - if ( is_true( player.turbine_power_is_on ) && !is_true( player.turbine_emped ) ) + if ( is_true( player.turbine_power_is_on ) && !is_true( player.turbine_emped ) ) { self.powered = 1; } - else if ( is_true( player.turbine_emped ) || !is_true( player.turbine_power_is_on ) ) - { - wait 2; - self.powered = 0; - } - } + else if ( is_true( player.turbine_emped ) || !is_true( player.turbine_power_is_on ) ) + { + wait 2; + self.powered = 0; + } + } } maxis_sidequest_b() { - level endon( "power_on" ); + level endon( "power_on" ); - while ( true ) - { - level waittill( "stun_avogadro", avogadro ); + while ( true ) + { + level waittill( "stun_avogadro", avogadro ); - if ( ( isdefined( level.sq_progress["maxis"]["A_turbine_1"] ) && is_true( level.sq_progress["maxis"]["A_turbine_1"].powered ) ) || ( isdefined( level.sq_progress["maxis"]["A_turbine_2"] ) && is_true( level.sq_progress["maxis"]["A_turbine_2"].powered ) ) ) - { - if ( isdefined( avogadro ) && avogadro istouching( level.sq_volume ) ) - { - level notify( "end_avogadro_turbines" ); - break; - } - } - } + if ( ( isdefined( level.sq_progress["maxis"]["A_turbine_1"] ) && is_true( level.sq_progress["maxis"]["A_turbine_1"].powered ) ) || ( isdefined( level.sq_progress["maxis"]["A_turbine_2"] ) && is_true( level.sq_progress["maxis"]["A_turbine_2"].powered ) ) ) + { + if ( isdefined( avogadro ) && avogadro istouching( level.sq_volume ) ) + { + level notify( "end_avogadro_turbines" ); + break; + } + } + } - level notify( "maxis_stage_b" ); - level thread maxissay( "vox_maxi_avogadro_emp_0", ( 7737, -416, -142 ) ); - update_sidequest_stats( "sq_transit_maxis_stage_3" ); - player = get_players(); - player[0] setclientfield( "sq_tower_sparks", 1 ); - player[0] setclientfield( "screecher_maxis_lights", 1 ); - level thread maxis_sidequest_complete_check( "B_complete" ); + level notify( "maxis_stage_b" ); + level thread maxissay( "vox_maxi_avogadro_emp_0", ( 7737, -416, -142 ) ); + update_sidequest_stats( "sq_transit_maxis_stage_3" ); + player = get_players(); + player[0] setclientfield( "sq_tower_sparks", 1 ); + player[0] setclientfield( "screecher_maxis_lights", 1 ); + level thread maxis_sidequest_complete_check( "B_complete" ); } maxis_sidequest_c() { - flag_wait( "power_on" ); - flag_waitopen( "power_on" ); - level endon( "power_on" ); + flag_wait( "power_on" ); + flag_waitopen( "power_on" ); + level endon( "power_on" ); level.sq_progress["maxis"]["C_screecher_dark"] = 0; for(i = 0; i < 8; i++) { level.sq_progress["maxis"]["C_screecher_" + i] = undefined; } - level.sq_progress["maxis"]["C_complete"] = 0; - turbine_1_talked = 0; - turbine_2_talked = 0; - screech_zones = getstructarray( "screecher_escape", "targetname" ); + level.sq_progress["maxis"]["C_complete"] = 0; + turbine_1_talked = 0; + turbine_2_talked = 0; + screech_zones = getstructarray( "screecher_escape", "targetname" ); - while ( true ) - { - players = get_players(); + while ( true ) + { + players = get_players(); - foreach ( player in players ) - { - if ( isdefined( player.buildableturbine ) ) - { - for ( x = 0; x < screech_zones.size; x++ ) - { - zone = screech_zones[x]; + foreach ( player in players ) + { + if ( isdefined( player.buildableturbine ) ) + { + for ( x = 0; x < screech_zones.size; x++ ) + { + zone = screech_zones[x]; - if ( distancesquared( player.buildableturbine.origin, zone.origin ) < zone.radius * zone.radius ) - { - player.buildableturbine thread turbine_watch_cleanup(); + if ( distancesquared( player.buildableturbine.origin, zone.origin ) < zone.radius * zone.radius ) + { + player.buildableturbine thread turbine_watch_cleanup(); - zone_used = 0; + zone_used = 0; for(i = 0; i < 8; i++) { if ( isdefined( level.sq_progress["maxis"]["C_screecher_" + i] ) && zone == level.sq_progress["maxis"]["C_screecher_" + i] ) @@ -162,78 +162,78 @@ maxis_sidequest_c() if ( !zone_used ) { - if ( level.sq_progress["maxis"]["B_complete"] && level.sq_progress["maxis"]["A_complete"] ) - { - if ( !turbine_1_talked ) - { - turbine_1_talked = 1; - level thread maxissay( "vox_maxi_turbine_1light_0", zone.origin ); - } + if ( level.sq_progress["maxis"]["B_complete"] && level.sq_progress["maxis"]["A_complete"] ) + { + if ( !turbine_1_talked ) + { + turbine_1_talked = 1; + level thread maxissay( "vox_maxi_turbine_1light_0", zone.origin ); + } - level thread set_screecher_zone_origin_and_notify( zone.script_noteworthy, "sq_max" ); - level.sq_progress["maxis"]["C_screecher_" + level.sq_progress["maxis"]["C_screecher_dark"]] = zone; - level.sq_progress["maxis"]["C_screecher_dark"]++; + level thread set_screecher_zone_origin_and_notify( zone.script_noteworthy, "sq_max" ); + level.sq_progress["maxis"]["C_screecher_" + level.sq_progress["maxis"]["C_screecher_dark"]] = zone; + level.sq_progress["maxis"]["C_screecher_dark"]++; - if ( level.sq_progress["maxis"]["C_screecher_dark"] >= 8 ) - { - if ( !turbine_2_talked ) - { - turbine_2_talked = 1; - level thread maxissay( "vox_maxi_turbine_2light_on_0", zone.origin ); - } + if ( level.sq_progress["maxis"]["C_screecher_dark"] >= 8 ) + { + if ( !turbine_2_talked ) + { + turbine_2_talked = 1; + level thread maxissay( "vox_maxi_turbine_2light_on_0", zone.origin ); + } - player = get_players(); - player[0] setclientfield( "screecher_maxis_lights", 0 ); - level maxis_sidequest_complete_check( "C_complete" ); - return; - } - } + player = get_players(); + player[0] setclientfield( "screecher_maxis_lights", 0 ); + level maxis_sidequest_complete_check( "C_complete" ); + return; + } + } } continue; - } - } - } - } + } + } + } + } - level waittill_either( "turbine_deployed", "equip_turbine_zm_cleaned_up" ); - level.sq_progress["maxis"]["C_complete"] = 0; - } + level waittill_either( "turbine_deployed", "equip_turbine_zm_cleaned_up" ); + level.sq_progress["maxis"]["C_complete"] = 0; + } } maxis_sidequest_complete() { - update_sidequest_stats( "sq_transit_maxis_complete" ); - level sidequest_complete( "maxis" ); - level.sq_progress["maxis"]["FINISHED"] = 1; - level.maxcompleted = 1; - clientnotify( "sq_kfx" ); + update_sidequest_stats( "sq_transit_maxis_complete" ); + level sidequest_complete( "maxis" ); + level.sq_progress["maxis"]["FINISHED"] = 1; + level.maxcompleted = 1; + clientnotify( "sq_kfx" ); - if ( isdefined( level.richcompleted ) && level.richcompleted ) - level clientnotify( "sq_krt" ); + if ( isdefined( level.richcompleted ) && level.richcompleted ) + level clientnotify( "sq_krt" ); - wait 1; - clientnotify( "sqm" ); - level thread droppowerup( "maxis" ); + wait 1; + clientnotify( "sqm" ); + level thread droppowerup( "maxis" ); } richtofen_sidequest_c() { - level endon( "power_off" ); - level endon( "richtofen_sq_complete" ); - screech_zones = getstructarray( "screecher_escape", "targetname" ); - level thread screecher_light_hint(); - level.sq_richtofen_c_screecher_lights = []; + level endon( "power_off" ); + level endon( "richtofen_sq_complete" ); + screech_zones = getstructarray( "screecher_escape", "targetname" ); + level thread screecher_light_hint(); + level.sq_richtofen_c_screecher_lights = []; - while ( true ) - { - level waittill( "safety_light_power_off", screecher_zone ); + while ( true ) + { + level waittill( "safety_light_power_off", screecher_zone ); - if ( !level.sq_progress["rich"]["A_complete"] || !level.sq_progress["rich"]["B_complete"] ) - { - level thread richtofensay( "vox_zmba_sidequest_emp_nomag_0" ); - continue; - } + if ( !level.sq_progress["rich"]["A_complete"] || !level.sq_progress["rich"]["B_complete"] ) + { + level thread richtofensay( "vox_zmba_sidequest_emp_nomag_0" ); + continue; + } if ( isinarray( level.sq_richtofen_c_screecher_lights, screecher_zone.target.script_noteworthy ) ) { @@ -241,34 +241,34 @@ richtofen_sidequest_c() } level thread set_screecher_zone_origin_and_notify( screecher_zone.target.script_noteworthy, "sq_rich" ); - level.sq_richtofen_c_screecher_lights[level.sq_richtofen_c_screecher_lights.size] = screecher_zone.target.script_noteworthy; - level.sq_progress["rich"]["C_screecher_light"]++; + level.sq_richtofen_c_screecher_lights[level.sq_richtofen_c_screecher_lights.size] = screecher_zone.target.script_noteworthy; + level.sq_progress["rich"]["C_screecher_light"]++; - if ( level.sq_progress["rich"]["C_screecher_light"] >= 8 ) - break; - } + if ( level.sq_progress["rich"]["C_screecher_light"] >= 8 ) + break; + } - level thread richtofensay( "vox_zmba_sidequest_4emp_mag_0" ); - level notify( "richtofen_c_complete" ); - player = get_players(); - player[0] setclientfield( "screecher_sq_lights", 0 ); - level thread richtofen_sidequest_complete_check( "C_complete" ); + level thread richtofensay( "vox_zmba_sidequest_4emp_mag_0" ); + level notify( "richtofen_c_complete" ); + player = get_players(); + player[0] setclientfield( "screecher_sq_lights", 0 ); + level thread richtofen_sidequest_complete_check( "C_complete" ); } richtofen_sidequest_complete() { - update_sidequest_stats( "sq_transit_rich_complete" ); - level thread sidequest_complete( "richtofen" ); - level.sq_progress["rich"]["FINISHED"] = 1; - level.richcompleted = 1; - clientnotify( "sq_kfx" ); + update_sidequest_stats( "sq_transit_rich_complete" ); + level thread sidequest_complete( "richtofen" ); + level.sq_progress["rich"]["FINISHED"] = 1; + level.richcompleted = 1; + clientnotify( "sq_kfx" ); - if ( isdefined( level.maxcompleted ) && level.maxcompleted ) - level clientnotify( "sq_kmt" ); + if ( isdefined( level.maxcompleted ) && level.maxcompleted ) + level clientnotify( "sq_kmt" ); - wait 1; - clientnotify( "sqr" ); - level thread droppowerup( "richtofen" ); + wait 1; + clientnotify( "sqr" ); + level thread droppowerup( "richtofen" ); } set_screecher_zone_origin_and_notify( script_noteworthy, notify_str ) @@ -280,36 +280,36 @@ set_screecher_zone_origin_and_notify( script_noteworthy, notify_str ) droppowerup( story ) { - level thread scripts\zm\replaced\_zm_sq::sq_complete_time_hud(); + level thread scripts\zm\replaced\_zm_sq::sq_complete_time_hud(); - players = get_players(); - foreach ( player in players ) - { - if ( is_player_valid( player ) ) - { - player thread scripts\zm\replaced\_zm_sq::sq_give_player_all_perks(); - } - } + players = get_players(); + foreach ( player in players ) + { + if ( is_player_valid( player ) ) + { + player thread scripts\zm\replaced\_zm_sq::sq_give_player_all_perks(); + } + } - center_struct = getstruct( "sq_common_tower_fx", "targetname" ); - trace = bullettrace( center_struct.origin, center_struct.origin - vectorscale( ( 0, 0, 1 ), 999999.0 ), 0, undefined ); - poweruporigin = trace["position"] + vectorscale( ( 0, 0, 1 ), 25.0 ); - mintime = 120; - maxtime = 360; + center_struct = getstruct( "sq_common_tower_fx", "targetname" ); + trace = bullettrace( center_struct.origin, center_struct.origin - vectorscale( ( 0, 0, 1 ), 999999.0 ), 0, undefined ); + poweruporigin = trace["position"] + vectorscale( ( 0, 0, 1 ), 25.0 ); + mintime = 120; + maxtime = 360; - while ( true ) - { - trail = spawn( "script_model", center_struct.origin ); - trail setmodel( "tag_origin" ); - wait 0.5; - playfxontag( level._effect[story + "_sparks"], trail, "tag_origin" ); - trail moveto( poweruporigin, 10 ); + while ( true ) + { + trail = spawn( "script_model", center_struct.origin ); + trail setmodel( "tag_origin" ); + wait 0.5; + playfxontag( level._effect[story + "_sparks"], trail, "tag_origin" ); + trail moveto( poweruporigin, 10 ); - trail waittill( "movedone" ); + trail waittill( "movedone" ); - level thread droppoweruptemptation( story, poweruporigin ); - wait 1; - trail delete(); - wait( randomintrange( mintime, maxtime ) ); - } + level thread droppoweruptemptation( story, poweruporigin ); + wait 1; + trail delete(); + wait( randomintrange( mintime, maxtime ) ); + } } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_transit_standard_station.gsc b/scripts/zm/replaced/zm_transit_standard_station.gsc index 87a5e774..55c2c929 100644 --- a/scripts/zm/replaced/zm_transit_standard_station.gsc +++ b/scripts/zm/replaced/zm_transit_standard_station.gsc @@ -27,12 +27,12 @@ main() //collision = spawn( "script_model", ( -6896, 4744, 0 ), 1 ); //collision setmodel( "zm_collision_transit_busdepot_survival" ); //collision disconnectpaths(); - remove_lava_collision(); + remove_lava_collision(); flag_wait( "initial_blackscreen_passed" ); level thread maps\mp\zombies\_zm_perks::perk_machine_removal( "specialty_quickrevive", "p_glo_tools_chest_tall" ); flag_set( "power_on" ); level setclientfield( "zombie_power_on", 1 ); - level thread open_electric_doors_on_door_opened(); + level thread open_electric_doors_on_door_opened(); // electric doors showing hintstring zombie_doors = getentarray( "zombie_door", "targetname" ); @@ -103,20 +103,20 @@ remove_lava_collision() open_electric_doors_on_door_opened() { - level.local_doors_stay_open = 1; - door = undefined; - zombie_doors = getentarray( "zombie_door", "targetname" ); + level.local_doors_stay_open = 1; + door = undefined; + zombie_doors = getentarray( "zombie_door", "targetname" ); foreach ( door in zombie_doors ) { - if(door.target == "busstop_doors") - { - break; - } - } + if(door.target == "busstop_doors") + { + break; + } + } - door waittill( "door_opened" ); + door waittill( "door_opened" ); - zombie_doors = getentarray( "zombie_door", "targetname" ); + zombie_doors = getentarray( "zombie_door", "targetname" ); foreach ( door in zombie_doors ) { if ( isDefined( door.script_noteworthy ) && door.script_noteworthy == "local_electric_door" ) diff --git a/scripts/zm/replaced/zmeat.gsc b/scripts/zm/replaced/zmeat.gsc index 7ae71f9a..d03f157a 100644 --- a/scripts/zm/replaced/zmeat.gsc +++ b/scripts/zm/replaced/zmeat.gsc @@ -6,40 +6,40 @@ item_meat_on_spawn_retrieve_trigger( watcher, player, weaponname ) { - self endon( "death" ); - add_meat_event( "meat_spawn", self ); + self endon( "death" ); + add_meat_event( "meat_spawn", self ); - while ( isdefined( level.splitting_meat ) && level.splitting_meat ) - wait 0.15; + while ( isdefined( level.splitting_meat ) && level.splitting_meat ) + wait 0.15; - if ( isdefined( player ) ) - { - self setowner( player ); - self setteam( player.pers["team"] ); - self.owner = player; - self.oldangles = self.angles; + if ( isdefined( player ) ) + { + self setowner( player ); + self setteam( player.pers["team"] ); + self.owner = player; + self.oldangles = self.angles; - if ( player hasweapon( weaponname ) ) - { - if ( !( isdefined( self._fake_meat ) && self._fake_meat ) ) - player thread player_wait_take_meat( weaponname ); - else - { - player takeweapon( weaponname ); - player decrement_is_drinking(); - } - } + if ( player hasweapon( weaponname ) ) + { + if ( !( isdefined( self._fake_meat ) && self._fake_meat ) ) + player thread player_wait_take_meat( weaponname ); + else + { + player takeweapon( weaponname ); + player decrement_is_drinking(); + } + } - if ( !( isdefined( self._fake_meat ) && self._fake_meat ) ) - { - if ( !( isdefined( self._respawned_meat ) && self._respawned_meat ) ) - { - level notify( "meat_thrown", player ); - level._last_person_to_throw_meat = player; - level._last_person_to_throw_meat_time = gettime(); - } - } - } + if ( !( isdefined( self._fake_meat ) && self._fake_meat ) ) + { + if ( !( isdefined( self._respawned_meat ) && self._respawned_meat ) ) + { + level notify( "meat_thrown", player ); + level._last_person_to_throw_meat = player; + level._last_person_to_throw_meat_time = gettime(); + } + } + } level.meat_player = undefined; @@ -68,50 +68,50 @@ item_meat_on_spawn_retrieve_trigger( watcher, player, weaponname ) if (level.scr_zm_ui_gametype_obj == "zmeat") { - if (!is_true(player._kicking_meat)) - { - other_player thread scripts\zm\zgrief\zgrief_reimagined::show_grief_hud_msg("Meat thrown!"); - } + if (!is_true(player._kicking_meat)) + { + other_player thread scripts\zm\zgrief\zgrief_reimagined::show_grief_hud_msg("Meat thrown!"); + } } } - if ( !( isdefined( self._fake_meat ) && self._fake_meat ) ) - { - level._meat_moving = 1; + if ( !( isdefined( self._fake_meat ) && self._fake_meat ) ) + { + level._meat_moving = 1; - if ( isdefined( level.item_meat ) && level.item_meat != self ) - level.item_meat cleanup_meat(); + if ( isdefined( level.item_meat ) && level.item_meat != self ) + level.item_meat cleanup_meat(); - level.item_meat = self; - } + level.item_meat = self; + } - self thread item_meat_watch_stationary(); - self thread item_meat_watch_bounce(); - self.item_meat_pick_up_trigger = spawn( "trigger_radius_use", self.origin, 0, 36, 72 ); - self.item_meat_pick_up_trigger setcursorhint( "HINT_NOICON" ); - self.item_meat_pick_up_trigger sethintstring( &"ZOMBIE_MEAT_PICKUP" ); - self.item_meat_pick_up_trigger enablelinkto(); - self.item_meat_pick_up_trigger linkto( self ); - self.item_meat_pick_up_trigger triggerignoreteam(); - level.item_meat_pick_up_trigger = self.item_meat_pick_up_trigger; - self thread item_meat_watch_below(); - self thread item_meat_watch_shutdown(); - self.meat_id = indexinarray( level._fake_meats, self ); + self thread item_meat_watch_stationary(); + self thread item_meat_watch_bounce(); + self.item_meat_pick_up_trigger = spawn( "trigger_radius_use", self.origin, 0, 36, 72 ); + self.item_meat_pick_up_trigger setcursorhint( "HINT_NOICON" ); + self.item_meat_pick_up_trigger sethintstring( &"ZOMBIE_MEAT_PICKUP" ); + self.item_meat_pick_up_trigger enablelinkto(); + self.item_meat_pick_up_trigger linkto( self ); + self.item_meat_pick_up_trigger triggerignoreteam(); + level.item_meat_pick_up_trigger = self.item_meat_pick_up_trigger; + self thread item_meat_watch_below(); + self thread item_meat_watch_shutdown(); + self.meat_id = indexinarray( level._fake_meats, self ); - if ( !isdefined( self.meat_id ) ) - self.meat_id = 0; + if ( !isdefined( self.meat_id ) ) + self.meat_id = 0; - if ( isdefined( level.dont_allow_meat_interaction ) && level.dont_allow_meat_interaction ) - self.item_meat_pick_up_trigger setinvisibletoall(); + if ( isdefined( level.dont_allow_meat_interaction ) && level.dont_allow_meat_interaction ) + self.item_meat_pick_up_trigger setinvisibletoall(); - self._respawned_meat = undefined; + self._respawned_meat = undefined; } item_meat_watch_bounce() { - self endon( "death" ); - self endon( "picked_up" ); - self.meat_is_flying = 1; + self endon( "death" ); + self endon( "picked_up" ); + self.meat_is_flying = 1; while (1) { @@ -125,73 +125,73 @@ item_meat_watch_bounce() } } - self.meat_is_flying = 0; + self.meat_is_flying = 0; } item_meat_watch_stationary() { - self endon( "death" ); - self endon( "picked_up" ); - self.meat_is_moving = 1; + self endon( "death" ); + self endon( "picked_up" ); + self.meat_is_moving = 1; - self waittill( "stationary", pos, normal ); + self waittill( "stationary", pos, normal ); if ( isdefined( level.meat_bounce_override ) ) { self thread [[ level.meat_bounce_override ]]( pos, normal, undefined, false ); } - self.meat_is_moving = 0; + self.meat_is_moving = 0; self delete(); } item_meat_watch_below() { - self endon( "death" ); - self endon( "picked_up" ); + self endon( "death" ); + self endon( "picked_up" ); - og_origin = self.origin; + og_origin = self.origin; - while ((self.origin[2] - og_origin[2]) > -1000) - { - wait 0.05; - } + while ((self.origin[2] - og_origin[2]) > -1000) + { + wait 0.05; + } - if ( isdefined( level.meat_bounce_override ) ) + if ( isdefined( level.meat_bounce_override ) ) { self thread [[ level.meat_bounce_override ]]( self.origin, undefined, undefined, false ); } - self delete(); + self delete(); } player_wait_take_meat( meat_name ) { - self.dont_touch_the_meat = 1; + self.dont_touch_the_meat = 1; - if ( isdefined( self.pre_meat_weapon ) && self hasweapon( self.pre_meat_weapon ) ) - self switchtoweapon( self.pre_meat_weapon ); - else - { - primaryweapons = self getweaponslistprimaries(); + if ( isdefined( self.pre_meat_weapon ) && self hasweapon( self.pre_meat_weapon ) ) + self switchtoweapon( self.pre_meat_weapon ); + else + { + primaryweapons = self getweaponslistprimaries(); - if ( isdefined( primaryweapons ) && primaryweapons.size > 0 ) - self switchtoweapon( primaryweapons[0] ); - else - { - assert( 0, "Player has no weapon" ); - self maps\mp\zombies\_zm_weapons::give_fallback_weapon(); - } - } + if ( isdefined( primaryweapons ) && primaryweapons.size > 0 ) + self switchtoweapon( primaryweapons[0] ); + else + { + assert( 0, "Player has no weapon" ); + self maps\mp\zombies\_zm_weapons::give_fallback_weapon(); + } + } self waittill_notify_or_timeout( "weapon_change", 3 ); - self takeweapon( meat_name ); - self.pre_meat_weapon = undefined; + self takeweapon( meat_name ); + self.pre_meat_weapon = undefined; - if ( self.is_drinking ) - self decrement_is_drinking(); + if ( self.is_drinking ) + self decrement_is_drinking(); - self.dont_touch_the_meat = 0; + self.dont_touch_the_meat = 0; } \ No newline at end of file diff --git a/scripts/zm/zgrief/zgrief_reimagined.gsc b/scripts/zm/zgrief/zgrief_reimagined.gsc index 53dac09f..94a6a73c 100644 --- a/scripts/zm/zgrief/zgrief_reimagined.gsc +++ b/scripts/zm/zgrief/zgrief_reimagined.gsc @@ -747,7 +747,7 @@ on_player_bleedout() self maps\mp\zombies\_zm::spectator_respawn(); playfx(level._effect[level.player_spawn_fx], self.origin); - playsoundatposition(level.player_spawn_sound, self.origin); + playsoundatposition(level.player_spawn_sound, self.origin); earthquake(0.5, 0.75, self.origin, 100); playrumbleonposition("explosion_generic", self.origin); } @@ -1113,7 +1113,7 @@ zombie_spawn_wait(time) get_number_of_valid_players_team(team, excluded_player) { - num_player_valid = 0; + num_player_valid = 0; players = get_players(team); foreach (player in players) @@ -1129,7 +1129,7 @@ get_number_of_valid_players_team(team, excluded_player) } } - return num_player_valid; + return num_player_valid; } update_players_on_downed(excluded_player) @@ -3114,7 +3114,7 @@ meat_waypoint_origin_destroy_on_death() if (isDefined(self.obj_waypoint_origin)) { self.obj_waypoint_origin unlink(); - self.obj_waypoint_origin delete(); + self.obj_waypoint_origin delete(); } } @@ -3238,17 +3238,17 @@ meat_powerup_custom_time(powerup) return 5; } - return 15; + return 15; } can_revive(revivee) { - if (self hasweapon(get_gamemode_var("item_meat_name"))) + if (self hasweapon(get_gamemode_var("item_meat_name"))) { return false; } - return true; + return true; } powerup_can_player_grab(player) diff --git a/scripts/zm/zm_buried/zm_buried_reimagined.gsc b/scripts/zm/zm_buried/zm_buried_reimagined.gsc index 0a656c81..a4bbdef9 100644 --- a/scripts/zm/zm_buried/zm_buried_reimagined.gsc +++ b/scripts/zm/zm_buried/zm_buried_reimagined.gsc @@ -209,7 +209,7 @@ sloth_barricades_buyable() if (isDefined(trig.script_noteworthy) && trig.script_noteworthy == "courtyard_fountain") { parts = getentarray( trig.target, "targetname" ); - array_thread( parts, ::self_delete ); + array_thread( parts, ::self_delete ); continue; } @@ -224,23 +224,23 @@ sloth_barricades_buyable() switch(debris_trig.script_location) { - case "juggernaut_alley": - case "stables_alley": + case "juggernaut_alley": + case "stables_alley": debris_trig.zombie_cost = 750; break; - case "jail": - case "gunstore": - case "mansion": + case "jail": + case "gunstore": + case "mansion": debris_trig.zombie_cost = 1000; break; - case "candystore_alley": - case "church": + case "candystore_alley": + case "church": debris_trig.zombie_cost = 1250; break; - default: + default: debris_trig.zombie_cost = 1000; break; } @@ -264,47 +264,47 @@ sloth_barricade_think() continue; if ( is_player_valid( who ) ) - { + { if ( who.score >= self.zombie_cost ) - { - who maps\mp\zombies\_zm_score::minus_to_player_score( self.zombie_cost ); - } - else - { - play_sound_at_pos( "no_purchase", self.origin ); - who maps\mp\zombies\_zm_audio::create_and_play_dialog( "general", "door_deny" ); - continue; - } + { + who maps\mp\zombies\_zm_score::minus_to_player_score( self.zombie_cost ); + } + else + { + play_sound_at_pos( "no_purchase", self.origin ); + who maps\mp\zombies\_zm_audio::create_and_play_dialog( "general", "door_deny" ); + continue; + } self hide(); if ( isdefined( self.script_flag ) && level flag_exists( self.script_flag ) ) - { - flag_set( self.script_flag ); + { + flag_set( self.script_flag ); - if ( self.script_flag == "jail_door1" ) - level notify( "jail_barricade_down" ); - } + if ( self.script_flag == "jail_door1" ) + level notify( "jail_barricade_down" ); + } pieces = getentarray( self.target, "targetname" ); pieces[1] sloth_barricade_move(); - if ( isdefined( self.script_int ) ) - exploder( self.script_int ); + if ( isdefined( self.script_int ) ) + exploder( self.script_int ); - foreach ( piece in pieces ) - { - piece delete(); - } + foreach ( piece in pieces ) + { + piece delete(); + } - self thread maps\mp\zombies\_zm_equip_headchopper::destroyheadchopperstouching( 0 ); - self playsound( "zmb_sloth_barrier_break" ); - level notify( "sloth_breaks_barrier" ); + self thread maps\mp\zombies\_zm_equip_headchopper::destroyheadchopperstouching( 0 ); + self playsound( "zmb_sloth_barrier_break" ); + level notify( "sloth_breaks_barrier" ); - self delete(); + self delete(); - break; - } + break; + } } } @@ -357,41 +357,41 @@ remove_chalk_draw_points() onuseplantobject_chalk( entity ) { - piece = entity maps\mp\zombies\_zm_buildables::player_get_buildable_piece( 1 ); + piece = entity maps\mp\zombies\_zm_buildables::player_get_buildable_piece( 1 ); - if ( isdefined( piece ) ) - { - weapon = piece.script_noteworthy; + if ( isdefined( piece ) ) + { + weapon = piece.script_noteworthy; - if ( isdefined( weapon ) ) - { - origin = self.origin; - angles = self.angles; + if ( isdefined( weapon ) ) + { + origin = self.origin; + angles = self.angles; - if ( isdefined( level._effect["wallbuy_replace"] ) ) - playfx( level._effect["wallbuy_replace"], origin, anglestoforward( angles ) ); + if ( isdefined( level._effect["wallbuy_replace"] ) ) + playfx( level._effect["wallbuy_replace"], origin, anglestoforward( angles ) ); - maps\mp\zombies\_zm_weapons::add_dynamic_wallbuy( weapon, self.target, 1 ); + maps\mp\zombies\_zm_weapons::add_dynamic_wallbuy( weapon, self.target, 1 ); - if ( !isdefined( level.built_wallbuys ) ) - level.built_wallbuys = 0; + if ( !isdefined( level.built_wallbuys ) ) + level.built_wallbuys = 0; - level.built_wallbuys++; + level.built_wallbuys++; - if ( isplayer( entity ) ) - { - entity maps\mp\zombies\_zm_stats::increment_client_stat( "buried_wallbuy_placed", 0 ); - entity maps\mp\zombies\_zm_stats::increment_player_stat( "buried_wallbuy_placed" ); - entity maps\mp\zombies\_zm_stats::increment_client_stat( "buried_wallbuy_placed_" + weapon, 0 ); - entity maps\mp\zombies\_zm_stats::increment_player_stat( "buried_wallbuy_placed_" + weapon ); - } + if ( isplayer( entity ) ) + { + entity maps\mp\zombies\_zm_stats::increment_client_stat( "buried_wallbuy_placed", 0 ); + entity maps\mp\zombies\_zm_stats::increment_player_stat( "buried_wallbuy_placed" ); + entity maps\mp\zombies\_zm_stats::increment_client_stat( "buried_wallbuy_placed_" + weapon, 0 ); + entity maps\mp\zombies\_zm_stats::increment_player_stat( "buried_wallbuy_placed_" + weapon ); + } - if ( level.built_wallbuys >= 6 ) - { - level.built_wallbuys = -100; - } - } - } + if ( level.built_wallbuys >= 6 ) + { + level.built_wallbuys = -100; + } + } + } } enable_fountain_transport() @@ -471,7 +471,7 @@ sloth_trap() trig waittill( "trigger", who ); if ( !is_player_valid( who ) ) - { + { continue; } @@ -531,26 +531,26 @@ sloth_damage_func() dance_action() { - self endon( "death" ); - self endon( "stop_action" ); - self setclientfield( "sloth_vomit", 0 ); - self.dance_end = gettime() + 30000; - level.sloth_protect = 0; + self endon( "death" ); + self endon( "stop_action" ); + self setclientfield( "sloth_vomit", 0 ); + self.dance_end = gettime() + 30000; + level.sloth_protect = 0; self.dance_action = 1; - while ( true ) - { - if ( gettime() >= self.dance_end ) - break; + while ( true ) + { + if ( gettime() >= self.dance_end ) + break; - self animscripted( self.origin, self.jail_start.angles, "zm_dance" ); - maps\mp\animscripts\zm_shared::donotetracks( "dance_anim", maps\mp\zombies\_zm_ai_sloth::vomit_notetrack ); - wait 0.1; - } + self animscripted( self.origin, self.jail_start.angles, "zm_dance" ); + maps\mp\animscripts\zm_shared::donotetracks( "dance_anim", maps\mp\zombies\_zm_ai_sloth::vomit_notetrack ); + wait 0.1; + } - self notify( "stop_dance" ); - self animscripted( self.origin, self.jail_start.angles, "zm_vomit" ); - maps\mp\animscripts\zm_shared::donotetracks( "vomit_anim", maps\mp\zombies\_zm_ai_sloth::vomit_notetrack ); - self.context_done = 1; + self notify( "stop_dance" ); + self animscripted( self.origin, self.jail_start.angles, "zm_vomit" ); + maps\mp\animscripts\zm_shared::donotetracks( "vomit_anim", maps\mp\zombies\_zm_ai_sloth::vomit_notetrack ); + self.context_done = 1; self.dance_action = 0; } \ No newline at end of file diff --git a/scripts/zm/zm_highrise/zm_highrise_reimagined.gsc b/scripts/zm/zm_highrise/zm_highrise_reimagined.gsc index 56f3523d..cbbf4db9 100644 --- a/scripts/zm/zm_highrise/zm_highrise_reimagined.gsc +++ b/scripts/zm/zm_highrise/zm_highrise_reimagined.gsc @@ -160,7 +160,7 @@ zm_traversal_override( traversealias ) self.pre_traverse = ::change_dierise_gap17c_low_to_high; } - return traversealias; + return traversealias; } change_dierise_traverse_2_high_to_low() @@ -196,9 +196,9 @@ slipgun_change_ammo() onbuyweapon_slipgun( player ) { - player givestartammo( self.stub.weaponname ); - player switchtoweapon( self.stub.weaponname ); - level notify( "slipgun_bought", player ); + player givestartammo( self.stub.weaponname ); + player switchtoweapon( self.stub.weaponname ); + level notify( "slipgun_bought", player ); } elevator_call() @@ -274,7 +274,7 @@ elevator_call_think() self waittill( "trigger", who ); if ( !is_player_valid( who ) ) - { + { continue; } @@ -332,12 +332,12 @@ elevator_call_think() watch_elevator_prompt() { - while ( 1 ) - { - self.elevator waittill( "floor_changed" ); + while ( 1 ) + { + self.elevator waittill( "floor_changed" ); self thread do_watch_elevator_prompt(); - } + } } do_watch_elevator_prompt() @@ -376,12 +376,12 @@ do_watch_elevator_prompt() watch_elevator_body_prompt() { - while ( 1 ) - { - msg = self.elevator.body waittill_any_return( "movedone", "startwait" ); + while ( 1 ) + { + msg = self.elevator.body waittill_any_return( "movedone", "startwait" ); self thread do_watch_elevator_body_prompt( msg ); - } + } } do_watch_elevator_body_prompt( msg ) @@ -465,7 +465,7 @@ escape_pod_call_think() self waittill( "trigger", who ); if ( !is_player_valid( who ) ) - { + { continue; } @@ -494,7 +494,7 @@ zombie_bad_zone_watcher() level endon( "end_game" ); level endon( "green_level3_door2" ); - elevator_volume = getent( "elevator_1d", "targetname" ); + elevator_volume = getent( "elevator_1d", "targetname" ); while ( 1 ) { diff --git a/scripts/zm/zm_nuked/zm_nuked_reimagined.gsc b/scripts/zm/zm_nuked/zm_nuked_reimagined.gsc index 557ecc46..0f4c70cb 100644 --- a/scripts/zm/zm_nuked/zm_nuked_reimagined.gsc +++ b/scripts/zm/zm_nuked/zm_nuked_reimagined.gsc @@ -10,8 +10,8 @@ main() init() { - level.zombie_init_done = ::zombie_init_done; - level.special_weapon_magicbox_check = ::nuked_special_weapon_magicbox_check; + level.zombie_init_done = ::zombie_init_done; + level.special_weapon_magicbox_check = ::nuked_special_weapon_magicbox_check; } zombie_init_done() @@ -22,7 +22,7 @@ zombie_init_done() { self thread maps\mp\zm_nuked::zombie_crater_locomotion(); } - self setphysparams( 15, 0, 48 ); + self setphysparams( 15, 0, 48 ); } nuked_special_weapon_magicbox_check(weapon) diff --git a/scripts/zm/zm_prison/zm_prison_reimagined.gsc b/scripts/zm/zm_prison/zm_prison_reimagined.gsc index 9d5fdf38..3d5486dc 100644 --- a/scripts/zm/zm_prison/zm_prison_reimagined.gsc +++ b/scripts/zm/zm_prison/zm_prison_reimagined.gsc @@ -8,103 +8,103 @@ main() { replaceFunc(maps\mp\zm_alcatraz_classic::give_afterlife, scripts\zm\replaced\zm_alcatraz_classic::give_afterlife); - replaceFunc(maps\mp\zm_alcatraz_craftables::init_craftables, scripts\zm\replaced\zm_alcatraz_craftables::init_craftables); - replaceFunc(maps\mp\zm_alcatraz_craftables::include_craftables, scripts\zm\replaced\zm_alcatraz_craftables::include_craftables); + replaceFunc(maps\mp\zm_alcatraz_craftables::init_craftables, scripts\zm\replaced\zm_alcatraz_craftables::init_craftables); + replaceFunc(maps\mp\zm_alcatraz_craftables::include_craftables, scripts\zm\replaced\zm_alcatraz_craftables::include_craftables); replaceFunc(maps\mp\zm_alcatraz_gamemodes::init, scripts\zm\replaced\zm_alcatraz_gamemodes::init); replaceFunc(maps\mp\zm_alcatraz_utility::blundergat_upgrade_station, scripts\zm\replaced\zm_alcatraz_utility::blundergat_upgrade_station); - replaceFunc(maps\mp\zm_alcatraz_utility::check_solo_status, scripts\zm\replaced\zm_alcatraz_utility::check_solo_status); - replaceFunc(maps\mp\zm_alcatraz_sq::start_alcatraz_sidequest, scripts\zm\replaced\zm_alcatraz_sq::start_alcatraz_sidequest); - replaceFunc(maps\mp\zm_alcatraz_sq::dryer_zombies_thread, scripts\zm\replaced\zm_alcatraz_sq::dryer_zombies_thread); - replaceFunc(maps\mp\zm_alcatraz_sq::track_quest_status_thread, scripts\zm\replaced\zm_alcatraz_sq::track_quest_status_thread); - replaceFunc(maps\mp\zm_alcatraz_sq::plane_boarding_thread, scripts\zm\replaced\zm_alcatraz_sq::plane_boarding_thread); - replaceFunc(maps\mp\zm_alcatraz_sq::plane_flight_thread, scripts\zm\replaced\zm_alcatraz_sq::plane_flight_thread); - replaceFunc(maps\mp\zm_alcatraz_sq::manage_electric_chairs, scripts\zm\replaced\zm_alcatraz_sq::manage_electric_chairs); - replaceFunc(maps\mp\zm_alcatraz_traps::init_fan_trap_trigs, scripts\zm\replaced\zm_alcatraz_traps::init_fan_trap_trigs); - replaceFunc(maps\mp\zm_alcatraz_traps::init_acid_trap_trigs, scripts\zm\replaced\zm_alcatraz_traps::init_acid_trap_trigs); - replaceFunc(maps\mp\zm_alcatraz_traps::zombie_acid_damage, scripts\zm\replaced\zm_alcatraz_traps::zombie_acid_damage); - replaceFunc(maps\mp\zm_alcatraz_traps::player_acid_damage, scripts\zm\replaced\zm_alcatraz_traps::player_acid_damage); - replaceFunc(maps\mp\zm_alcatraz_traps::tower_trap_trigger_think, scripts\zm\replaced\zm_alcatraz_traps::tower_trap_trigger_think); - replaceFunc(maps\mp\zm_alcatraz_travel::move_gondola, scripts\zm\replaced\zm_alcatraz_travel::move_gondola); + replaceFunc(maps\mp\zm_alcatraz_utility::check_solo_status, scripts\zm\replaced\zm_alcatraz_utility::check_solo_status); + replaceFunc(maps\mp\zm_alcatraz_sq::start_alcatraz_sidequest, scripts\zm\replaced\zm_alcatraz_sq::start_alcatraz_sidequest); + replaceFunc(maps\mp\zm_alcatraz_sq::dryer_zombies_thread, scripts\zm\replaced\zm_alcatraz_sq::dryer_zombies_thread); + replaceFunc(maps\mp\zm_alcatraz_sq::track_quest_status_thread, scripts\zm\replaced\zm_alcatraz_sq::track_quest_status_thread); + replaceFunc(maps\mp\zm_alcatraz_sq::plane_boarding_thread, scripts\zm\replaced\zm_alcatraz_sq::plane_boarding_thread); + replaceFunc(maps\mp\zm_alcatraz_sq::plane_flight_thread, scripts\zm\replaced\zm_alcatraz_sq::plane_flight_thread); + replaceFunc(maps\mp\zm_alcatraz_sq::manage_electric_chairs, scripts\zm\replaced\zm_alcatraz_sq::manage_electric_chairs); + replaceFunc(maps\mp\zm_alcatraz_traps::init_fan_trap_trigs, scripts\zm\replaced\zm_alcatraz_traps::init_fan_trap_trigs); + replaceFunc(maps\mp\zm_alcatraz_traps::init_acid_trap_trigs, scripts\zm\replaced\zm_alcatraz_traps::init_acid_trap_trigs); + replaceFunc(maps\mp\zm_alcatraz_traps::zombie_acid_damage, scripts\zm\replaced\zm_alcatraz_traps::zombie_acid_damage); + replaceFunc(maps\mp\zm_alcatraz_traps::player_acid_damage, scripts\zm\replaced\zm_alcatraz_traps::player_acid_damage); + replaceFunc(maps\mp\zm_alcatraz_traps::tower_trap_trigger_think, scripts\zm\replaced\zm_alcatraz_traps::tower_trap_trigger_think); + replaceFunc(maps\mp\zm_alcatraz_travel::move_gondola, scripts\zm\replaced\zm_alcatraz_travel::move_gondola); replaceFunc(maps\mp\zm_alcatraz_weap_quest::grief_soul_catcher_state_manager, scripts\zm\replaced\zm_alcatraz_weap_quest::grief_soul_catcher_state_manager); - replaceFunc(maps\mp\zm_alcatraz_distance_tracking::delete_zombie_noone_looking, scripts\zm\replaced\zm_alcatraz_distance_tracking::delete_zombie_noone_looking); - replaceFunc(maps\mp\zm_prison_sq_bg::give_sq_bg_reward, scripts\zm\replaced\zm_prison_sq_bg::give_sq_bg_reward); - replaceFunc(maps\mp\zm_prison_sq_final::stage_one, scripts\zm\replaced\zm_prison_sq_final::stage_one); - replaceFunc(maps\mp\zm_prison_sq_final::final_flight_trigger, scripts\zm\replaced\zm_prison_sq_final::final_flight_trigger); - replaceFunc(maps\mp\zombies\_zm_afterlife::init, scripts\zm\replaced\_zm_afterlife::init); - replaceFunc(maps\mp\zombies\_zm_afterlife::afterlife_add, scripts\zm\replaced\_zm_afterlife::afterlife_add); - replaceFunc(maps\mp\zombies\_zm_afterlife::afterlife_laststand, scripts\zm\replaced\_zm_afterlife::afterlife_laststand); - replaceFunc(maps\mp\zombies\_zm_afterlife::afterlife_revive_do_revive, scripts\zm\replaced\_zm_afterlife::afterlife_revive_do_revive); - replaceFunc(maps\mp\zombies\_zm_afterlife::afterlife_corpse_cleanup, scripts\zm\replaced\_zm_afterlife::afterlife_corpse_cleanup); - replaceFunc(maps\mp\zombies\_zm_afterlife::afterlife_give_loadout, scripts\zm\replaced\_zm_afterlife::afterlife_give_loadout); - replaceFunc(maps\mp\zombies\_zm_ai_brutus::init, scripts\zm\replaced\_zm_ai_brutus::init); - replaceFunc(maps\mp\zombies\_zm_ai_brutus::brutus_round_tracker, scripts\zm\replaced\_zm_ai_brutus::brutus_round_tracker); - replaceFunc(maps\mp\zombies\_zm_ai_brutus::get_brutus_spawn_pos_val, scripts\zm\replaced\_zm_ai_brutus::get_brutus_spawn_pos_val); + replaceFunc(maps\mp\zm_alcatraz_distance_tracking::delete_zombie_noone_looking, scripts\zm\replaced\zm_alcatraz_distance_tracking::delete_zombie_noone_looking); + replaceFunc(maps\mp\zm_prison_sq_bg::give_sq_bg_reward, scripts\zm\replaced\zm_prison_sq_bg::give_sq_bg_reward); + replaceFunc(maps\mp\zm_prison_sq_final::stage_one, scripts\zm\replaced\zm_prison_sq_final::stage_one); + replaceFunc(maps\mp\zm_prison_sq_final::final_flight_trigger, scripts\zm\replaced\zm_prison_sq_final::final_flight_trigger); + replaceFunc(maps\mp\zombies\_zm_afterlife::init, scripts\zm\replaced\_zm_afterlife::init); + replaceFunc(maps\mp\zombies\_zm_afterlife::afterlife_add, scripts\zm\replaced\_zm_afterlife::afterlife_add); + replaceFunc(maps\mp\zombies\_zm_afterlife::afterlife_laststand, scripts\zm\replaced\_zm_afterlife::afterlife_laststand); + replaceFunc(maps\mp\zombies\_zm_afterlife::afterlife_revive_do_revive, scripts\zm\replaced\_zm_afterlife::afterlife_revive_do_revive); + replaceFunc(maps\mp\zombies\_zm_afterlife::afterlife_corpse_cleanup, scripts\zm\replaced\_zm_afterlife::afterlife_corpse_cleanup); + replaceFunc(maps\mp\zombies\_zm_afterlife::afterlife_give_loadout, scripts\zm\replaced\_zm_afterlife::afterlife_give_loadout); + replaceFunc(maps\mp\zombies\_zm_ai_brutus::init, scripts\zm\replaced\_zm_ai_brutus::init); + replaceFunc(maps\mp\zombies\_zm_ai_brutus::brutus_round_tracker, scripts\zm\replaced\_zm_ai_brutus::brutus_round_tracker); + replaceFunc(maps\mp\zombies\_zm_ai_brutus::get_brutus_spawn_pos_val, scripts\zm\replaced\_zm_ai_brutus::get_brutus_spawn_pos_val); replaceFunc(maps\mp\zombies\_zm_ai_brutus::brutus_spawn, scripts\zm\replaced\_zm_ai_brutus::brutus_spawn); replaceFunc(maps\mp\zombies\_zm_ai_brutus::brutus_health_increases, scripts\zm\replaced\_zm_ai_brutus::brutus_health_increases); replaceFunc(maps\mp\zombies\_zm_ai_brutus::brutus_cleanup_at_end_of_grief_round, scripts\zm\replaced\_zm_ai_brutus::brutus_cleanup_at_end_of_grief_round); replaceFunc(maps\mp\zombies\_zm_craftables::choose_open_craftable, scripts\zm\replaced\_zm_craftables::choose_open_craftable); - replaceFunc(maps\mp\zombies\_zm_craftables::craftable_use_hold_think_internal, scripts\zm\replaced\_zm_craftables::craftable_use_hold_think_internal); - replaceFunc(maps\mp\zombies\_zm_craftables::player_progress_bar_update, scripts\zm\replaced\_zm_craftables::player_progress_bar_update); - replaceFunc(maps\mp\zombies\_zm_craftables::update_open_table_status, scripts\zm\replaced\_zm_craftables::update_open_table_status); + replaceFunc(maps\mp\zombies\_zm_craftables::craftable_use_hold_think_internal, scripts\zm\replaced\_zm_craftables::craftable_use_hold_think_internal); + replaceFunc(maps\mp\zombies\_zm_craftables::player_progress_bar_update, scripts\zm\replaced\_zm_craftables::player_progress_bar_update); + replaceFunc(maps\mp\zombies\_zm_craftables::update_open_table_status, scripts\zm\replaced\_zm_craftables::update_open_table_status); replaceFunc(maps\mp\zombies\_zm_riotshield_prison::doriotshielddeploy, scripts\zm\replaced\_zm_riotshield_prison::doriotshielddeploy); replaceFunc(maps\mp\zombies\_zm_riotshield_prison::trackriotshield, scripts\zm\replaced\_zm_riotshield_prison::trackriotshield); replaceFunc(maps\mp\zombies\_zm_weap_riotshield_prison::init, scripts\zm\replaced\_zm_weap_riotshield_prison::init); replaceFunc(maps\mp\zombies\_zm_weap_riotshield_prison::player_damage_shield, scripts\zm\replaced\_zm_weap_riotshield_prison::player_damage_shield); - replaceFunc(maps\mp\zombies\_zm_weap_blundersplat::wait_for_blundersplat_fired, scripts\zm\replaced\_zm_weap_blundersplat::wait_for_blundersplat_fired); - replaceFunc(maps\mp\zombies\_zm_weap_blundersplat::wait_for_blundersplat_upgraded_fired, scripts\zm\replaced\_zm_weap_blundersplat::wait_for_blundersplat_upgraded_fired); - replaceFunc(maps\mp\zombies\_zm_weap_blundersplat::_titus_target_animate_and_die, scripts\zm\replaced\_zm_weap_blundersplat::_titus_target_animate_and_die); - replaceFunc(maps\mp\zombies\_zm_weap_tomahawk::calculate_tomahawk_damage, scripts\zm\replaced\_zm_weap_tomahawk::calculate_tomahawk_damage); - replaceFunc(maps\mp\zombies\_zm_weap_tomahawk::get_grenade_charge_power, scripts\zm\replaced\_zm_weap_tomahawk::get_grenade_charge_power); - replaceFunc(maps\mp\zombies\_zm_weap_tomahawk::tomahawk_attack_zombies, scripts\zm\replaced\_zm_weap_tomahawk::tomahawk_attack_zombies); - replaceFunc(maps\mp\zombies\_zm_weap_tomahawk::tomahawk_return_player, scripts\zm\replaced\_zm_weap_tomahawk::tomahawk_return_player); + replaceFunc(maps\mp\zombies\_zm_weap_blundersplat::wait_for_blundersplat_fired, scripts\zm\replaced\_zm_weap_blundersplat::wait_for_blundersplat_fired); + replaceFunc(maps\mp\zombies\_zm_weap_blundersplat::wait_for_blundersplat_upgraded_fired, scripts\zm\replaced\_zm_weap_blundersplat::wait_for_blundersplat_upgraded_fired); + replaceFunc(maps\mp\zombies\_zm_weap_blundersplat::_titus_target_animate_and_die, scripts\zm\replaced\_zm_weap_blundersplat::_titus_target_animate_and_die); + replaceFunc(maps\mp\zombies\_zm_weap_tomahawk::calculate_tomahawk_damage, scripts\zm\replaced\_zm_weap_tomahawk::calculate_tomahawk_damage); + replaceFunc(maps\mp\zombies\_zm_weap_tomahawk::get_grenade_charge_power, scripts\zm\replaced\_zm_weap_tomahawk::get_grenade_charge_power); + replaceFunc(maps\mp\zombies\_zm_weap_tomahawk::tomahawk_attack_zombies, scripts\zm\replaced\_zm_weap_tomahawk::tomahawk_attack_zombies); + replaceFunc(maps\mp\zombies\_zm_weap_tomahawk::tomahawk_return_player, scripts\zm\replaced\_zm_weap_tomahawk::tomahawk_return_player); replaceFunc(maps\mp\zombies\_zm_zonemgr::manage_zones, ::manage_zones); - door_changes(); + door_changes(); } init() { precacheModel("t6_wpn_zmb_severedhead_world"); - precacheModel("collision_clip_32x32x32"); + precacheModel("collision_clip_32x32x32"); level.zombie_init_done = ::zombie_init_done; level.special_weapon_magicbox_check = ::check_for_special_weapon_limit_exist; - level.custom_door_buy_check = ::door_buy_afterlife_check; - level.custom_laststand_func = scripts\zm\replaced\_zm_perk_electric_cherry::electric_cherry_laststand; + level.custom_door_buy_check = ::door_buy_afterlife_check; + level.custom_laststand_func = scripts\zm\replaced\_zm_perk_electric_cherry::electric_cherry_laststand; - level.zombie_vars["below_world_check"] = -15000; + level.zombie_vars["below_world_check"] = -15000; level.zombie_powerups["meat_stink"].model_name = "t6_wpn_zmb_severedhead_world"; - maps\mp\zombies\_zm::spawn_life_brush( (94, 6063, 240), 256, 256 ); + maps\mp\zombies\_zm::spawn_life_brush( (94, 6063, 240), 256, 256 ); - player_initial_spawn_override(); + player_initial_spawn_override(); player_respawn_override(); level thread updatecraftables(); - level thread grief_brutus_spawn_after_time(); + level thread grief_brutus_spawn_after_time(); } door_changes() { - num = 0; - targets = getentarray( "cellblock_start_door", "targetname" ); + num = 0; + targets = getentarray( "cellblock_start_door", "targetname" ); zombie_doors = getentarray( "zombie_door", "targetname" ); for ( i = 0; i < zombie_doors.size; i++ ) { - if ( isdefined( zombie_doors[i].target ) && zombie_doors[i].target == "cellblock_start_door" ) - { - zombie_doors[i].zombie_cost = 750; - zombie_doors[i].target += num; - targets[num].targetname += num; - targets[num + 2].targetname += num; - num++; - } + if ( isdefined( zombie_doors[i].target ) && zombie_doors[i].target == "cellblock_start_door" ) + { + zombie_doors[i].zombie_cost = 750; + zombie_doors[i].target += num; + targets[num].targetname += num; + targets[num + 2].targetname += num; + num++; + } } } zombie_init_done() { - self.meleedamage = 50; + self.meleedamage = 50; self.allowpain = 0; self setphysparams( 15, 0, 48 ); } @@ -167,12 +167,12 @@ check_for_special_weapon_limit_exist(weapon) door_buy_afterlife_check(door) { - if (isDefined(level.is_player_valid_override)) - { - return [[level.is_player_valid_override]](self); - } + if (isDefined(level.is_player_valid_override)) + { + return [[level.is_player_valid_override]](self); + } - return true; + return true; } player_initial_spawn_override() @@ -202,7 +202,7 @@ player_initial_spawn_override() } } - foreach (initial_spawn in remove_initial_spawns) + foreach (initial_spawn in remove_initial_spawns) { arrayremovevalue(initial_spawns, initial_spawn); } @@ -217,21 +217,21 @@ player_respawn_override() if(respawn_point.script_noteworthy == "zone_cafeteria") { respawn_array = getstructarray( respawn_point.target, "targetname" ); - remove_respawn_array = []; + remove_respawn_array = []; foreach(respawn in respawn_array) { if(respawn.origin == (2536, 9704, 1360)) { - // respawn is in acid trap - remove_respawn_array[remove_respawn_array.size] = respawn; + // respawn is in acid trap + remove_respawn_array[remove_respawn_array.size] = respawn; } } - foreach(respawn in remove_respawn_array) + foreach(respawn in remove_respawn_array) { - arrayremovevalue(respawn_array, respawn); - } + arrayremovevalue(respawn_array, respawn); + } } } } @@ -255,263 +255,263 @@ updatecraftables() craftable_place_think() { - self endon( "kill_trigger" ); - player_crafted = undefined; + self endon( "kill_trigger" ); + player_crafted = undefined; - while ( !( isdefined( self.stub.crafted ) && self.stub.crafted ) ) - { - self waittill( "trigger", player ); + while ( !( isdefined( self.stub.crafted ) && self.stub.crafted ) ) + { + self waittill( "trigger", player ); - if ( isdefined( level.custom_craftable_validation ) ) - { - valid = self [[ level.custom_craftable_validation ]]( player ); + if ( isdefined( level.custom_craftable_validation ) ) + { + valid = self [[ level.custom_craftable_validation ]]( player ); - if ( !valid ) - continue; - } + if ( !valid ) + continue; + } - if ( player != self.parent_player ) - continue; + if ( player != self.parent_player ) + continue; - if ( isdefined( player.screecher_weapon ) ) - continue; + if ( isdefined( player.screecher_weapon ) ) + continue; - if ( !is_player_valid( player ) ) - { - player thread ignore_triggers( 0.5 ); - continue; - } + if ( !is_player_valid( player ) ) + { + player thread ignore_triggers( 0.5 ); + continue; + } - status = player player_can_craft( self.stub.craftablespawn ); + status = player player_can_craft( self.stub.craftablespawn ); - if ( !status ) - { - self.stub.hint_string = ""; - self sethintstring( self.stub.hint_string ); + if ( !status ) + { + self.stub.hint_string = ""; + self sethintstring( self.stub.hint_string ); - if ( isdefined( self.stub.oncantuse ) ) - self.stub [[ self.stub.oncantuse ]]( player ); - } - else - { - if ( isdefined( self.stub.onbeginuse ) ) - self.stub [[ self.stub.onbeginuse ]]( player ); + if ( isdefined( self.stub.oncantuse ) ) + self.stub [[ self.stub.oncantuse ]]( player ); + } + else + { + if ( isdefined( self.stub.onbeginuse ) ) + self.stub [[ self.stub.onbeginuse ]]( player ); - result = self craftable_use_hold_think( player ); - team = player.pers["team"]; + result = self craftable_use_hold_think( player ); + team = player.pers["team"]; - if ( isdefined( self.stub.onenduse ) ) - self.stub [[ self.stub.onenduse ]]( team, player, result ); + if ( isdefined( self.stub.onenduse ) ) + self.stub [[ self.stub.onenduse ]]( team, player, result ); - if ( !result ) - continue; + if ( !result ) + continue; - if ( isdefined( self.stub.onuse ) ) - self.stub [[ self.stub.onuse ]]( player ); + if ( isdefined( self.stub.onuse ) ) + self.stub [[ self.stub.onuse ]]( player ); - prompt = player player_craft( self.stub.craftablespawn ); - player_crafted = player; - self.stub.hint_string = prompt; - self sethintstring( self.stub.hint_string ); - } - } + prompt = player player_craft( self.stub.craftablespawn ); + player_crafted = player; + self.stub.hint_string = prompt; + self sethintstring( self.stub.hint_string ); + } + } - if ( isdefined( self.stub.craftablestub.onfullycrafted ) ) - { - b_result = self.stub [[ self.stub.craftablestub.onfullycrafted ]](); + if ( isdefined( self.stub.craftablestub.onfullycrafted ) ) + { + b_result = self.stub [[ self.stub.craftablestub.onfullycrafted ]](); - if ( !b_result ) - return; - } + if ( !b_result ) + return; + } - if ( isdefined( player_crafted ) ) - { + if ( isdefined( player_crafted ) ) + { - } + } - if ( self.stub.persistent == 0 ) - { - self.stub craftablestub_remove(); - thread maps\mp\zombies\_zm_unitrigger::unregister_unitrigger( self.stub ); - return; - } + if ( self.stub.persistent == 0 ) + { + self.stub craftablestub_remove(); + thread maps\mp\zombies\_zm_unitrigger::unregister_unitrigger( self.stub ); + return; + } - if ( self.stub.persistent == 3 ) - { - stub_uncraft_craftable( self.stub, 1 ); - return; - } + if ( self.stub.persistent == 3 ) + { + stub_uncraft_craftable( self.stub, 1 ); + return; + } - if ( self.stub.persistent == 2 ) - { - if ( isdefined( player_crafted ) ) - self craftabletrigger_update_prompt( player_crafted ); + if ( self.stub.persistent == 2 ) + { + if ( isdefined( player_crafted ) ) + self craftabletrigger_update_prompt( player_crafted ); - 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 sethintstring( self.stub.hint_string ); - return; - } + 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 sethintstring( self.stub.hint_string ); + return; + } - if ( isdefined( self.stub.str_taken ) && self.stub.str_taken ) - { - self.stub.hint_string = &"ZOMBIE_GO_TO_THE_BOX"; - self sethintstring( self.stub.hint_string ); - return; - } + if ( isdefined( self.stub.str_taken ) && self.stub.str_taken ) + { + self.stub.hint_string = &"ZOMBIE_GO_TO_THE_BOX"; + self sethintstring( self.stub.hint_string ); + return; + } - if ( isdefined( self.stub.model ) ) - { - self.stub.model notsolid(); - self.stub.model show(); - } + if ( isdefined( self.stub.model ) ) + { + self.stub.model notsolid(); + self.stub.model show(); + } - while ( self.stub.persistent == 2 ) - { - self waittill( "trigger", player ); + while ( self.stub.persistent == 2 ) + { + self waittill( "trigger", player ); - if ( isdefined( player.screecher_weapon ) ) - continue; + if ( isdefined( player.screecher_weapon ) ) + continue; - if ( isdefined( level.custom_craftable_validation ) ) - { - valid = self [[ level.custom_craftable_validation ]]( player ); + if ( isdefined( level.custom_craftable_validation ) ) + { + valid = self [[ level.custom_craftable_validation ]]( player ); - if ( !valid ) - continue; - } + if ( !valid ) + continue; + } - if ( !( isdefined( self.stub.crafted ) && self.stub.crafted ) ) - { - self.stub.hint_string = ""; - self sethintstring( self.stub.hint_string ); - return; - } + if ( !( isdefined( self.stub.crafted ) && self.stub.crafted ) ) + { + self.stub.hint_string = ""; + self sethintstring( self.stub.hint_string ); + return; + } - if ( player != self.parent_player ) - continue; + if ( player != self.parent_player ) + continue; - if ( !is_player_valid( player ) ) - { - player thread ignore_triggers( 0.5 ); - continue; - } + if ( !is_player_valid( player ) ) + { + player thread ignore_triggers( 0.5 ); + continue; + } - self.stub.bought = 1; + self.stub.bought = 1; - if ( isdefined( self.stub.model ) ) - self.stub.model thread model_fly_away( self ); + if ( isdefined( self.stub.model ) ) + self.stub.model thread model_fly_away( self ); - 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_craftables[self.stub.equipname].onbuyweapon ) ) - self [[ level.zombie_include_craftables[self.stub.equipname].onbuyweapon ]]( player ); + if ( isdefined( level.zombie_include_craftables[self.stub.equipname].onbuyweapon ) ) + self [[ level.zombie_include_craftables[self.stub.equipname].onbuyweapon ]]( player ); - if ( !maps\mp\zombies\_zm_weapons::limited_weapon_below_quota( self.stub.weaponname, undefined ) ) - self.stub.hint_string = &"ZOMBIE_GO_TO_THE_BOX_LIMITED"; - else - self.stub.hint_string = &"ZOMBIE_GO_TO_THE_BOX"; + if ( !maps\mp\zombies\_zm_weapons::limited_weapon_below_quota( self.stub.weaponname, undefined ) ) + self.stub.hint_string = &"ZOMBIE_GO_TO_THE_BOX_LIMITED"; + else + self.stub.hint_string = &"ZOMBIE_GO_TO_THE_BOX"; - self sethintstring( self.stub.hint_string ); - player track_craftables_pickedup( self.stub.craftablespawn ); - } - } - else if ( !isdefined( player_crafted ) || self craftabletrigger_update_prompt( player_crafted ) ) - { - if ( isdefined( self.stub.model ) ) - { - self.stub.model notsolid(); - self.stub.model show(); - } + self sethintstring( self.stub.hint_string ); + player track_craftables_pickedup( self.stub.craftablespawn ); + } + } + else if ( !isdefined( player_crafted ) || self craftabletrigger_update_prompt( player_crafted ) ) + { + if ( isdefined( self.stub.model ) ) + { + self.stub.model notsolid(); + self.stub.model show(); + } - while ( self.stub.persistent == 1 ) - { - self waittill( "trigger", player ); + while ( self.stub.persistent == 1 ) + { + self waittill( "trigger", player ); - if ( isdefined( player.screecher_weapon ) ) - continue; + if ( isdefined( player.screecher_weapon ) ) + continue; - if ( isdefined( level.custom_craftable_validation ) ) - { - valid = self [[ level.custom_craftable_validation ]]( player ); + if ( isdefined( level.custom_craftable_validation ) ) + { + valid = self [[ level.custom_craftable_validation ]]( player ); - if ( !valid ) - continue; - } + if ( !valid ) + continue; + } - if ( !( isdefined( self.stub.crafted ) && self.stub.crafted ) ) - { - self.stub.hint_string = ""; - self sethintstring( self.stub.hint_string ); - return; - } + if ( !( isdefined( self.stub.crafted ) && self.stub.crafted ) ) + { + self.stub.hint_string = ""; + self sethintstring( self.stub.hint_string ); + return; + } - if ( player != self.parent_player ) - continue; + if ( player != self.parent_player ) + continue; - if ( !is_player_valid( player ) ) - { - player thread ignore_triggers( 0.5 ); - continue; - } + if ( !is_player_valid( player ) ) + { + player thread ignore_triggers( 0.5 ); + continue; + } if (player.score < self.stub.cost) { 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; } - if ( player has_player_equipment( self.stub.weaponname ) ) - continue; + if ( player has_player_equipment( self.stub.weaponname ) ) + continue; - if ( isdefined( level.zombie_craftable_persistent_weapon ) ) - { - if ( self [[ level.zombie_craftable_persistent_weapon ]]( player ) ) - continue; - } + if ( isdefined( level.zombie_craftable_persistent_weapon ) ) + { + if ( self [[ level.zombie_craftable_persistent_weapon ]]( player ) ) + continue; + } - if ( isdefined( level.zombie_custom_equipment_setup ) ) - { - if ( self [[ level.zombie_custom_equipment_setup ]]( player ) ) - continue; - } + if ( isdefined( level.zombie_custom_equipment_setup ) ) + { + if ( self [[ level.zombie_custom_equipment_setup ]]( player ) ) + 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 ); self play_sound_on_ent( "purchase" ); - player maps\mp\zombies\_zm_equipment::equipment_buy( self.stub.weaponname ); - player giveweapon( self.stub.weaponname ); - player setweaponammoclip( self.stub.weaponname, 1 ); + player maps\mp\zombies\_zm_equipment::equipment_buy( self.stub.weaponname ); + player giveweapon( self.stub.weaponname ); + player setweaponammoclip( self.stub.weaponname, 1 ); - if ( isdefined( level.zombie_include_craftables[self.stub.equipname].onbuyweapon ) ) - self [[ level.zombie_include_craftables[self.stub.equipname].onbuyweapon ]]( player ); - else if ( self.stub.weaponname != "keys_zm" ) - player setactionslot( 1, "weapon", self.stub.weaponname ); + if ( isdefined( level.zombie_include_craftables[self.stub.equipname].onbuyweapon ) ) + self [[ level.zombie_include_craftables[self.stub.equipname].onbuyweapon ]]( player ); + else if ( self.stub.weaponname != "keys_zm" ) + player setactionslot( 1, "weapon", self.stub.weaponname ); - if ( isdefined( level.zombie_craftablestubs[self.stub.equipname].str_taken ) ) - self.stub.hint_string = level.zombie_craftablestubs[self.stub.equipname].str_taken; - else - self.stub.hint_string = ""; + if ( isdefined( level.zombie_craftablestubs[self.stub.equipname].str_taken ) ) + self.stub.hint_string = level.zombie_craftablestubs[self.stub.equipname].str_taken; + else + self.stub.hint_string = ""; - self sethintstring( self.stub.hint_string ); - player track_craftables_pickedup( self.stub.craftablespawn ); - } - else - { - self.stub.hint_string = ""; - self sethintstring( self.stub.hint_string ); - } - } - } + self sethintstring( self.stub.hint_string ); + player track_craftables_pickedup( self.stub.craftablespawn ); + } + else + { + self.stub.hint_string = ""; + self sethintstring( self.stub.hint_string ); + } + } + } } craftabletrigger_update_prompt( player ) { - can_use = self.stub craftablestub_update_prompt( player ); + can_use = self.stub craftablestub_update_prompt( player ); if (can_use && is_true(self.stub.crafted) && !is_true(self.stub.is_locked)) { @@ -522,274 +522,274 @@ craftabletrigger_update_prompt( player ) self sethintstring( self.stub.hint_string ); } - return can_use; + return can_use; } grief_brutus_spawn_after_time() { - if ( !is_gametype_active( "zgrief" ) ) - { - return; - } + if ( !is_gametype_active( "zgrief" ) ) + { + return; + } - level endon("end_game"); + level endon("end_game"); - level waittill("restart_round_start"); + level waittill("restart_round_start"); - while (1) - { - time = randomIntRange(240, 360); + while (1) + { + time = randomIntRange(240, 360); - wait time; + wait time; - level notify( "spawn_brutus", 1 ); + level notify( "spawn_brutus", 1 ); - while (level.brutus_count <= 0) - { - wait 1; - } + while (level.brutus_count <= 0) + { + wait 1; + } - while (level.brutus_count > 0) - { - wait 1; - } - } + while (level.brutus_count > 0) + { + wait 1; + } + } } manage_zones( initial_zone ) { level.zone_manager_init_func = ::working_zone_init; - deactivate_initial_barrier_goals(); - zone_choke = 0; - spawn_points = maps\mp\gametypes_zm\_zm_gametype::get_player_spawns_for_gametype(); + deactivate_initial_barrier_goals(); + zone_choke = 0; + spawn_points = maps\mp\gametypes_zm\_zm_gametype::get_player_spawns_for_gametype(); - for ( i = 0; i < spawn_points.size; i++ ) - { - assert( isdefined( spawn_points[i].script_noteworthy ), "player_respawn_point: You must specify a script noteworthy with the zone name" ); - spawn_points[i].locked = 1; - } + for ( i = 0; i < spawn_points.size; i++ ) + { + assert( isdefined( spawn_points[i].script_noteworthy ), "player_respawn_point: You must specify a script noteworthy with the zone name" ); + spawn_points[i].locked = 1; + } - if ( isdefined( level.zone_manager_init_func ) ) - [[ level.zone_manager_init_func ]](); + if ( isdefined( level.zone_manager_init_func ) ) + [[ level.zone_manager_init_func ]](); - if ( isarray( initial_zone ) ) - { - for ( i = 0; i < initial_zone.size; i++ ) - { - zone_init( initial_zone[i] ); - enable_zone( initial_zone[i] ); - } - } - else - { - zone_init( initial_zone ); - enable_zone( initial_zone ); - } + if ( isarray( initial_zone ) ) + { + for ( i = 0; i < initial_zone.size; i++ ) + { + zone_init( initial_zone[i] ); + enable_zone( initial_zone[i] ); + } + } + else + { + zone_init( initial_zone ); + enable_zone( initial_zone ); + } - setup_zone_flag_waits(); - zkeys = getarraykeys( level.zones ); - level.zone_keys = zkeys; - level.newzones = []; + setup_zone_flag_waits(); + zkeys = getarraykeys( level.zones ); + level.zone_keys = zkeys; + level.newzones = []; - for ( z = 0; z < zkeys.size; z++ ) - level.newzones[zkeys[z]] = spawnstruct(); + for ( z = 0; z < zkeys.size; z++ ) + level.newzones[zkeys[z]] = spawnstruct(); - oldzone = undefined; - flag_set( "zones_initialized" ); - flag_wait( "begin_spawning" ); + oldzone = undefined; + flag_set( "zones_initialized" ); + flag_wait( "begin_spawning" ); - while ( getdvarint( "noclip" ) == 0 || getdvarint( "notarget" ) != 0 ) - { - for ( z = 0; z < zkeys.size; z++ ) - { - level.newzones[zkeys[z]].is_active = 0; - level.newzones[zkeys[z]].is_occupied = 0; - } + while ( getdvarint( "noclip" ) == 0 || getdvarint( "notarget" ) != 0 ) + { + for ( z = 0; z < zkeys.size; z++ ) + { + level.newzones[zkeys[z]].is_active = 0; + level.newzones[zkeys[z]].is_occupied = 0; + } - a_zone_is_active = 0; - a_zone_is_spawning_allowed = 0; - level.zone_scanning_active = 1; + a_zone_is_active = 0; + a_zone_is_spawning_allowed = 0; + level.zone_scanning_active = 1; - for ( z = 0; z < zkeys.size; z++ ) - { - zone = level.zones[zkeys[z]]; - newzone = level.newzones[zkeys[z]]; + for ( z = 0; z < zkeys.size; z++ ) + { + zone = level.zones[zkeys[z]]; + newzone = level.newzones[zkeys[z]]; - if ( !zone.is_enabled ) - continue; + if ( !zone.is_enabled ) + continue; - if ( isdefined( level.zone_occupied_func ) ) - newzone.is_occupied = [[ level.zone_occupied_func ]]( zkeys[z] ); - else - newzone.is_occupied = player_in_zone( zkeys[z] ); + if ( isdefined( level.zone_occupied_func ) ) + newzone.is_occupied = [[ level.zone_occupied_func ]]( zkeys[z] ); + else + newzone.is_occupied = player_in_zone( zkeys[z] ); - if ( newzone.is_occupied ) - { - newzone.is_active = 1; - a_zone_is_active = 1; + if ( newzone.is_occupied ) + { + newzone.is_active = 1; + a_zone_is_active = 1; - if ( zone.is_spawning_allowed ) - a_zone_is_spawning_allowed = 1; + if ( zone.is_spawning_allowed ) + a_zone_is_spawning_allowed = 1; - if ( !isdefined( oldzone ) || oldzone != newzone ) - { - level notify( "newzoneActive", zkeys[z] ); - oldzone = newzone; - } + if ( !isdefined( oldzone ) || oldzone != newzone ) + { + level notify( "newzoneActive", zkeys[z] ); + oldzone = newzone; + } - azkeys = getarraykeys( zone.adjacent_zones ); + azkeys = getarraykeys( zone.adjacent_zones ); - for ( az = 0; az < zone.adjacent_zones.size; az++ ) - { - if ( zone.adjacent_zones[azkeys[az]].is_connected && level.zones[azkeys[az]].is_enabled ) - { - level.newzones[azkeys[az]].is_active = 1; + for ( az = 0; az < zone.adjacent_zones.size; az++ ) + { + if ( zone.adjacent_zones[azkeys[az]].is_connected && level.zones[azkeys[az]].is_enabled ) + { + level.newzones[azkeys[az]].is_active = 1; - if ( level.zones[azkeys[az]].is_spawning_allowed ) - a_zone_is_spawning_allowed = 1; - } - } - } + if ( level.zones[azkeys[az]].is_spawning_allowed ) + a_zone_is_spawning_allowed = 1; + } + } + } - zone_choke++; + zone_choke++; - if ( zone_choke >= 3 ) - { - zone_choke = 0; - wait 0.05; - } - } + if ( zone_choke >= 3 ) + { + zone_choke = 0; + wait 0.05; + } + } - level.zone_scanning_active = 0; + level.zone_scanning_active = 0; - for ( z = 0; z < zkeys.size; z++ ) - { - level.zones[zkeys[z]].is_active = level.newzones[zkeys[z]].is_active; - level.zones[zkeys[z]].is_occupied = level.newzones[zkeys[z]].is_occupied; - } + for ( z = 0; z < zkeys.size; z++ ) + { + level.zones[zkeys[z]].is_active = level.newzones[zkeys[z]].is_active; + level.zones[zkeys[z]].is_occupied = level.newzones[zkeys[z]].is_occupied; + } - if ( !a_zone_is_active || !a_zone_is_spawning_allowed ) - { - if ( isarray( initial_zone ) ) - { - level.zones[initial_zone[0]].is_active = 1; - level.zones[initial_zone[0]].is_occupied = 1; - level.zones[initial_zone[0]].is_spawning_allowed = 1; - } - else - { - level.zones[initial_zone].is_active = 1; - level.zones[initial_zone].is_occupied = 1; - level.zones[initial_zone].is_spawning_allowed = 1; - } - } + if ( !a_zone_is_active || !a_zone_is_spawning_allowed ) + { + if ( isarray( initial_zone ) ) + { + level.zones[initial_zone[0]].is_active = 1; + level.zones[initial_zone[0]].is_occupied = 1; + level.zones[initial_zone[0]].is_spawning_allowed = 1; + } + else + { + level.zones[initial_zone].is_active = 1; + level.zones[initial_zone].is_occupied = 1; + level.zones[initial_zone].is_spawning_allowed = 1; + } + } - [[ level.create_spawner_list_func ]]( zkeys ); + [[ level.create_spawner_list_func ]]( zkeys ); - level.active_zone_names = maps\mp\zombies\_zm_zonemgr::get_active_zone_names(); - wait 1; - } + level.active_zone_names = maps\mp\zombies\_zm_zonemgr::get_active_zone_names(); + wait 1; + } } working_zone_init() { - flag_init( "always_on" ); - flag_set( "always_on" ); + flag_init( "always_on" ); + flag_set( "always_on" ); - if ( is_gametype_active( "zgrief" ) ) - { - a_s_spawner = getstructarray( "zone_cellblock_west_roof_spawner", "targetname" ); + if ( is_gametype_active( "zgrief" ) ) + { + a_s_spawner = getstructarray( "zone_cellblock_west_roof_spawner", "targetname" ); - foreach ( spawner in a_s_spawner ) - { - if ( isdefined( spawner.script_parameters ) && spawner.script_parameters == "zclassic_prison" ) - spawner structdelete(); - } - } + foreach ( spawner in a_s_spawner ) + { + if ( isdefined( spawner.script_parameters ) && spawner.script_parameters == "zclassic_prison" ) + spawner structdelete(); + } + } - if ( is_classic() ) - add_adjacent_zone( "zone_library", "zone_start", "always_on" ); - else - { - add_adjacent_zone( "zone_library", "zone_cellblock_west", "activate_cellblock_west" ); - add_adjacent_zone( "zone_library", "zone_start", "activate_cellblock_west" ); - add_adjacent_zone( "zone_cellblock_east", "zone_start", "activate_cellblock_east" ); - add_adjacent_zone( "zone_library", "zone_start", "activate_cellblock_east" ); - } + if ( is_classic() ) + add_adjacent_zone( "zone_library", "zone_start", "always_on" ); + else + { + add_adjacent_zone( "zone_library", "zone_cellblock_west", "activate_cellblock_west" ); + add_adjacent_zone( "zone_library", "zone_start", "activate_cellblock_west" ); + add_adjacent_zone( "zone_cellblock_east", "zone_start", "activate_cellblock_east" ); + add_adjacent_zone( "zone_library", "zone_start", "activate_cellblock_east" ); + } - add_adjacent_zone( "zone_library", "zone_cellblock_west", "activate_cellblock_west" ); - add_adjacent_zone( "zone_cellblock_west", "zone_cellblock_west_barber", "activate_cellblock_barber" ); - add_adjacent_zone( "zone_cellblock_west_warden", "zone_cellblock_west_barber", "activate_cellblock_barber" ); - add_adjacent_zone( "zone_cellblock_west_warden", "zone_cellblock_west_barber", "activate_cellblock_gondola" ); - add_adjacent_zone( "zone_cellblock_west", "zone_cellblock_west_gondola", "activate_cellblock_gondola" ); - add_adjacent_zone( "zone_cellblock_west_barber", "zone_cellblock_west_gondola", "activate_cellblock_gondola" ); - add_adjacent_zone( "zone_cellblock_west_gondola", "zone_cellblock_west_barber", "activate_cellblock_gondola" ); - add_adjacent_zone( "zone_cellblock_west_gondola", "zone_cellblock_east", "activate_cellblock_gondola" ); - add_adjacent_zone( "zone_cellblock_west_gondola", "zone_infirmary", "activate_cellblock_infirmary" ); - add_adjacent_zone( "zone_infirmary_roof", "zone_infirmary", "activate_cellblock_infirmary" ); - add_adjacent_zone( "zone_cellblock_west_gondola", "zone_cellblock_west_barber", "activate_cellblock_infirmary" ); - add_adjacent_zone( "zone_cellblock_west_gondola", "zone_cellblock_west", "activate_cellblock_infirmary" ); - add_adjacent_zone( "zone_start", "zone_cellblock_east", "activate_cellblock_east" ); - add_adjacent_zone( "zone_cellblock_west_barber", "zone_cellblock_west_warden", "activate_cellblock_infirmary" ); - add_adjacent_zone( "zone_cellblock_west_barber", "zone_cellblock_east", "activate_cellblock_east_west" ); - add_adjacent_zone( "zone_cellblock_west_barber", "zone_cellblock_west_warden", "activate_cellblock_east_west" ); - add_adjacent_zone( "zone_cellblock_west_warden", "zone_warden_office", "activate_warden_office" ); - add_adjacent_zone( "zone_cellblock_west_warden", "zone_citadel_warden", "activate_cellblock_citadel" ); - add_adjacent_zone( "zone_cellblock_west_warden", "zone_cellblock_west_barber", "activate_cellblock_citadel" ); - add_adjacent_zone( "zone_citadel", "zone_citadel_warden", "activate_cellblock_citadel" ); - add_adjacent_zone( "zone_citadel", "zone_citadel_shower", "activate_cellblock_citadel" ); - add_adjacent_zone( "zone_cellblock_east", "zone_cafeteria", "activate_cafeteria" ); - add_adjacent_zone( "zone_cafeteria", "zone_cafeteria_end", "activate_cafeteria" ); - add_adjacent_zone( "zone_cellblock_east", "cellblock_shower", "activate_shower_room" ); - add_adjacent_zone( "cellblock_shower", "zone_citadel_shower", "activate_shower_citadel" ); - add_adjacent_zone( "zone_citadel_shower", "zone_citadel", "activate_shower_citadel" ); - add_adjacent_zone( "zone_citadel", "zone_citadel_warden", "activate_shower_citadel" ); - add_adjacent_zone( "zone_cafeteria", "zone_infirmary", "activate_infirmary" ); - add_adjacent_zone( "zone_cafeteria", "zone_cafeteria_end", "activate_infirmary" ); - add_adjacent_zone( "zone_infirmary_roof", "zone_infirmary", "activate_infirmary" ); - add_adjacent_zone( "zone_roof", "zone_roof_infirmary", "activate_roof" ); - add_adjacent_zone( "zone_roof_infirmary", "zone_infirmary_roof", "activate_roof" ); - add_adjacent_zone( "zone_citadel", "zone_citadel_stairs", "activate_citadel_stair" ); - add_adjacent_zone( "zone_citadel", "zone_citadel_shower", "activate_citadel_stair" ); - add_adjacent_zone( "zone_citadel", "zone_citadel_warden", "activate_citadel_stair" ); - add_adjacent_zone( "zone_citadel_stairs", "zone_citadel_basement", "activate_citadel_basement" ); - add_adjacent_zone( "zone_citadel_basement", "zone_citadel_basement_building", "activate_citadel_basement" ); - add_adjacent_zone( "zone_citadel_basement", "zone_citadel_basement_building", "activate_basement_building" ); - add_adjacent_zone( "zone_citadel_basement_building", "zone_studio", "activate_basement_building" ); - add_adjacent_zone( "zone_citadel_basement", "zone_studio", "activate_basement_building" ); - add_adjacent_zone( "zone_citadel_basement_building", "zone_dock_gondola", "activate_basement_gondola" ); - add_adjacent_zone( "zone_citadel_basement", "zone_citadel_basement_building", "activate_basement_gondola" ); - add_adjacent_zone( "zone_dock", "zone_dock_gondola", "activate_basement_gondola" ); - add_adjacent_zone( "zone_studio", "zone_dock", "activate_dock_sally" ); - add_adjacent_zone( "zone_dock_gondola", "zone_dock", "activate_dock_sally" ); - add_adjacent_zone( "zone_dock", "zone_dock_gondola", "gondola_roof_to_dock" ); - add_adjacent_zone( "zone_cellblock_west", "zone_cellblock_west_gondola", "gondola_dock_to_roof" ); - add_adjacent_zone( "zone_cellblock_west_barber", "zone_cellblock_west_gondola", "gondola_dock_to_roof" ); - add_adjacent_zone( "zone_cellblock_west_barber", "zone_cellblock_west_warden", "gondola_dock_to_roof" ); - add_adjacent_zone( "zone_cellblock_west_gondola", "zone_cellblock_east", "gondola_dock_to_roof" ); + add_adjacent_zone( "zone_library", "zone_cellblock_west", "activate_cellblock_west" ); + add_adjacent_zone( "zone_cellblock_west", "zone_cellblock_west_barber", "activate_cellblock_barber" ); + add_adjacent_zone( "zone_cellblock_west_warden", "zone_cellblock_west_barber", "activate_cellblock_barber" ); + add_adjacent_zone( "zone_cellblock_west_warden", "zone_cellblock_west_barber", "activate_cellblock_gondola" ); + add_adjacent_zone( "zone_cellblock_west", "zone_cellblock_west_gondola", "activate_cellblock_gondola" ); + add_adjacent_zone( "zone_cellblock_west_barber", "zone_cellblock_west_gondola", "activate_cellblock_gondola" ); + add_adjacent_zone( "zone_cellblock_west_gondola", "zone_cellblock_west_barber", "activate_cellblock_gondola" ); + add_adjacent_zone( "zone_cellblock_west_gondola", "zone_cellblock_east", "activate_cellblock_gondola" ); + add_adjacent_zone( "zone_cellblock_west_gondola", "zone_infirmary", "activate_cellblock_infirmary" ); + add_adjacent_zone( "zone_infirmary_roof", "zone_infirmary", "activate_cellblock_infirmary" ); + add_adjacent_zone( "zone_cellblock_west_gondola", "zone_cellblock_west_barber", "activate_cellblock_infirmary" ); + add_adjacent_zone( "zone_cellblock_west_gondola", "zone_cellblock_west", "activate_cellblock_infirmary" ); + add_adjacent_zone( "zone_start", "zone_cellblock_east", "activate_cellblock_east" ); + add_adjacent_zone( "zone_cellblock_west_barber", "zone_cellblock_west_warden", "activate_cellblock_infirmary" ); + add_adjacent_zone( "zone_cellblock_west_barber", "zone_cellblock_east", "activate_cellblock_east_west" ); + add_adjacent_zone( "zone_cellblock_west_barber", "zone_cellblock_west_warden", "activate_cellblock_east_west" ); + add_adjacent_zone( "zone_cellblock_west_warden", "zone_warden_office", "activate_warden_office" ); + add_adjacent_zone( "zone_cellblock_west_warden", "zone_citadel_warden", "activate_cellblock_citadel" ); + add_adjacent_zone( "zone_cellblock_west_warden", "zone_cellblock_west_barber", "activate_cellblock_citadel" ); + add_adjacent_zone( "zone_citadel", "zone_citadel_warden", "activate_cellblock_citadel" ); + add_adjacent_zone( "zone_citadel", "zone_citadel_shower", "activate_cellblock_citadel" ); + add_adjacent_zone( "zone_cellblock_east", "zone_cafeteria", "activate_cafeteria" ); + add_adjacent_zone( "zone_cafeteria", "zone_cafeteria_end", "activate_cafeteria" ); + add_adjacent_zone( "zone_cellblock_east", "cellblock_shower", "activate_shower_room" ); + add_adjacent_zone( "cellblock_shower", "zone_citadel_shower", "activate_shower_citadel" ); + add_adjacent_zone( "zone_citadel_shower", "zone_citadel", "activate_shower_citadel" ); + add_adjacent_zone( "zone_citadel", "zone_citadel_warden", "activate_shower_citadel" ); + add_adjacent_zone( "zone_cafeteria", "zone_infirmary", "activate_infirmary" ); + add_adjacent_zone( "zone_cafeteria", "zone_cafeteria_end", "activate_infirmary" ); + add_adjacent_zone( "zone_infirmary_roof", "zone_infirmary", "activate_infirmary" ); + add_adjacent_zone( "zone_roof", "zone_roof_infirmary", "activate_roof" ); + add_adjacent_zone( "zone_roof_infirmary", "zone_infirmary_roof", "activate_roof" ); + add_adjacent_zone( "zone_citadel", "zone_citadel_stairs", "activate_citadel_stair" ); + add_adjacent_zone( "zone_citadel", "zone_citadel_shower", "activate_citadel_stair" ); + add_adjacent_zone( "zone_citadel", "zone_citadel_warden", "activate_citadel_stair" ); + add_adjacent_zone( "zone_citadel_stairs", "zone_citadel_basement", "activate_citadel_basement" ); + add_adjacent_zone( "zone_citadel_basement", "zone_citadel_basement_building", "activate_citadel_basement" ); + add_adjacent_zone( "zone_citadel_basement", "zone_citadel_basement_building", "activate_basement_building" ); + add_adjacent_zone( "zone_citadel_basement_building", "zone_studio", "activate_basement_building" ); + add_adjacent_zone( "zone_citadel_basement", "zone_studio", "activate_basement_building" ); + add_adjacent_zone( "zone_citadel_basement_building", "zone_dock_gondola", "activate_basement_gondola" ); + add_adjacent_zone( "zone_citadel_basement", "zone_citadel_basement_building", "activate_basement_gondola" ); + add_adjacent_zone( "zone_dock", "zone_dock_gondola", "activate_basement_gondola" ); + add_adjacent_zone( "zone_studio", "zone_dock", "activate_dock_sally" ); + add_adjacent_zone( "zone_dock_gondola", "zone_dock", "activate_dock_sally" ); + add_adjacent_zone( "zone_dock", "zone_dock_gondola", "gondola_roof_to_dock" ); + add_adjacent_zone( "zone_cellblock_west", "zone_cellblock_west_gondola", "gondola_dock_to_roof" ); + add_adjacent_zone( "zone_cellblock_west_barber", "zone_cellblock_west_gondola", "gondola_dock_to_roof" ); + add_adjacent_zone( "zone_cellblock_west_barber", "zone_cellblock_west_warden", "gondola_dock_to_roof" ); + add_adjacent_zone( "zone_cellblock_west_gondola", "zone_cellblock_east", "gondola_dock_to_roof" ); - if ( is_classic() ) - add_adjacent_zone( "zone_gondola_ride", "zone_gondola_ride", "gondola_ride_zone_enabled" ); + if ( is_classic() ) + add_adjacent_zone( "zone_gondola_ride", "zone_gondola_ride", "gondola_ride_zone_enabled" ); - if ( is_classic() ) - { - add_adjacent_zone( "zone_cellblock_west_gondola", "zone_cellblock_west_gondola_dock", "activate_cellblock_infirmary" ); - add_adjacent_zone( "zone_cellblock_west_gondola", "zone_cellblock_west_gondola_dock", "activate_cellblock_gondola" ); - add_adjacent_zone( "zone_cellblock_west_gondola", "zone_cellblock_west_gondola_dock", "gondola_dock_to_roof" ); - } - // else if ( is_gametype_active( "zgrief" ) ) - // { - // playable_area = getentarray( "player_volume", "script_noteworthy" ); + if ( is_classic() ) + { + add_adjacent_zone( "zone_cellblock_west_gondola", "zone_cellblock_west_gondola_dock", "activate_cellblock_infirmary" ); + add_adjacent_zone( "zone_cellblock_west_gondola", "zone_cellblock_west_gondola_dock", "activate_cellblock_gondola" ); + add_adjacent_zone( "zone_cellblock_west_gondola", "zone_cellblock_west_gondola_dock", "gondola_dock_to_roof" ); + } + // else if ( is_gametype_active( "zgrief" ) ) + // { + // playable_area = getentarray( "player_volume", "script_noteworthy" ); - // foreach ( area in playable_area ) - // { - // if ( isdefined( area.script_parameters ) && area.script_parameters == "classic_only" ) - // area delete(); - // } - // } + // foreach ( area in playable_area ) + // { + // if ( isdefined( area.script_parameters ) && area.script_parameters == "classic_only" ) + // area delete(); + // } + // } - add_adjacent_zone( "zone_golden_gate_bridge", "zone_golden_gate_bridge", "activate_player_zone_bridge" ); + add_adjacent_zone( "zone_golden_gate_bridge", "zone_golden_gate_bridge", "activate_player_zone_bridge" ); add_adjacent_zone( "zone_dock", "zone_dock_puzzle", "docks_inner_gate_unlocked" ); } \ No newline at end of file diff --git a/scripts/zm/zm_tomb/zm_tomb_reimagined.gsc b/scripts/zm/zm_tomb/zm_tomb_reimagined.gsc index 6ff44ba9..f6e064e5 100644 --- a/scripts/zm/zm_tomb/zm_tomb_reimagined.gsc +++ b/scripts/zm/zm_tomb/zm_tomb_reimagined.gsc @@ -5,62 +5,62 @@ main() { - replaceFunc(maps\mp\zm_tomb::sndmeleewpn_isstaff, scripts\zm\replaced\zm_tomb::sndmeleewpn_isstaff); - replaceFunc(maps\mp\zm_tomb::tomb_can_track_ammo_custom, scripts\zm\replaced\zm_tomb::tomb_can_track_ammo_custom); + replaceFunc(maps\mp\zm_tomb::sndmeleewpn_isstaff, scripts\zm\replaced\zm_tomb::sndmeleewpn_isstaff); + replaceFunc(maps\mp\zm_tomb::tomb_can_track_ammo_custom, scripts\zm\replaced\zm_tomb::tomb_can_track_ammo_custom); replaceFunc(maps\mp\zm_tomb_main_quest::main_quest_init, scripts\zm\replaced\zm_tomb_main_quest::main_quest_init); - replaceFunc(maps\mp\zm_tomb_main_quest::place_staff_in_charger, scripts\zm\replaced\zm_tomb_main_quest::place_staff_in_charger); + replaceFunc(maps\mp\zm_tomb_main_quest::place_staff_in_charger, scripts\zm\replaced\zm_tomb_main_quest::place_staff_in_charger); replaceFunc(maps\mp\zm_tomb_main_quest::watch_for_player_pickup_staff, scripts\zm\replaced\zm_tomb_main_quest::watch_for_player_pickup_staff); replaceFunc(maps\mp\zm_tomb_main_quest::staff_upgraded_reload, scripts\zm\replaced\zm_tomb_main_quest::staff_upgraded_reload); replaceFunc(maps\mp\zm_tomb_main_quest::watch_staff_ammo_reload, scripts\zm\replaced\zm_tomb_main_quest::watch_staff_ammo_reload); replaceFunc(maps\mp\zm_tomb_quest_air::air_puzzle_1_run, scripts\zm\replaced\zm_tomb_quest_air::air_puzzle_1_run); replaceFunc(maps\mp\zm_tomb_quest_elec::electric_puzzle_1_run, scripts\zm\replaced\zm_tomb_quest_elec::electric_puzzle_1_run); replaceFunc(maps\mp\zm_tomb_quest_fire::fire_puzzle_1_run, scripts\zm\replaced\zm_tomb_quest_fire::fire_puzzle_1_run); - replaceFunc(maps\mp\zm_tomb_quest_ice::ice_puzzle_1_init, scripts\zm\replaced\zm_tomb_quest_ice::ice_puzzle_1_init); + replaceFunc(maps\mp\zm_tomb_quest_ice::ice_puzzle_1_init, scripts\zm\replaced\zm_tomb_quest_ice::ice_puzzle_1_init); replaceFunc(maps\mp\zm_tomb_quest_ice::ice_puzzle_1_run, scripts\zm\replaced\zm_tomb_quest_ice::ice_puzzle_1_run); - replaceFunc(maps\mp\zm_tomb_ee_main::all_staffs_inserted_in_puzzle_room, scripts\zm\replaced\zm_tomb_ee_main::all_staffs_inserted_in_puzzle_room); + replaceFunc(maps\mp\zm_tomb_ee_main::all_staffs_inserted_in_puzzle_room, scripts\zm\replaced\zm_tomb_ee_main::all_staffs_inserted_in_puzzle_room); replaceFunc(maps\mp\zm_tomb_ee_main_step_2::create_robot_head_trigger, scripts\zm\replaced\zm_tomb_ee_main_step_2::create_robot_head_trigger); replaceFunc(maps\mp\zm_tomb_ee_main_step_2::remove_plinth, scripts\zm\replaced\zm_tomb_ee_main_step_2::remove_plinth); replaceFunc(maps\mp\zm_tomb_ee_main_step_3::ready_to_activate, scripts\zm\replaced\zm_tomb_ee_main_step_3::ready_to_activate); - replaceFunc(maps\mp\zm_tomb_ee_main_step_8::init, scripts\zm\replaced\zm_tomb_ee_main_step_8::init); - replaceFunc(maps\mp\zm_tomb_ee_side::swap_mg, scripts\zm\replaced\zm_tomb_ee_side::swap_mg); - replaceFunc(maps\mp\zm_tomb_capture_zones::setup_capture_zones, scripts\zm\replaced\zm_tomb_capture_zones::setup_capture_zones); - replaceFunc(maps\mp\zm_tomb_capture_zones::magic_box_stub_update_prompt, scripts\zm\replaced\zm_tomb_capture_zones::magic_box_stub_update_prompt); - replaceFunc(maps\mp\zm_tomb_challenges::challenges_init, scripts\zm\replaced\zm_tomb_challenges::challenges_init); - replaceFunc(maps\mp\zm_tomb_craftables::init_craftables, scripts\zm\replaced\zm_tomb_craftables::init_craftables); - replaceFunc(maps\mp\zm_tomb_craftables::include_craftables, scripts\zm\replaced\zm_tomb_craftables::include_craftables); - replaceFunc(maps\mp\zm_tomb_craftables::track_staff_weapon_respawn, scripts\zm\replaced\zm_tomb_craftables::track_staff_weapon_respawn); - replaceFunc(maps\mp\zm_tomb_dig::init_shovel, scripts\zm\replaced\zm_tomb_dig::init_shovel); - replaceFunc(maps\mp\zm_tomb_dig::waittill_dug, scripts\zm\replaced\zm_tomb_dig::waittill_dug); + replaceFunc(maps\mp\zm_tomb_ee_main_step_8::init, scripts\zm\replaced\zm_tomb_ee_main_step_8::init); + replaceFunc(maps\mp\zm_tomb_ee_side::swap_mg, scripts\zm\replaced\zm_tomb_ee_side::swap_mg); + replaceFunc(maps\mp\zm_tomb_capture_zones::setup_capture_zones, scripts\zm\replaced\zm_tomb_capture_zones::setup_capture_zones); + replaceFunc(maps\mp\zm_tomb_capture_zones::magic_box_stub_update_prompt, scripts\zm\replaced\zm_tomb_capture_zones::magic_box_stub_update_prompt); + replaceFunc(maps\mp\zm_tomb_challenges::challenges_init, scripts\zm\replaced\zm_tomb_challenges::challenges_init); + replaceFunc(maps\mp\zm_tomb_craftables::init_craftables, scripts\zm\replaced\zm_tomb_craftables::init_craftables); + replaceFunc(maps\mp\zm_tomb_craftables::include_craftables, scripts\zm\replaced\zm_tomb_craftables::include_craftables); + replaceFunc(maps\mp\zm_tomb_craftables::track_staff_weapon_respawn, scripts\zm\replaced\zm_tomb_craftables::track_staff_weapon_respawn); + replaceFunc(maps\mp\zm_tomb_dig::init_shovel, scripts\zm\replaced\zm_tomb_dig::init_shovel); + replaceFunc(maps\mp\zm_tomb_dig::waittill_dug, scripts\zm\replaced\zm_tomb_dig::waittill_dug); replaceFunc(maps\mp\zm_tomb_dig::increment_player_perk_purchase_limit, scripts\zm\replaced\zm_tomb_dig::increment_player_perk_purchase_limit); - replaceFunc(maps\mp\zm_tomb_giant_robot::robot_cycling, scripts\zm\replaced\zm_tomb_giant_robot::robot_cycling); - replaceFunc(maps\mp\zm_tomb_tank::players_on_tank_update, scripts\zm\replaced\zm_tomb_tank::players_on_tank_update); - replaceFunc(maps\mp\zm_tomb_tank::wait_for_tank_cooldown, scripts\zm\replaced\zm_tomb_tank::wait_for_tank_cooldown); - replaceFunc(maps\mp\zm_tomb_teleporter::teleporter_init, scripts\zm\replaced\zm_tomb_teleporter::teleporter_init); - replaceFunc(maps\mp\zm_tomb_utility::update_staff_accessories, scripts\zm\replaced\zm_tomb_utility::update_staff_accessories); - replaceFunc(maps\mp\zm_tomb_utility::check_solo_status, scripts\zm\replaced\zm_tomb_utility::check_solo_status); - replaceFunc(maps\mp\zm_tomb_distance_tracking::delete_zombie_noone_looking, scripts\zm\replaced\zm_tomb_distance_tracking::delete_zombie_noone_looking); - replaceFunc(maps\mp\zombies\_zm_ai_mechz::mechz_set_starting_health, scripts\zm\replaced\_zm_ai_mechz::mechz_set_starting_health); - replaceFunc(maps\mp\zombies\_zm_ai_mechz::mechz_round_tracker, scripts\zm\replaced\_zm_ai_mechz::mechz_round_tracker); - replaceFunc(maps\mp\zombies\_zm_challenges::init, scripts\zm\replaced\_zm_challenges::init); - replaceFunc(maps\mp\zombies\_zm_craftables::choose_open_craftable, scripts\zm\replaced\_zm_craftables::choose_open_craftable); - replaceFunc(maps\mp\zombies\_zm_craftables::craftable_use_hold_think_internal, scripts\zm\replaced\_zm_craftables::craftable_use_hold_think_internal); - replaceFunc(maps\mp\zombies\_zm_craftables::player_progress_bar_update, scripts\zm\replaced\_zm_craftables::player_progress_bar_update); - replaceFunc(maps\mp\zombies\_zm_craftables::update_open_table_status, scripts\zm\replaced\_zm_craftables::update_open_table_status); - replaceFunc(maps\mp\zombies\_zm_perk_random::machine_selector, scripts\zm\replaced\_zm_perk_random::machine_selector); - replaceFunc(maps\mp\zombies\_zm_perk_random::trigger_visible_to_player, scripts\zm\replaced\_zm_perk_random::trigger_visible_to_player); - replaceFunc(maps\mp\zombies\_zm_powerup_zombie_blood::zombie_blood_powerup, scripts\zm\replaced\_zm_powerup_zombie_blood::zombie_blood_powerup); - replaceFunc(maps\mp\zombies\_zm_riotshield_tomb::doriotshielddeploy, scripts\zm\replaced\_zm_riotshield_tomb::doriotshielddeploy); - replaceFunc(maps\mp\zombies\_zm_riotshield_tomb::trackriotshield, scripts\zm\replaced\_zm_riotshield_tomb::trackriotshield); - replaceFunc(maps\mp\zombies\_zm_weap_riotshield_tomb::init, scripts\zm\replaced\_zm_weap_riotshield_tomb::init); + replaceFunc(maps\mp\zm_tomb_giant_robot::robot_cycling, scripts\zm\replaced\zm_tomb_giant_robot::robot_cycling); + replaceFunc(maps\mp\zm_tomb_tank::players_on_tank_update, scripts\zm\replaced\zm_tomb_tank::players_on_tank_update); + replaceFunc(maps\mp\zm_tomb_tank::wait_for_tank_cooldown, scripts\zm\replaced\zm_tomb_tank::wait_for_tank_cooldown); + replaceFunc(maps\mp\zm_tomb_teleporter::teleporter_init, scripts\zm\replaced\zm_tomb_teleporter::teleporter_init); + replaceFunc(maps\mp\zm_tomb_utility::update_staff_accessories, scripts\zm\replaced\zm_tomb_utility::update_staff_accessories); + replaceFunc(maps\mp\zm_tomb_utility::check_solo_status, scripts\zm\replaced\zm_tomb_utility::check_solo_status); + replaceFunc(maps\mp\zm_tomb_distance_tracking::delete_zombie_noone_looking, scripts\zm\replaced\zm_tomb_distance_tracking::delete_zombie_noone_looking); + replaceFunc(maps\mp\zombies\_zm_ai_mechz::mechz_set_starting_health, scripts\zm\replaced\_zm_ai_mechz::mechz_set_starting_health); + replaceFunc(maps\mp\zombies\_zm_ai_mechz::mechz_round_tracker, scripts\zm\replaced\_zm_ai_mechz::mechz_round_tracker); + replaceFunc(maps\mp\zombies\_zm_challenges::init, scripts\zm\replaced\_zm_challenges::init); + replaceFunc(maps\mp\zombies\_zm_craftables::choose_open_craftable, scripts\zm\replaced\_zm_craftables::choose_open_craftable); + replaceFunc(maps\mp\zombies\_zm_craftables::craftable_use_hold_think_internal, scripts\zm\replaced\_zm_craftables::craftable_use_hold_think_internal); + replaceFunc(maps\mp\zombies\_zm_craftables::player_progress_bar_update, scripts\zm\replaced\_zm_craftables::player_progress_bar_update); + replaceFunc(maps\mp\zombies\_zm_craftables::update_open_table_status, scripts\zm\replaced\_zm_craftables::update_open_table_status); + replaceFunc(maps\mp\zombies\_zm_perk_random::machine_selector, scripts\zm\replaced\_zm_perk_random::machine_selector); + replaceFunc(maps\mp\zombies\_zm_perk_random::trigger_visible_to_player, scripts\zm\replaced\_zm_perk_random::trigger_visible_to_player); + replaceFunc(maps\mp\zombies\_zm_powerup_zombie_blood::zombie_blood_powerup, scripts\zm\replaced\_zm_powerup_zombie_blood::zombie_blood_powerup); + replaceFunc(maps\mp\zombies\_zm_riotshield_tomb::doriotshielddeploy, scripts\zm\replaced\_zm_riotshield_tomb::doriotshielddeploy); + replaceFunc(maps\mp\zombies\_zm_riotshield_tomb::trackriotshield, scripts\zm\replaced\_zm_riotshield_tomb::trackriotshield); + replaceFunc(maps\mp\zombies\_zm_weap_riotshield_tomb::init, scripts\zm\replaced\_zm_weap_riotshield_tomb::init); replaceFunc(maps\mp\zombies\_zm_weap_riotshield_tomb::player_damage_shield, scripts\zm\replaced\_zm_weap_riotshield_tomb::player_damage_shield); - replaceFunc(maps\mp\zombies\_zm_weap_one_inch_punch::monitor_melee_swipe, scripts\zm\replaced\_zm_weap_one_inch_punch::monitor_melee_swipe); - replaceFunc(maps\mp\zombies\_zm_weap_beacon::player_throw_beacon, scripts\zm\replaced\_zm_weap_beacon::player_throw_beacon); - replaceFunc(maps\mp\zombies\_zm_weap_beacon::wait_and_do_weapon_beacon_damage, scripts\zm\replaced\_zm_weap_beacon::wait_and_do_weapon_beacon_damage); - replaceFunc(maps\mp\zombies\_zm_weap_staff_air::whirlwind_kill_zombies, scripts\zm\replaced\_zm_weap_staff_air::whirlwind_kill_zombies); - replaceFunc(maps\mp\zombies\_zm_weap_staff_fire::flame_damage_fx, scripts\zm\replaced\_zm_weap_staff_fire::flame_damage_fx); - replaceFunc(maps\mp\zombies\_zm_weap_staff_fire::get_impact_damage, scripts\zm\replaced\_zm_weap_staff_fire::get_impact_damage); - replaceFunc(maps\mp\zombies\_zm_weap_staff_lightning::staff_lightning_ball_kill_zombies, scripts\zm\replaced\_zm_weap_staff_lightning::staff_lightning_ball_kill_zombies); - replaceFunc(maps\mp\zombies\_zm_weap_staff_revive::watch_staff_revive_fired, scripts\zm\replaced\_zm_weap_staff_revive::watch_staff_revive_fired); + replaceFunc(maps\mp\zombies\_zm_weap_one_inch_punch::monitor_melee_swipe, scripts\zm\replaced\_zm_weap_one_inch_punch::monitor_melee_swipe); + replaceFunc(maps\mp\zombies\_zm_weap_beacon::player_throw_beacon, scripts\zm\replaced\_zm_weap_beacon::player_throw_beacon); + replaceFunc(maps\mp\zombies\_zm_weap_beacon::wait_and_do_weapon_beacon_damage, scripts\zm\replaced\_zm_weap_beacon::wait_and_do_weapon_beacon_damage); + replaceFunc(maps\mp\zombies\_zm_weap_staff_air::whirlwind_kill_zombies, scripts\zm\replaced\_zm_weap_staff_air::whirlwind_kill_zombies); + replaceFunc(maps\mp\zombies\_zm_weap_staff_fire::flame_damage_fx, scripts\zm\replaced\_zm_weap_staff_fire::flame_damage_fx); + replaceFunc(maps\mp\zombies\_zm_weap_staff_fire::get_impact_damage, scripts\zm\replaced\_zm_weap_staff_fire::get_impact_damage); + replaceFunc(maps\mp\zombies\_zm_weap_staff_lightning::staff_lightning_ball_kill_zombies, scripts\zm\replaced\_zm_weap_staff_lightning::staff_lightning_ball_kill_zombies); + replaceFunc(maps\mp\zombies\_zm_weap_staff_revive::watch_staff_revive_fired, scripts\zm\replaced\_zm_weap_staff_revive::watch_staff_revive_fired); } init() @@ -68,14 +68,14 @@ init() level.zombie_init_done = ::zombie_init_done; level.special_weapon_magicbox_check = ::tomb_special_weapon_magicbox_check; level.custom_magic_box_timer_til_despawn = ::custom_magic_box_timer_til_despawn; - level.custom_laststand_func = scripts\zm\replaced\_zm_perk_electric_cherry::electric_cherry_laststand; + level.custom_laststand_func = scripts\zm\replaced\_zm_perk_electric_cherry::electric_cherry_laststand; - level.zombie_vars["below_world_check"] = -3000; + level.zombie_vars["below_world_check"] = -3000; - maps\mp\zombies\_zm::spawn_life_brush( (1839, 3574, -228), 512, 256 ); + maps\mp\zombies\_zm::spawn_life_brush( (1839, 3574, -228), 512, 256 ); - register_melee_weapons_for_level(); - change_stargate_teleport_return_player_angles(); + register_melee_weapons_for_level(); + change_stargate_teleport_return_player_angles(); level thread zombie_blood_dig_changes(); level thread updatecraftables(); @@ -83,7 +83,7 @@ init() zombie_init_done() { - self.meleedamage = 50; + self.meleedamage = 50; self.allowpain = 0; self thread maps\mp\zm_tomb_distance_tracking::escaped_zombies_cleanup_init(); self setphysparams( 15, 0, 48 ); @@ -114,39 +114,39 @@ tomb_special_weapon_magicbox_check(weapon) register_melee_weapons_for_level() { - register_melee_weapon_for_level("one_inch_punch_zm"); - register_melee_weapon_for_level("one_inch_punch_upgraded_zm"); - register_melee_weapon_for_level("one_inch_punch_air_zm"); - register_melee_weapon_for_level("one_inch_punch_fire_zm"); - register_melee_weapon_for_level("one_inch_punch_ice_zm"); - register_melee_weapon_for_level("one_inch_punch_lightning_zm"); + register_melee_weapon_for_level("one_inch_punch_zm"); + register_melee_weapon_for_level("one_inch_punch_upgraded_zm"); + register_melee_weapon_for_level("one_inch_punch_air_zm"); + register_melee_weapon_for_level("one_inch_punch_fire_zm"); + register_melee_weapon_for_level("one_inch_punch_ice_zm"); + register_melee_weapon_for_level("one_inch_punch_lightning_zm"); } change_stargate_teleport_return_player_angles() { - struct = getstructarray( "air_teleport_return", "targetname" ); - foreach (pos in struct) - { - pos.angles = (0, -120, 0); - } + struct = getstructarray( "air_teleport_return", "targetname" ); + foreach (pos in struct) + { + pos.angles = (0, -120, 0); + } - struct = getstructarray( "elec_teleport_return", "targetname" ); - foreach (pos in struct) - { - pos.angles = (0, 0, 0); - } + struct = getstructarray( "elec_teleport_return", "targetname" ); + foreach (pos in struct) + { + pos.angles = (0, 0, 0); + } - struct = getstructarray( "fire_teleport_return", "targetname" ); - foreach (pos in struct) - { - pos.angles = (0, -130, 0); - } + struct = getstructarray( "fire_teleport_return", "targetname" ); + foreach (pos in struct) + { + pos.angles = (0, -130, 0); + } - struct = getstructarray( "ice_teleport_return", "targetname" ); - foreach (pos in struct) - { - pos.angles = (0, -110, 0); - } + struct = getstructarray( "ice_teleport_return", "targetname" ); + foreach (pos in struct) + { + pos.angles = (0, -110, 0); + } } door_price_increase_for_solo() @@ -241,263 +241,263 @@ updatecraftables() craftable_place_think() { - self endon( "kill_trigger" ); - player_crafted = undefined; + self endon( "kill_trigger" ); + player_crafted = undefined; - while ( !( isdefined( self.stub.crafted ) && self.stub.crafted ) ) - { - self waittill( "trigger", player ); + while ( !( isdefined( self.stub.crafted ) && self.stub.crafted ) ) + { + self waittill( "trigger", player ); - if ( isdefined( level.custom_craftable_validation ) ) - { - valid = self [[ level.custom_craftable_validation ]]( player ); + if ( isdefined( level.custom_craftable_validation ) ) + { + valid = self [[ level.custom_craftable_validation ]]( player ); - if ( !valid ) - continue; - } + if ( !valid ) + continue; + } - if ( player != self.parent_player ) - continue; + if ( player != self.parent_player ) + continue; - if ( isdefined( player.screecher_weapon ) ) - continue; + if ( isdefined( player.screecher_weapon ) ) + continue; - if ( !is_player_valid( player ) ) - { - player thread ignore_triggers( 0.5 ); - continue; - } + if ( !is_player_valid( player ) ) + { + player thread ignore_triggers( 0.5 ); + continue; + } - status = player player_can_craft( self.stub.craftablespawn ); + status = player player_can_craft( self.stub.craftablespawn ); - if ( !status ) - { - self.stub.hint_string = ""; - self sethintstring( self.stub.hint_string ); + if ( !status ) + { + self.stub.hint_string = ""; + self sethintstring( self.stub.hint_string ); - if ( isdefined( self.stub.oncantuse ) ) - self.stub [[ self.stub.oncantuse ]]( player ); - } - else - { - if ( isdefined( self.stub.onbeginuse ) ) - self.stub [[ self.stub.onbeginuse ]]( player ); + if ( isdefined( self.stub.oncantuse ) ) + self.stub [[ self.stub.oncantuse ]]( player ); + } + else + { + if ( isdefined( self.stub.onbeginuse ) ) + self.stub [[ self.stub.onbeginuse ]]( player ); - result = self craftable_use_hold_think( player ); - team = player.pers["team"]; + result = self craftable_use_hold_think( player ); + team = player.pers["team"]; - if ( isdefined( self.stub.onenduse ) ) - self.stub [[ self.stub.onenduse ]]( team, player, result ); + if ( isdefined( self.stub.onenduse ) ) + self.stub [[ self.stub.onenduse ]]( team, player, result ); - if ( !result ) - continue; + if ( !result ) + continue; - if ( isdefined( self.stub.onuse ) ) - self.stub [[ self.stub.onuse ]]( player ); + if ( isdefined( self.stub.onuse ) ) + self.stub [[ self.stub.onuse ]]( player ); - prompt = player player_craft( self.stub.craftablespawn ); - player_crafted = player; - self.stub.hint_string = prompt; - self sethintstring( self.stub.hint_string ); - } - } + prompt = player player_craft( self.stub.craftablespawn ); + player_crafted = player; + self.stub.hint_string = prompt; + self sethintstring( self.stub.hint_string ); + } + } - if ( isdefined( self.stub.craftablestub.onfullycrafted ) ) - { - b_result = self.stub [[ self.stub.craftablestub.onfullycrafted ]](); + if ( isdefined( self.stub.craftablestub.onfullycrafted ) ) + { + b_result = self.stub [[ self.stub.craftablestub.onfullycrafted ]](); - if ( !b_result ) - return; - } + if ( !b_result ) + return; + } - if ( isdefined( player_crafted ) ) - { + if ( isdefined( player_crafted ) ) + { - } + } - if ( self.stub.persistent == 0 ) - { - self.stub craftablestub_remove(); - thread maps\mp\zombies\_zm_unitrigger::unregister_unitrigger( self.stub ); - return; - } + if ( self.stub.persistent == 0 ) + { + self.stub craftablestub_remove(); + thread maps\mp\zombies\_zm_unitrigger::unregister_unitrigger( self.stub ); + return; + } - if ( self.stub.persistent == 3 ) - { - stub_uncraft_craftable( self.stub, 1 ); - return; - } + if ( self.stub.persistent == 3 ) + { + stub_uncraft_craftable( self.stub, 1 ); + return; + } - if ( self.stub.persistent == 2 ) - { - if ( isdefined( player_crafted ) ) - self craftabletrigger_update_prompt( player_crafted ); + if ( self.stub.persistent == 2 ) + { + if ( isdefined( player_crafted ) ) + self craftabletrigger_update_prompt( player_crafted ); - 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 sethintstring( self.stub.hint_string ); - return; - } + 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 sethintstring( self.stub.hint_string ); + return; + } - if ( isdefined( self.stub.str_taken ) && self.stub.str_taken ) - { - self.stub.hint_string = &"ZOMBIE_GO_TO_THE_BOX"; - self sethintstring( self.stub.hint_string ); - return; - } + if ( isdefined( self.stub.str_taken ) && self.stub.str_taken ) + { + self.stub.hint_string = &"ZOMBIE_GO_TO_THE_BOX"; + self sethintstring( self.stub.hint_string ); + return; + } - if ( isdefined( self.stub.model ) ) - { - self.stub.model notsolid(); - self.stub.model show(); - } + if ( isdefined( self.stub.model ) ) + { + self.stub.model notsolid(); + self.stub.model show(); + } - while ( self.stub.persistent == 2 ) - { - self waittill( "trigger", player ); + while ( self.stub.persistent == 2 ) + { + self waittill( "trigger", player ); - if ( isdefined( player.screecher_weapon ) ) - continue; + if ( isdefined( player.screecher_weapon ) ) + continue; - if ( isdefined( level.custom_craftable_validation ) ) - { - valid = self [[ level.custom_craftable_validation ]]( player ); + if ( isdefined( level.custom_craftable_validation ) ) + { + valid = self [[ level.custom_craftable_validation ]]( player ); - if ( !valid ) - continue; - } + if ( !valid ) + continue; + } - if ( !( isdefined( self.stub.crafted ) && self.stub.crafted ) ) - { - self.stub.hint_string = ""; - self sethintstring( self.stub.hint_string ); - return; - } + if ( !( isdefined( self.stub.crafted ) && self.stub.crafted ) ) + { + self.stub.hint_string = ""; + self sethintstring( self.stub.hint_string ); + return; + } - if ( player != self.parent_player ) - continue; + if ( player != self.parent_player ) + continue; - if ( !is_player_valid( player ) ) - { - player thread ignore_triggers( 0.5 ); - continue; - } + if ( !is_player_valid( player ) ) + { + player thread ignore_triggers( 0.5 ); + continue; + } - self.stub.bought = 1; + self.stub.bought = 1; - if ( isdefined( self.stub.model ) ) - self.stub.model thread model_fly_away( self ); + if ( isdefined( self.stub.model ) ) + self.stub.model thread model_fly_away( self ); - 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_craftables[self.stub.equipname].onbuyweapon ) ) - self [[ level.zombie_include_craftables[self.stub.equipname].onbuyweapon ]]( player ); + if ( isdefined( level.zombie_include_craftables[self.stub.equipname].onbuyweapon ) ) + self [[ level.zombie_include_craftables[self.stub.equipname].onbuyweapon ]]( player ); - if ( !maps\mp\zombies\_zm_weapons::limited_weapon_below_quota( self.stub.weaponname, undefined ) ) - self.stub.hint_string = &"ZOMBIE_GO_TO_THE_BOX_LIMITED"; - else - self.stub.hint_string = &"ZOMBIE_GO_TO_THE_BOX"; + if ( !maps\mp\zombies\_zm_weapons::limited_weapon_below_quota( self.stub.weaponname, undefined ) ) + self.stub.hint_string = &"ZOMBIE_GO_TO_THE_BOX_LIMITED"; + else + self.stub.hint_string = &"ZOMBIE_GO_TO_THE_BOX"; - self sethintstring( self.stub.hint_string ); - player track_craftables_pickedup( self.stub.craftablespawn ); - } - } - else if ( !isdefined( player_crafted ) || self craftabletrigger_update_prompt( player_crafted ) ) - { - if ( isdefined( self.stub.model ) ) - { - self.stub.model notsolid(); - self.stub.model show(); - } + self sethintstring( self.stub.hint_string ); + player track_craftables_pickedup( self.stub.craftablespawn ); + } + } + else if ( !isdefined( player_crafted ) || self craftabletrigger_update_prompt( player_crafted ) ) + { + if ( isdefined( self.stub.model ) ) + { + self.stub.model notsolid(); + self.stub.model show(); + } - while ( self.stub.persistent == 1 ) - { - self waittill( "trigger", player ); + while ( self.stub.persistent == 1 ) + { + self waittill( "trigger", player ); - if ( isdefined( player.screecher_weapon ) ) - continue; + if ( isdefined( player.screecher_weapon ) ) + continue; - if ( isdefined( level.custom_craftable_validation ) ) - { - valid = self [[ level.custom_craftable_validation ]]( player ); + if ( isdefined( level.custom_craftable_validation ) ) + { + valid = self [[ level.custom_craftable_validation ]]( player ); - if ( !valid ) - continue; - } + if ( !valid ) + continue; + } - if ( !( isdefined( self.stub.crafted ) && self.stub.crafted ) ) - { - self.stub.hint_string = ""; - self sethintstring( self.stub.hint_string ); - return; - } + if ( !( isdefined( self.stub.crafted ) && self.stub.crafted ) ) + { + self.stub.hint_string = ""; + self sethintstring( self.stub.hint_string ); + return; + } - if ( player != self.parent_player ) - continue; + if ( player != self.parent_player ) + continue; - if ( !is_player_valid( player ) ) - { - player thread ignore_triggers( 0.5 ); - continue; - } + if ( !is_player_valid( player ) ) + { + player thread ignore_triggers( 0.5 ); + continue; + } if (player.score < self.stub.cost) { 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; } - if ( player has_player_equipment( self.stub.weaponname ) ) - continue; + if ( player has_player_equipment( self.stub.weaponname ) ) + continue; - if ( isdefined( level.zombie_craftable_persistent_weapon ) ) - { - if ( self [[ level.zombie_craftable_persistent_weapon ]]( player ) ) - continue; - } + if ( isdefined( level.zombie_craftable_persistent_weapon ) ) + { + if ( self [[ level.zombie_craftable_persistent_weapon ]]( player ) ) + continue; + } - if ( isdefined( level.zombie_custom_equipment_setup ) ) - { - if ( self [[ level.zombie_custom_equipment_setup ]]( player ) ) - continue; - } + if ( isdefined( level.zombie_custom_equipment_setup ) ) + { + if ( self [[ level.zombie_custom_equipment_setup ]]( player ) ) + 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 ); self play_sound_on_ent( "purchase" ); - player maps\mp\zombies\_zm_equipment::equipment_buy( self.stub.weaponname ); - player giveweapon( self.stub.weaponname ); - player setweaponammoclip( self.stub.weaponname, 1 ); + player maps\mp\zombies\_zm_equipment::equipment_buy( self.stub.weaponname ); + player giveweapon( self.stub.weaponname ); + player setweaponammoclip( self.stub.weaponname, 1 ); - if ( isdefined( level.zombie_include_craftables[self.stub.equipname].onbuyweapon ) ) - self [[ level.zombie_include_craftables[self.stub.equipname].onbuyweapon ]]( player ); - else if ( self.stub.weaponname != "keys_zm" ) - player setactionslot( 1, "weapon", self.stub.weaponname ); + if ( isdefined( level.zombie_include_craftables[self.stub.equipname].onbuyweapon ) ) + self [[ level.zombie_include_craftables[self.stub.equipname].onbuyweapon ]]( player ); + else if ( self.stub.weaponname != "keys_zm" ) + player setactionslot( 1, "weapon", self.stub.weaponname ); - if ( isdefined( level.zombie_craftablestubs[self.stub.equipname].str_taken ) ) - self.stub.hint_string = level.zombie_craftablestubs[self.stub.equipname].str_taken; - else - self.stub.hint_string = ""; + if ( isdefined( level.zombie_craftablestubs[self.stub.equipname].str_taken ) ) + self.stub.hint_string = level.zombie_craftablestubs[self.stub.equipname].str_taken; + else + self.stub.hint_string = ""; - self sethintstring( self.stub.hint_string ); - player track_craftables_pickedup( self.stub.craftablespawn ); - } - else - { - self.stub.hint_string = ""; - self sethintstring( self.stub.hint_string ); - } - } - } + self sethintstring( self.stub.hint_string ); + player track_craftables_pickedup( self.stub.craftablespawn ); + } + else + { + self.stub.hint_string = ""; + self sethintstring( self.stub.hint_string ); + } + } + } } craftabletrigger_update_prompt( player ) { - can_use = self.stub craftablestub_update_prompt( player ); + can_use = self.stub craftablestub_update_prompt( player ); if (can_use && is_true(self.stub.crafted) && !isSubStr(self.stub.craftablespawn.craftable_name, "staff")) { @@ -508,91 +508,91 @@ craftabletrigger_update_prompt( player ) self sethintstring( self.stub.hint_string ); } - return can_use; + return can_use; } craftablestub_update_prompt( player, unitrigger ) { - if ( !self anystub_update_prompt( player ) ) - return false; + if ( !self anystub_update_prompt( player ) ) + return false; - if ( isdefined( self.is_locked ) && self.is_locked ) - return true; + if ( isdefined( self.is_locked ) && self.is_locked ) + return true; - can_use = 1; + can_use = 1; - if ( isdefined( self.custom_craftablestub_update_prompt ) && !self [[ self.custom_craftablestub_update_prompt ]]( player ) ) - return false; + if ( isdefined( self.custom_craftablestub_update_prompt ) && !self [[ self.custom_craftablestub_update_prompt ]]( player ) ) + return false; - if ( !( isdefined( self.crafted ) && self.crafted ) ) - { - if ( !self.craftablespawn craftable_can_use_shared_piece() ) - { - if ( !isdefined( player.current_craftable_piece ) ) - { - self.hint_string = &"ZOMBIE_BUILD_PIECE_MORE"; - return false; - } - else if ( !self.craftablespawn craftable_has_piece( player.current_craftable_piece ) ) - { - self.hint_string = &"ZOMBIE_BUILD_PIECE_WRONG"; - return false; - } - } + if ( !( isdefined( self.crafted ) && self.crafted ) ) + { + if ( !self.craftablespawn craftable_can_use_shared_piece() ) + { + if ( !isdefined( player.current_craftable_piece ) ) + { + self.hint_string = &"ZOMBIE_BUILD_PIECE_MORE"; + return false; + } + else if ( !self.craftablespawn craftable_has_piece( player.current_craftable_piece ) ) + { + self.hint_string = &"ZOMBIE_BUILD_PIECE_WRONG"; + return false; + } + } - assert( isdefined( level.zombie_craftablestubs[self.equipname].str_to_craft ), "Missing craftable hint" ); - self.hint_string = level.zombie_craftablestubs[self.equipname].str_to_craft; - } - else if ( self.persistent == 1 ) - { - if ( maps\mp\zombies\_zm_equipment::is_limited_equipment( self.weaponname ) && maps\mp\zombies\_zm_equipment::limited_equipment_in_use( self.weaponname ) ) - { - self.hint_string = &"ZOMBIE_BUILD_PIECE_ONLY_ONE"; - return false; - } + assert( isdefined( level.zombie_craftablestubs[self.equipname].str_to_craft ), "Missing craftable hint" ); + self.hint_string = level.zombie_craftablestubs[self.equipname].str_to_craft; + } + else if ( self.persistent == 1 ) + { + if ( maps\mp\zombies\_zm_equipment::is_limited_equipment( self.weaponname ) && maps\mp\zombies\_zm_equipment::limited_equipment_in_use( self.weaponname ) ) + { + self.hint_string = &"ZOMBIE_BUILD_PIECE_ONLY_ONE"; + return false; + } - if ( player has_player_equipment( self.weaponname ) ) - { - self.hint_string = &"ZOMBIE_BUILD_PIECE_HAVE_ONE"; - return false; - } + if ( player has_player_equipment( self.weaponname ) ) + { + self.hint_string = &"ZOMBIE_BUILD_PIECE_HAVE_ONE"; + return false; + } - if ( self.equipname == "equip_dieseldrone_zm" ) - { - if (level.quadrotor_status.picked_up) - { - self.hint_string = &"ZOMBIE_BUILD_PIECE_ONLY_ONE"; - return false; - } - else if (flag( "quadrotor_cooling_down" )) - { - self.hint_string = "Cooling down"; - return false; - } - } + if ( self.equipname == "equip_dieseldrone_zm" ) + { + if (level.quadrotor_status.picked_up) + { + self.hint_string = &"ZOMBIE_BUILD_PIECE_ONLY_ONE"; + return false; + } + else if (flag( "quadrotor_cooling_down" )) + { + self.hint_string = "Cooling down"; + return false; + } + } - self.hint_string = self.trigger_hintstring; - } - else if ( self.persistent == 2 ) - { - if ( !maps\mp\zombies\_zm_weapons::limited_weapon_below_quota( self.weaponname, undefined ) ) - { - self.hint_string = &"ZOMBIE_GO_TO_THE_BOX_LIMITED"; - return false; - } - else if ( isdefined( self.str_taken ) && self.str_taken ) - { - self.hint_string = &"ZOMBIE_GO_TO_THE_BOX"; - return false; - } + self.hint_string = self.trigger_hintstring; + } + else if ( self.persistent == 2 ) + { + if ( !maps\mp\zombies\_zm_weapons::limited_weapon_below_quota( self.weaponname, undefined ) ) + { + self.hint_string = &"ZOMBIE_GO_TO_THE_BOX_LIMITED"; + return false; + } + else if ( isdefined( self.str_taken ) && self.str_taken ) + { + self.hint_string = &"ZOMBIE_GO_TO_THE_BOX"; + return false; + } - self.hint_string = self.trigger_hintstring; - } - else - { - self.hint_string = ""; - return false; - } + self.hint_string = self.trigger_hintstring; + } + else + { + self.hint_string = ""; + return false; + } - return true; + return true; } \ No newline at end of file diff --git a/scripts/zm/zm_transit/zm_transit_reimagined.gsc b/scripts/zm/zm_transit/zm_transit_reimagined.gsc index b97c0d5e..a0a88770 100644 --- a/scripts/zm/zm_transit/zm_transit_reimagined.gsc +++ b/scripts/zm/zm_transit/zm_transit_reimagined.gsc @@ -125,12 +125,12 @@ transit_special_weapon_magicbox_check(weapon) can_revive( player_down ) { - if (self hasWeapon("screecher_arms_zm")) + if (self hasWeapon("screecher_arms_zm")) { return false; } - return true; + return true; } electric_door_changes() @@ -688,24 +688,24 @@ attach_powerups_to_bus() attachpoweruptobus( powerup ) { - if ( !isdefined( powerup ) || !isdefined( level.the_bus ) ) - return; + if ( !isdefined( powerup ) || !isdefined( level.the_bus ) ) + return; - distanceoutsideofbus = 50.0; - pos = powerup.origin; - posinbus = pointonsegmentnearesttopoint( level.the_bus.frontworld, level.the_bus.backworld, pos ); - posdist2 = distance2dsquared( pos, posinbus ); + distanceoutsideofbus = 50.0; + pos = powerup.origin; + posinbus = pointonsegmentnearesttopoint( level.the_bus.frontworld, level.the_bus.backworld, pos ); + posdist2 = distance2dsquared( pos, posinbus ); - if ( posdist2 > level.the_bus.radius * level.the_bus.radius ) - { - radiusplus = level.the_bus.radius + distanceoutsideofbus; + if ( posdist2 > level.the_bus.radius * level.the_bus.radius ) + { + radiusplus = level.the_bus.radius + distanceoutsideofbus; - if ( posdist2 > radiusplus * radiusplus ) - return; - } + if ( posdist2 > radiusplus * radiusplus ) + return; + } powerup enablelinkto(); - powerup linkto( level.the_bus ); + powerup linkto( level.the_bus ); } manage_zones( initial_zone ) @@ -854,74 +854,74 @@ manage_zones( initial_zone ) transit_zone_init() { - flag_init( "always_on" ); - flag_init( "init_classic_adjacencies" ); - flag_set( "always_on" ); + flag_init( "always_on" ); + flag_init( "init_classic_adjacencies" ); + flag_set( "always_on" ); - if ( is_classic() ) - { - flag_set( "init_classic_adjacencies" ); - add_adjacent_zone( "zone_trans_2", "zone_trans_2b", "init_classic_adjacencies" ); - add_adjacent_zone( "zone_station_ext", "zone_trans_2b", "init_classic_adjacencies", 1 ); - add_adjacent_zone( "zone_town_west2", "zone_town_west", "init_classic_adjacencies" ); - add_adjacent_zone( "zone_town_south", "zone_town_church", "init_classic_adjacencies" ); - add_adjacent_zone( "zone_trans_pow_ext1", "zone_trans_7", "init_classic_adjacencies" ); - add_adjacent_zone( "zone_far", "zone_far_ext", "OnFarm_enter" ); - } - else - { - playable_area = getentarray( "player_volume", "script_noteworthy" ); + if ( is_classic() ) + { + flag_set( "init_classic_adjacencies" ); + add_adjacent_zone( "zone_trans_2", "zone_trans_2b", "init_classic_adjacencies" ); + add_adjacent_zone( "zone_station_ext", "zone_trans_2b", "init_classic_adjacencies", 1 ); + add_adjacent_zone( "zone_town_west2", "zone_town_west", "init_classic_adjacencies" ); + add_adjacent_zone( "zone_town_south", "zone_town_church", "init_classic_adjacencies" ); + add_adjacent_zone( "zone_trans_pow_ext1", "zone_trans_7", "init_classic_adjacencies" ); + add_adjacent_zone( "zone_far", "zone_far_ext", "OnFarm_enter" ); + } + else + { + playable_area = getentarray( "player_volume", "script_noteworthy" ); - foreach ( area in playable_area ) - { - add_adjacent_zone( "zone_station_ext", "zone_trans_2b", "always_on" ); + foreach ( area in playable_area ) + { + add_adjacent_zone( "zone_station_ext", "zone_trans_2b", "always_on" ); - if ( isdefined( area.script_parameters ) && area.script_parameters == "classic_only" ) - area delete(); - } - } + if ( isdefined( area.script_parameters ) && area.script_parameters == "classic_only" ) + area delete(); + } + } - add_adjacent_zone( "zone_pri2", "zone_station_ext", "OnPriDoorYar", 1 ); - add_adjacent_zone( "zone_pri2", "zone_pri", "OnPriDoorYar3", 1 ); + add_adjacent_zone( "zone_pri2", "zone_station_ext", "OnPriDoorYar", 1 ); + add_adjacent_zone( "zone_pri2", "zone_pri", "OnPriDoorYar3", 1 ); - if ( getdvar( "ui_zm_mapstartlocation" ) == "transit" ) - { - level thread disconnect_door_zones( "zone_pri2", "zone_station_ext", "OnPriDoorYar" ); - level thread disconnect_door_zones( "zone_pri2", "zone_pri", "OnPriDoorYar3" ); - } + if ( getdvar( "ui_zm_mapstartlocation" ) == "transit" ) + { + level thread disconnect_door_zones( "zone_pri2", "zone_station_ext", "OnPriDoorYar" ); + level thread disconnect_door_zones( "zone_pri2", "zone_pri", "OnPriDoorYar3" ); + } - add_adjacent_zone( "zone_station_ext", "zone_pri", "OnPriDoorYar2" ); - add_adjacent_zone( "zone_roadside_west", "zone_din", "OnGasDoorDin" ); - add_adjacent_zone( "zone_roadside_west", "zone_gas", "always_on" ); - add_adjacent_zone( "zone_roadside_east", "zone_gas", "always_on" ); - add_adjacent_zone( "zone_roadside_east", "zone_gar", "OnGasDoorGar" ); - add_adjacent_zone( "zone_trans_diner", "zone_roadside_west", "always_on", 1 ); - add_adjacent_zone( "zone_trans_diner", "zone_gas", "always_on", 1 ); - add_adjacent_zone( "zone_trans_diner2", "zone_roadside_east", "always_on", 1 ); - add_adjacent_zone( "zone_gas", "zone_din", "OnGasDoorDin" ); - add_adjacent_zone( "zone_gas", "zone_gar", "OnGasDoorGar" ); - add_adjacent_zone( "zone_diner_roof", "zone_din", "OnGasDoorDin", 1 ); - add_adjacent_zone( "zone_tow", "zone_bar", "always_on", 1 ); - add_adjacent_zone( "zone_bar", "zone_tow", "OnTowDoorBar", 1 ); - add_adjacent_zone( "zone_tow", "zone_ban", "OnTowDoorBan" ); - add_adjacent_zone( "zone_ban", "zone_ban_vault", "OnTowBanVault" ); - add_adjacent_zone( "zone_tow", "zone_town_north", "always_on" ); - add_adjacent_zone( "zone_town_north", "zone_ban", "OnTowDoorBan" ); - add_adjacent_zone( "zone_tow", "zone_town_west", "always_on" ); - add_adjacent_zone( "zone_tow", "zone_town_south", "always_on" ); - add_adjacent_zone( "zone_town_south", "zone_town_barber", "always_on", 1 ); - add_adjacent_zone( "zone_tow", "zone_town_east", "always_on" ); - add_adjacent_zone( "zone_town_east", "zone_bar", "OnTowDoorBar" ); - add_adjacent_zone( "zone_tow", "zone_town_barber", "always_on", 1 ); - add_adjacent_zone( "zone_town_barber", "zone_tow", "OnTowDoorBarber", 1 ); - add_adjacent_zone( "zone_town_barber", "zone_town_west", "OnTowDoorBarber" ); - add_adjacent_zone( "zone_far_ext", "zone_brn", "OnFarm_enter" ); - add_adjacent_zone( "zone_far_ext", "zone_farm_house", "open_farmhouse" ); - add_adjacent_zone( "zone_prr", "zone_pow", "OnPowDoorRR", 1 ); - add_adjacent_zone( "zone_pcr", "zone_prr", "OnPowDoorRR" ); - add_adjacent_zone( "zone_pcr", "zone_pow_warehouse", "OnPowDoorWH" ); - add_adjacent_zone( "zone_pow", "zone_pow_warehouse", "always_on" ); - add_adjacent_zone( "zone_tbu", "zone_tow", "vault_opened", 1 ); + add_adjacent_zone( "zone_station_ext", "zone_pri", "OnPriDoorYar2" ); + add_adjacent_zone( "zone_roadside_west", "zone_din", "OnGasDoorDin" ); + add_adjacent_zone( "zone_roadside_west", "zone_gas", "always_on" ); + add_adjacent_zone( "zone_roadside_east", "zone_gas", "always_on" ); + add_adjacent_zone( "zone_roadside_east", "zone_gar", "OnGasDoorGar" ); + add_adjacent_zone( "zone_trans_diner", "zone_roadside_west", "always_on", 1 ); + add_adjacent_zone( "zone_trans_diner", "zone_gas", "always_on", 1 ); + add_adjacent_zone( "zone_trans_diner2", "zone_roadside_east", "always_on", 1 ); + add_adjacent_zone( "zone_gas", "zone_din", "OnGasDoorDin" ); + add_adjacent_zone( "zone_gas", "zone_gar", "OnGasDoorGar" ); + add_adjacent_zone( "zone_diner_roof", "zone_din", "OnGasDoorDin", 1 ); + add_adjacent_zone( "zone_tow", "zone_bar", "always_on", 1 ); + add_adjacent_zone( "zone_bar", "zone_tow", "OnTowDoorBar", 1 ); + add_adjacent_zone( "zone_tow", "zone_ban", "OnTowDoorBan" ); + add_adjacent_zone( "zone_ban", "zone_ban_vault", "OnTowBanVault" ); + add_adjacent_zone( "zone_tow", "zone_town_north", "always_on" ); + add_adjacent_zone( "zone_town_north", "zone_ban", "OnTowDoorBan" ); + add_adjacent_zone( "zone_tow", "zone_town_west", "always_on" ); + add_adjacent_zone( "zone_tow", "zone_town_south", "always_on" ); + add_adjacent_zone( "zone_town_south", "zone_town_barber", "always_on", 1 ); + add_adjacent_zone( "zone_tow", "zone_town_east", "always_on" ); + add_adjacent_zone( "zone_town_east", "zone_bar", "OnTowDoorBar" ); + add_adjacent_zone( "zone_tow", "zone_town_barber", "always_on", 1 ); + add_adjacent_zone( "zone_town_barber", "zone_tow", "OnTowDoorBarber", 1 ); + add_adjacent_zone( "zone_town_barber", "zone_town_west", "OnTowDoorBarber" ); + add_adjacent_zone( "zone_far_ext", "zone_brn", "OnFarm_enter" ); + add_adjacent_zone( "zone_far_ext", "zone_farm_house", "open_farmhouse" ); + add_adjacent_zone( "zone_prr", "zone_pow", "OnPowDoorRR", 1 ); + add_adjacent_zone( "zone_pcr", "zone_prr", "OnPowDoorRR" ); + add_adjacent_zone( "zone_pcr", "zone_pow_warehouse", "OnPowDoorWH" ); + add_adjacent_zone( "zone_pow", "zone_pow_warehouse", "always_on" ); + add_adjacent_zone( "zone_tbu", "zone_tow", "vault_opened", 1 ); add_adjacent_zone( "zone_trans_8","zone_pow", "always_on", 1 ); - add_adjacent_zone( "zone_trans_8", "zone_pow_warehouse", "always_on", 1 ); + add_adjacent_zone( "zone_trans_8", "zone_pow_warehouse", "always_on", 1 ); } \ No newline at end of file