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

1798 lines
51 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
main()
{
maps\mp\mp_dig_precache::main();
maps\createart\mp_dig_art::main();
maps\mp\mp_dig_fx::main();
level.mapcustomcratefunc = ::digcustomcratefunc;
level.mapcustomkillstreakfunc = ::digcustomkillstreakfunc;
level.mapcustombotkillstreakfunc = ::digcustombotkillstreakfunc;
level.allow_level_killstreak = 1;
level.custom_death_sound = ::playcustomdeathsound;
level.nukedeathvisionfunc = ::nukedeathvision;
maps\mp\_load::main();
maps\mp\_compass::setupminimap( "compass_map_mp_dig" );
maps\mp\_utility::setdvar_cg_ng( "r_specularColorScale", 2.5, 5 );
setdvar( "r_lightGridEnableTweaks", 1 );
setdvar( "r_lightGridIntensity", 1.33 );
game["attackers"] = "allies";
game["defenders"] = "axis";
game["allies_outfit"] = "urban";
game["axis_outfit"] = "woodland";
var_0 = [];
var_1 = 1;
if ( level.gametype == "horde" || level.gametype == "infect" )
var_1 = 0;
if ( level.gametype == "gun" || level.gametype == "sotf" || level.gametype == "sotf_ffa" || maps\mp\_utility::isanymlgmatch() )
var_0[var_0.size] = "treasure_event";
setupevents( var_1, var_0 );
setupshrineperks();
thread maps\mp\_dlcalienegg::setupeggformap( "alienEasterEgg" );
thread nuke_custom_visionset();
}
precacheitems()
{
level.breakables_fx["scarabpot"]["break"] = loadfx( "vfx/moments/mp_dig/vfx_kstr_urnbreak_01" );
level.breakables_fx["scarabpot"]["break_top"] = loadfx( "vfx/moments/mp_dig/vfx_pot_smk_wispy_damage" );
level.breakables_fx["scarabpot"]["break_scarabs"] = loadfx( "vfx/moments/mp_dig/vfx_scarab_pot_explosion_r" );
level.breakables_fx["scarab"]["player"] = loadfx( "vfx/moments/mp_dig/vfx_scarab_on_player_r" );
level.breakables_fx["scarab"]["ground"] = loadfx( "vfx/moments/mp_dig/vfx_scarab_walk_up_r" );
level.breakables_fx["scarab"]["screen"] = loadfx( "vfx/moments/mp_dig/vfx_scarab_screen_r" );
level.breakables_fx["scarab"]["flyers"] = loadfx( "vfx/moments/mp_dig/vfx_scarab_groupwflyers" );
level.dig_fx["torch"]["fire"] = loadfx( "vfx/moments/mp_dig/vfx_torch_fire_03" );
level.dig_fx["torch"]["sand"] = loadfx( "vfx/moments/mp_dig/vfx_falling_sand_torch" );
level.dig_fx["shrine"]["player"] = loadfx( "vfx/moments/mp_dig/vfx_kstr_loadedguy" );
level.dig_fx["shrine"]["screen"] = loadfx( "vfx/moments/mp_dig/vfx_kstr_loadedguy_scr" );
level.dig_fx["scarab"]["deathAnim"] = loadfx( "vfx/moments/mp_dig/vfx_scarab_death_r" );
level.dig_fx["flametrap"]["player"] = loadfx( "vfx/moments/mp_dig/vfx_kstr_manflame" );
level.dig_fx["flametrap"]["screen"] = loadfx( "vfx/moments/mp_dig/vfx_kstr_fireroom_scr" );
level.dig_fx["flametrap"]["room"] = loadfx( "vfx/moments/mp_dig/vfx_kstr_flameroom_flame" );
}
setupevents( var_0, var_1 )
{
precacheitems();
if ( var_0 )
{
var_2 = 1;
var_3 = 1;
var_4 = 1;
var_5 = 1;
var_6 = 1;
if ( isdefined( var_1 ) && var_1.size > 0 )
{
foreach ( var_8 in var_1 )
{
switch ( var_8 )
{
case "obelisk_event":
var_2 = 0;
break;
case "scarabs_event":
var_3 = 0;
break;
case "treasure_event":
var_4 = 0;
break;
case "snakes_event":
var_5 = 0;
break;
case "shrine_event":
var_6 = 0;
break;
}
}
}
if ( var_2 )
level thread setupobelisk();
if ( var_3 )
{
level.digscarabpots = [];
level.digscarabpots = common_scripts\utility::getstructarray( "scarab_pot", "targetname" );
foreach ( var_11 in level.digscarabpots )
level thread setupscarabpot( var_11.origin );
}
if ( var_4 )
{
level thread setupradio();
setuptreasureroom();
}
if ( var_5 )
{
var_13 = ( -362, 1982, 733 );
level thread setupsnakes( var_13 );
}
if ( !var_6 )
{
level.allow_level_killstreak = 0;
return;
}
}
else
level thread setupobelisk( 1 );
}
getdomflagb()
{
var_0 = getentarray( "flag_primary", "targetname" );
var_1 = undefined;
foreach ( var_3 in var_0 )
{
if ( var_3.script_label == "_b" )
{
var_1 = var_3;
break;
}
}
return var_1;
}
updatebflagpos( var_0 )
{
level endon( "game_ended" );
var_1 = getdomflagb();
if ( !isdefined( level.dig_old_bflagpos ) )
level.dig_old_bflagpos = var_1.origin;
var_2 = common_scripts\utility::getstruct( "flag_b_after", "targetname" );
var_3 = vectortoangles( ( 0, 0, 1 ) );
var_4 = var_2.origin;
if ( isdefined( var_0 ) && var_0 )
{
var_4 = level.dig_old_bflagpos;
var_5 = var_4 + ( 0, 0, 32 );
var_6 = var_4 + ( 0, 0, -32 );
var_7 = bullettrace( var_5, var_6, 0, undefined );
var_3 = vectortoangles( var_7["normal"] );
}
var_1.origin = var_4;
var_1.useobj.curorigin = var_4;
var_1.useobj.visuals[0].origin = var_4;
var_1.useobj.baseeffectpos = var_4;
var_1.useobj.baseeffectforward = anglestoforward( var_3 );
if ( isdefined( var_1.useobj.neutralflagfx ) )
var_1.useobj maps\mp\gametypes\dom::playflagneutralfx();
foreach ( var_9 in level.players )
{
if ( isdefined( var_9._domflageffect ) && isdefined( var_9._domflageffect["_b"] ) )
var_1.useobj maps\mp\gametypes\dom::showcapturedbaseeffecttoplayer( var_1.useobj.ownerteam, var_9 );
}
}
updatebflagobjicon()
{
var_0 = getdomflagb();
var_1 = common_scripts\utility::spawn_tag_origin();
var_1 show();
var_1.origin = var_0.origin + ( 0, 0, 100 );
var_1 linkto( var_0 );
var_0.useobj.objiconent = var_1;
var_0.useobj maps\mp\gametypes\_gameobjects::updateworldicons();
}
setupobelisk( var_0 )
{
level endon( "game_ended" );
level.obeliskbefore = getent( "obelisk_before", "targetname" );
level.obeliskanimated = getent( "obelisk_anim", "targetname" );
level.obeliskanimated2 = getent( "obelisk_anim_2", "targetname" );
level.obeliskafter = getent( "obelisk_after", "targetname" );
level.obeliskfloor = getent( "obelisk_floor", "targetname" );
level.obeliskbeforeclip = getent( "obelisk_before_clip", "targetname" );
level.obeliskafterclip = getent( "obelisk_after_clip", "targetname" );
level.obeliskpathblocker = getent( "obelisk_path_blocker", "targetname" );
level.obeliskpathholder = getent( "obelisk_path_holder", "targetname" );
level.obeliskdamage = getent( "obelisk_damage_trigger", "targetname" );
level.obeliskkilltrigger_ground = getent( "obelisk_kill_trigger", "targetname" );
level.obeliskkilltrigger_air = getent( "obelisk_kill_trigger_2", "targetname" );
if ( isdefined( level.obeliskanimated ) )
hideent( level.obeliskanimated );
if ( isdefined( level.obeliskanimated2 ) )
hideent( level.obeliskanimated2 );
if ( isdefined( level.obeliskfloor ) )
hideent( level.obeliskfloor );
if ( isdefined( level.obeliskafter ) )
hideent( level.obeliskafter );
if ( isdefined( level.obeliskafterclip ) )
{
if ( !isdefined( level.obeliskafterclip.killcament ) )
{
level.obeliskafterclip.killcament = spawn( "script_model", level.obeliskafterclip.origin + ( 400, -800, 400 ) );
level.obeliskafterclip.killcament setmodel( "tag_origin" );
}
hideent( level.obeliskafterclip );
}
if ( isdefined( level.obeliskpathholder ) )
hideent( level.obeliskpathholder );
if ( isdefined( level.obeliskpathblocker ) )
{
showent( level.obeliskpathblocker );
level.obeliskpathblocker disconnectpaths();
level thread delayhide( level.obeliskpathblocker, 0.05 );
}
if ( isdefined( level.obeliskkilltrigger_ground ) )
{
level.obeliskkilltrigger_ground.dmg = 0;
level.obeliskkilltrigger_ground thread killall( "obelisk_impact", 5000, "MOD_CRUSH" );
level.obeliskkilltrigger_ground common_scripts\utility::trigger_off();
}
if ( isdefined( level.obeliskkilltrigger_air ) )
{
level.obeliskkilltrigger_air.dmg = 0;
level.obeliskkilltrigger_air common_scripts\utility::trigger_off();
}
if ( isdefined( level.obeliskbefore ) )
showent( level.obeliskbefore );
if ( isdefined( level.obeliskbeforeclip ) )
showent( level.obeliskbeforeclip );
level.obeliskfallen = 0;
if ( !isdefined( var_0 ) || !var_0 )
{
level childthread watchobeliskactivation();
if ( isdefined( level.obeliskdamage ) )
{
level.obeliskdamage waittill( "trigger", var_1 );
level.obeliskowner = var_1;
level notify( "obelisk_activated" );
}
}
}
watchobeliskactivation()
{
level waittill( "obelisk_activated" );
hideent( level.obeliskbefore );
hideent( level.obeliskbeforeclip );
level thread delayexploder( 0.24, 10 );
level thread delayexploder( 0.9, 11 );
level thread delayexploder( 1.5, 12 );
level thread delayexploder( 1.7, 13 );
level thread delayexploder( 1.8, 14 );
level thread delayexploder( 2.1, 15 );
level thread delayexploder( 2.25, 16 );
level thread delayexploder( 2.9, 20 );
level thread delayexploder( 2.95, 21 );
level thread delayexploder( 3, 22 );
showent( level.obeliskanimated );
showent( level.obeliskanimated2 );
level.obeliskanimated scriptmodelplayanimdeltamotion( "mp_dig_obelisk_dest_anim_01" );
level.obeliskanimated2 scriptmodelplayanimdeltamotion( "mp_dig_obelisk_dest_anim_02" );
level.obeliskkilltrigger_air thread delaytrigger( 1, "on" );
level.obeliskkilltrigger_air thread delaytrigger( 2, "off" );
level thread obeliskimpact();
level thread obelisksounds();
wait 7;
hideent( level.obeliskanimated );
hideent( level.obeliskanimated2 );
showent( level.obeliskafter );
level.obeliskfallen = 1;
}
resetobelisk()
{
for (;;)
{
level waittill( "obelisk_reset" );
if ( level.obeliskfallen )
{
level.obeliskafterclip connectpaths();
if ( level.gametype == "dom" || level.gametype == "siege" )
{
updatebflagpos( 1 );
updatebflagobjicon();
}
level thread setupobelisk();
}
}
}
obelisksounds()
{
level endon( "game_ended" );
var_0 = ( 0, 0, -300 );
var_1 = ( 0, 0, 0 );
var_2 = ( 0, 0, 400 );
level.obelisksoundbaseobj = spawn( "script_model", level.obeliskanimated.origin + var_0 );
level.obelisksoundmidobj = spawn( "script_model", level.obeliskanimated.origin + var_1 );
level.obelisksoundtopobj = spawn( "script_model", level.obeliskanimated.origin + var_2 );
level.obelisksoundbaseobj setmodel( "tag_origin" );
level.obelisksoundmidobj setmodel( "tag_origin" );
level.obelisksoundtopobj setmodel( "tag_origin" );
level.obelisksoundmidobj linkto( level.obeliskanimated, "tag_mp_dig_obelisk_dyn_08" );
level.obelisksoundtopobj linkto( level.obeliskanimated, "tag_mp_dig_obelisk_dyn_04" );
common_scripts\utility::waitframe();
level.obelisksoundbaseobj playsound( "mp_dig_obelisk_fall_base" );
level.obelisksoundmidobj playsoundonmovingent( "mp_dig_obelisk_fall_mid" );
level.obelisksoundtopobj playsoundonmovingent( "mp_dig_obelisk_fall_top" );
}
obeliskimpact()
{
level endon( "game_ended" );
var_0 = ( -1140, -108, 712 );
wait 3.1;
earthquake( 0.4, 3, var_0, 2000 );
showent( level.obeliskafterclip );
level.obeliskafterclip disconnectpaths();
showent( level.obeliskpathblocker );
level.obeliskpathblocker connectpaths();
level thread delayhide( level.obeliskpathblocker, 0.05 );
if ( level.gametype == "dom" || level.gametype == "siege" )
{
updatebflagpos();
updatebflagobjicon();
}
level notify( "obelisk_impact" );
}
setupscarabpot( var_0 )
{
level endon( "game_ended" );
var_1 = spawn( "script_model", var_0 );
var_1 setmodel( "dig_pottery_06" );
var_1.origin = var_0;
var_1.health = 300;
var_1.damagetaken = 0;
var_1.idlesound = "mp_dig_scarab_pot_rattle";
var_1.lidsound = "mp_dig_scarab_pot_hit_lid";
var_1.smokesound = "mp_dig_scarab_pot_smoke_lp";
var_1.breaksound = "mp_dig_scarab_pot_explode";
var_1.hasscarabs = 1;
var_1.broken = 0;
var_1 setcandamage( 1 );
var_1 solid( 1 );
var_1 thread playpotrattle();
var_2 = spawn( "script_model", var_0 + ( 0, 0, 33 ) );
var_2 setmodel( "dig_pottery_06_lid" );
for (;;)
{
var_1 waittill( "damage", var_3, var_4, var_5, var_6, var_7 );
var_1.damagetype = var_7;
var_1.damageowner = var_4;
var_1.damagetaken = var_1.damagetaken + var_3;
if ( var_1.damagetaken == var_3 )
var_1 thread startpotbreaking( var_2 );
}
}
resetscarabpot( var_0, var_1 )
{
for (;;)
{
level waittill( "scarab_pot_reset" );
if ( !isdefined( var_0 ) )
setupscarabpot( var_1 );
}
}
playpotrattle()
{
self endon( "pot_lid_broken" );
level endon( "game_ended" );
for (;;)
{
if ( isdefined( self ) )
self playsound( self.idlesound );
maps\mp\gametypes\_hostmigration::waitlongdurationwithhostmigrationpause( randomintrange( 8, 15 ) );
}
}
startpotbreaking( var_0 )
{
var_1 = 0;
var_2 = 0;
var_3 = anglestoup( self.angles );
var_4 = anglestoup( ( 0, 90, 0 ) );
var_5 = vectordot( var_3, var_4 );
var_6 = ( 0, 0, 0 );
var_7 = ( 0, 0, 32 );
if ( var_5 < 0.5 )
{
var_6 = var_3 * 22 - ( 0, 0, 30 );
var_7 = var_3 * 22 + ( 0, 0, 14 );
}
if ( self.damagetype != "MOD_GRENADE_SPLASH" && self.damagetype != "MOD_GRENADE" )
{
while ( self.damagetaken < self.health )
{
if ( !var_2 )
{
var_0 hide();
self playsound( self.lidsound );
self notify( "pot_lid_broken" );
thread playpotfx( var_7 );
self playloopsound( self.smokesound );
var_2 = 1;
}
if ( var_1 > 20 )
var_1 = 0;
if ( var_1 == 0 )
self.damagetaken = self.damagetaken + ( 10 + randomfloat( 10 ) );
var_1++;
wait 0.05;
}
}
breakpot( var_0 );
}
playpotfx( var_0 )
{
level endon( "game_ended" );
while ( isdefined( self ) && !self.broken )
{
playfx( level.breakables_fx["scarabpot"]["break_top"], self.origin + var_0 );
wait 0.1;
}
}
breakpot( var_0 )
{
var_0 hide();
self playsound( self.lidsound );
self notify( "pot_lid_broken" );
self stoploopsound( self.smokesound );
self.broken = 1;
self solid( 0 );
self setcandamage( 0 );
var_1 = anglestoup( self.angles );
var_2 = anglestoup( ( 0, 90, 0 ) );
var_3 = vectordot( var_1, var_2 );
var_4 = ( 0, 0, 0 );
if ( var_3 < 0.5 )
{
var_5 = self.origin + var_1 * 22;
var_6 = physicstrace( var_5, var_5 + ( 0, 0, -64 ) );
var_4 = var_6 - self.origin;
}
var_4 = var_4 + ( 0, 0, 4 );
self playsound( self.breaksound );
playfx( level.breakables_fx["scarabpot"]["break"], self.origin + var_4 + ( 0, 0, 20 ) );
playfx( level.breakables_fx["scarabpot"]["break_scarabs"], self.origin + var_4 + ( 0, 0, 30 ) );
self hide();
if ( self.hasscarabs )
setupdeathzone();
}
setupdeathzone()
{
var_0 = 65;
var_1 = 10;
var_2 = spawn( "trigger_radius", self.origin, 0, var_0, var_1 );
var_2 thread setupscarab( self.damageowner );
self delete();
}
setupscarab( var_0 )
{
level endon( "game_ended" );
var_1 = 15;
var_2 = spawn( "script_model", self.origin );
var_2 setmodel( "tag_origin" );
var_2.sound = "mp_dig_scarab_swarm";
var_2.owner = var_0;
var_2.killcament = spawn( "script_model", var_2.origin + ( 0, 0, 100 ) );
var_2.killcament setmodel( "tag_origin" );
if ( !isdefined( level.traps ) )
level.traps = [];
level.traps[level.traps.size] = var_2;
var_2 thread watchlifetime( "scarabs_death", "scarabs_attacked_player", var_1 );
var_2 thread cleanupscarab( self );
var_2 thread playscarabfx();
var_2 playsound( var_2.sound );
wait 2;
var_2 thread watchscarabtrigger( self );
}
cleanupscarab( var_0 )
{
common_scripts\utility::waittill_any( "scarabs_killed_player", "scarabs_death" );
level.traps = common_scripts\utility::array_remove( level.traps, self );
self delete();
var_0 delete();
}
playscarabfx()
{
level endon( "game_ended" );
common_scripts\utility::waitframe();
playfxontag( level.breakables_fx["scarab"]["ground"], self, "tag_origin" );
playfxontag( level.breakables_fx["scarab"]["flyers"], self, "tag_origin" );
}
delaystopsound( var_0 )
{
level endon( "game_ended" );
wait( var_0 );
self stopsounds();
}
watchscarabtrigger( var_0 )
{
self endon( "scarabs_death" );
for (;;)
{
var_0 waittill( "trigger", var_1 );
if ( level.teambased )
{
if ( isdefined( var_1 ) && isplayer( var_1 ) && ( var_1.team != self.owner.team || var_1 == self.owner ) )
{
thread delaystopsound( 0.5 );
thread killnearbyvictim( var_1 );
self notify( "scarabs_attacked_player" );
break;
}
}
else if ( isdefined( var_1 ) && isplayer( var_1 ) )
{
thread delaystopsound( 0.5 );
thread killnearbyvictim( var_1 );
self notify( "scarabs_attacked_player" );
break;
}
}
}
killnearbyvictim( var_0 )
{
self endon( "scarabs_killed_player" );
self endon( "scarabs_death" );
thread watchscarabkill( var_0 );
if ( isdefined( var_0 ) && isalive( var_0 ) )
{
stopfxontag( level.breakables_fx["scarab"]["flyers"], self, "tag_origin" );
self moveto( var_0.origin, 0.8 );
}
}
watchscarabkill( var_0, var_1 )
{
var_0 endon( "death" );
self endon( "scarabs_killed_player" );
self endon( "scarabs_death" );
if ( !isdefined( var_1 ) || var_1 == 0 )
{
while ( distancesquared( var_0.origin, self.origin ) > 4000 )
wait 0.05;
stopfxontag( level.breakables_fx["scarab"]["ground"], self, "tag_origin" );
}
var_2 = undefined;
if ( !var_0 maps\mp\_utility::isusingremote() )
{
var_2 = spawnfxforclient( level.breakables_fx["scarab"]["screen"], var_0 geteye(), var_0 );
triggerfx( var_2 );
var_2 setfxkilldefondelete();
var_0 playlocalsound( "mp_dig_scarab_plr_overtaken" );
}
var_0 playsoundonmovingent( "mp_dig_scarab_npc_overtaken" );
var_0 thread killfxonplayerdeath( var_2 );
var_0 thread doperiodicdamage( var_2, 20, 0.5, "MOD_SCARAB", self, "scarabs_killed_player", self.owner, self );
}
playcustomdeathsound( var_0, var_1, var_2 )
{
if ( var_1 == "MOD_SCARAB" )
return;
var_0 maps\mp\_utility::playdeathsound();
return;
}
#using_animtree("multiplayer");
playdeathanimscarabs()
{
level endon( "game_ended" );
self waittill( "death_delay_start" );
var_0 = self.body getcorpseanim();
var_1 = spawn( "script_model", self.body.origin );
var_1 setmodel( "scarab_fullbody_bone_fx" );
var_1.origin = self.body.origin;
var_1.angles = self.body.angles;
var_1 linkto( self.body, "tag_origin", ( 0, 50, 0 ), var_1.angles );
if ( var_0 == %mp_scarab_death_stand_1 )
var_1 scriptmodelplayanim( "scarab_fullbody_bone_fx_stand_anim" );
else if ( var_0 == %mp_scarab_death_crouch_1 )
var_1 scriptmodelplayanim( "scarab_fullbody_bone_fx_crouch_anim" );
else
var_1 scriptmodelplayanim( "scarab_fullbody_bone_fx_prone_anim" );
for ( var_2 = 0; var_2 < 32; var_2++ )
{
if ( var_2 < 2 )
continue;
else if ( var_2 < 10 )
playfxontag( level.dig_fx["scarab"]["deathAnim"], var_1, "Point00" + var_2 );
else
playfxontag( level.dig_fx["scarab"]["deathAnim"], var_1, "Point0" + var_2 );
common_scripts\utility::waitframe();
}
thread stopfxonplayerspawn( var_1 );
}
stopfxonplayerspawn( var_0 )
{
level endon( "game_ended" );
maps\mp\gametypes\_hostmigration::waitlongdurationwithhostmigrationpause( 10 );
for ( var_1 = 0; var_1 < 32; var_1++ )
{
if ( var_1 < 2 )
continue;
else if ( var_1 < 10 )
stopfxontag( level.dig_fx["scarab"]["deathAnim"], var_0, "Point00" + var_1 );
else
stopfxontag( level.dig_fx["scarab"]["deathAnim"], var_0, "Point0" + var_1 );
common_scripts\utility::waitframe();
}
var_0 delete();
}
setupradio()
{
level endon( "game_ended" );
level.treasure_room_jackpot = 0;
level.radioarray = getentarray( "secret_room_radio", "targetname" );
var_0 = randomintrange( 2, 5 );
var_1 = randomintrange( 30, 60 );
level thread jackpotwatcher( var_0, var_1 );
}
jackpotwatcher( var_0, var_1 )
{
level endon( "game_ended" );
for (;;)
{
if ( maps\mp\_utility::getminutespassed() > var_0 && ( isdefined( level.treasure_room_jackpot ) && !level.treasure_room_jackpot ) )
{
foreach ( var_3 in level.radioarray )
{
if ( isdefined( var_3 ) )
var_3 playsound( "mp_dig_uk_tomb_special" );
}
level thread jackpottimeout( 30 );
level.treasure_room_jackpot = 1;
}
else
{
foreach ( var_3 in level.radioarray )
{
if ( isdefined( var_3 ) )
var_3 playsound( "mp_dig_uk_tomb1" );
}
}
maps\mp\gametypes\_hostmigration::waitlongdurationwithhostmigrationpause( var_1 );
}
}
jackpottimeout( var_0 )
{
level endon( "game_ended" );
level endon( "chest_raided" );
maps\mp\gametypes\_hostmigration::waitlongdurationwithhostmigrationpause( var_0 );
level.treasure_room_jackpot = undefined;
}
setuptreasureroom()
{
level.treasure_room_open = 0;
level.treasuredoor = getent( "secret_room_door_model", "targetname" );
level.treasuredoorclip = getent( "secret_room_door", "targetname" );
if ( isdefined( level.treasuredoor ) && isdefined( level.treasuredoorclip ) )
level.treasuredoorclip linkto( level.treasuredoor );
level.flamedeathzone = getent( "secret_room_kill", "targetname" );
if ( isdefined( level.flamedeathzone ) )
{
level.flamedeathzone.dmg = 0;
level.flamedeathzone thread killall( "flame_ended", 5000, "MOD_CRUSH" );
level.flamedeathzone common_scripts\utility::trigger_off();
}
level thread watchtorchesused();
level.key_torches = getentarray( "torch_trigs", "targetname" );
foreach ( var_1 in level.key_torches )
{
var_1 sethintstring( &"MP_DIG_ACTIVATE_TORCH" );
var_1 thread watchtorchuse();
var_1.used = 0;
}
}
watchtorchuse()
{
level endon( "game_ended" );
self waittill( "trigger", var_0 );
activatetorch( var_0 );
}
activatetorch( var_0 )
{
self makeunusable();
var_1 = getent( self.target, "targetname" );
var_1 rotatepitch( -45, 4 );
var_1 playsound( "mp_dig_torch_rotate" );
var_2 = spawnfx( level.dig_fx["torch"]["sand"], var_1.origin );
triggerfx( var_2 );
self.used = 1;
level notify( "torch_used", var_0 );
}
watchtorchesused()
{
level endon( "game_ended" );
var_0 = 0;
for (;;)
{
level waittill( "torch_used", var_1 );
var_0 = var_0 + 1;
if ( var_0 == 3 )
{
level.dig_hidden_door_owner = var_1;
level thread opentreasureroom();
var_0 = 0;
}
}
}
opentreasureroom()
{
level endon( "game_ended" );
var_0 = ( -5, -105, 0 );
if ( !isdefined( level.doorsoundobj ) )
{
level.doorsoundobj = spawn( "script_model", level.treasuredoor.origin + var_0 );
level.doorsoundobj setmodel( "tag_origin" );
level.doorsoundobj linkto( level.treasuredoor );
}
level thread doorsounds();
level.treasuredoor rotateyaw( 75, 15 );
earthquake( 0.1, 15, level.treasuredoor.origin, 500 );
common_scripts\utility::exploder( 59 );
wait 15;
level.treasuredoorclip connectpaths();
level.treasure_room_open = 1;
spawnkillstreakchest();
}
doorsounds()
{
level endon( "game_ended" );
common_scripts\utility::waitframe();
level.doorsoundobj playsoundonmovingent( "mp_dig_treasure_door_open" );
}
spawnkillstreakchest()
{
level.chest_rewardtype = common_scripts\utility::random( [ "uplink_support", "deployable_vest", "deployable_ammo", "ball_drone_radar", "aa_launcher", "jammer", "ims" ] );
if ( isdefined( level.treasure_room_jackpot ) && level.treasure_room_jackpot )
level.chest_rewardtype = "odin_assault";
level.chest_rewardhint = game["strings"][level.chest_rewardtype + "_hint"];
if ( !isdefined( level.chest_trigger ) )
level.chest_trigger = getent( "secret_room_chest", "targetname" );
if ( isdefined( level.chest_trigger ) )
{
if ( !isdefined( level.chest_useobj ) )
{
level.chest_useobj = maps\mp\gametypes\_gameobjects::createuseobject( "neutral", level.chest_trigger, [ level.chest_trigger ], ( 0, 0, 0 ) );
level.chest_useobj.id = "care_package";
}
else
level.chest_useobj maps\mp\gametypes\_gameobjects::enableobject();
level.chest_useobj maps\mp\gametypes\_gameobjects::setusetime( 4 );
level.chest_useobj maps\mp\gametypes\_gameobjects::setusehinttext( level.chest_rewardhint );
level.chest_useobj maps\mp\gametypes\_gameobjects::setvisibleteam( "any" );
level.chest_useobj maps\mp\gametypes\_gameobjects::allowuse( "any" );
level.chest_useobj.onuse = ::chestonuse;
level.chest_useobj.onbeginuse = ::chestonbeginuse;
level.chest_useobj.onenduse = ::chestonenduse;
if ( !isdefined( level.chest_display ) )
level.chest_display = common_scripts\utility::getstruct( level.chest_trigger.target, "targetname" );
level.chest_display maps\mp\_entityheadicons::setheadicon( level.dig_hidden_door_owner, maps\mp\_utility::getkillstreakoverheadicon( level.chest_rewardtype ), ( 0, 0, 0 ), 14, 14, 0, undefined, undefined, undefined, undefined, 0 );
}
}
chestonuse( var_0 )
{
var_0 chestupdate();
maps\mp\gametypes\_gameobjects::disableobject();
}
chestonbeginuse( var_0 )
{
}
chestonenduse( var_0, var_1, var_2 )
{
if ( isplayer( var_1 ) )
var_1 maps\mp\gametypes\_gameobjects::updateuiprogress( self, 0 );
}
chestupdate()
{
level.chest_display maps\mp\_entityheadicons::setheadicon( level.dig_hidden_door_owner, "", ( 0, 0, 10 ), 14, 14, 0, undefined, undefined, undefined, undefined, 0 );
common_scripts\utility::exploder( 56 );
level.chest_trigger playsound( "mp_dig_treasure_smoke" );
var_0 = ( 120, 70, -50 );
var_1 = spawn( "script_origin", level.chest_trigger.origin + var_0 );
var_1 hide();
earthquake( 0.2, 16, var_1.origin, 400 );
var_1 playsound( "mp_dig_door_rumble" );
thread maps\mp\killstreaks\_killstreaks::givekillstreak( level.chest_rewardtype, 0, 0, self );
if ( isdefined( level.treasure_room_jackpot ) && level.treasure_room_jackpot )
{
level.treasure_room_jackpot = undefined;
level notify( "chest_raided" );
}
level thread notifydeadplayers();
level thread closetreasureroom();
}
resettreasureroom()
{
level endon( "game_ended" );
level waittill( "treasure_room_reset" );
if ( level.treasure_room_open )
level thread closetreasureroom();
level.chest_display maps\mp\_entityheadicons::setheadicon( level.dig_hidden_door_owner, "", ( 0, 0, 10 ), 14, 14, 0, undefined, undefined, undefined, undefined, 0 );
if ( isdefined( level.chest_useobj ) )
level.chest_useobj maps\mp\gametypes\_gameobjects::disableobject();
foreach ( var_1 in level.key_torches )
{
if ( var_1.used )
{
var_2 = getent( var_1.target, "targetname" );
var_2 rotatepitch( 45, 0.1 );
var_1 makeusable();
var_1 sethintstring( &"MP_DIG_ACTIVATE_TORCH" );
var_1 thread watchtorchuse();
var_1.used = 0;
}
}
level.treasure_room_jackpot = 0;
}
notifydeadplayers()
{
level endon( "game_ended" );
maps\mp\gametypes\_hostmigration::waitlongdurationwithhostmigrationpause( 11 );
level.flamedeathzone common_scripts\utility::trigger_on();
foreach ( var_1 in level.players )
{
if ( var_1 istouching( level.flamedeathzone ) )
var_1 playlocalsound( "mp_dig_tomb_die1" );
}
}
closetreasureroom()
{
level endon( "game_ended" );
if ( isdefined( level.doorsoundobj ) )
level.doorsoundobj playsoundonmovingent( "mp_dig_treasure_door_close" );
level.treasuredoor rotateyaw( -75, 15 );
earthquake( 0.1, 15, level.treasuredoor.origin, 500 );
maps\mp\gametypes\_hostmigration::waitlongdurationwithhostmigrationpause( 15 );
level.treasuredoorclip disconnectpaths();
level.treasure_room_open = 0;
level thread triggerflametrap();
}
triggerflametrap()
{
common_scripts\utility::exploder( 57 );
var_0 = common_scripts\utility::getstructarray( "secret_room_fire_mid", "targetname" );
foreach ( var_4, var_2 in var_0 )
{
var_3 = spawn( "script_origin", var_2.origin );
var_3 hide();
var_3 playsound( "mp_dig_fire_wall" + ( var_4 + 1 ) );
}
foreach ( var_6 in level.participants )
{
if ( isplayer( var_6 ) && maps\mp\_utility::isreallyalive( var_6 ) && var_6 istouching( level.flamedeathzone ) )
{
playfxontag( level.dig_fx["flametrap"]["player"], var_6, "j_spineupper" );
var_7 = spawnfxforclient( level.dig_fx["flametrap"]["screen"], var_6 geteye(), var_6 );
triggerfx( var_7 );
var_7 setfxkilldefondelete();
var_6 thread killfxonplayerdeath( var_7 );
var_6 thread stopfxonspawn( level.dig_fx["flametrap"]["player"], "j_spineupper" );
var_6 thread doperiodicdamage( var_7, 20, 0.5, "MOD_SCARAB" );
}
}
level thread delaynotify( "flame_ended", 4 );
}
setupsnakes( var_0 )
{
level endon( "game_ended" );
if ( !isdefined( level.dig_snake ) )
{
level.dig_snake = spawn( "script_model", var_0 );
level.dig_snake setmodel( "snake_many_mp_dig_secretroom" );
level.dig_snake.origin = var_0;
}
for (;;)
{
level.dig_snake scriptmodelplayanim( "snake_many_mp_dig_secretroom_anim" );
maps\mp\gametypes\_hostmigration::waitlongdurationwithhostmigrationpause( 66.7 );
}
}
setupshrineperks()
{
level.shrineperks = [];
level.abilitycategories = maps\mp\gametypes\_class::getnumabilitycategories();
level.abilitypercategory = maps\mp\gametypes\_class::getnumsubability();
for ( var_0 = 0; var_0 < level.abilitycategories; var_0++ )
{
for ( var_1 = 0; var_1 < level.abilitypercategory; var_1++ )
{
var_2 = tablelookup( "mp/cacAbilityTable.csv", 0, var_0 + 1, 4 + var_1 );
if ( validshrineperk( var_2 ) )
level.shrineperks[level.shrineperks.size] = var_2;
}
}
}
validshrineperk( var_0 )
{
var_1 = 1;
switch ( var_0 )
{
case "specialty_twoprimaries":
case "specialty_hardline":
case "specialty_gambler":
case "specialty_extra_attachment":
case "specialty_extraammo":
case "specialty_extra_deadly":
case "specialty_extra_equipment":
var_1 = 0;
break;
}
return var_1;
}
digcustomcratefunc()
{
if ( !isdefined( game["player_holding_level_killstrek"] ) )
game["player_holding_level_killstrek"] = 0;
if ( !maps\mp\_utility::allowlevelkillstreaks() || game["player_holding_level_killstrek"] || !level.allow_level_killstreak )
return;
maps\mp\killstreaks\_airdrop::addcratetype( "airdrop_assault", "dig_level_killstreak", 85, ::digcratethink, maps\mp\killstreaks\_airdrop::get_friendly_crate_model(), maps\mp\killstreaks\_airdrop::get_enemy_crate_model(), &"MP_DIG_ACTIVATE_SHRINE" );
maps\mp\killstreaks\_airdrop::generatemaxweightedcratevalue();
level thread watch_for_dig_killstreak();
}
digcratethink( var_0 )
{
self endon( "death" );
self endon( "restarting_physics" );
level endon( "game_ended" );
if ( isdefined( game["strings"][self.cratetype + "_hint"] ) )
var_1 = game["strings"][self.cratetype + "_hint"];
else
var_1 = &"PLATFORM_GET_KILLSTREAK";
maps\mp\killstreaks\_airdrop::cratesetupforuse( var_1, maps\mp\_utility::getkillstreakoverheadicon( self.cratetype ) );
thread crateothercapturethink();
thread crateownercapturethink();
for (;;)
{
self waittill( "captured", var_2 );
level.dig_killstreak_user = var_2;
if ( isplayer( var_2 ) )
{
var_2 setclientomnvar( "ui_securing", 0 );
var_2.ui_securing = undefined;
}
tryusedigkillstreak();
maps\mp\killstreaks\_airdrop::deletecrate();
}
}
crateothercapturethink( var_0 )
{
self endon( "restarting_physics" );
while ( isdefined( self ) )
{
self waittill( "trigger", var_1 );
if ( isdefined( self.owner ) && var_1 == self.owner )
continue;
if ( !maps\mp\killstreaks\_airdrop::validateopenconditions( var_1 ) )
continue;
if ( var_1 maps\mp\_utility::isjuggernaut() )
{
var_1 iprintlnbold( &"MP_DIG_LEVEL_KILLSTREAK_REJECT" );
continue;
}
if ( isdefined( level.overridecrateusetime ) )
var_2 = level.overridecrateusetime;
else
var_2 = undefined;
var_1.iscapturingcrate = 1;
var_3 = maps\mp\killstreaks\_airdrop::createuseent();
var_4 = var_3 maps\mp\killstreaks\_airdrop::useholdthink( var_1, var_2, var_0 );
if ( isdefined( var_3 ) )
var_3 delete();
if ( !isdefined( var_1 ) )
return;
if ( !var_4 )
{
var_1.iscapturingcrate = 0;
continue;
}
var_1.iscapturingcrate = 0;
self notify( "captured", var_1 );
}
}
crateownercapturethink( var_0 )
{
self endon( "restarting_physics" );
while ( isdefined( self ) )
{
self waittill( "trigger", var_1 );
if ( isdefined( self.owner ) && var_1 != self.owner )
continue;
if ( !maps\mp\killstreaks\_airdrop::validateopenconditions( var_1 ) )
continue;
if ( var_1 maps\mp\_utility::isjuggernaut() )
{
var_1 iprintlnbold( &"MP_DIG_LEVEL_KILLSTREAK_REJECT" );
continue;
}
var_1.iscapturingcrate = 1;
if ( !maps\mp\killstreaks\_airdrop::useholdthink( var_1, 500, var_0 ) )
{
var_1.iscapturingcrate = 0;
continue;
}
var_1.iscapturingcrate = 0;
self notify( "captured", var_1 );
}
}
watch_for_dig_killstreak()
{
for (;;)
{
level waittill( "createAirDropCrate", var_0 );
if ( isdefined( var_0 ) && isdefined( var_0.cratetype ) && var_0.cratetype == "dig_level_killstreak" )
{
disable_level_killstreak();
var_1 = wait_for_capture( var_0 );
if ( !var_1 )
{
enable_level_killstreak();
continue;
}
break;
}
}
}
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;
}
enable_level_killstreak()
{
maps\mp\killstreaks\_airdrop::changecrateweight( "airdrop_assault", "dig_level_killstreak", 85 );
level.intelrewardoverride = "dig_level_killstreak";
}
disable_level_killstreak()
{
maps\mp\killstreaks\_airdrop::changecrateweight( "airdrop_assault", "dig_level_killstreak", 0 );
level.intelrewardoverride = undefined;
}
digcustomkillstreakfunc()
{
level.killstreakfuncs["dig_level_killstreak"] = ::tryusedigkillstreak;
}
digcustombotkillstreakfunc()
{
maps\mp\bots\_bots_ks::bot_register_killstreak_func( "dig_level_killstreak", maps\mp\bots\_bots_ks::bot_killstreak_simple_use );
}
tryusedigkillstreak( var_0, var_1 )
{
level.dig_killstreak_user giveperkbonus();
level.dig_killstreak_user thread watchperkblessing();
level.dig_killstreak_user thread watchjugguse();
level.dig_killstreak_user thread watchremoteuse( "using_remote" );
level.dig_killstreak_user thread watchremoteuse( "stopped_using_remote" );
if ( level.gametype == "blitz" )
level.dig_killstreak_user thread watchblitzteleport();
level thread watchplayersconnect( level.dig_killstreak_user );
level thread watchblessingend( level.dig_killstreak_user );
level thread maps\mp\_utility::teamplayercardsplash( "used_dig_level_killstreak", level.dig_killstreak_user );
}
giveperkbonus()
{
if ( !isdefined( level.player_life_counter ) )
level.player_life_counter = 0;
foreach ( var_1 in level.shrineperks )
{
if ( !maps\mp\_utility::_hasperk( var_1 ) )
maps\mp\_utility::giveperk( var_1, 0 );
}
thread maps\mp\gametypes\_hud_message::splashnotify( "mp_dig_all_perks" );
level thread showblessingfx( self );
thread stopfxonspawn( level.dig_fx["shrine"]["player"], "tag_origin" );
if ( !isdefined( self.shrine_effect_ent ) )
{
self.shrine_effect_ent = spawnfxforclient( level.dig_fx["shrine"]["screen"], self geteye(), self );
triggerfx( self.shrine_effect_ent );
self.shrine_effect_ent setfxkilldefondelete();
thread killfxonplayerdeath( self.shrine_effect_ent, "reset_perk_bonus", "user_juggernaut", "user_remotekillstreak" );
}
self playlocalsound( "mp_dig_plr_spawn_with_powers" );
self playloopsound( "mp_dig_magic_powers_flame_lp" );
level notify( "update_bombsquad" );
level.player_life_counter = level.player_life_counter + 1;
}
resetperkbonus()
{
level.player_life_counter = 0;
self setclientomnvar( "ui_dig_killstreak_show", -1 );
stopfxontag( level.dig_fx["shrine"]["player"], self, "tag_origin" );
if ( isdefined( self.shrine_effect_ent ) )
self.shrine_effect_ent delete();
level notify( "reset_perk_bonus" );
}
watchperkblessing()
{
self endon( "disconnect" );
self endon( "blessing_ended" );
self endon( "joined_team" );
level endon( "game_ended" );
for (;;)
{
self waittill( "spawned_player" );
self setclientomnvar( "ui_dig_killstreak_show", -1 );
common_scripts\utility::waitframe();
if ( level.player_life_counter < 4 && !maps\mp\_utility::isjuggernaut() )
{
giveperkbonus();
if ( !hasperkinloadout( "specialty_blindeye" ) || !hasperkinloadout( "specialty_gpsjammer" ) )
childthread regivespawnperks();
continue;
}
if ( level.player_life_counter == 4 )
self notify( "blessing_ended" );
}
}
hasperkinloadout( var_0 )
{
var_1 = 0;
if ( isdefined( self.pers["loadoutPerks"] ) && self.pers["loadoutPerks"].size > 0 )
{
foreach ( var_3 in self.pers["loadoutPerks"] )
{
if ( var_0 == var_3 )
{
var_1 = 1;
break;
}
}
}
return var_1;
}
regivespawnperks()
{
self waittill( "starting_perks_unset" );
if ( !maps\mp\_utility::_hasperk( "specialty_blindeye" ) )
maps\mp\_utility::giveperk( "specialty_blindeye", 0 );
if ( !maps\mp\_utility::_hasperk( "specialty_gpsjammer" ) )
maps\mp\_utility::giveperk( "specialty_gpsjammer", 0 );
}
watchjugguse()
{
self endon( "disconnect" );
self endon( "blessing_ended" );
self endon( "joined_team" );
level endon( "game_ended" );
for (;;)
{
level waittill( "juggernaut_equipped", var_0 );
if ( self == var_0 )
{
self.shrine_effect_ent delete();
stopfxontag( level.dig_fx["shrine"]["player"], self, "tag_origin" );
level notify( "user_juggernaut" );
}
}
}
watchremoteuse( var_0 )
{
self endon( "disconnect" );
self endon( "blessing_ended" );
self endon( "joined_team" );
level endon( "game_ended" );
for (;;)
{
self waittill( var_0 );
if ( var_0 == "using_remote" )
{
if ( isdefined( self.shrine_effect_ent ) )
{
self.shrine_effect_ent delete();
level notify( "user_remotekillstreak" );
}
continue;
}
if ( var_0 == "stopped_using_remote" )
{
if ( !isdefined( self.shrine_effect_ent ) )
{
self.shrine_effect_ent = spawnfxforclient( level.dig_fx["shrine"]["screen"], self geteye(), self );
triggerfx( self.shrine_effect_ent );
self.shrine_effect_ent setfxkilldefondelete();
thread killfxonplayerdeath( self.shrine_effect_ent, "reset_perk_bonus", "user_juggernaut", "user_remotekillstreak" );
}
}
}
}
watchblitzteleport()
{
self endon( "disconnect" );
self endon( "blessing_ended" );
self endon( "joined_team" );
level endon( "game_ended" );
for (;;)
{
level waittill( "portal_used", var_0 );
common_scripts\utility::waitframe();
if ( var_0 != self.team && ( isdefined( self.teleporting ) && self.teleporting ) )
level thread showblessingfx( self );
}
}
watchplayersconnect( var_0 )
{
var_0 endon( "disconnect" );
var_0 endon( "blessing_ended" );
var_0 endon( "joined_team" );
level endon( "game_ended" );
for (;;)
{
level waittill( "connected", var_1 );
var_1 thread playfxonplayerspawn( var_0 );
}
}
watchblessingend( var_0 )
{
level endon( "game_ended" );
var_0 common_scripts\utility::waittill_any( "disconnect", "joined_team", "blessing_ended" );
level.player_life_counter = 0;
}
showblessingfx( var_0 )
{
var_0 endon( "disconnect" );
var_0 endon( "blessing_ended" );
var_0 endon( "joined_team" );
level endon( "game_ended" );
foreach ( var_2 in level.players )
{
if ( isdefined( var_2 ) && isdefined( var_0 ) && maps\mp\_utility::isreallyalive( var_0 ) )
playfxontagforclients( level.dig_fx["shrine"]["player"], var_0, "tag_origin", var_2 );
common_scripts\utility::waitframe();
}
}
playfxonplayerspawn( var_0 )
{
var_0 endon( "disconnect" );
var_0 endon( "blessing_ended" );
var_0 endon( "joined_team" );
level endon( "game_ended" );
self waittill( "spawned_player" );
if ( isdefined( self ) && isdefined( var_0 ) && maps\mp\_utility::isreallyalive( var_0 ) )
playfxontagforclients( level.dig_fx["shrine"]["player"], var_0, "tag_origin", self );
}
watchlifetime( var_0, var_1, var_2 )
{
self endon( var_1 );
while ( var_2 > 0 )
{
var_2 = var_2 - 1;
wait 1;
}
self notify( var_0 );
}
doperiodicdamage( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7 )
{
level endon( "game_ended" );
if ( !isdefined( var_3 ) )
var_3 = "MOD_CRUSH";
var_8 = 0;
var_9 = undefined;
var_10 = undefined;
if ( isdefined( var_6 ) && isdefined( var_7 ) )
{
var_9 = var_6;
var_10 = var_7;
}
while ( maps\mp\_utility::isreallyalive( self ) )
{
self dodamage( var_1, self.origin, var_9, var_10, var_3 );
if ( var_3 == "MOD_SCARAB" )
{
if ( self.health <= 30 && !var_8 )
{
var_11 = randomintrange( 1, 8 );
var_12 = "male";
if ( self hasfemalecustomizationmodel() )
var_12 = "female";
if ( self.team == "axis" )
self playsound( var_12 + "_scarab_death_russian" + var_11 );
else
self playsound( var_12 + "_scarab_death_american" + var_11 );
var_8 = 1;
}
}
wait( var_2 );
}
if ( isdefined( var_4 ) && isdefined( var_5 ) )
var_4 notify( var_5 );
}
killfxonplayerdeath( var_0, var_1, var_2, var_3 )
{
level endon( "game_ended" );
if ( isdefined( var_1 ) )
level endon( var_1 );
if ( isdefined( var_2 ) )
level endon( var_2 );
if ( isdefined( var_3 ) )
level endon( var_3 );
common_scripts\utility::waittill_any( "killed_player", "disconnect" );
if ( isdefined( var_0 ) )
{
if ( isarray( var_0 ) )
{
foreach ( var_5 in var_0 )
var_5 delete();
}
else
var_0 delete();
}
}
stopfxonspawn( var_0, var_1 )
{
level endon( "game_ended" );
self waittill( "spawned_player" );
stopfxontag( var_0, self, var_1 );
}
drawlinkedsphere( var_0, var_1, var_2 )
{
level endon( "game_ended" );
var_3 = ( 0, 0, 0 );
for (;;)
{
if ( var_3 != self.origin )
{
var_3 = self.origin;
if ( isdefined( var_2 ) && var_2 )
break;
}
common_scripts\utility::waitframe();
}
}
getfirstaliveplayer()
{
foreach ( var_1 in level.participants )
{
if ( isdefined( var_1 ) && maps\mp\_utility::isreallyalive( var_1 ) )
return var_1;
}
}
delayhide( var_0, var_1 )
{
level endon( "game_ended" );
wait( var_1 );
var_0 hide();
var_0 notsolid();
}
killall( var_0, var_1, var_2 )
{
level endon( "game_ended" );
level waittill( var_0 );
if ( isdefined( self.trigger_off ) )
common_scripts\utility::trigger_on();
common_scripts\utility::waitframe();
var_3 = getattacker( var_0 );
var_4 = getinflictor( var_0 );
killalltouchingtrigger( level.characters, "CHARACTERS", var_1, var_2, var_3, var_4 );
killalltouchingtrigger( level.turrets, "KILLSTREAKS", var_1, var_2, var_3, var_4 );
killalltouchingtrigger( level.placedims, "KILLSTREAKS", var_1, var_2, var_3, var_4 );
killalltouchingtrigger( level.balldrones, "KILLSTREAKS", var_1, var_2, var_3, var_4 );
killalltouchingtrigger( level.uplinks, "KILLSTREAKS", var_1, var_2, var_3, var_4 );
killalltouchingtrigger( level.remote_uav, "KILLSTREAKS", var_1, var_2, var_3, var_4 );
var_5 = [];
var_6 = getentarray( "script_model", "classname" );
foreach ( var_8 in var_6 )
{
if ( isdefined( var_8.boxtype ) )
var_5[var_5.size] = var_8;
}
killalltouchingtrigger( var_5, "KILLSTREAKS", var_1, var_2, var_3, var_4 );
killalltouchingtrigger( level.mines, "EQUIPMENT", var_1, var_2, var_3, var_4 );
if ( level.gametype == "sd" || level.gametype == "sr" )
{
if ( isdefined( level.sdbomb ) && level.sdbomb.visuals[0] istouching( self ) )
{
level.sdbomb notify( "stop_pickup_timeout" );
level.sdbomb maps\mp\gametypes\_gameobjects::returnhome();
}
}
foreach ( var_11 in level.carepackages )
{
if ( var_11.friendlymodel istouching( self ) || var_11.enemymodel istouching( self ) )
var_11 maps\mp\killstreaks\_airdrop::deletecrate();
}
if ( isdefined( level.intelent ) )
{
if ( level.intelent["visuals"] istouching( self ) )
level.intelent["dropped_time"] = -60000;
}
level thread activatekilltrigger( self, var_1 );
}
killalltouchingtrigger( var_0, var_1, var_2, var_3, var_4, var_5 )
{
foreach ( var_7 in var_0 )
{
if ( isdefined( var_7 ) && var_7 istouching( self ) )
{
switch ( var_1 )
{
case "CHARACTERS":
if ( isagent( var_7 ) && isdefined( var_7.team ) && var_7.team == var_4.team )
var_7 dodamage( var_2, var_7.origin, undefined, var_5, var_3 );
else
var_7 dodamage( var_2, var_7.origin, var_4, var_5, var_3 );
break;
case "EQUIPMENT":
case "KILLSTREAKS":
var_7 destroykillstreak( var_2, var_3, var_4 );
break;
}
}
}
}
destroykillstreak( var_0, var_1, var_2 )
{
var_3 = ( 0, 0, 0 );
var_4 = ( 0, 0, 0 );
var_5 = "";
var_6 = "";
var_7 = "";
var_8 = undefined;
var_9 = "killstreak_emp_mp";
self notify( "damage", var_0, var_2, var_3, var_4, var_1, var_5, var_6, var_7, var_8, var_9 );
}
activatekilltrigger( var_0, var_1 )
{
level endon( "game_ended" );
if ( isdefined( var_0 ) )
{
var_0.dmg = var_1;
common_scripts\utility::waitframe();
var_0.dmg = 0;
var_0 common_scripts\utility::trigger_off();
}
}
delaynotify( var_0, var_1 )
{
level endon( "game_ended" );
wait( var_1 );
level notify( var_0 );
}
showent( var_0 )
{
var_0 show();
var_0 solid();
}
hideent( var_0 )
{
var_0 hide();
var_0 notsolid();
}
getattacker( var_0 )
{
var_1 = undefined;
switch ( var_0 )
{
case "obelisk_impact":
var_1 = level.obeliskowner;
break;
case "flame_ended":
var_1 = level.dig_hidden_door_owner;
break;
}
return var_1;
}
getinflictor( var_0 )
{
var_1 = undefined;
switch ( var_0 )
{
case "obelisk_impact":
var_1 = level.obeliskafterclip;
break;
case "flame_ended":
var_1 = level.treasuredoorclip;
break;
}
return var_1;
}
nuke_custom_visionset()
{
level waittill( "nuke_death" );
wait 1.3;
level notify( "nuke_death" );
thread nuke_custom_visionset();
}
nukedeathvision()
{
level.nukevisionset = "aftermath_mp_dig";
setexpfog( 512, 2048, 0.578828, 0.802656, 1, 0.5, 0.75, 5, 0.382813, 0.350569, 0.293091, 0.5, ( 1, -0.109979, 0.267867 ), 0, 80, 1, 0.179688, 26, 180 );
visionsetnaked( level.nukevisionset, 5 );
visionsetpain( level.nukevisionset );
}
delayexploder( var_0, var_1 )
{
level endon( "game_ended" );
wait( var_0 );
common_scripts\utility::exploder( var_1 );
}
delaytrigger( var_0, var_1 )
{
level endon( "game_ended" );
wait( var_0 );
if ( var_1 == "on" )
common_scripts\utility::trigger_on();
else
common_scripts\utility::trigger_off();
}