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

270 lines
7.3 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
main()
{
maps\mp\mp_favela_iw6_precache::main();
maps\createart\mp_favela_iw6_art::main();
maps\mp\mp_favela_iw6_fx::main();
maps\mp\_load::main();
level.nukedeathvisionfunc = ::nukedeathvision;
maps\mp\_compass::setupminimap( "compass_map_mp_favela_iw6" );
maps\mp\_utility::setdvar_cg_ng( "r_specularColorScale", 2.5, 10 );
setdvar( "r_lightGridEnableTweaks", 1 );
setdvar( "r_lightGridIntensity", 1.33 );
maps\mp\_utility::setdvar_cg_ng( "sm_sunShadowScale", 0.55, 1 );
maps\mp\_utility::setdvar_cg_ng( "sm_sunsamplesizenear", 0.2, 0.25 );
maps\mp\_utility::setdvar_cg_ng( "r_reactiveMotionWindFrequencyScale", 0, 0.1 );
maps\mp\_utility::setdvar_cg_ng( "r_reactiveMotionWindAmplitudeScale", 0, 0.5 );
game["attackers"] = "allies";
game["defenders"] = "axis";
game["allies_outfit"] = "urban";
game["axis_outfit"] = "woodland";
thread maps\mp\_dlcalienegg::setupeggformap( "alienEasterEgg" );
thread tvs();
thread nuke_custom_visionset();
level.mapcustomcratefunc = ::favelacustomcratefunc;
level.mapcustomkillstreakfunc = ::favelacustomkillstreakfunc;
level.mapcustombotkillstreakfunc = ::favelacustombotkillstreakfunc;
thread maps\mp\killstreaks\_ac130::init();
}
favelacustomcratefunc()
{
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", "ac130", 80, maps\mp\killstreaks\_airdrop::killstreakcratethink, maps\mp\killstreaks\_airdrop::get_friendly_crate_model(), maps\mp\killstreaks\_airdrop::get_enemy_crate_model(), &"MP_FAVELA_IW6_AC130_PICKUP" );
maps\mp\killstreaks\_airdrop::generatemaxweightedcratevalue();
level thread watch_for_favela_crate();
}
favelacustomkillstreakfunc()
{
level.killstreakfuncs["ac130"] = ::tryusefavelakillstreak;
level.ac130player = level.players[0];
}
favelacustombotkillstreakfunc()
{
maps\mp\bots\_bots_ks::bot_register_killstreak_func( "ac130", maps\mp\bots\_bots_ks::bot_killstreak_simple_use );
}
watch_for_favela_crate()
{
for (;;)
{
level waittill( "createAirDropCrate", var_0 );
if ( isdefined( var_0 ) && isdefined( var_0.cratetype ) && var_0.cratetype == "ac130" )
{
maps\mp\killstreaks\_airdrop::changecrateweight( "airdrop_assault", "ac130", 0 );
var_1 = wait_for_capture( var_0 );
if ( !var_1 )
{
maps\mp\killstreaks\_airdrop::changecrateweight( "airdrop_assault", "ac130", 80 );
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;
}
tryusefavelakillstreak( var_0, var_1 )
{
return maps\mp\killstreaks\_ac130::tryuseac130( var_0, var_1 );
}
tvs()
{
foreach ( var_1 in [ "fav_bar_tv", "fav_bar_tv_large" ] )
thread tvs_set( var_1 );
}
tvs_set( var_0 )
{
var_1 = 4;
for ( var_2 = 1; var_2 <= var_1; var_2++ )
{
if ( !isdefined( level._effect[var_0][var_2] ) )
common_scripts\utility::error( "level._effect[" + var_0 + "][" + var_2 + "] not defined." );
if ( !isdefined( level.tv_info.effectlength[var_0][var_2] ) )
{
common_scripts\utility::error( "level.tv_info.effectLength[" + var_0 + "][" + var_2 + "] not defined." );
level.tv_info.effectlength[var_0][var_2] = 1;
}
}
if ( !isdefined( level.tv_info.destroymodel[var_0] ) )
{
common_scripts\utility::error( "level.tv_info.destroymodel[" + var_0 + "] not defined." );
var_3 = undefined;
}
else
var_3 = level.tv_info.destroymodel[var_0];
var_4 = getentarray( var_0, "targetname" );
foreach ( var_6 in var_4 )
{
var_6 setcandamage( 1 );
var_6.ishealthy = 1;
var_6.destroymodel = var_3;
if ( isdefined( var_6.script_noteworthy ) )
var_6 thread playtvaudio( var_6.script_noteworthy );
var_6 thread tv_death();
}
level.tv_fx_num = var_1;
for (;;)
{
var_8 = level.tv_fx_num;
level.tv_fx_num = randomintrange( 1, var_1 );
if ( level.tv_fx_num >= var_8 )
level.tv_fx_num = level.tv_fx_num + 1;
var_9 = level._effect[var_0][level.tv_fx_num];
foreach ( var_6 in var_4 )
{
if ( var_6.ishealthy )
{
playfxontag( var_9, var_6, "tag_fx" );
var_6.currentfx = var_9;
}
}
wait( level.tv_info.effectlength[var_0][level.tv_fx_num] );
}
}
playtvaudio( var_0 )
{
var_1 = issubstr( var_0, "large" );
var_2 = 15;
wait( var_2 );
if ( var_1 )
self playloopsound( "mp_favela_vo_tv_big" );
else
self playloopsound( "mp_favela_vo_tv" );
}
tv_death()
{
self endon( "death" );
self.health = 10000;
self waittill( "damage" );
killfxontag( self.currentfx, self, "tag_fx" );
self stoploopsound();
self setmodel( self.destroymodel );
playfxontag( level._effect["tv_explode"], self, "tag_fx" );
playsoundatpos( self.origin, "tv_shot_burst" );
self.ishealthy = 0;
self setcandamage( 0 );
}
setupfirehydrants()
{
var_0 = getentarray( "water", "targetname" );
foreach ( var_2 in var_0 )
var_2 thread hydrantwaitfordeath();
}
hydrantwaitfordeath()
{
level endon( "game_ended" );
var_0 = getent( self.target, "targetname" );
var_0.trigger = self;
self hide();
for (;;)
{
var_0 waittill( "state_changed", var_1, var_2, var_3, var_4, var_5, var_6 );
if ( var_2 == 2 )
break;
}
self show();
var_0 thread watersheet_trig_setup( self );
var_0 thread hydranttimer();
}
watersheet_trig_setup( var_0 )
{
level endon( "game_ended" );
self endon( "hydrant_end" );
for (;;)
{
var_0 waittill( "trigger", var_1 );
if ( isplayer( var_1 ) && !isai( var_1 ) && !( isdefined( var_1.inwater ) && var_1.inwater ) )
var_1 thread playertrackwatersheet( var_0 );
}
}
playertrackwatersheet( var_0 )
{
self endon( "disconnect" );
self.inwater = 1;
self setwatersheeting( 1 );
while ( maps\mp\_utility::isreallyalive( self ) && isdefined( var_0 ) && self istouching( var_0 ) && !level.gameended )
wait 0.5;
self setwatersheeting( 0 );
self.inwater = 0;
}
hydranttimer()
{
self waittill( "death" );
self notify( "hydrant_end" );
self.trigger delete();
}
nuke_custom_visionset()
{
level waittill( "nuke_death" );
wait 1.3;
level notify( "nuke_death" );
thread nuke_custom_visionset();
}
nukedeathvision()
{
level.nukevisionset = "aftermath_mp_favela";
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 );
}