287 lines
7.8 KiB
Plaintext
287 lines
7.8 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
main()
|
|
{
|
|
maps\mp\mp_ca_red_river_precache::main();
|
|
maps\createart\mp_ca_red_river_art::main();
|
|
maps\mp\mp_ca_red_river_fx::main();
|
|
maps\mp\_breach::main();
|
|
level thread maps\mp\_movers::main();
|
|
level thread maps\mp\_movable_cover::init();
|
|
level.mapcustomcratefunc = ::redrivercustomcratefunc;
|
|
level.mapcustomkillstreakfunc = ::redrivercustomkillstreakfunc;
|
|
level.mapcustombotkillstreakfunc = ::redrivercustombotkillstreakfunc;
|
|
maps\mp\_load::main();
|
|
maps\mp\_compass::setupminimap( "compass_map_mp_ca_red_river" );
|
|
setdvar( "r_lightGridEnableTweaks", 1 );
|
|
setdvar( "r_lightGridIntensity", 1.33 );
|
|
setdvar( "r_reactiveMotionWindAmplitudeScale", 3 );
|
|
setdvar( "r_reactiveMotionWindFrequencyScale", 0.33 );
|
|
maps\mp\_utility::setdvar_cg_ng( "r_specularColorScale", 2.5, 9 );
|
|
maps\mp\_utility::setdvar_cg_ng( "r_diffuseColorScale", 1.25, 1.5 );
|
|
|
|
if ( level.ps3 )
|
|
setdvar( "sm_sunShadowScale", "0.4" );
|
|
else if ( level.xenon )
|
|
setdvar( "sm_sunShadowScale", "0.4" );
|
|
else
|
|
setdvar( "sm_sunShadowScale", "0.9" );
|
|
|
|
game["attackers"] = "allies";
|
|
game["defenders"] = "axis";
|
|
game["allies_outfit"] = "urban";
|
|
game["axis_outfit"] = "desert";
|
|
precachempanim( "rr_gate_open_out" );
|
|
precachempanim( "rr_gate_open_in" );
|
|
precachempanim( "mp_frag_metal_door_chain" );
|
|
common_scripts\utility::flag_init( "chain_broken" );
|
|
thread setup_pinatas();
|
|
thread maps\mp\mp_ca_red_river_bridge_event::bridge_main();
|
|
thread chain_gate();
|
|
thread redriver_breach_init();
|
|
thread maps\mp\_dlcalienegg::setupeggformap( "alienEasterEgg" );
|
|
}
|
|
|
|
redriver_breach_init()
|
|
{
|
|
wait 0.5;
|
|
var_0 = common_scripts\utility::getstructarray( "breach", "targetname" );
|
|
var_1 = common_scripts\utility::getstructarray( "breach_proxy", "targetname" );
|
|
|
|
foreach ( var_3 in var_0 )
|
|
{
|
|
var_4 = getnodearray( var_3.target, "targetname" );
|
|
|
|
foreach ( var_6 in var_4 )
|
|
var_6 disconnectnode();
|
|
}
|
|
|
|
foreach ( var_6 in var_1 )
|
|
{
|
|
if ( !isdefined( var_6.target ) )
|
|
continue;
|
|
|
|
var_3 = common_scripts\utility::getstruct( var_6.target, "targetname" );
|
|
|
|
if ( !isdefined( var_3 ) )
|
|
continue;
|
|
|
|
var_0[var_0.size] = var_3;
|
|
}
|
|
|
|
common_scripts\utility::array_thread( var_0, ::redriver_breach_update );
|
|
}
|
|
|
|
redriver_breach_update()
|
|
{
|
|
self waittill( "breach_activated" );
|
|
var_0 = 0.5;
|
|
var_1 = 0.5;
|
|
var_2 = 600;
|
|
|
|
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();
|
|
}
|
|
|
|
redrivercustomcratefunc()
|
|
{
|
|
level thread maps\mp\mp_ca_red_river_bridge_device::redrivercustomcratefunc();
|
|
}
|
|
|
|
redrivercustomkillstreakfunc()
|
|
{
|
|
level.killstreakfuncs["warhawk_mortars"] = ::tryuseredrivernuke;
|
|
level.killstreakweildweapons["warhawk_mortar_mp"] = "warhawk_mortars";
|
|
}
|
|
|
|
redrivercustombotkillstreakfunc()
|
|
{
|
|
maps\mp\bots\_bots_ks::bot_register_killstreak_func( "warhawk_mortars", maps\mp\bots\_bots_ks::bot_killstreak_simple_use );
|
|
}
|
|
|
|
tryuseredrivernuke( var_0, var_1 )
|
|
{
|
|
level notify( "bridge_device_activate", self );
|
|
return 1;
|
|
}
|
|
|
|
setup_pinatas()
|
|
{
|
|
var_0 = getentarray( "pinata", "targetname" );
|
|
|
|
if ( var_0.size > 0 )
|
|
{
|
|
foreach ( var_2 in var_0 )
|
|
var_2 thread update_pinata( level._effect["mp_ca_red_river_pinata_boom"] );
|
|
}
|
|
|
|
var_4 = getentarray( "pinata_large", "targetname" );
|
|
|
|
if ( var_4.size > 0 )
|
|
{
|
|
foreach ( var_2 in var_4 )
|
|
var_2 thread update_pinata( level._effect["mp_ca_red_river_pinata_boom_lg"] );
|
|
}
|
|
}
|
|
|
|
update_pinata( var_0 )
|
|
{
|
|
self show();
|
|
self setcandamage( 1 );
|
|
var_1 = undefined;
|
|
var_2 = randomintrange( 2, 4 );
|
|
|
|
while ( var_2 > 0 )
|
|
{
|
|
self waittill( "damage", var_3, var_4, var_5, var_6, var_7 );
|
|
var_2--;
|
|
var_1 = var_5;
|
|
thread play_pinata_hit( level._effect["mp_ca_red_river_pinata"], var_6, var_5 );
|
|
|
|
if ( issubstr( var_7, "MELEE" ) || issubstr( var_7, "GRENADE" ) )
|
|
{
|
|
var_2 = 0;
|
|
continue;
|
|
}
|
|
|
|
if ( issubstr( var_7, "BULLET" ) )
|
|
{
|
|
if ( var_3 > 60.0 )
|
|
{
|
|
var_2 = 0;
|
|
continue;
|
|
}
|
|
|
|
if ( isdefined( var_4 ) && isdefined( var_4 getcurrentweapon() ) && weaponclass( var_4 getcurrentweapon() ) == "sniper" )
|
|
var_2 = 0;
|
|
}
|
|
}
|
|
|
|
if ( !isdefined( var_1 ) )
|
|
self waittill( "damage", var_3, var_4, var_5, var_6, var_7 );
|
|
else
|
|
var_5 = var_1;
|
|
|
|
self hide();
|
|
self setcandamage( 0 );
|
|
thread play_pinata_hit( var_0, self getorigin(), var_5 );
|
|
}
|
|
|
|
play_pinata_hit( var_0, var_1, var_2 )
|
|
{
|
|
var_3 = spawnfx( var_0, var_1, anglestoforward( var_2 ), anglestoup( var_2 ) );
|
|
triggerfx( var_3 );
|
|
wait 5.0;
|
|
var_3 delete();
|
|
}
|
|
|
|
chain_gate_trigger_wait_damage( var_0 )
|
|
{
|
|
level endon( "chain_gate_trigger_damage" );
|
|
var_0 waittill( "damage", var_1, var_2, var_3, var_4, var_5 );
|
|
level notify( "chain_gate_trigger_damage", var_1, var_2, var_3, var_4, var_5 );
|
|
}
|
|
|
|
chain_gate()
|
|
{
|
|
var_0 = getent( "left_gate", "targetname" );
|
|
var_1 = getent( "lock", "targetname" );
|
|
var_2 = getent( "gate_clip", "targetname" );
|
|
var_3 = getentarray( "gate_trigger", "targetname" );
|
|
var_4 = spawn( "script_model", var_0.origin );
|
|
var_4 setmodel( "generic_prop_raven" );
|
|
var_4.angles = var_0.angles;
|
|
common_scripts\utility::waitframe();
|
|
var_2 disconnectpaths();
|
|
common_scripts\utility::waitframe();
|
|
common_scripts\utility::waitframe();
|
|
var_5 = ( 0, 0, 0 );
|
|
var_6 = 0;
|
|
|
|
foreach ( var_8 in var_3 )
|
|
{
|
|
maps\mp\_utility::add_to_bot_damage_targets( var_8 );
|
|
var_5 = var_5 + var_8.origin;
|
|
var_6++;
|
|
}
|
|
|
|
var_5 = var_5 / var_6;
|
|
level thread bot_outside_gate_watch();
|
|
var_1 scriptmodelplayanim( "mp_frag_metal_door_chain" );
|
|
var_0 setcandamage( 0 );
|
|
var_0 setcanradiusdamage( 0 );
|
|
var_1 setcandamage( 0 );
|
|
var_1 setcanradiusdamage( 0 );
|
|
|
|
foreach ( var_8 in var_3 )
|
|
thread chain_gate_trigger_wait_damage( var_8 );
|
|
|
|
self waittill( "chain_gate_trigger_damage", var_12, var_13, var_14, var_15, var_16 );
|
|
var_1 playsound( "scn_breach_gate_lock" );
|
|
|
|
if ( isexplosivedamagemod( var_16 ) )
|
|
var_14 = var_5 - var_15;
|
|
|
|
var_17 = var_14[1] < 0;
|
|
var_1 delete();
|
|
|
|
foreach ( var_8 in var_3 )
|
|
{
|
|
maps\mp\_utility::remove_from_bot_damage_targets( var_8 );
|
|
var_8 delete();
|
|
}
|
|
|
|
common_scripts\utility::flag_set( "chain_broken" );
|
|
|
|
if ( var_17 )
|
|
{
|
|
var_0 scriptmodelplayanim( "rr_gate_open_in" );
|
|
var_2 rotateyaw( 130.0, 0.66 );
|
|
}
|
|
else
|
|
{
|
|
var_0 scriptmodelplayanim( "rr_gate_open_out" );
|
|
var_2 rotateyaw( -130.0, 0.66 );
|
|
}
|
|
|
|
var_0 playsound( "scn_breach_gate_open_left" );
|
|
wait 0.5;
|
|
var_2 connectpaths();
|
|
common_scripts\utility::waitframe();
|
|
var_2 delete();
|
|
}
|
|
|
|
bot_outside_gate_watch()
|
|
{
|
|
level endon( "chain_broken" );
|
|
var_0 = getentarray( "gate_trigger", "targetname" );
|
|
var_1 = getent( "near_gate_volume", "targetname" );
|
|
|
|
for (;;)
|
|
{
|
|
if ( isdefined( level.participants ) )
|
|
{
|
|
foreach ( var_3 in level.participants )
|
|
{
|
|
if ( isai( var_3 ) && var_3 istouching( var_1 ) )
|
|
var_0[0] maps\mp\_utility::set_high_priority_target_for_bot( var_3 );
|
|
}
|
|
}
|
|
|
|
wait 1.0;
|
|
}
|
|
}
|