mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-26 09:27:54 -05:00
449 lines
9.0 KiB
Plaintext
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;
|
|
}
|
|
} |