mirror of
https://github.com/JezuzLizard/Public-BO2-Mods.git
synced 2025-06-07 18:47:59 -05:00
284 lines
6.2 KiB
Plaintext
284 lines
6.2 KiB
Plaintext
#include maps/mp/_compass;
|
|
#include maps/mp/zombies/_zm_zonemgr;
|
|
#include maps/mp/zombies/_zm_perks;
|
|
#include maps/mp/zombies/_zm_audio;
|
|
#include maps/mp/zombies/_zm_score;
|
|
#include maps/mp/zombies/_zm_utility;
|
|
#include maps/mp/_utility;
|
|
#include common_scripts/utility;
|
|
|
|
playercanafford( player, cost )
|
|
{
|
|
if ( !player usebuttonpressed() )
|
|
{
|
|
return 0;
|
|
}
|
|
if ( player in_revive_trigger() )
|
|
{
|
|
return 0;
|
|
}
|
|
if ( isDefined( cost ) )
|
|
{
|
|
if ( player.score < cost )
|
|
{
|
|
return 0;
|
|
}
|
|
player maps/mp/zombies/_zm_score::minus_to_player_score( cost );
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
setinvisibletoall()
|
|
{
|
|
players = get_players();
|
|
playerindex = 0;
|
|
while ( playerindex < players.size )
|
|
{
|
|
self setinvisibletoplayer( players[ playerindex ] );
|
|
playerindex++;
|
|
}
|
|
}
|
|
|
|
spawnandlinkfxtotag( effect, ent, tag )
|
|
{
|
|
fxent = spawn( "script_model", ent gettagorigin( tag ) );
|
|
fxent setmodel( "tag_origin" );
|
|
fxent linkto( ent, tag );
|
|
wait_network_frame();
|
|
playfxontag( effect, fxent, "tag_origin" );
|
|
return fxent;
|
|
}
|
|
|
|
spawnandlinkfxtooffset( effect, ent, offsetorigin, offsetangles )
|
|
{
|
|
fxent = spawn( "script_model", ( 0, 0, 0 ) );
|
|
fxent setmodel( "tag_origin" );
|
|
fxent linkto( ent, "", offsetorigin, offsetangles );
|
|
wait_network_frame();
|
|
playfxontag( effect, fxent, "tag_origin" );
|
|
return fxent;
|
|
}
|
|
|
|
custom_weapon_wall_prices()
|
|
{
|
|
if ( !isDefined( level.zombie_include_weapons ) )
|
|
{
|
|
return;
|
|
}
|
|
weapon_spawns = [];
|
|
weapon_spawns = getentarray( "weapon_upgrade", "targetname" );
|
|
i = 0;
|
|
while ( i < weapon_spawns.size )
|
|
{
|
|
if ( !isDefined( level.zombie_weapons[ weapon_spawns[ i ].zombie_weapon_upgrade ] ) )
|
|
{
|
|
i++;
|
|
continue;
|
|
}
|
|
else
|
|
{
|
|
if ( isDefined( weapon_spawns[ i ].script_int ) )
|
|
{
|
|
cost = weapon_spawns[ i ].script_int;
|
|
level.zombie_weapons[ weapon_spawns[ i ].zombie_weapon_upgrade ].cost = cost;
|
|
}
|
|
}
|
|
i++;
|
|
}
|
|
}
|
|
|
|
pause_zombie_spawning()
|
|
{
|
|
if ( !isDefined( level.spawnpausecount ) )
|
|
{
|
|
level.spawnpausecount = 0;
|
|
}
|
|
level.spawnpausecount++;
|
|
flag_clear( "spawn_zombies" );
|
|
}
|
|
|
|
try_resume_zombie_spawning()
|
|
{
|
|
if ( !isDefined( level.spawnpausecount ) )
|
|
{
|
|
level.spawnpausecount = 0;
|
|
}
|
|
level.spawnpausecount--;
|
|
|
|
if ( level.spawnpausecount <= 0 )
|
|
{
|
|
level.spawnpausecount = 0;
|
|
flag_set( "spawn_zombies" );
|
|
}
|
|
}
|
|
|
|
automatonspeak( category, type, response, force_variant, override )
|
|
{
|
|
if ( isDefined( level.automaton ) && !is_true( level.automaton.disabled_by_emp ) )
|
|
{
|
|
if ( type != "leaving" && type != "leaving_warning" )
|
|
{
|
|
level.automaton notify( "want_to_be_speaking" );
|
|
level.automaton waittill( "startspeaking" );
|
|
}
|
|
level.automaton maps/mp/zombies/_zm_audio::create_and_play_dialog( category, type, response, force_variant, override );
|
|
}
|
|
}
|
|
|
|
is_thedouche()
|
|
{
|
|
return self.characterindex == 0;
|
|
}
|
|
|
|
is_theconspiracytheorist()
|
|
{
|
|
return self.characterindex == 1;
|
|
}
|
|
|
|
is_thefarmersdaughter()
|
|
{
|
|
return self.characterindex == 2;
|
|
}
|
|
|
|
is_theelectricalengineer()
|
|
{
|
|
return self.characterindex == 3;
|
|
}
|
|
|
|
get_random_encounter_match( location )
|
|
{
|
|
match_pool = [];
|
|
return random( match_pool );
|
|
}
|
|
|
|
transit_breakable_glass_init()
|
|
{
|
|
glass = getentarray( "transit_glass", "targetname" );
|
|
if ( level.splitscreen && getDvarInt( "splitscreen_playerCount" ) > 2 )
|
|
{
|
|
array_delete( glass );
|
|
return;
|
|
}
|
|
array_thread( glass, ::transit_breakable_glass );
|
|
}
|
|
|
|
transit_breakable_glass()
|
|
{
|
|
level endon( "intermission" );
|
|
self.health = 99999;
|
|
self setcandamage( 1 );
|
|
self.damage_state = 0;
|
|
while ( 1 )
|
|
{
|
|
self waittill( "damage", amount, attacker, direction, point, dmg_type );
|
|
if ( isplayer( attacker ) )
|
|
{
|
|
if ( self.damage_state == 0 )
|
|
{
|
|
self glass_gets_destroyed();
|
|
self.damage_state = 1;
|
|
self playsound( "fly_glass_break" );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
glass_gets_destroyed()
|
|
{
|
|
if ( isDefined( level._effect[ "glass_impact" ] ) )
|
|
{
|
|
playfx( level._effect[ "glass_impact" ], self.origin, anglesToForward( self.angles ) );
|
|
}
|
|
wait 0.1;
|
|
if ( isDefined( self.model ) && self.damage_state == 0 )
|
|
{
|
|
self setmodel( self.model + "_broken" );
|
|
self.damage_state = 1;
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
self delete();
|
|
return;
|
|
}
|
|
}
|
|
|
|
solo_tombstone_removal()
|
|
{
|
|
/*
|
|
if ( getnumexpectedplayers() > 1 )
|
|
{
|
|
return;
|
|
}
|
|
level notify( "tombstone_removed" );
|
|
level thread maps/mp/zombies/_zm_perks::perk_machine_removal( "specialty_scavenger" );
|
|
*/
|
|
}
|
|
|
|
sparking_power_lines()
|
|
{
|
|
lines = getentarray( "power_line_sparking", "targetname" );
|
|
}
|
|
|
|
disconnect_door_zones( zone_a, zone_b, flag_name )
|
|
{
|
|
level endon( "intermission" );
|
|
level endon( "end_game" );
|
|
while ( 1 )
|
|
{
|
|
flag_wait( flag_name );
|
|
azone = level.zones[ zone_a ].adjacent_zones[ zone_b ];
|
|
azone maps/mp/zombies/_zm_zonemgr::door_close_disconnect( flag_name );
|
|
}
|
|
}
|
|
|
|
enable_morse_code()
|
|
{
|
|
level clientnotify( "mc1" );
|
|
}
|
|
|
|
disable_morse_code()
|
|
{
|
|
level clientnotify( "mc0" );
|
|
}
|
|
|
|
transit_pathnode_spawning()
|
|
{
|
|
precachemodel( "collision_wall_128x128x10_standard" );
|
|
precachemodel( "collision_wall_256x256x10_standard" );
|
|
precachemodel( "collision_clip_64x64x256" );
|
|
minimap_upperl = spawn( "script_origin", ( -12248, 9496, 552 ) );
|
|
minimap_upperl.targetname = "minimap_corner";
|
|
minimap_lowerr = spawn( "script_origin", ( 14472, -8496, -776 ) );
|
|
minimap_lowerr.targetname = "minimap_corner";
|
|
maps/mp/_compass::setupminimap( "compass_map_zm_transit" );
|
|
flag_wait( "start_zombie_round_logic" );
|
|
collision1 = spawn( "script_model", ( 2273, -126, 143 ) );
|
|
collision1 setmodel( "collision_wall_128x128x10_standard" );
|
|
collision1.angles = ( 0, 0, 0 );
|
|
collision1 ghost();
|
|
collision2 = spawn( "script_model", ( 2096, -126, 143 ) );
|
|
collision2 setmodel( "collision_wall_128x128x10_standard" );
|
|
collision2.angles = ( 0, 0, 0 );
|
|
collision2 ghost();
|
|
collision3 = spawn( "script_model", ( 1959, -126, 143 ) );
|
|
collision3 setmodel( "collision_wall_128x128x10_standard" );
|
|
collision3.angles = ( 0, 0, 0 );
|
|
collision3 ghost();
|
|
collision4 = spawn( "script_model", ( 12239, 8509, -688 ) );
|
|
collision4 setmodel( "collision_wall_128x128x10_standard" );
|
|
collision4.angles = ( 0, 0, 0 );
|
|
collision4 ghost();
|
|
collision5 = spawn( "script_model", ( 8320, -6679, 362 ) );
|
|
collision5 setmodel( "collision_wall_256x256x10_standard" );
|
|
collision5.angles = vectorScale( ( 0, 0, 0 ), 300 );
|
|
collision5 ghost();
|
|
collision5 = spawn( "script_model", ( 10068, 7272, -67 ) );
|
|
collision5 setmodel( "collision_clip_64x64x256" );
|
|
collision5.angles = ( 0, 0, 0 );
|
|
collision5 ghost();
|
|
}
|
|
|
|
|
|
|