mirror of
https://github.com/JezuzLizard/BO2-Reimagined.git
synced 2025-06-29 08:30:03 -05:00
258 lines
8.4 KiB
Plaintext
258 lines
8.4 KiB
Plaintext
#include maps\mp\zombies\_zm_game_module;
|
|
#include maps\mp\zombies\_zm_utility;
|
|
#include common_scripts\utility;
|
|
#include maps\mp\_utility;
|
|
#include maps\mp\zombies\_zm;
|
|
#include maps\mp\zombies\_zm_zonemgr;
|
|
|
|
#include scripts\zm\replaced\utility;
|
|
#include scripts\zm\locs\loc_common;
|
|
|
|
struct_init()
|
|
{
|
|
replaceFunc(maps\mp\zombies\_zm_zonemgr::manage_zones, ::manage_zones);
|
|
|
|
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, 270, 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 ) );
|
|
|
|
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_amb_tunnel")
|
|
{
|
|
ind = i;
|
|
break;
|
|
}
|
|
}
|
|
|
|
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_initial_spawnpoint( respawn.origin, respawn.angles, respawn.script_int );
|
|
}
|
|
}
|
|
|
|
precache()
|
|
{
|
|
|
|
}
|
|
|
|
main()
|
|
{
|
|
init_wallbuys();
|
|
init_barriers();
|
|
thread disable_zombie_spawn_locations();
|
|
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", ( -10787, -1430, 247 ), ( 0, 88, 0 ) );
|
|
scripts\zm\replaced\utility::wallbuy( "mp5k_zm", "mp5", "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 ) );
|
|
}
|
|
|
|
init_barriers()
|
|
{
|
|
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) );
|
|
|
|
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( "veh_t6_civ_movingtrk_cab_dead", origin, angles );
|
|
}
|
|
|
|
disable_zombie_spawn_locations()
|
|
{
|
|
wait 10;
|
|
player = get_players()[0];
|
|
player notify( "stop_player_out_of_playable_area_monitor" );
|
|
|
|
for ( z = 0; z < level.zone_keys.size; z++ )
|
|
{
|
|
zone = level.zones[ level.zone_keys[ z ] ];
|
|
if(zone == "zone_amb_tunnel")
|
|
{
|
|
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++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
manage_zones( initial_zone )
|
|
{
|
|
initial_zone = [];
|
|
initial_zone[0] = "zone_amb_tunnel";
|
|
|
|
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++ )
|
|
{
|
|
spawn_points[ i ].locked = 1;
|
|
}
|
|
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 );
|
|
}
|
|
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();
|
|
}
|
|
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;
|
|
}
|
|
a_zone_is_active = 0;
|
|
a_zone_is_spawning_allowed = 0;
|
|
level.zone_scanning_active = 1;
|
|
z = 0;
|
|
while ( z < zkeys.size )
|
|
{
|
|
zone = level.zones[ zkeys[ z ] ];
|
|
newzone = level.newzones[ zkeys[ z ] ];
|
|
if( !zone.is_enabled )
|
|
{
|
|
z++;
|
|
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 ( newzone.is_occupied )
|
|
{
|
|
newzone.is_active = 1;
|
|
a_zone_is_active = 1;
|
|
if ( zone.is_spawning_allowed )
|
|
{
|
|
a_zone_is_spawning_allowed = 1;
|
|
}
|
|
if ( !isdefined(oldzone) || oldzone != newzone )
|
|
{
|
|
level notify( "newzoneActive", zkeys[ z ] );
|
|
oldzone = newzone;
|
|
}
|
|
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;
|
|
if ( level.zones[ azkeys[ az ] ].is_spawning_allowed )
|
|
{
|
|
a_zone_is_spawning_allowed = 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
zone_choke++;
|
|
if ( zone_choke >= 3 )
|
|
{
|
|
zone_choke = 0;
|
|
wait 0.05;
|
|
}
|
|
z++;
|
|
}
|
|
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;
|
|
}
|
|
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.active_zone_names = maps\mp\zombies\_zm_zonemgr::get_active_zone_names();
|
|
wait 1;
|
|
}
|
|
} |