mirror of
https://github.com/JezuzLizard/BO2-Reimagined.git
synced 2025-06-10 15:17:57 -05:00
MOTD: add Docks location
This commit is contained in:
@ -471,6 +471,12 @@
|
||||
* Added Smoke Grenades to the Mystery Box
|
||||
* Added Richtofen Head meat powerup model
|
||||
|
||||
#### Docks
|
||||
* Added Grief game mode
|
||||
* Wallbuys: M14, Olympia, MP5, Uzi, M1927
|
||||
* Perks: Juggernog
|
||||
* Pack-a-Punch
|
||||
|
||||
### Buried
|
||||
* Power automatically on
|
||||
* Removed Turbine
|
||||
|
277
scripts/zm/locs/zm_prison_loc_docks.gsc
Normal file
277
scripts/zm/locs/zm_prison_loc_docks.gsc
Normal file
@ -0,0 +1,277 @@
|
||||
#include maps\mp\zombies\_zm_utility;
|
||||
#include common_scripts\utility;
|
||||
#include maps\mp\_utility;
|
||||
#include maps\mp\zm_prison;
|
||||
#include maps\mp\zombies\_zm_zonemgr;
|
||||
#include scripts\zm\locs\loc_common;
|
||||
|
||||
struct_init()
|
||||
{
|
||||
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, 5391, -72 ), ( 0, 100, 0 ) );
|
||||
|
||||
ind = 0;
|
||||
respawnpoints = getstructarray( "player_respawn_point", "targetname" );
|
||||
for(i = 0; i < respawnpoints.size; i++)
|
||||
{
|
||||
if(respawnpoints[i].script_noteworthy == "zone_dock")
|
||||
{
|
||||
ind = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
level.struct_class_names[ "script_noteworthy" ][ "initial_spawn" ] = [];
|
||||
|
||||
respawn_array = getstructarray(respawnpoints[ind].target, "targetname");
|
||||
i = 0;
|
||||
foreach(respawn in respawn_array)
|
||||
{
|
||||
if (respawn.origin == (-664, 5944, 0))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
script_int = int(i / 2) + 1;
|
||||
|
||||
origin = respawn.origin + (anglesToRight(respawn.angles) * 32);
|
||||
angles = respawn.angles;
|
||||
|
||||
scripts\zm\replaced\utility::register_map_initial_spawnpoint( origin, angles, script_int );
|
||||
|
||||
origin = respawn.origin + (anglesToRight(respawn.angles) * -32);
|
||||
angles = respawn.angles;
|
||||
|
||||
scripts\zm\replaced\utility::register_map_initial_spawnpoint( origin, angles, script_int );
|
||||
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
precache()
|
||||
{
|
||||
setdvar( "disableLookAtEntityLogic", 1 );
|
||||
level.chests = [];
|
||||
level.chests[0] = getstruct( "dock_chest", "script_noteworthy" );
|
||||
}
|
||||
|
||||
main()
|
||||
{
|
||||
enable_zones();
|
||||
init_wallbuys();
|
||||
init_barriers();
|
||||
set_box_weapons();
|
||||
disable_zombie_spawn_locations();
|
||||
disable_player_spawn_locations();
|
||||
create_key_door_unitrigger( 4, 98, 112, 108 );
|
||||
level thread open_inner_gate();
|
||||
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" );
|
||||
array_thread( level.zombie_spawners, ::add_spawn_function, maps\mp\zm_alcatraz_grief_cellblock::remove_zombie_hats_for_grief );
|
||||
maps\mp\zombies\_zm_ai_brutus::precache();
|
||||
maps\mp\zombies\_zm_ai_brutus::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();
|
||||
}
|
||||
|
||||
set_box_weapons()
|
||||
{
|
||||
if(isDefined(level.zombie_weapons["knife_ballistic_zm"]))
|
||||
{
|
||||
level.zombie_weapons["knife_ballistic_zm"].is_in_box = 1;
|
||||
}
|
||||
if(isDefined(level.zombie_weapons["ray_gun_zm"]))
|
||||
{
|
||||
level.zombie_weapons["ray_gun_zm"].is_in_box = 1;
|
||||
}
|
||||
}
|
||||
|
||||
enable_zones()
|
||||
{
|
||||
zone_init( "zone_dock" );
|
||||
enable_zone( "zone_dock" );
|
||||
zone_init( "zone_dock_gondola" );
|
||||
enable_zone( "zone_dock_gondola" );
|
||||
zone_init( "zone_dock_puzzle" );
|
||||
flag_set( "gondola_roof_to_dock" );
|
||||
}
|
||||
|
||||
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( "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");
|
||||
|
||||
// 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");
|
||||
}
|
||||
|
||||
disable_zombie_spawn_locations()
|
||||
{
|
||||
for ( z = 0; z < level.zone_keys.size; 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++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
disable_player_spawn_locations()
|
||||
{
|
||||
spawn_points = getstructarray( "player_respawn_point", "targetname" );
|
||||
foreach(spawn_point in spawn_points)
|
||||
{
|
||||
if(spawn_point.script_noteworthy == "zone_citadel_basement")
|
||||
{
|
||||
spawn_point.script_noteworthy = "none";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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 );
|
||||
}
|
||||
|
||||
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 );
|
||||
|
||||
self sethintstring( &"ZOMBIE_BUTTON_BUY_OPEN_DOOR_2000" );
|
||||
|
||||
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;
|
||||
|
||||
while ( !b_door_open )
|
||||
{
|
||||
self waittill( "trigger", e_triggerer );
|
||||
|
||||
if ( is_player_valid(e_triggerer) && 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;
|
||||
}
|
||||
}
|
||||
|
||||
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_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();
|
||||
|
||||
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 );
|
||||
}
|
||||
|
||||
open_inner_gate()
|
||||
{
|
||||
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 playsound( "zmb_chainlink_close" );
|
||||
}
|
@ -13,8 +13,16 @@
|
||||
init()
|
||||
{
|
||||
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_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 );
|
||||
|
||||
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 );
|
||||
}
|
||||
}
|
@ -14,7 +14,11 @@
|
||||
|
||||
precache()
|
||||
{
|
||||
|
||||
if (getDvar("ui_zm_mapstartlocation_fake") == "docks")
|
||||
{
|
||||
scripts\zm\locs\zm_prison_loc_docks::precache();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
zgrief_preinit()
|
||||
@ -99,6 +103,12 @@ grief_treasure_chest_init()
|
||||
|
||||
main()
|
||||
{
|
||||
if (getDvar("ui_zm_mapstartlocation_fake") == "docks")
|
||||
{
|
||||
scripts\zm\locs\zm_prison_loc_docks::main();
|
||||
return;
|
||||
}
|
||||
|
||||
maps\mp\gametypes_zm\_zm_gametype::setup_standard_objects( "cellblock" );
|
||||
grief_treasure_chest_init();
|
||||
precacheshader( "zm_al_wth_zombie" );
|
||||
|
@ -93,6 +93,12 @@ wolf_spit_out_powerup()
|
||||
}
|
||||
}
|
||||
|
||||
if (level.scr_zm_map_start_location == "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 );
|
||||
|
||||
|
@ -2647,7 +2647,7 @@ containment_think()
|
||||
|
||||
player.obj_waypoint.alpha = 1;
|
||||
|
||||
if(level.script == "zm_transit" && level.scr_zm_map_start_location == "power" && zone_name == "zone_trans_8")
|
||||
if(level.script == "zm_transit" && zone_name == "zone_trans_8")
|
||||
{
|
||||
other_zone = level.zones["zone_pow_warehouse"];
|
||||
player.obj_waypoint.x = (zone.volumes[0].origin[0] + other_zone.volumes[0].origin[0]) / 2;
|
||||
@ -2661,6 +2661,11 @@ containment_think()
|
||||
player.obj_waypoint.z = zone.volumes[0].origin[2];
|
||||
}
|
||||
|
||||
if(level.script == "zm_prison" && zone_name == "zone_dock_gondola")
|
||||
{
|
||||
player.obj_waypoint.z += 200;
|
||||
}
|
||||
|
||||
player.obj_waypoint setWaypoint(1, "waypoint_revive");
|
||||
}
|
||||
}
|
||||
@ -2911,7 +2916,14 @@ containment_get_zones()
|
||||
{
|
||||
if(level.scr_zm_map_start_location == "cellblock")
|
||||
{
|
||||
containment_zones = array("zone_cellblock_west", "zone_cellblock_west_gondola", "zone_cellblock_west_barber", "zone_cellblock_east", "zone_start", "zone_library", "zone_cafeteria", "zone_warden_office");
|
||||
if (getDvar("ui_zm_mapstartlocation_fake") == "docks")
|
||||
{
|
||||
containment_zones = array("zone_dock_gondola", "zone_studio", "zone_citadel_basement_building");
|
||||
}
|
||||
else
|
||||
{
|
||||
containment_zones = array("zone_cellblock_west", "zone_cellblock_west_gondola", "zone_cellblock_west_barber", "zone_cellblock_east", "zone_start", "zone_library", "zone_cafeteria", "zone_warden_office");
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(level.script == "zm_buried")
|
||||
|
@ -54,9 +54,6 @@ precache_map_images()
|
||||
preCacheShader("loadscreen_zm_transit_zgrief_transit");
|
||||
preCacheShader("loadscreen_zm_transit_zgrief_farm");
|
||||
preCacheShader("loadscreen_zm_transit_zgrief_town");
|
||||
preCacheShader("loadscreen_zm_transit_zgrief_power");
|
||||
preCacheShader("loadscreen_zm_transit_zgrief_tunnel");
|
||||
preCacheShader("loadscreen_zm_transit_zgrief_cornfield");
|
||||
preCacheShader("loadscreen_zm_transit_dr_zcleansed_diner");
|
||||
preCacheShader("loadscreen_zm_prison_zgrief_cellblock");
|
||||
preCacheShader("loadscreen_zm_buried_zgrief_street");
|
||||
@ -567,6 +564,14 @@ get_image_for_loc(mapname, locname)
|
||||
{
|
||||
return "loadscreen_zm_transit_dr_zcleansed_diner";
|
||||
}
|
||||
else if (locname == "power" || locname == "tunnel" || locname == "cornfield")
|
||||
{
|
||||
return "loadscreen_zm_transit_zgrief_transit";
|
||||
}
|
||||
else if (locname == "docks")
|
||||
{
|
||||
return "loadscreen_zm_prison_zgrief_cellblock";
|
||||
}
|
||||
|
||||
return "loadscreen_" + mapname + "_zgrief_" + locname;
|
||||
}
|
@ -2,6 +2,7 @@
|
||||
#include common_scripts\utility;
|
||||
#include maps\mp\zombies\_zm_utility;
|
||||
#include maps\mp\zombies\_zm_craftables;
|
||||
#include maps\mp\zombies\_zm_zonemgr;
|
||||
#include maps\mp\zm_alcatraz_utility;
|
||||
|
||||
#include scripts\zm\replaced\zm_alcatraz_classic;
|
||||
@ -41,6 +42,8 @@ init()
|
||||
|
||||
level.zombie_powerups["meat_stink"].model_name = "t6_wpn_zmb_severedhead_world";
|
||||
|
||||
add_adjacent_zone( "zone_dock", "zone_dock_puzzle", "always_on" ); // "docks_inner_gate_unlocked"
|
||||
|
||||
remove_acid_trap_player_spawn();
|
||||
|
||||
tower_trap_changes();
|
||||
|
Reference in New Issue
Block a user