Files
IL-GSC/MW3/PC/SP/maps/_radiation.gsc
InfinityLoader d559c1d414 Added MW3 Scripts
2023-10-27 03:47:01 -04:00

449 lines
9.0 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\_radiation.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: PC
* Function Count: 17
* Decompile Time: 249 ms
* Timestamp: 10/27/2023 2:20:16 AM
*******************************************************************/
//Function Number: 1
main()
{
precachestring(&"SCOUTSNIPER_MRHR");
precachestring(&"SCRIPT_RADIATION_DEATH");
precacheshellshock("radiation_low");
precacheshellshock("radiation_med");
precacheshellshock("radiation_high");
foreach(var_01 in level.players)
{
var_01.radiation = spawnstruct();
var_01.radiation.super_dose = 0;
var_01.radiation.inside = 0;
var_01 maps\_utility::ent_flag_init("_radiation_poisoning");
}
common_scripts\utility::run_thread_on_targetname("radiation",::updateradiationtriggers);
common_scripts\utility::run_thread_on_targetname("super_radiation",::super_radiation_trigger);
common_scripts\utility::array_thread(level.players,::updateradiationdosage);
common_scripts\utility::array_thread(level.players,::updateradiationdosimeter);
common_scripts\utility::array_thread(level.players,::updateradiationshock);
common_scripts\utility::array_thread(level.players,::updateradiationblackout);
common_scripts\utility::array_thread(level.players,::updateradiationsound);
common_scripts\utility::array_thread(level.players,::updateradiationflag);
common_scripts\utility::array_thread(level.players,::first_radiation_dialogue);
}
//Function Number: 2
updateradiationtriggers()
{
self.members = 0;
for(;;)
{
self waittill("trigger",var_00);
thread updateradiationtrigger_perplayer(var_00);
}
}
//Function Number: 3
updateradiationtrigger_perplayer(param_00)
{
if(param_00.radiation.inside)
{
return;
}
param_00.radiation.inside = 1;
param_00.radiation.triggers[param_00.radiation.triggers.size] = self;
while(param_00 istouching(self))
{
wait 0.05;
}
param_00.radiation.inside = 0;
param_00.radiation.triggers = common_scripts\utility::array_remove(param_00.radiation.triggers,self);
}
//Function Number: 4
super_radiation_trigger()
{
self waittill("trigger",var_00);
var_00.radiation.super_dose = 1;
}
//Function Number: 5
updateradiationdosage()
{
self.radiation.triggers = [];
self.radiation.rate = 0;
self.radiation.ratepercent = 0;
self.radiation.total = 0;
self.radiation.totalpercent = 0;
var_00 = 1;
var_01 = 0;
var_02 = 1100000 / 60 * var_00;
var_03 = 200000;
var_04 = var_02 - var_01;
for(;;)
{
var_05 = [];
for(var_06 = 0;var_06 < self.radiation.triggers.size;var_06++)
{
var_07 = self.radiation.triggers[var_06];
var_08 = distance(self.origin,var_07.origin) - 15;
var_05[var_06] = var_02 - var_02 / var_07.radius * var_08;
}
var_09 = 0;
for(var_06 = 0;var_06 < var_05.size;var_06++)
{
var_09 = var_09 + var_05[var_06];
}
if(var_09 < var_01)
{
var_09 = var_01;
}
if(var_09 > var_02)
{
var_09 = var_02;
}
self.radiation.rate = var_09;
self.radiation.ratepercent = var_09 - var_01 / var_04 * 100;
if(self.radiation.super_dose)
{
var_09 = var_02;
self.radiation.ratepercent = 100;
}
if(self.radiation.ratepercent > 25)
{
self.radiation.total = self.radiation.total + var_09;
self.radiation.totalpercent = self.radiation.total / var_03 * 100;
}
else if(self.radiation.ratepercent < 1 && self.radiation.total > 0)
{
self.radiation.total = self.radiation.total - 1500;
if(self.radiation.total < 0)
{
self.radiation.total = 0;
}
self.radiation.totalpercent = self.radiation.total / var_03 * 100;
}
wait var_00;
}
}
//Function Number: 6
updateradiationshock()
{
var_00 = 1;
for(;;)
{
if(self.radiation.ratepercent >= 75)
{
self shellshock("radiation_high",5);
}
else if(self.radiation.ratepercent >= 50)
{
self shellshock("radiation_med",5);
}
else if(self.radiation.ratepercent > 25)
{
self shellshock("radiation_low",5);
}
wait var_00;
}
}
//Function Number: 7
updateradiationsound()
{
thread playradiationsound();
for(;;)
{
if(self.radiation.ratepercent >= 75)
{
self.radiation.sound = "item_geigercouner_level4";
}
else if(self.radiation.ratepercent >= 50)
{
self.radiation.sound = "item_geigercouner_level3";
}
else if(self.radiation.ratepercent >= 25)
{
self.radiation.sound = "item_geigercouner_level2";
}
else if(self.radiation.ratepercent > 0)
{
self.radiation.sound = "item_geigercouner_level1";
}
else
{
self.radiation.sound = "none";
}
wait 0.05;
}
}
//Function Number: 8
updateradiationflag()
{
for(;;)
{
if(self.radiation.ratepercent > 25)
{
maps\_utility::ent_flag_set("_radiation_poisoning");
}
else
{
maps\_utility::ent_flag_clear("_radiation_poisoning");
}
wait 0.05;
}
}
//Function Number: 9
playradiationsound()
{
wait 0.05;
var_00 = spawn("script_origin",(0,0,0));
var_00.origin = self.origin;
var_00.angles = self.angles;
var_00 linkto(self);
var_01 = self.radiation.sound;
for(;;)
{
if(var_01 != self.radiation.sound)
{
var_00 stoploopsound();
if(isdefined(self.radiation.sound) && self.radiation.sound != "none")
{
var_00 playloopsound(self.radiation.sound);
}
}
var_01 = self.radiation.sound;
wait 0.05;
}
}
//Function Number: 10
updateradiationratepercent()
{
var_00 = 0.05;
var_01 = newclienthudelem(self);
var_01.fontscale = 1.2;
var_01.x = 670;
var_01.y = 350;
var_01.alignx = "right";
var_01.label = "";
var_01.alpha = 0;
for(;;)
{
var_01.label = self.radiation.ratepercent;
wait var_00;
}
}
//Function Number: 11
updateradiationdosimeter()
{
var_00 = 0.028;
var_01 = 100;
var_02 = 1;
var_03 = var_01 - var_00;
var_04 = self.origin;
var_05 = newclienthudelem(self);
var_05.fontscale = 1.2;
var_05.x = 676;
var_05.y = 360;
var_05.alpha = 0;
var_05.alignx = "right";
var_05.label = &"SCOUTSNIPER_MRHR";
var_05 thread updateradiationdosimetercolor(self);
for(;;)
{
if(self.radiation.rate <= var_00)
{
var_06 = randomfloatrange(-0.001,0.001);
var_05 setvalue(var_00 + var_06);
}
else if(self.radiation.rate > var_01)
{
var_05 setvalue(var_01);
}
else
{
var_05 setvalue(self.radiation.rate);
}
wait var_02;
}
}
//Function Number: 12
updateradiationdosimetercolor(param_00)
{
var_01 = 0.05;
for(;;)
{
var_02 = 1;
var_03 = 0.13;
while(param_00.radiation.rate >= 100)
{
if(var_02 <= 0 || var_02 >= 1)
{
var_03 = var_03 * -1;
}
var_02 = var_02 + var_03;
if(var_02 <= 0)
{
var_02 = 0;
}
if(var_02 >= 1)
{
var_02 = 1;
}
self.color = (1,var_02,var_02);
wait var_01;
}
self.color = (1,1,1);
wait var_01;
}
}
//Function Number: 13
updateradiationblackout()
{
level endon("special_op_terminated");
self endon("death");
var_00 = newclienthudelem(self);
var_00.x = 0;
var_00.y = 0;
var_00 setshader("black",640,480);
var_00.alignx = "left";
var_00.aligny = "top";
var_00.horzalign = "fullscreen";
var_00.vertalign = "fullscreen";
var_00.alpha = 0;
var_01 = 1;
var_02 = 4;
var_03 = 0.25;
var_04 = 1;
var_05 = 25;
var_06 = 100;
var_07 = 0;
for(;;)
{
while(self.radiation.totalpercent > 25 && self.radiation.ratepercent > 25)
{
var_08 = var_06 - var_05;
var_07 = self.radiation.totalpercent - var_05 / var_08;
if(var_07 < 0)
{
var_07 = 0;
}
else if(var_07 > 1)
{
var_07 = 1;
}
var_09 = var_02 - var_01;
var_0A = var_01 + var_09 * 1 - var_07;
var_0B = var_04 - var_03;
var_0C = var_03 + var_0B * var_07;
var_0D = 7.2 * var_0C;
var_0E = var_07 * 0.5;
var_0F = 7.2 * var_0E;
if(var_07 == 1)
{
break;
}
var_10 = var_0A / 2;
var_00 fadeinblackout(var_10,var_0C,var_0D,self);
var_00 fadeoutblackout(var_10,var_0E,var_0F,self);
wait var_07 * 0.5;
}
if(var_07 == 1)
{
break;
}
if(var_00.alpha != 0)
{
var_00 fadeoutblackout(1,0,0,self);
}
wait 0.05;
}
var_00 fadeinblackout(2,1,6,self);
thread radiation_kill();
}
//Function Number: 14
radiation_kill()
{
self.specialdamage = 1;
self.specialdeath = 1;
self.radiationdeath = 1;
if(!maps\_utility::kill_wrapper())
{
return;
}
waittillframeend;
var_00 = &"SCRIPT_RADIATION_DEATH";
setdvar("ui_deadquote",var_00);
}
//Function Number: 15
fadeinblackout(param_00,param_01,param_02,param_03)
{
self fadeovertime(param_00);
self.alpha = param_01;
param_03 setblurforplayer(param_02,param_00);
wait param_00;
}
//Function Number: 16
fadeoutblackout(param_00,param_01,param_02,param_03)
{
self fadeovertime(param_00);
self.alpha = param_01;
param_03 setblurforplayer(param_02,param_00);
wait param_00;
}
//Function Number: 17
first_radiation_dialogue()
{
self endon("death");
for(;;)
{
maps\_utility::ent_flag_wait("_radiation_poisoning");
if(level.script == "scoutsniper" || level.script == "co_scoutsniper")
{
level thread maps\_utility::function_stack(::maps\_utility::radio_dialogue,"scoutsniper_mcm_youdaft");
}
level notify("radiation_warning");
maps\_utility::ent_flag_waitopen("_radiation_poisoning");
wait 10;
}
}