715 lines
21 KiB
Plaintext
715 lines
21 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
main()
|
|
{
|
|
maps\mp\mp_mine_precache::main();
|
|
maps\createart\mp_mine_art::main();
|
|
maps\mp\mp_mine_fx::main();
|
|
maps\mp\_load::main();
|
|
maps\mp\_compass::setupminimap( "compass_map_mp_mine" );
|
|
setdvar( "r_lightGridEnableTweaks", 1 );
|
|
setdvar( "r_lightGridIntensity", 1.33 );
|
|
setdvar( "r_tessellationCutoffFalloffBase", 600 );
|
|
setdvar( "r_tessellationCutoffDistanceBase", 2000 );
|
|
setdvar( "r_tessellationCutoffFalloff", 600 );
|
|
setdvar( "r_tessellationCutoffDistance", 2000 );
|
|
setdvar( "r_reactiveMotionWindFrequencyScale", 0.1 );
|
|
setdvar( "sm_sunSampleSizeNear", 0.43 );
|
|
game["attackers"] = "allies";
|
|
game["defenders"] = "axis";
|
|
game["allies_outfit"] = "urban";
|
|
game["axis_outfit"] = "woodland";
|
|
level.minecartwheelanims = [ "mp_cart_idle_anim", "mp_cart_spin_slow_anim", "mp_cart_spin_mid_anim", "mp_cart_spin_fast_anim" ];
|
|
thread setupelevator();
|
|
thread minecartsetup( "cart1", "cart1TrackStart", "cart1AttachedModels", "cart1dmg", "cart1_inside", "cart1_front" );
|
|
thread minecartsetup( "cart2", "cart2TrackStart", "cart2AttachedModels", "cart2dmg", "cart2_interior", "cart2_front" );
|
|
thread setupelevatorkilltrigger();
|
|
initkillstreak();
|
|
thread maps\mp\_dlcalienegg::setupeggformap( "alienEasterEgg" );
|
|
wildlife();
|
|
thread ambientanimations();
|
|
level._effect["gear_blood"] = loadfx( "vfx/moments/mp_zerosub/vfx_blood_explosion" );
|
|
thread setuppushtrigger( "pushTrigger01", ( 10, 90, 0 ) );
|
|
thread setuppushtrigger( "pushTrigger02", ( 10, 180, 0 ) );
|
|
thread setuppushtrigger( "pushTrigger04", ( 10, 270, 0 ) );
|
|
}
|
|
|
|
setupgametypeflags( var_0 )
|
|
{
|
|
level.minebflag = undefined;
|
|
var_1 = [];
|
|
|
|
if ( level.gametype == "dom" || level.gametype == "siege" )
|
|
var_1 = getentarray( "flag_primary", "targetname" );
|
|
else
|
|
return;
|
|
|
|
foreach ( var_3 in var_1 )
|
|
{
|
|
if ( isdefined( var_3.script_label ) && var_3.script_label == "_b" )
|
|
{
|
|
level.minebflag = var_3;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if ( isdefined( level.minebflag ) )
|
|
{
|
|
level thread updatebflagobjicon();
|
|
var_5 = getdomflagb();
|
|
var_5 enablelinkto();
|
|
var_5 linkto( var_0 );
|
|
|
|
while ( !isdefined( var_5.useobj ) )
|
|
common_scripts\utility::waitframe();
|
|
|
|
foreach ( var_7 in var_5.useobj.visuals )
|
|
var_7 linkto( var_0 );
|
|
}
|
|
}
|
|
|
|
getdomflagb()
|
|
{
|
|
return level.minebflag;
|
|
}
|
|
|
|
updatebflagfxpos( var_0, var_1 )
|
|
{
|
|
level endon( "mp_mine_elevator_stopped" );
|
|
var_2 = getdomflagb();
|
|
|
|
if ( !isdefined( var_2 ) )
|
|
return;
|
|
|
|
var_3 = common_scripts\utility::ter_op( var_0, 16, 1.5 );
|
|
|
|
for (;;)
|
|
{
|
|
var_4 = var_2.origin + ( 0, 0, var_3 );
|
|
var_2.useobj.baseeffectpos = var_4;
|
|
|
|
if ( isdefined( var_2.useobj.neutralflagfx ) )
|
|
{
|
|
var_2.useobj.neutralflagfx.origin = var_4;
|
|
triggerfx( var_2.useobj.neutralflagfx );
|
|
}
|
|
|
|
foreach ( var_6 in level.players )
|
|
{
|
|
if ( isdefined( var_6._domflageffect ) && isdefined( var_6._domflageffect["_b"] ) )
|
|
{
|
|
var_6._domflageffect["_b"].origin = var_4;
|
|
triggerfx( var_6._domflageffect["_b"] );
|
|
}
|
|
}
|
|
|
|
if ( !var_1 )
|
|
break;
|
|
|
|
wait 0.25;
|
|
}
|
|
}
|
|
|
|
updatebflagobjicon()
|
|
{
|
|
var_0 = getdomflagb();
|
|
|
|
while ( !isdefined( var_0.useobj ) )
|
|
common_scripts\utility::waitframe();
|
|
|
|
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();
|
|
}
|
|
|
|
setupelevator()
|
|
{
|
|
var_0 = getent( "elevator", "targetname" );
|
|
var_1 = getent( "elevatorGears", "targetname" );
|
|
var_2 = getent( "elevatorPathNodeHolders", "targetname" );
|
|
var_3 = getent( "elevatorPathNodeTop", "targetname" );
|
|
var_4 = getent( "elevatorPathNodeMid", "targetname" );
|
|
var_5 = getent( "elevatorPathNodeBot", "targetname" );
|
|
var_6 = 6;
|
|
var_7 = 20;
|
|
var_8 = common_scripts\utility::getstruct( "elevatorTop", "targetname" );
|
|
var_9 = common_scripts\utility::getstruct( "elevatorBot", "targetname" );
|
|
var_10 = getentarray( "elevatorAttachedModels", "targetname" );
|
|
|
|
foreach ( var_12 in var_10 )
|
|
var_12 linkto( var_0 );
|
|
|
|
var_14 = getent( "elevatorDamage", "targetname" );
|
|
var_14 enablelinkto();
|
|
var_14 linkto( var_0 );
|
|
var_15 = var_0 linktrigger( "elevatorGearCrushTrigger" );
|
|
var_16 = getent( "elevatorSquish", "targetname" );
|
|
var_16.dmg = 0;
|
|
var_0 connectpaths();
|
|
var_2 hide();
|
|
var_2 notsolid();
|
|
var_3 hide();
|
|
var_3 notsolid();
|
|
setupgametypeflags( var_0 );
|
|
blockerconnect( var_3 );
|
|
var_17 = getent( "elevatorWheelLeft", "targetname" );
|
|
var_17 linkto( var_1 );
|
|
var_18 = getent( "elevatorWheelRight", "targetname" );
|
|
var_18 linkto( var_1 );
|
|
wait 10;
|
|
|
|
for (;;)
|
|
{
|
|
var_1 rotatepitch( -256.1, var_6, 1, 1 );
|
|
var_1 moveto( ( -59, 256, 287 ), var_6, 1, 1 );
|
|
var_0 moveto( var_9.origin, var_6, 1, 1 );
|
|
var_14.dmg = 1000;
|
|
var_0.destroydroneoncollision = 1;
|
|
var_0.destroyairdroponcollision = 1;
|
|
level thread updatebflagfxpos( 0, 1 );
|
|
var_17 playsoundonmovingent( "mine_elev_big_01" );
|
|
var_18 playsoundonmovingent( "mine_elev_big_02" );
|
|
blockerconnect( var_4 );
|
|
wait 2;
|
|
wait 2;
|
|
blockerdisconnect( var_3 );
|
|
blockerconnect( var_5 );
|
|
wait 2;
|
|
blockerdisconnect( var_4 );
|
|
level notify( "mp_mine_elevator_stopped" );
|
|
level updatebflagfxpos( 0, 0 );
|
|
wait( var_7 );
|
|
var_1 rotatepitch( 256.1, var_6, 1, 1 );
|
|
var_1 moveto( ( -59, 256, 543 ), var_6, 1, 1 );
|
|
var_0 moveto( var_8.origin, var_6, 1, 1 );
|
|
var_14.dmg = 0;
|
|
var_0.destroydroneoncollision = 0;
|
|
var_0.destroyairdroponcollision = 0;
|
|
level thread updatebflagfxpos( 1, 1 );
|
|
var_17 playsoundonmovingent( "mine_elev_big_01" );
|
|
var_18 playsoundonmovingent( "mine_elev_big_02" );
|
|
blockerconnect( var_4 );
|
|
wait 2;
|
|
var_15 thread crushplayerintrigger();
|
|
var_16.dmg = 1000;
|
|
blockerdisconnect( var_5 );
|
|
blockerconnect( var_3 );
|
|
wait 2;
|
|
wait 2;
|
|
blockerdisconnect( var_4 );
|
|
var_15 notify( "stopCrushing" );
|
|
var_16.dmg = 0;
|
|
level notify( "mp_mine_elevator_stopped" );
|
|
level updatebflagfxpos( 0, 0 );
|
|
wait( var_7 );
|
|
}
|
|
}
|
|
|
|
blockerconnect( var_0 )
|
|
{
|
|
var_0 show();
|
|
var_0 solid();
|
|
var_0 connectpaths();
|
|
var_0 hide();
|
|
var_0 notsolid();
|
|
}
|
|
|
|
blockerdisconnect( var_0 )
|
|
{
|
|
var_0 show();
|
|
var_0 solid();
|
|
var_0 disconnectpaths();
|
|
}
|
|
|
|
elevatorstartgears( var_0 )
|
|
{
|
|
var_1 = getentarray( "elevatorGears", "targetname" );
|
|
|
|
if ( var_0 == self.destinationnames[0] )
|
|
{
|
|
foreach ( var_3 in var_1 )
|
|
{
|
|
var_3 rotatepitch( 360, self.movetime, 0, 0 );
|
|
var_3 moveto( ( -59, 256, 543 ), self.movetime, 0, 0 );
|
|
}
|
|
|
|
maps\mp\_elevator_v2::elevatorclearpath( "elevatorMid" );
|
|
wait 5;
|
|
maps\mp\_elevator_v2::elevatorblockpath( "elevatorMid" );
|
|
}
|
|
else
|
|
{
|
|
foreach ( var_3 in var_1 )
|
|
{
|
|
var_3 rotatepitch( -360, self.movetime, 0, 0 );
|
|
var_3 moveto( ( -59, 256, 287 ), self.movetime, 0, 0 );
|
|
}
|
|
|
|
maps\mp\_elevator_v2::elevatorclearpath( "elevatorMid" );
|
|
wait 5;
|
|
maps\mp\_elevator_v2::elevatorblockpath( "elevatorMid" );
|
|
}
|
|
}
|
|
|
|
minecartsetup( var_0, var_1, var_2, var_3, var_4, var_5 )
|
|
{
|
|
var_6 = getent( var_0, "targetname" );
|
|
var_7 = 0.004;
|
|
var_8 = common_scripts\utility::getstruct( var_1, "targetname" );
|
|
var_9 = var_6 linktrigger( var_4 );
|
|
var_6 thread setupminecartinsidetrigger( var_9 );
|
|
var_10 = var_6 linktrigger( var_5 );
|
|
var_6 thread setupminecartfronttrigger( var_10 );
|
|
var_11 = getentarray( var_2, "targetname" );
|
|
|
|
foreach ( var_13 in var_11 )
|
|
{
|
|
var_13 linkto( var_6 );
|
|
var_13.destroydroneoncollision = 0;
|
|
var_13.destroyairdroponcollision = 1;
|
|
}
|
|
|
|
var_6.destroydroneoncollision = 0;
|
|
var_6.destroyairdroponcollision = 1;
|
|
var_15 = spawn( "script_model", var_6.origin + ( 0, 0, 60 ) );
|
|
var_15 linkto( var_6 );
|
|
var_6.killcament = var_15;
|
|
var_6.killcament setscriptmoverkillcam( "explosive" );
|
|
var_6.unresolved_collision_func = ::cart_unresolved_collision_func;
|
|
var_6.unresolved_collision_notify_min = 6;
|
|
var_6 minecartsetupsparks();
|
|
var_6 moveto( var_8.origin, 0.1, 0, 0 );
|
|
var_6 rotateto( var_8.angles, 0.1, 0, 0 );
|
|
var_6.cartmodel = var_11[0];
|
|
var_6 minecarthandleevents( var_8.script_noteworthy );
|
|
var_6.speed = 0;
|
|
wait 0.5;
|
|
var_16 = maps\mp\gametypes\_gameobjects::getnextobjid();
|
|
objective_add( var_16, "active", var_6.origin, "mine_cart_icon" );
|
|
objective_onentitywithrotation( var_16, var_6 );
|
|
var_6.curobjid = var_16;
|
|
|
|
for (;;)
|
|
{
|
|
if ( isdefined( var_8.script_label ) )
|
|
{
|
|
var_17 = float( var_8.script_label );
|
|
var_7 = 1.0 / var_17;
|
|
var_6.speed = var_17;
|
|
var_6 minecartplaysparksonspeedchange( int( var_8.script_label ) );
|
|
}
|
|
|
|
if ( var_8.targetname == "cart2TrackStart" )
|
|
thread minecartelevatormove( var_7 );
|
|
|
|
var_8 = minecartmove( var_6, var_8, var_7 );
|
|
}
|
|
}
|
|
|
|
minecartmove( var_0, var_1, var_2 )
|
|
{
|
|
var_0 endon( "death" );
|
|
var_3 = common_scripts\utility::getstruct( var_1.target, "targetname" );
|
|
var_4 = abs( distance( var_0.origin, var_3.origin ) * var_2 );
|
|
var_0 moveto( var_3.origin, var_4, 0, 0 );
|
|
var_0 rotateto( var_3.angles, var_4, 0, 0 );
|
|
wait( var_4 );
|
|
var_0 minecarthandleevents( var_3.script_noteworthy );
|
|
return var_3;
|
|
}
|
|
|
|
minecartelevatormove( var_0 )
|
|
{
|
|
var_1 = getent( "cart2Elevator", "targetname" );
|
|
var_2 = common_scripts\utility::getstruct( "cart2TrackStart", "targetname" );
|
|
var_3 = common_scripts\utility::getstruct( "cart2ElevatorTop", "targetname" );
|
|
var_4 = getent( "cartElevatorPathNodeTop", "targetname" );
|
|
var_5 = getent( "cartElevatorPathNodeBot", "targetname" );
|
|
var_6 = abs( distance( var_2.origin, var_3.origin ) * var_0 );
|
|
var_1.unresolved_collision_kill = 1;
|
|
var_1.destroydroneoncollision = 0;
|
|
var_1 playsoundonmovingent( "minecart2_elevator_up" );
|
|
var_1 moveto( var_3.origin, var_6, 0, 0 );
|
|
blockerdisconnect( var_5 );
|
|
wait( var_6 );
|
|
blockerconnect( var_4 );
|
|
wait 5;
|
|
blockerdisconnect( var_4 );
|
|
var_1.destroydroneoncollision = 1;
|
|
var_1 playsoundonmovingent( "minecart2_elevator_down" );
|
|
var_1 moveto( var_2.origin, var_6, 0, 0 );
|
|
wait( var_6 - 2 );
|
|
common_scripts\utility::trigger_on( "cart2ElevatorKill", "targetname" );
|
|
wait 2;
|
|
common_scripts\utility::trigger_off( "cart2ElevatorKill", "targetname" );
|
|
blockerconnect( var_5 );
|
|
}
|
|
|
|
setupelevatorkilltrigger()
|
|
{
|
|
common_scripts\utility::trigger_off( "cart2ElevatorKill", "targetname" );
|
|
}
|
|
|
|
linktrigger( var_0 )
|
|
{
|
|
var_1 = getent( var_0, "targetname" );
|
|
|
|
if ( isdefined( var_1 ) )
|
|
{
|
|
var_1 enablelinkto();
|
|
var_1 linkto( self );
|
|
}
|
|
|
|
return var_1;
|
|
}
|
|
|
|
setupminecartfronttrigger( var_0 )
|
|
{
|
|
level endon( "game_ended" );
|
|
|
|
if ( !isdefined( var_0 ) )
|
|
return;
|
|
|
|
for (;;)
|
|
{
|
|
var_0 waittill( "trigger", var_1 );
|
|
|
|
if ( isplayer( var_1 ) || isagent( var_1 ) )
|
|
{
|
|
if ( maps\mp\_utility::isreallyalive( var_1 ) && self.speed >= 250 )
|
|
{
|
|
if ( var_1 ismantling() )
|
|
continue;
|
|
|
|
var_2 = undefined;
|
|
|
|
if ( self.playersincart.size > 0 )
|
|
{
|
|
foreach ( var_4 in self.playersincart )
|
|
{
|
|
if ( maps\mp\_utility::isreallyalive( var_4 ) && var_1 maps\mp\_utility::isenemy( var_4 ) )
|
|
{
|
|
var_2 = var_4;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
var_6 = var_1.origin - self.origin;
|
|
var_7 = undefined;
|
|
var_8 = undefined;
|
|
var_9 = 20;
|
|
|
|
if ( isdefined( var_2 ) )
|
|
{
|
|
var_9 = 100;
|
|
var_7 = var_2;
|
|
var_8 = self.killcament;
|
|
}
|
|
else if ( level.hardcoremode )
|
|
var_9 = 100;
|
|
else if ( isagent( var_1 ) )
|
|
var_9 = 50;
|
|
|
|
var_10 = level.callbackplayerdamage;
|
|
|
|
if ( isagent( var_1 ) )
|
|
var_10 = maps\mp\agents\_agent_common::codecallback_agentdamaged;
|
|
|
|
var_1 thread [[ var_10 ]]( var_8, var_7, var_9, 0, "MOD_EXPLOSIVE", "iw6_minecart_mp", self.origin, var_6, "none", 0 );
|
|
wait 0.2;
|
|
}
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
setupminecartinsidetrigger( var_0 )
|
|
{
|
|
level endon( "game_ended" );
|
|
self.playersincart = [];
|
|
|
|
if ( !isdefined( var_0 ) )
|
|
return;
|
|
|
|
for (;;)
|
|
{
|
|
var_0 waittill( "trigger", var_1 );
|
|
|
|
if ( isplayer( var_1 ) && maps\mp\_utility::isreallyalive( var_1 ) )
|
|
{
|
|
var_2 = var_1 getentitynumber();
|
|
|
|
if ( !isdefined( self.playersincart[var_2] ) )
|
|
{
|
|
self.playersincart[var_2] = var_1;
|
|
|
|
if ( self.playersincart.size == 1 )
|
|
thread waitforriderexit( var_0 );
|
|
}
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
waitforriderexit( var_0 )
|
|
{
|
|
level endon( "game_ended" );
|
|
|
|
while ( self.playersincart.size > 0 )
|
|
{
|
|
foreach ( var_3, var_2 in self.playersincart )
|
|
{
|
|
if ( !isdefined( var_2 ) || !maps\mp\_utility::isreallyalive( var_2 ) || !var_2 istouching( var_0 ) )
|
|
self.playersincart[var_3] = undefined;
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
minecartsetupsparks()
|
|
{
|
|
level._effect["cart_sparks"] = loadfx( "vfx/moments/mp_mine/vfx_track_sparks_child" );
|
|
level._effect["cart_sparks_loop"] = loadfx( "vfx/moments/mp_mine/vfx_track_sparks_loop" );
|
|
self.lastspeed = 10;
|
|
self.sparktimestamp = 0;
|
|
}
|
|
|
|
minecartplaysparksonspeedchange( var_0 )
|
|
{
|
|
if ( isdefined( var_0 ) && gettime() > self.sparktimestamp && abs( var_0 - self.lastspeed ) > 20 )
|
|
{
|
|
self.lastspeed = var_0;
|
|
self.sparktimestamp = gettime() + 3500;
|
|
thread minecartplaysparks( "cart_sparks" );
|
|
}
|
|
}
|
|
|
|
minecartplaysparks( var_0 )
|
|
{
|
|
playfxontag( common_scripts\utility::getfx( var_0 ), self.cartmodel, "tag_wheelL" );
|
|
playfxontag( common_scripts\utility::getfx( var_0 ), self.cartmodel, "tag_wheelR" );
|
|
}
|
|
|
|
minecartstopsparks( var_0 )
|
|
{
|
|
stopfxontag( common_scripts\utility::getfx( var_0 ), self.cartmodel, "tag_wheelL" );
|
|
stopfxontag( common_scripts\utility::getfx( var_0 ), self.cartmodel, "tag_wheelR" );
|
|
}
|
|
|
|
minecarthandleevents( var_0 )
|
|
{
|
|
if ( !isdefined( var_0 ) )
|
|
return;
|
|
|
|
var_1 = strtok( var_0, "," );
|
|
|
|
foreach ( var_3 in var_1 )
|
|
{
|
|
if ( maps\mp\_utility::isstrstart( var_3, "sfx=" ) )
|
|
{
|
|
var_4 = getsubstr( var_3, 4, var_3.size );
|
|
self playsoundonmovingent( var_4 );
|
|
continue;
|
|
}
|
|
|
|
if ( maps\mp\_utility::isstrstart( var_3, "loop=" ) )
|
|
{
|
|
var_4 = getsubstr( var_3, 5, var_3.size );
|
|
self playloopsound( var_4 );
|
|
continue;
|
|
}
|
|
|
|
if ( var_3 == "loopstop" )
|
|
{
|
|
self stoploopsound();
|
|
continue;
|
|
}
|
|
|
|
if ( var_3 == "vfx" )
|
|
{
|
|
thread minecartplaysparks( "cart_sparks" );
|
|
continue;
|
|
}
|
|
|
|
if ( var_3 == "vfxStart" )
|
|
{
|
|
thread minecartplaysparks( "cart_sparks_loop" );
|
|
continue;
|
|
}
|
|
|
|
if ( var_3 == "vfxStop" )
|
|
{
|
|
minecartstopsparks( "cart_sparks_loop" );
|
|
continue;
|
|
}
|
|
|
|
if ( maps\mp\_utility::isstrstart( var_3, "wheelSpeed=" ) )
|
|
{
|
|
var_5 = int( getsubstr( var_3, 11, var_3.size ) );
|
|
|
|
if ( var_5 < level.minecartwheelanims.size )
|
|
self.cartmodel scriptmodelplayanim( level.minecartwheelanims[var_5] );
|
|
}
|
|
}
|
|
}
|
|
|
|
initkillstreak()
|
|
{
|
|
level.mapcustomkillstreakfunc = ::customkillstreakfunc;
|
|
level.mapcustomcratefunc = ::customcratefunc;
|
|
level.mapcustombotkillstreakfunc = ::custombotkillstreakfunc;
|
|
}
|
|
|
|
customcratefunc()
|
|
{
|
|
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", "mine_level_killstreak", 90, maps\mp\killstreaks\_airdrop::killstreakcratethink, maps\mp\killstreaks\_airdrop::get_friendly_crate_model(), maps\mp\killstreaks\_airdrop::get_enemy_crate_model(), &"MP_MINE_LEVEL_KILLSTREAK_PICKUP" );
|
|
level thread watchforcrateuse();
|
|
}
|
|
|
|
watchforcrateuse()
|
|
{
|
|
for (;;)
|
|
{
|
|
level waittill( "createAirDropCrate", var_0 );
|
|
|
|
if ( isdefined( var_0 ) && isdefined( var_0.cratetype ) && var_0.cratetype == "mine_level_killstreak" )
|
|
{
|
|
maps\mp\killstreaks\_airdrop::changecrateweight( "airdrop_assault", "mine_level_killstreak", 0 );
|
|
var_1 = wait_for_capture( var_0 );
|
|
|
|
if ( !var_1 )
|
|
{
|
|
maps\mp\killstreaks\_airdrop::changecrateweight( "airdrop_assault", "mine_level_killstreak", 90 );
|
|
continue;
|
|
}
|
|
|
|
game["player_holding_level_killstrek"] = 1;
|
|
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;
|
|
}
|
|
|
|
customkillstreakfunc()
|
|
{
|
|
maps\mp\killstreaks\mp_wolfpack_killstreak::init();
|
|
level.killstreakweildweapons["iw6_minecart_mp"] = "iw6_minecart_mp";
|
|
}
|
|
|
|
custombotkillstreakfunc()
|
|
{
|
|
maps\mp\bots\_bots_ks::bot_register_killstreak_func( "mine_level_killstreak", maps\mp\bots\_bots_ks::bot_killstreak_simple_use );
|
|
}
|
|
|
|
ambientanimations()
|
|
{
|
|
wait 3;
|
|
var_0 = getent( "spinny_wheels", "targetname" );
|
|
|
|
if ( isdefined( var_0 ) )
|
|
var_0 scriptmodelplayanim( "mp_mine_spinning_wheels" );
|
|
}
|
|
|
|
wildlife()
|
|
{
|
|
thread maps\interactive_models\vulture_mp::vulture_circling( ( 565, -1870, 1500 ), 3 );
|
|
thread maps\interactive_models\vulture_mp::vulture_circling( ( -300, 1210, 1650 ), 2 );
|
|
thread maps\interactive_models\batcave::vfxbatcavewaitinit( "bats_flyaway_1", 1, "vfx_bats_flyaway_1", ( -2028.06, 464.427, 413.921 ) );
|
|
thread maps\interactive_models\batcave::vfxbatcavewaitinit( "bats_flyaway_2", 2, "vfx_bats_flyaway_2", ( -264.3, 927.7, 397.8 ), 2 );
|
|
}
|
|
|
|
crushplayerintrigger()
|
|
{
|
|
level endon( "game_ended" );
|
|
self endon( "stopCrushing" );
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "trigger", var_0 );
|
|
|
|
if ( maps\mp\_utility::isreallyalive( var_0 ) )
|
|
{
|
|
var_0 dodamage( 1000, var_0.origin, undefined, undefined, "MOD_CRUSH" );
|
|
var_0 notify( "notify_moving_platform_invalid" );
|
|
|
|
if ( isplayer( var_0 ) || isagent( var_0 ) )
|
|
thread cleanupcrushedbody( var_0 getcorpseentity() );
|
|
}
|
|
}
|
|
}
|
|
|
|
cleanupcrushedbody( var_0 )
|
|
{
|
|
playfx( common_scripts\utility::getfx( "gear_blood" ), var_0.origin, -1 * anglestoforward( var_0.angles ), anglestoup( var_0.angles ) );
|
|
wait 0.7;
|
|
|
|
if ( isdefined( var_0 ) )
|
|
{
|
|
playfx( common_scripts\utility::getfx( "gear_blood" ), var_0.origin, -1 * anglestoforward( var_0.angles ), anglestoup( var_0.angles ) );
|
|
var_0 hide();
|
|
}
|
|
}
|
|
|
|
cart_unresolved_collision_func( var_0, var_1 )
|
|
{
|
|
if ( isplayer( var_0 ) && var_0 islinked() )
|
|
var_0 unlink();
|
|
|
|
maps\mp\_movers::unresolved_collision_owner_damage( var_0 );
|
|
}
|
|
|
|
setuppushtrigger( var_0, var_1 )
|
|
{
|
|
level endon( "game_ended" );
|
|
var_2 = getent( var_0, "targetname" );
|
|
|
|
if ( !isdefined( var_2 ) )
|
|
return;
|
|
|
|
for (;;)
|
|
{
|
|
var_2 waittill( "trigger", var_3 );
|
|
|
|
if ( isplayer( var_3 ) || isagent( var_3 ) )
|
|
{
|
|
if ( var_3 islinked() )
|
|
{
|
|
var_3 unlink();
|
|
var_3.startusemover = undefined;
|
|
}
|
|
|
|
var_4 = 100 * anglestoforward( var_1 );
|
|
var_3 setvelocity( var_4 );
|
|
}
|
|
|
|
wait 0.1;
|
|
}
|
|
}
|