349 lines
11 KiB
Plaintext
349 lines
11 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
main()
|
|
{
|
|
if ( isdefined( level._loadstarted ) )
|
|
return;
|
|
|
|
level._loadstarted = 1;
|
|
level.createfx_enabled = getdvar( "createfx" ) != "";
|
|
common_scripts\utility::struct_class_init();
|
|
maps\mp\_utility::initgameflags();
|
|
maps\mp\_utility::initlevelflags();
|
|
maps\mp\_utility::initglobals();
|
|
level.generic_index = 0;
|
|
level.flag_struct = spawnstruct();
|
|
level.flag_struct common_scripts\utility::assign_unique_id();
|
|
|
|
if ( !isdefined( level.flag ) )
|
|
{
|
|
level.flag = [];
|
|
level.flags_lock = [];
|
|
}
|
|
|
|
level.requiredmapaspectratio = getdvarfloat( "scr_RequiredMapAspectratio", 1 );
|
|
level.createclientfontstring_func = maps\mp\gametypes\_hud_util::createfontstring;
|
|
level.hudsetpoint_func = maps\mp\gametypes\_hud_util::setpoint;
|
|
level.leaderdialogonplayer_func = maps\mp\_utility::leaderdialogonplayer;
|
|
thread maps\mp\gametypes\_tweakables::init();
|
|
|
|
if ( !isdefined( level.func ) )
|
|
level.func = [];
|
|
|
|
level.func["precacheMpAnim"] = ::precachempanim;
|
|
level.func["scriptModelPlayAnim"] = ::scriptmodelplayanim;
|
|
level.func["scriptModelClearAnim"] = ::scriptmodelclearanim;
|
|
|
|
if ( !level.createfx_enabled )
|
|
{
|
|
thread maps\mp\_minefields::minefields();
|
|
thread maps\mp\_radiation::radiation();
|
|
thread maps\mp\_shutter::main();
|
|
thread maps\mp\_movers::init();
|
|
thread maps\mp\_destructables::init();
|
|
thread common_scripts\_elevator::init();
|
|
thread common_scripts\_dynamic_world::init();
|
|
thread common_scripts\_destructible::init();
|
|
level notify( "interactive_start" );
|
|
}
|
|
|
|
game["thermal_vision"] = "thermal_mp";
|
|
visionsetnaked( "", 0 );
|
|
visionsetnight( "default_night_mp" );
|
|
visionsetmissilecam( "missilecam" );
|
|
visionsetthermal( game["thermal_vision"] );
|
|
visionsetpain( "", 0 );
|
|
var_0 = getentarray( "lantern_glowFX_origin", "targetname" );
|
|
|
|
for ( var_1 = 0; var_1 < var_0.size; var_1++ )
|
|
var_0[var_1] thread lanterns();
|
|
|
|
maps\mp\_audio::init_audio();
|
|
maps\mp\_art::main();
|
|
setupexploders();
|
|
thread common_scripts\_fx::initfx();
|
|
|
|
if ( level.createfx_enabled )
|
|
{
|
|
maps\mp\gametypes\_spawnlogic::setmapcenterfordev();
|
|
maps\mp\_createfx::createfx();
|
|
}
|
|
|
|
if ( getdvar( "r_reflectionProbeGenerate" ) == "1" )
|
|
{
|
|
maps\mp\gametypes\_spawnlogic::setmapcenterfordev();
|
|
maps\mp\_global_fx::main();
|
|
level waittill( "eternity" );
|
|
}
|
|
|
|
thread maps\mp\_global_fx::main();
|
|
|
|
for ( var_2 = 0; var_2 < 6; var_2++ )
|
|
{
|
|
switch ( var_2 )
|
|
{
|
|
case 0:
|
|
var_3 = "trigger_multiple";
|
|
break;
|
|
case 1:
|
|
var_3 = "trigger_once";
|
|
break;
|
|
case 2:
|
|
var_3 = "trigger_use";
|
|
break;
|
|
case 3:
|
|
var_3 = "trigger_radius";
|
|
break;
|
|
case 4:
|
|
var_3 = "trigger_lookat";
|
|
break;
|
|
default:
|
|
var_3 = "trigger_damage";
|
|
break;
|
|
}
|
|
|
|
var_4 = getentarray( var_3, "classname" );
|
|
|
|
for ( var_1 = 0; var_1 < var_4.size; var_1++ )
|
|
{
|
|
if ( isdefined( var_4[var_1].script_prefab_exploder ) )
|
|
var_4[var_1].script_exploder = var_4[var_1].script_prefab_exploder;
|
|
|
|
if ( isdefined( var_4[var_1].script_exploder ) )
|
|
level thread exploder_load( var_4[var_1] );
|
|
}
|
|
}
|
|
|
|
thread maps\mp\_animatedmodels::main();
|
|
level.func["damagefeedback"] = maps\mp\gametypes\_damagefeedback::updatedamagefeedback;
|
|
level.func["setTeamHeadIcon"] = maps\mp\_entityheadicons::setteamheadicon;
|
|
level.laseron_func = ::laseron;
|
|
level.laseroff_func = ::laseroff;
|
|
level.connectpathsfunction = ::connectpaths;
|
|
level.disconnectpathsfunction = ::disconnectpaths;
|
|
setdvar( "sm_sunShadowScale", 1 );
|
|
setdvar( "sm_spotLightScoreModelScale", 0 );
|
|
setdvar( "r_specularcolorscale", 2.5 );
|
|
setdvar( "r_diffusecolorscale", 1 );
|
|
setdvar( "r_lightGridEnableTweaks", 0 );
|
|
setdvar( "r_lightGridIntensity", 1 );
|
|
setdvar( "r_lightGridContrast", 0 );
|
|
setdvar( "ui_showInfo", 1 );
|
|
setdvar( "ui_showMinimap", 1 );
|
|
setupdestructiblekillcaments();
|
|
precacheitem( "bomb_site_mp" );
|
|
|
|
if ( !level.console )
|
|
{
|
|
level.furfx = loadfx( "vfx/apex/nv_dog_a" );
|
|
level.wolffurfx = [];
|
|
level.wolffurfx[0] = loadfx( "vfx/apex/nv_wolf_b" );
|
|
level.wolffurfx[1] = loadfx( "vfx/apex/nv_wolf_c" );
|
|
}
|
|
|
|
level.fauxvehiclecount = 0;
|
|
level.littlebird_model = "vehicle_aas_72x_killstreak";
|
|
}
|
|
|
|
exploder_load( var_0 )
|
|
{
|
|
level endon( "killexplodertridgers" + var_0.script_exploder );
|
|
var_0 waittill( "trigger" );
|
|
|
|
if ( isdefined( var_0.script_chance ) && randomfloat( 1 ) > var_0.script_chance )
|
|
{
|
|
if ( isdefined( var_0.script_delay ) )
|
|
wait( var_0.script_delay );
|
|
else
|
|
wait 4;
|
|
|
|
level thread exploder_load( var_0 );
|
|
return;
|
|
}
|
|
|
|
common_scripts\utility::exploder( var_0.script_exploder );
|
|
level notify( "killexplodertridgers" + var_0.script_exploder );
|
|
}
|
|
|
|
setupexploders()
|
|
{
|
|
var_0 = getentarray( "script_brushmodel", "classname" );
|
|
var_1 = getentarray( "script_model", "classname" );
|
|
|
|
for ( var_2 = 0; var_2 < var_1.size; var_2++ )
|
|
var_0[var_0.size] = var_1[var_2];
|
|
|
|
for ( var_2 = 0; var_2 < var_0.size; var_2++ )
|
|
{
|
|
if ( isdefined( var_0[var_2].script_prefab_exploder ) )
|
|
var_0[var_2].script_exploder = var_0[var_2].script_prefab_exploder;
|
|
|
|
if ( isdefined( var_0[var_2].script_exploder ) )
|
|
{
|
|
if ( var_0[var_2].model == "fx" && ( !isdefined( var_0[var_2].targetname ) || var_0[var_2].targetname != "exploderchunk" ) )
|
|
{
|
|
var_0[var_2] hide();
|
|
continue;
|
|
}
|
|
|
|
if ( isdefined( var_0[var_2].targetname ) && var_0[var_2].targetname == "exploder" )
|
|
{
|
|
var_0[var_2] hide();
|
|
var_0[var_2] notsolid();
|
|
continue;
|
|
}
|
|
|
|
if ( isdefined( var_0[var_2].targetname ) && var_0[var_2].targetname == "exploderchunk" )
|
|
{
|
|
var_0[var_2] hide();
|
|
var_0[var_2] notsolid();
|
|
}
|
|
}
|
|
}
|
|
|
|
var_3 = [];
|
|
var_4 = getentarray( "script_brushmodel", "classname" );
|
|
|
|
for ( var_2 = 0; var_2 < var_4.size; var_2++ )
|
|
{
|
|
if ( isdefined( var_4[var_2].script_prefab_exploder ) )
|
|
var_4[var_2].script_exploder = var_4[var_2].script_prefab_exploder;
|
|
|
|
if ( isdefined( var_4[var_2].script_exploder ) )
|
|
var_3[var_3.size] = var_4[var_2];
|
|
}
|
|
|
|
var_4 = getentarray( "script_model", "classname" );
|
|
|
|
for ( var_2 = 0; var_2 < var_4.size; var_2++ )
|
|
{
|
|
if ( isdefined( var_4[var_2].script_prefab_exploder ) )
|
|
var_4[var_2].script_exploder = var_4[var_2].script_prefab_exploder;
|
|
|
|
if ( isdefined( var_4[var_2].script_exploder ) )
|
|
var_3[var_3.size] = var_4[var_2];
|
|
}
|
|
|
|
var_4 = getentarray( "item_health", "classname" );
|
|
|
|
for ( var_2 = 0; var_2 < var_4.size; var_2++ )
|
|
{
|
|
if ( isdefined( var_4[var_2].script_prefab_exploder ) )
|
|
var_4[var_2].script_exploder = var_4[var_2].script_prefab_exploder;
|
|
|
|
if ( isdefined( var_4[var_2].script_exploder ) )
|
|
var_3[var_3.size] = var_4[var_2];
|
|
}
|
|
|
|
if ( !isdefined( level.createfxent ) )
|
|
level.createfxent = [];
|
|
|
|
var_5 = [];
|
|
var_5["exploderchunk visible"] = 1;
|
|
var_5["exploderchunk"] = 1;
|
|
var_5["exploder"] = 1;
|
|
|
|
for ( var_2 = 0; var_2 < var_3.size; var_2++ )
|
|
{
|
|
var_6 = var_3[var_2];
|
|
var_7 = common_scripts\utility::createexploder( var_6.script_fxid );
|
|
var_7.v = [];
|
|
var_7.v["origin"] = var_6.origin;
|
|
var_7.v["angles"] = var_6.angles;
|
|
var_7.v["delay"] = var_6.script_delay;
|
|
var_7.v["firefx"] = var_6.script_firefx;
|
|
var_7.v["firefxdelay"] = var_6.script_firefxdelay;
|
|
var_7.v["firefxsound"] = var_6.script_firefxsound;
|
|
var_7.v["firefxtimeout"] = var_6.script_firefxtimeout;
|
|
var_7.v["earthquake"] = var_6.script_earthquake;
|
|
var_7.v["damage"] = var_6.script_damage;
|
|
var_7.v["damage_radius"] = var_6.script_radius;
|
|
var_7.v["soundalias"] = var_6.script_soundalias;
|
|
var_7.v["repeat"] = var_6.script_repeat;
|
|
var_7.v["delay_min"] = var_6.script_delay_min;
|
|
var_7.v["delay_max"] = var_6.script_delay_max;
|
|
var_7.v["target"] = var_6.target;
|
|
var_7.v["ender"] = var_6.script_ender;
|
|
var_7.v["type"] = "exploder";
|
|
|
|
if ( !isdefined( var_6.script_fxid ) )
|
|
var_7.v["fxid"] = "No FX";
|
|
else
|
|
var_7.v["fxid"] = var_6.script_fxid;
|
|
|
|
var_7.v["exploder"] = var_6.script_exploder;
|
|
|
|
if ( !isdefined( var_7.v["delay"] ) )
|
|
var_7.v["delay"] = 0;
|
|
|
|
if ( isdefined( var_6.target ) )
|
|
{
|
|
var_8 = getent( var_7.v["target"], "targetname" ).origin;
|
|
var_7.v["angles"] = vectortoangles( var_8 - var_7.v["origin"] );
|
|
}
|
|
|
|
if ( var_6.classname == "script_brushmodel" || isdefined( var_6.model ) )
|
|
{
|
|
var_7.model = var_6;
|
|
var_7.model.disconnect_paths = var_6.script_disconnectpaths;
|
|
}
|
|
|
|
if ( isdefined( var_6.targetname ) && isdefined( var_5[var_6.targetname] ) )
|
|
var_7.v["exploder_type"] = var_6.targetname;
|
|
else
|
|
var_7.v["exploder_type"] = "normal";
|
|
|
|
var_7 common_scripts\_createfx::post_entity_creation_function();
|
|
}
|
|
}
|
|
|
|
lanterns()
|
|
{
|
|
if ( !isdefined( level._effect["lantern_light"] ) )
|
|
level._effect["lantern_light"] = loadfx( "fx/props/glow_latern" );
|
|
|
|
common_scripts\_fx::loopfx( "lantern_light", self.origin, 0.3, self.origin + ( 0, 0, 1 ) );
|
|
}
|
|
|
|
setupdestructiblekillcaments()
|
|
{
|
|
var_0 = getentarray( "scriptable_destructible_vehicle", "targetname" );
|
|
|
|
foreach ( var_2 in var_0 )
|
|
{
|
|
var_3 = var_2.origin + ( 0, 0, 5 );
|
|
var_4 = var_2.origin + ( 0, 0, 128 );
|
|
var_5 = bullettrace( var_3, var_4, 0, var_2 );
|
|
var_2.killcament = spawn( "script_model", var_5["position"] );
|
|
var_2.killcament.targetname = "killCamEnt_destructible_vehicle";
|
|
var_2.killcament setscriptmoverkillcam( "explosive" );
|
|
var_2 thread deletedestructiblekillcament();
|
|
}
|
|
|
|
var_7 = getentarray( "scriptable_destructible_barrel", "targetname" );
|
|
|
|
foreach ( var_2 in var_7 )
|
|
{
|
|
var_3 = var_2.origin + ( 0, 0, 5 );
|
|
var_4 = var_2.origin + ( 0, 0, 128 );
|
|
var_5 = bullettrace( var_3, var_4, 0, var_2 );
|
|
var_2.killcament = spawn( "script_model", var_5["position"] );
|
|
var_2.killcament.targetname = "killCamEnt_explodable_barrel";
|
|
var_2.killcament setscriptmoverkillcam( "explosive" );
|
|
var_2 thread deletedestructiblekillcament();
|
|
}
|
|
}
|
|
|
|
deletedestructiblekillcament()
|
|
{
|
|
level endon( "game_ended" );
|
|
var_0 = self.killcament;
|
|
var_0 endon( "death" );
|
|
self waittill( "death" );
|
|
wait 10;
|
|
|
|
if ( isdefined( var_0 ) )
|
|
var_0 delete();
|
|
}
|