iw6-scripts/maps/mp/mp_zulu.gsc
2024-02-13 13:20:49 +01:00

778 lines
21 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
main()
{
maps\mp\mp_zulu_precache::main();
maps\createart\mp_zulu_art::main();
maps\mp\mp_zulu_fx::main();
maps\mp\_breach::main();
maps\mp\_load::main();
maps\mp\_barrels_leak::main();
level.nukedeathvisionfunc = ::nukedeathvision;
maps\mp\_compass::setupminimap( "compass_map_mp_zulu" );
maps\mp\_utility::setdvar_cg_ng( "r_specularColorScale", 2.5, 7.5 );
setdvar( "r_lightGridEnableTweaks", 1 );
setdvar( "r_lightGridIntensity", 1.33 );
if ( level.ps3 )
{
setdvar( "sm_sunShadowScale", "0.45" );
setdvar( "sm_sunsamplesizenear", ".35" );
}
else if ( level.xenon )
{
setdvar( "sm_sunShadowScale", "0.55" );
setdvar( "sm_sunsamplesizenear", ".35" );
}
else
{
setdvar( "sm_sunShadowScale", "1.0" );
setdvar( "sm_sunsamplesizenear", ".35" );
}
level.mapcustomcratefunc = ::mariachicustomcratefunc;
level.mapcustomkillstreakfunc = ::mariachicustomkillstreakfunc;
level.mapcustombotkillstreakfunc = ::mariachicustombotkillstreakfunc;
maps\mp\killstreaks\_juggernaut::initlevelcustomjuggernaut( ::deathmariachicreatefunc, ::setjuggdeathmariachiclass, ::setjuggdeathmariachi, "callout_killed_death_mariachi" );
game["attackers"] = "allies";
game["defenders"] = "axis";
game["allies_outfit"] = "urban";
game["axis_outfit"] = "woodland";
thread zulu_breach_init();
thread maps\mp\_dlcalienegg::setupeggformap( "alienEasterEgg" );
thread precache_strings();
thread nuke_custom_visionset();
thread get_float_speaker_scriptables();
thread setup_music_emitters();
}
precache_strings()
{
precachestring( &"MP_ZULU_DEFAULT_TXT_01" );
precachestring( &"MP_ZULU_DEFAULT_TXT_02" );
precachestring( &"MP_ZULU_TESTREF" );
precachestring( &"MP_ZULU_INSTRUCTION" );
}
setup_music_emitters()
{
level.music_float_1 = common_scripts\utility::play_loopsound_in_space( "zulu_emt_mariachi_float", ( 320, 702, 151 ) );
level.float_music_enabled = 1;
maps\mp\_utility::delaythread( 2.0, maps\mp\gametypes\_music_and_dialog::disablemusic );
}
stop_ambient_music()
{
level.music_float_1 stoploopsound();
}
start_ambient_music()
{
if ( level.float_music_enabled == 1 )
level.music_float_1 playloopsound( "zulu_emt_mariachi_float" );
}
zulu_killstreak()
{
level endon( "game_ended" );
self endon( "death" );
self endon( "disconnect" );
self endon( "jugg_removed" );
level.muerto_active = 1;
for (;;)
{
self iprintlnbold( &"MP_ZULU_INSTRUCTION" );
thread givespiritvision();
thread createresurrectedsquadmate();
thread stop_ambient_music();
maps\mp\_utility::giveperk( "specialty_spygame", 0 );
maps\mp\_utility::giveperk( "specialty_coldblooded", 0 );
maps\mp\_utility::giveperk( "specialty_noscopeoutline", 0 );
maps\mp\_utility::giveperk( "specialty_heartbreaker", 0 );
maps\mp\_utility::giveperk( "specialty_fastreload", 0 );
maps\mp\_utility::giveperk( "specialty_scavenger", 0 );
maps\mp\_utility::giveperk( "specialty_sprintreload", 0 );
maps\mp\_utility::giveperk( "specialty_fastsprintrecovery", 0 );
maps\mp\_utility::giveperk( "specialty_marathon", 0 );
maps\mp\_utility::giveperk( "specialty_empimmune", 0 );
maps\mp\_utility::giveperk( "specialty_blindeye", 0 );
while ( maps\mp\_utility::isreallyalive( self ) )
{
var_0 = self.pers["kills"];
while ( var_0 == self.pers["kills"] )
{
wait 0.1;
if ( !maps\mp\_utility::isreallyalive( self ) )
break;
}
}
}
}
play_mariachi_music_on_plr()
{
level endon( "game_ended" );
self endon( "death" );
self endon( "disconnect" );
self endon( "jugg_removed" );
for (;;)
{
self playlocalsound( "killstreak_mariachi_music_plr", "sounddone" );
self waittill( "sounddone" );
}
}
givespiritvision()
{
self endon( "death" );
while ( maps\mp\_utility::isreallyalive( self ) )
{
thread tryuse3dping();
wait( level.uavsettings["uav_3dping"].timeout );
}
}
tryuse3dping( var_0, var_1 )
{
var_2 = "uav_3dping";
thread watch3dping_spiritvision( var_2 );
return 1;
}
watch3dping_spiritvision( var_0, var_1 )
{
if ( isdefined( var_1 ) )
var_1 endon( "death" );
self endon( "leave" );
self endon( "killstreak_disowned" );
self endon( "death" );
level endon( "game_ended" );
var_2 = 2.0;
if ( level.teambased )
level.activeuavs[self.team]++;
else
level.activeuavs[self.guid]++;
for (;;)
{
foreach ( var_4 in level.participants )
{
if ( !maps\mp\_utility::isreallyalive( var_4 ) )
continue;
if ( !maps\mp\_utility::isenemy( var_4 ) )
continue;
if ( var_4 maps\mp\_utility::_hasperk( "specialty_noplayertarget" ) || var_4 maps\mp\_utility::_hasperk( "specialty_incog" ) )
continue;
if ( maps\mp\agents\_agent_utility::getnumownedactiveagents( self ) < 2 )
{
var_5 = maps\mp\_utility::outlineenableforplayer( var_4, "red", self, 0, "killstreak" );
var_6 = 2.0;
thread watchhighlightfadetime( var_5, var_4, var_6, var_1 );
}
}
maps\mp\gametypes\_hostmigration::waitlongdurationwithhostmigrationpause( var_2 );
}
}
watchhighlightfadetime( var_0, var_1, var_2, var_3 )
{
if ( isdefined( var_3 ) )
var_3 endon( "death" );
self endon( "disconnect" );
level endon( "game_ended" );
common_scripts\utility::waittill_any_timeout_no_endon_death( var_2, "leave" );
if ( isdefined( var_1 ) )
maps\mp\_utility::outlinedisable( var_0, var_1 );
}
createresurrectedsquadmate()
{
self endon( "death" );
for (;;)
{
self waittill( "killed_enemy", var_0, var_1 );
if ( var_1 != "agent_support_mp" && var_1 == "iw6_mariachimagnum_mp_akimbo" )
{
var_2 = usesquadmate( var_0 );
if ( isagent( var_2 ) )
var_2 customizesquadmate( var_0 );
}
}
}
customizesquadmate( var_0 )
{
self.agent_is_mariachi = 1;
if ( isdefined( self.headmodel ) )
{
self detach( self.headmodel, "" );
self.headmodel = undefined;
}
self setmodel( "mp_mariachi" );
playsoundatpos( self.origin, "zulu_mariachi_spawn" );
thread deathmariachibotsounds();
playfx( level._effect["vfx_squadmate_spawn_burst"], self.origin );
wait 0.05;
playfxontag( level._effect["vfx_death_smoke_runner"], self, "tag_origin" );
self takeallweapons();
self giveweapon( "iw6_mariachimagnum_mp_akimbo" );
self switchtoweapon( "iw6_mariachimagnum_mp_akimbo" );
maps\mp\_utility::giveperk( "specialty_spygame", 0 );
maps\mp\_utility::giveperk( "specialty_coldblooded", 0 );
maps\mp\_utility::giveperk( "specialty_noscopeoutline", 0 );
maps\mp\_utility::giveperk( "specialty_heartbreaker", 0 );
maps\mp\_utility::giveperk( "specialty_scavenger", 0 );
maps\mp\_utility::giveperk( "specialty_sprintreload", 0 );
maps\mp\_utility::giveperk( "specialty_marathon", 0 );
maps\mp\_utility::giveperk( "specialty_empimmune", 0 );
thread post_killcam_perks();
self.health = 25;
thread agentdeathevents();
}
post_killcam_perks()
{
wait 5.0;
maps\mp\_utility::giveperk( "specialty_noplayertarget", 0 );
maps\mp\_utility::giveperk( "specialty_blindeye", 0 );
}
usesquadmate( var_0 )
{
level.agent_funcs["pirate"] = level.agent_funcs["squadmate"];
if ( maps\mp\agents\_agent_utility::getnumactiveagents( "squadmate" ) >= 5 )
{
self iprintlnbold( &"KILLSTREAKS_AGENT_MAX" );
return 0;
}
if ( maps\mp\agents\_agent_utility::getnumownedactiveagents( self ) >= 2 )
return 0;
var_1 = maps\mp\agents\_agent_utility::getvalidspawnpathnodenearplayer( 1 );
if ( !isdefined( var_1 ) )
return 0;
var_2 = var_1.origin;
var_3 = var_1.angles;
var_4 = maps\mp\agents\_agents::add_humanoid_agent( "pirate", self.team, "reconAgent", var_2, var_3, self, 0, 0, "veteran" );
if ( !isdefined( var_4 ) )
return 0;
var_4 maps\mp\_utility::giveperk( "specialty_blindeye", 0 );
var_4.killstreaktype = "agent";
return var_4;
}
agentdeathevents()
{
self waittill( "death" );
var_0 = self.origin;
playsoundatpos( var_0, "zulu_mariachi_death" );
playfx( level._effect["vfx_squadmate_spawn_burst"], var_0 );
}
deathmariachicreatefunc( var_0 )
{
self.isjuggernautlevelcustom = 1;
thread deathmariachisounds();
maps\mp\gametypes\_class::giveloadout( self.pers["team"], var_0, 0 );
thread deathmariachibeginmusic();
thread onjuggdeathmariachienemykilled();
thread onjuggdeathmariachideath();
thread reaperspiritwalking();
self.canusekillstreakcallback = ::juggdeathmariachicanusekillstreak;
self.killstreakerrormsg = ::juggdeathmariachikillsteakerrormsg;
self.movespeedscaler = 1.05;
self.healthregendisabled = 1;
self.breathingstoptime = 0;
thread maps\mp\_utility::teamplayercardsplash( "used_juggernaut_death_mariachi", self );
return 0;
}
setjuggdeathmariachiclass( var_0 )
{
var_1 = [];
var_1["loadoutPrimary"] = "iw6_mariachimagnum";
var_1["loadoutPrimaryBuff"] = "specialty_null";
var_1["loadoutPrimaryAttachment"] = "akimbo";
var_1["loadoutSecondary"] = "none";
var_1["loadoutEquipment"] = "specialty_null";
return var_1;
}
setjuggdeathmariachi()
{
if ( isdefined( self.headmodel ) )
{
self detach( self.headmodel, "" );
self.headmodel = undefined;
}
self setmodel( "mp_mariachi" );
self setviewmodel( "viewhands_mp_mariachi" );
self setclothtype( "nylon" );
}
juggdeathmariachicanusekillstreak( var_0 )
{
return 0;
}
juggdeathmariachikillsteakerrormsg()
{
self iprintlnbold( &"MP_ZULU_NO_KILLSTREAKS" );
}
reaperspiritwalking()
{
level endon( "game_ended" );
self endon( "death" );
self endon( "disconnect" );
self endon( "jugg_removed" );
if ( self.isjuggernautlevelcustom )
{
thread zulu_killstreak();
self.spiritwalking = 1;
self setmodel( "mp_mariachi" );
self setviewmodel( "viewhands_mp_mariachi" );
if ( isdefined( self.headmodel ) )
{
self detach( self.headmodel, "" );
self.headmodel = undefined;
}
playfxontag( level._effect["vfx_death_smoke_runner"], self, "tag_origin" );
if ( issplitscreen() )
{
var_0 = ( 235.004, 521.706, 1.95469 );
var_1 = ( 270, 0, 0 );
var_2 = anglestoup( var_1 );
var_3 = anglestoforward( var_1 );
level.scrnfxss = spawnfxforclient( level._effect["vfx_scrnfx_spirit_vision_split"], var_0, self, var_3, var_2 );
triggerfx( level.scrnfxss );
}
else
{
var_4 = ( 235.004, 521.706, 1.95469 );
var_5 = ( 270, 0, 0 );
var_6 = anglestoup( var_5 );
var_7 = anglestoforward( var_5 );
level.scrnfx = spawnfxforclient( level._effect["vfx_scrnfx_spirit_vision"], var_4, self, var_7, var_6 );
triggerfx( level.scrnfx );
}
self visionsetnakedforplayer( "mp_zulu_spiritwalk", 0.1 );
thread visionset_watcher_for_mariachi();
thread visionset_watcher_for_spectate();
thread visionset_watcher_for_game_end();
}
}
visionset_watcher_for_mariachi()
{
self endon( "death" );
self endon( "disconnect" );
level endon( "game_ended" );
for (;;)
{
level waittill( "emp_used" );
wait 1.0;
self visionsetnakedforplayer( "mp_zulu_spiritwalk", 0.1 );
}
}
visionset_watcher_for_spectate()
{
self endon( "death" );
self endon( "disconnect" );
level endon( "game_ended" );
for (;;)
{
maps\mp\_utility::set_visionset_for_watching_players( "mp_zulu_spiritwalk", 0.1, 5 );
wait 0.2;
}
}
visionset_watcher_for_game_end()
{
self endon( "death" );
self endon( "disconnect" );
level waittill( "game_ended" );
self visionsetnakedforplayer( "mp_zulu", 0.1 );
if ( issplitscreen() )
{
if ( isdefined( level.scrnfxss ) )
level.scrnfxss delete();
}
else if ( isdefined( level.scrnfx ) )
level.scrnfx delete();
}
tryusejuggernautdeathmariachi( var_0, var_1 )
{
maps\mp\killstreaks\_juggernaut::givejuggernaut( var_1 );
game["player_holding_level_killstrek"] = 0;
return 1;
}
enable_level_killstreak()
{
maps\mp\killstreaks\_airdrop::changecrateweight( "airdrop_assault", "juggernaut_death_mariachi", 85 );
}
disable_level_killstreak()
{
maps\mp\killstreaks\_airdrop::changecrateweight( "airdrop_assault", "juggernaut_death_mariachi", 0 );
}
mariachicustomcratefunc()
{
if ( !isdefined( game["player_holding_level_killstrek"] ) )
game["player_holding_level_killstrek"] = 0;
if ( !maps\mp\_utility::allowlevelkillstreaks() || game["player_holding_level_killstrek"] )
return;
maps\mp\killstreaks\_airdrop::addcratetype( "airdrop_assault", "juggernaut_death_mariachi", 85, maps\mp\killstreaks\_airdrop::juggernautcratethink, maps\mp\killstreaks\_airdrop::get_friendly_juggernaut_crate_model(), maps\mp\killstreaks\_airdrop::get_enemy_juggernaut_crate_model(), &"MP_ZULU_JUGGERNAUT_DEATH_PICKUP" );
level thread watch_for_death_mariachi_crate();
}
watch_for_death_mariachi_crate()
{
for (;;)
{
level waittill( "createAirDropCrate", var_0 );
if ( isdefined( var_0 ) && isdefined( var_0.cratetype ) && var_0.cratetype == "juggernaut_death_mariachi" )
{
disable_level_killstreak();
var_1 = wait_for_capture( var_0 );
if ( !var_1 )
enable_level_killstreak();
else
{
game["player_holding_level_killstrek"] = 1;
wait_for_killstreak_availability();
}
}
}
}
wait_for_capture( var_0 )
{
var_1 = watch_for_air_drop_death( var_0 );
return !isdefined( var_1 );
}
watch_for_air_drop_death( var_0 )
{
var_0 endon( "captured" );
var_0 waittill( "death" );
waittillframeend;
return 1;
}
wait_for_killstreak_availability()
{
level endon( "game_ended" );
for (;;)
{
if ( isdefined( game["player_holding_level_killstrek"] ) && !game["player_holding_level_killstrek"] && !level.muerto_active )
{
enable_level_killstreak();
break;
}
wait 5.0;
}
}
killstreak_lottery()
{
level endon( "game_ended" );
while ( !isdefined( level.players ) )
wait 0.05;
while ( level.players.size < 1 )
wait 0.05;
for (;;)
{
wait 10;
if ( !isdefined( game["player_holding_level_killstrek"] ) )
game["player_holding_level_killstrek"] = 0;
var_0 = common_scripts\utility::random( level.players );
if ( var_0.hasdonecombat )
{
var_0 maps\mp\killstreaks\_juggernaut::givejuggernaut( "juggernaut_death_mariachi" );
while ( isalive( var_0 ) )
wait 5.0;
}
}
}
mariachicustomkillstreakfunc()
{
level.killstreakfuncs["juggernaut_death_mariachi"] = ::tryusejuggernautdeathmariachi;
level.killstreakweildweapons["pirate_agent_mp"] = "juggernaut_death_mariachi";
}
mariachicustombotkillstreakfunc()
{
maps\mp\bots\_bots_ks::bot_register_killstreak_func( "juggernaut_death_mariachi", maps\mp\bots\_bots_ks::bot_killstreak_simple_use );
}
deathmariachisounds()
{
level endon( "game_ended" );
self endon( "death" );
self endon( "disconnect" );
self endon( "jugg_removed" );
self playlocalsound( "zulu_mariachi_activate" );
for (;;)
{
wait( randomintrange( 7, 10 ) );
maps\mp\_utility::playplayerandnpcsounds( self, "zulu_ghost_voice_plr", "zulu_ghost_voice_npc" );
}
}
deathmariachibotsounds()
{
level endon( "game_ended" );
self endon( "death" );
self endon( "disconnect" );
self endon( "jugg_removed" );
for (;;)
{
wait( randomintrange( 7, 10 ) );
self playsoundonmovingent( "zulu_ghost_voice_npc" );
}
}
onjuggdeathmariachienemykilled()
{
self endon( "death" );
for (;;)
{
self waittill( "killed_enemy", var_0, var_1 );
if ( var_1 == "iw6_mariachimagnum_mp_akimbo" )
thread deathmariachikilleffect( var_0 );
}
}
deathmariachikilleffect( var_0 )
{
var_1 = var_0.origin + ( 0, 0, 50 );
wait 0.05;
playfx( level._effect["vfx_squadmate_spawn_burst"], var_1 );
}
onjuggdeathmariachideath()
{
level endon( "game_ended" );
thread deathmariachimusicendoflevel();
common_scripts\utility::waittill_any( "death", "disconnect" );
if ( isdefined( self ) )
{
playfx( level._effect["vfx_mariachi_player_death"], self.origin );
if ( issplitscreen() )
{
if ( isdefined( level.scrnfxss ) )
level.scrnfxss delete();
}
else if ( isdefined( level.scrnfx ) )
level.scrnfx delete();
maps\mp\_utility::playplayerandnpcsounds( self, "zulu_mariachi_death_plr", "zulu_mariachi_death" );
self.spiritwalking = 0;
self visionsetnakedforplayer( "mp_zulu", 0.1 );
self.healthregendisabled = 0;
}
game["player_holding_level_killstrek"] = 0;
level.muerto_active = 0;
foreach ( var_1 in level.agentarray )
{
if ( !isdefined( var_1 ) )
continue;
if ( var_1.agent_type == "pirate" && isdefined( var_1.agent_is_mariachi ) )
var_1 suicide();
}
thread deathmariachiendmusic();
}
deathmariachimusicendoflevel()
{
self endon( "death" );
self endon( "disconnect" );
level waittill( "game_ended" );
thread deathmariachiendmusic();
}
deathmariachibeginmusic()
{
wait 1.2;
level.mariachimusicent = spawn( "script_origin", ( 0, 0, 0 ) );
level.mariachimusicent playloopsound( "killstreak_death_mariachi_music" );
level.mariachidroneent = spawn( "script_origin", ( 0, 0, 0 ) );
level.mariachidroneent playloopsound( "zulu_ghost_drone" );
}
deathmariachiendmusic()
{
level.mariachidroneent stoploopsound();
level.mariachimusicent stoploopsound();
maps\mp\_utility::playsoundonplayers( "killstreak_death_mariachi_music_end" );
thread start_ambient_music();
thread maps\mp\gametypes\_music_and_dialog::enablemusic();
common_scripts\utility::waitframe();
level.mariachidroneent delete();
level.mariachidroneent = undefined;
level.mariachimusicent delete();
level.mariachimusicent = undefined;
}
zulu_breach_init()
{
wait 0.5;
var_0 = common_scripts\utility::getstructarray( "breach", "targetname" );
foreach ( var_2 in var_0 )
{
var_3 = getnodearray( var_2.target, "targetname" );
foreach ( var_5 in var_3 )
var_5 disconnectnode();
}
var_8 = common_scripts\utility::getstructarray( "breach_proxy", "targetname" );
foreach ( var_5 in var_8 )
{
if ( !isdefined( var_5.target ) )
continue;
var_2 = common_scripts\utility::getstruct( var_5.target, "targetname" );
if ( !isdefined( var_2 ) )
continue;
var_0[var_0.size] = var_2;
}
common_scripts\utility::array_thread( var_0, ::zulu_breach_update );
}
zulu_breach_update()
{
if ( !( level.gametype == "gun" ) && !( level.gametype == "sotf_ffa" ) && !( level.gametype == "horde" ) && !( level.gametype == "sotf" ) && !( level.gametype == "infect" ) )
{
self waittill( "breach_activated" );
var_0 = 0.5;
var_1 = 0.5;
var_2 = 200;
if ( isdefined( self.script_dot ) )
var_0 = self.script_dot;
if ( isdefined( self.script_wait ) )
var_1 = self.script_wait;
if ( isdefined( self.radius ) )
var_2 = self.radius;
earthquake( var_0, var_1, self.origin, var_2 );
}
var_3 = getnodearray( self.target, "targetname" );
foreach ( var_5 in var_3 )
var_5 connectnode();
}
nuke_custom_visionset()
{
level waittill( "nuke_death" );
wait 1.3;
level notify( "nuke_death" );
thread nuke_custom_visionset();
}
nukedeathvision()
{
level.nukevisionset = "aftermath_mp_zulu";
setexpfog( 512, 4097, 0.578828, 0.802656, 1, 0.75, 0.75, 5, 0.382813, 0.350569, 0.293091, 3, ( 1, -0.109979, 0.267867 ), 0, 80, 1, 0.179688, 26, 180 );
visionsetnaked( level.nukevisionset, 5 );
visionsetpain( level.nukevisionset );
}
get_float_speaker_scriptables()
{
wait 3;
level.speakercount = 0;
var_0 = getscriptablearray( "speakers", "targetname" );
common_scripts\utility::array_thread( var_0, ::wait_for_speaker_deaths );
}
wait_for_speaker_deaths()
{
self waittill( "death" );
level.speakercount++;
if ( level.speakercount >= 6 )
thread stop_float_audio();
}
stop_float_audio()
{
level.float_music_enabled = 0;
thread common_scripts\utility::play_sound_in_space( "zulu_speaker_power_down", ( 304, 707, 103 ) );
stop_ambient_music();
}