mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-07 17:17:50 -05:00
536 lines
10 KiB
Plaintext
536 lines
10 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: maps/mp/_mp_lights.gsc
|
|
* Game: Call of Duty: Advanced Warfare
|
|
* Platform: PC
|
|
* Function Count: 23
|
|
* Decompile Time: 362 ms
|
|
* Timestamp: 10/27/2023 2:08:30 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
init()
|
|
{
|
|
if(!isdefined(level.sunenable))
|
|
{
|
|
level.sunenable = getdvarint("sm_sunenable",1);
|
|
}
|
|
|
|
if(!isdefined(level.sunshadowscale))
|
|
{
|
|
level.sunshadowscale = getdvarfloat("sm_sunshadowscale",1);
|
|
}
|
|
|
|
if(!isdefined(level.spotlimit))
|
|
{
|
|
level.spotlimit = getdvarint("sm_spotlimit",4);
|
|
}
|
|
|
|
if(!isdefined(level.sunsamplesizenear))
|
|
{
|
|
level.sunsamplesizenear = getdvarfloat("sm_sunsamplesizenear",0.25);
|
|
}
|
|
|
|
if(!isdefined(level.qualityspotshadow))
|
|
{
|
|
level.qualityspotshadow = getdvarfloat("sm_qualityspotshadow",1);
|
|
}
|
|
|
|
thread monitorplayerspawns();
|
|
if(!isdefined(level._light))
|
|
{
|
|
level._light = spawnstruct();
|
|
light_setup_common_flickerlight_presets();
|
|
light_message_init();
|
|
}
|
|
|
|
var_00 = getentarray("trigger_multiple_light_sunshadow","classname");
|
|
for(var_01 = 0;var_01 < var_00.size;var_01++)
|
|
{
|
|
level thread sun_shadow_trigger(var_00[var_01]);
|
|
}
|
|
}
|
|
|
|
//Function Number: 2
|
|
set_smdvars(param_00,param_01,param_02,param_03,param_04)
|
|
{
|
|
if(isdefined(param_00))
|
|
{
|
|
level.sunenable = param_00;
|
|
}
|
|
|
|
if(isdefined(param_01))
|
|
{
|
|
level.sunshadowscale = param_01;
|
|
}
|
|
|
|
if(isdefined(param_02))
|
|
{
|
|
level.spotlimit = param_02;
|
|
}
|
|
|
|
if(isdefined(param_03))
|
|
{
|
|
level.sunsamplesizenear = param_03;
|
|
}
|
|
|
|
if(isdefined(param_04))
|
|
{
|
|
level.qualityspotshadow = param_04;
|
|
}
|
|
}
|
|
|
|
//Function Number: 3
|
|
monitorplayerspawns()
|
|
{
|
|
if(isdefined(level.players))
|
|
{
|
|
foreach(var_01 in level.players)
|
|
{
|
|
var_01 initplayer();
|
|
}
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
level waittill("connected",var_01);
|
|
var_01 initplayer();
|
|
var_01 thread monitordeath();
|
|
}
|
|
}
|
|
|
|
//Function Number: 4
|
|
initplayer()
|
|
{
|
|
self.sunenable = level.sunenable;
|
|
self.sunshadowscale = level.sunshadowscale;
|
|
self.spotlimit = level.spotlimit;
|
|
self.sunsamplesizenear = level.sunsamplesizenear;
|
|
self.qualityspotshadow = level.qualityspotshadow;
|
|
self setclientdvars("sm_sunenable",self.sunenable,"sm_sunshadowscale",self.sunshadowscale,"sm_spotlimit",self.spotlimit,"sm_qualityspotshadow",self.qualityspotshadow,"sm_sunSampleSizeNear",self.sunsamplesizenear);
|
|
}
|
|
|
|
//Function Number: 5
|
|
monitordeath()
|
|
{
|
|
self waittill("spawned");
|
|
initplayer();
|
|
}
|
|
|
|
//Function Number: 6
|
|
sun_shadow_trigger(param_00)
|
|
{
|
|
var_01 = 1;
|
|
if(isdefined(param_00.script_duration))
|
|
{
|
|
var_01 = param_00.script_duration;
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
param_00 waittill("trigger",var_02);
|
|
param_00 set_sun_shadow_params(var_01,var_02);
|
|
}
|
|
}
|
|
|
|
//Function Number: 7
|
|
set_sun_shadow_params(param_00,param_01)
|
|
{
|
|
var_02 = param_01.sunenable;
|
|
var_03 = param_01.sunshadowscale;
|
|
var_04 = param_01.spotlimit;
|
|
var_05 = param_01.sunsamplesizenear;
|
|
var_06 = param_01.qualityspotshadow;
|
|
if(isdefined(self.script_sunenable))
|
|
{
|
|
var_02 = self.script_sunenable;
|
|
}
|
|
|
|
if(isdefined(self.script_sunshadowscale))
|
|
{
|
|
var_03 = self.script_sunshadowscale;
|
|
}
|
|
|
|
if(isdefined(self.script_spotlimit))
|
|
{
|
|
var_04 = self.script_spotlimit;
|
|
}
|
|
|
|
if(isdefined(self.script_sunsamplesizenear))
|
|
{
|
|
var_05 = self.script_sunsamplesizenear;
|
|
}
|
|
|
|
var_05 = min(max(0.016,var_05),32);
|
|
if(isdefined(self.script_qualityspotshadow))
|
|
{
|
|
var_06 = self.script_qualityspotshadow;
|
|
}
|
|
|
|
param_01 setclientdvars("sm_sunenable",var_02,"sm_sunshadowscale",var_03,"sm_spotlimit",var_04,"sm_qualityspotshadow",var_06);
|
|
param_01.sunenable = var_02;
|
|
param_01.sunshadowscale = var_03;
|
|
param_01.spotlimit = var_04;
|
|
var_07 = param_01.sunsamplesizenear;
|
|
param_01.sunsamplesizenear = var_05;
|
|
param_01.qualityspotshadow = var_06;
|
|
thread lerp_sunsamplesizenear_overtime(var_05,var_07,param_00,param_01);
|
|
}
|
|
|
|
//Function Number: 8
|
|
lerp_sunsamplesizenear_overtime(param_00,param_01,param_02,param_03)
|
|
{
|
|
level notify("changing_sunsamplesizenear" + param_03.name);
|
|
level endon("changing_sunsamplesizenear" + param_03.name);
|
|
if(param_00 == param_01)
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_04 = param_00 - param_01;
|
|
var_05 = 0.1;
|
|
var_06 = param_02 / var_05;
|
|
if(var_06 > 0)
|
|
{
|
|
var_07 = var_04 / var_06;
|
|
var_08 = param_01;
|
|
for(var_09 = 0;var_09 < var_06;var_09++)
|
|
{
|
|
var_08 = var_08 + var_07;
|
|
param_03 setclientdvar("sm_sunSampleSizeNear",var_08);
|
|
param_03.sunsamplesizenear = var_08;
|
|
wait(var_05);
|
|
}
|
|
}
|
|
|
|
param_03 setclientdvar("sm_sunSampleSizeNear",param_00);
|
|
param_03.sunsamplesizenear = param_00;
|
|
}
|
|
|
|
//Function Number: 9
|
|
light_setup_common_flickerlight_presets()
|
|
{
|
|
create_flickerlight_preset("fire",(0.972549,0.62451,0.345098),(0.2,0.1462746,0.0878432),0.005,0.2,8);
|
|
create_flickerlight_preset("blue_fire",(0.445098,0.62451,0.972549),(0.05,0.150451,0.3078432),0.005,0.2,8);
|
|
create_flickerlight_preset("white_fire",(0.972549,0.972549,0.972549),(0.2,0.2,0.2),0.005,0.2,8);
|
|
create_flickerlight_preset("pulse",(0,0,0),(255,107,107),0.2,1,8);
|
|
create_flickerlight_preset("lightbulb",(0.972549,0.62451,0.345098),(0.2,0.1462746,0.0878432),0.005,0.2,6);
|
|
create_flickerlight_preset("fluorescent",(0.972549,0.62451,0.345098),(0.2,0.1462746,0.0878432),0.005,0.2,7);
|
|
create_flickerlight_preset("static_screen",(0.63,0.72,0.92),(0.4,0.43,0.48),0.005,0.2,7);
|
|
}
|
|
|
|
//Function Number: 10
|
|
create_flickerlight_preset(param_00,param_01,param_02,param_03,param_04,param_05)
|
|
{
|
|
if(!isdefined(level._light.flicker_presets))
|
|
{
|
|
level._light.flicker_presets = [];
|
|
}
|
|
|
|
var_06 = spawnstruct();
|
|
var_06.color0 = param_01;
|
|
var_06.color1 = param_02;
|
|
var_06.mindelay = param_03;
|
|
var_06.maxdelay = param_04;
|
|
var_06.intensity = param_05;
|
|
level._light.flicker_presets[param_00] = var_06;
|
|
}
|
|
|
|
//Function Number: 11
|
|
get_flickerlight_preset(param_00)
|
|
{
|
|
if(isdefined(level._light.flicker_presets) && isdefined(level._light.flicker_presets[param_00]))
|
|
{
|
|
return level._light.flicker_presets[param_00];
|
|
}
|
|
|
|
return undefined;
|
|
}
|
|
|
|
//Function Number: 12
|
|
play_flickerlight_preset(param_00,param_01,param_02)
|
|
{
|
|
var_03 = getent(param_01,"targetname");
|
|
if(!isdefined(var_03))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_04 = get_flickerlight_preset(param_00);
|
|
if(!isdefined(var_04))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(isdefined(param_02))
|
|
{
|
|
if(param_02 < 0)
|
|
{
|
|
param_02 = 0;
|
|
}
|
|
|
|
var_04.intensity = param_02;
|
|
}
|
|
|
|
var_03 setlightintensity(var_04.intensity);
|
|
var_03.islightflickering = 1;
|
|
var_03.islightflickerpaused = 0;
|
|
var_03 thread dyn_flickerlight(var_04.color0,var_04.color1,var_04.mindelay,var_04.maxdelay);
|
|
return var_03;
|
|
}
|
|
|
|
//Function Number: 13
|
|
stop_flickerlight(param_00,param_01,param_02)
|
|
{
|
|
var_03 = getent(param_01,"targetname");
|
|
if(!isdefined(var_03))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(!isdefined(var_03.islightflickering))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(isdefined(param_02))
|
|
{
|
|
if(param_02 < 0)
|
|
{
|
|
param_02 = 0;
|
|
}
|
|
}
|
|
|
|
var_03 setlightintensity(param_02);
|
|
var_03 notify("kill_flicker");
|
|
var_03.islightflickering = undefined;
|
|
}
|
|
|
|
//Function Number: 14
|
|
pause_flickerlight(param_00,param_01)
|
|
{
|
|
var_02 = getent(param_01,"targetname");
|
|
if(!isdefined(var_02))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(!isdefined(var_02.islightflickering))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_02.islightflickerpaused = 1;
|
|
}
|
|
|
|
//Function Number: 15
|
|
unpause_flickerlight(param_00,param_01)
|
|
{
|
|
var_02 = getent(param_01,"targetname");
|
|
if(!isdefined(var_02))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(!isdefined(var_02.islightflickering))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_02.islightflickerpaused = 0;
|
|
}
|
|
|
|
//Function Number: 16
|
|
dyn_flickerlight(param_00,param_01,param_02,param_03)
|
|
{
|
|
self endon("kill_flicker");
|
|
var_04 = param_00;
|
|
var_05 = 0;
|
|
for(;;)
|
|
{
|
|
if(self.islightflickerpaused)
|
|
{
|
|
wait(0.05);
|
|
continue;
|
|
}
|
|
|
|
var_06 = var_04;
|
|
var_04 = param_00 + param_01 - param_00 * randomfloat(1);
|
|
if(param_02 != param_03)
|
|
{
|
|
var_05 = var_05 + randomfloatrange(param_02,param_03);
|
|
}
|
|
else
|
|
{
|
|
var_05 = var_05 + param_02;
|
|
}
|
|
|
|
if(var_05 == 0)
|
|
{
|
|
var_05 = var_05 + 1E-07;
|
|
}
|
|
|
|
var_07 = var_06 - var_04 * 1 / var_05;
|
|
while(var_05 > 0 && !self.islightflickerpaused)
|
|
{
|
|
self setlightcolor(var_04 + var_07 * var_05);
|
|
wait(0.05);
|
|
var_05 = var_05 - 0.05;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 17
|
|
model_flicker_preset(param_00,param_01,param_02,param_03)
|
|
{
|
|
var_04 = getentarray(param_00,"script_noteworthy");
|
|
if(!isdefined(var_04))
|
|
{
|
|
return;
|
|
}
|
|
|
|
self endon("death");
|
|
var_05 = 0;
|
|
var_06 = randomfloatrange(0.1,0.25);
|
|
if(isdefined(param_02))
|
|
{
|
|
exploder(param_02);
|
|
}
|
|
|
|
while(var_05 < param_01)
|
|
{
|
|
if(isdefined(param_03))
|
|
{
|
|
exploder(param_03);
|
|
}
|
|
|
|
foreach(var_08 in var_04)
|
|
{
|
|
var_08 show();
|
|
}
|
|
|
|
wait(var_06);
|
|
if(isdefined(param_03))
|
|
{
|
|
stop_exploder(param_03);
|
|
}
|
|
|
|
foreach(var_08 in var_04)
|
|
{
|
|
var_08 hide();
|
|
}
|
|
|
|
var_05++;
|
|
wait(var_06);
|
|
}
|
|
}
|
|
|
|
//Function Number: 18
|
|
light_message_init()
|
|
{
|
|
level._light.messages = [];
|
|
}
|
|
|
|
//Function Number: 19
|
|
light_debug_dvar_init()
|
|
{
|
|
}
|
|
|
|
//Function Number: 20
|
|
light_register_message(param_00,param_01)
|
|
{
|
|
level._light.messages[param_00] = param_01;
|
|
}
|
|
|
|
//Function Number: 21
|
|
light_message(param_00,param_01,param_02,param_03)
|
|
{
|
|
if(isdefined(level._light.messages[param_00]))
|
|
{
|
|
if(isdefined(param_03))
|
|
{
|
|
thread [[ level._light.messages[param_00] ]](param_01,param_02,param_03);
|
|
return;
|
|
}
|
|
|
|
if(isdefined(param_02))
|
|
{
|
|
thread [[ level._light.messages[param_00] ]](param_01,param_02);
|
|
return;
|
|
}
|
|
|
|
if(isdefined(param_01))
|
|
{
|
|
thread [[ level._light.messages[param_00] ]](param_01);
|
|
return;
|
|
}
|
|
|
|
thread [[ level._light.messages[param_00] ]]();
|
|
return;
|
|
}
|
|
}
|
|
|
|
//Function Number: 22
|
|
stop_exploder(param_00)
|
|
{
|
|
param_00 = param_00 + "";
|
|
if(isdefined(level.createfxexploders))
|
|
{
|
|
var_01 = level.createfxexploders[param_00];
|
|
if(isdefined(var_01))
|
|
{
|
|
foreach(var_03 in var_01)
|
|
{
|
|
if(!isdefined(var_03.looper))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_03.looper delete();
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
var_05 = 0;
|
|
while(var_03 < level.createfxent.size)
|
|
{
|
|
var_05 = level.createfxent[var_03];
|
|
if(!isdefined(var_05))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(var_05.v["type"] != "exploder")
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(!isdefined(var_05.v["exploder"]))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(var_05.v["exploder"] + "" != var_02)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(!isdefined(var_05.looper))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_05.looper delete();
|
|
var_03++;
|
|
}
|
|
}
|
|
|
|
//Function Number: 23
|
|
exploder(param_00)
|
|
{
|
|
[[ level.exploderfunction ]](param_00);
|
|
} |