// IW6 GSC SOURCE // Generated by https://github.com/xensik/gsc-tool main() { precachestring( &"SCOUTSNIPER_MRHR" ); precachestring( &"SCRIPT_RADIATION_DEATH" ); precacheshellshock( "radiation_low" ); precacheshellshock( "radiation_med" ); precacheshellshock( "radiation_high" ); foreach ( var_2, var_1 in level.players ) { var_1.radiation = spawnstruct(); var_1.radiation.super_dose = 0; var_1.radiation.inside = 0; var_1 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 ); } updateradiationtriggers() { self.members = 0; for (;;) { self waittill( "trigger", var_0 ); thread updateradiationtrigger_perplayer( var_0 ); } } updateradiationtrigger_perplayer( var_0 ) { if ( var_0.radiation.inside ) return; var_0.radiation.inside = 1; var_0.radiation.triggers[var_0.radiation.triggers.size] = self; while ( var_0 istouching( self ) ) wait 0.05; var_0.radiation.inside = 0; var_0.radiation.triggers = common_scripts\utility::array_remove( var_0.radiation.triggers, self ); } super_radiation_trigger() { self waittill( "trigger", var_0 ); var_0.radiation.super_dose = 1; } updateradiationdosage() { self.radiation.triggers = []; self.radiation.rate = 0; self.radiation.ratepercent = 0; self.radiation.total = 0; self.radiation.totalpercent = 0; var_0 = 1; var_1 = 0; var_2 = 1100000 / ( 60 * var_0 ); var_3 = 200000; var_4 = var_2 - var_1; for (;;) { var_5 = []; for ( var_6 = 0; var_6 < self.radiation.triggers.size; var_6++ ) { var_7 = self.radiation.triggers[var_6]; var_8 = distance( self.origin, var_7.origin ) - 15; var_5[var_6] = var_2 - var_2 / var_7.radius * var_8; } var_9 = 0; for ( var_6 = 0; var_6 < var_5.size; var_6++ ) var_9 = var_9 + var_5[var_6]; if ( var_9 < var_1 ) var_9 = var_1; if ( var_9 > var_2 ) var_9 = var_2; self.radiation.rate = var_9; self.radiation.ratepercent = ( var_9 - var_1 ) / var_4 * 100; if ( self.radiation.super_dose ) { var_9 = var_2; self.radiation.ratepercent = 100; } if ( self.radiation.ratepercent > 25 ) { self.radiation.total = self.radiation.total + var_9; self.radiation.totalpercent = self.radiation.total / var_3 * 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_3 * 100; } wait( var_0 ); } } updateradiationshock() { var_0 = 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_0 ); } } 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; } } 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; } } playradiationsound() { wait 0.05; var_0 = spawn( "script_origin", ( 0, 0, 0 ) ); var_0.origin = self.origin; var_0.angles = self.angles; var_0 linkto( self ); var_1 = self.radiation.sound; for (;;) { if ( var_1 != self.radiation.sound ) { var_0 stoploopsound(); if ( isdefined( self.radiation.sound ) && self.radiation.sound != "none" ) var_0 playloopsound( self.radiation.sound ); } var_1 = self.radiation.sound; wait 0.05; } } updateradiationratepercent() { var_0 = 0.05; var_1 = newclienthudelem( self ); var_1.fontscale = 1.2; var_1.x = 670; var_1.y = 350; var_1.alignx = "right"; var_1.label = ""; var_1.alpha = 0; for (;;) { var_1.label = self.radiation.ratepercent; wait( var_0 ); } } updateradiationdosimeter() { var_0 = 0.028; var_1 = 100; var_2 = 1; var_3 = var_1 - var_0; var_4 = self.origin; var_5 = newclienthudelem( self ); var_5.fontscale = 1.2; var_5.x = 676; var_5.y = 360; var_5.alpha = 0; var_5.alignx = "right"; var_5.label = &"SCOUTSNIPER_MRHR"; var_5 thread updateradiationdosimetercolor( self ); for (;;) { if ( self.radiation.rate <= var_0 ) { var_6 = randomfloatrange( -0.001, 0.001 ); var_5 setvalue( var_0 + var_6 ); } else if ( self.radiation.rate > var_1 ) var_5 setvalue( var_1 ); else var_5 setvalue( self.radiation.rate ); wait( var_2 ); } } updateradiationdosimetercolor( var_0 ) { var_1 = 0.05; for (;;) { var_2 = 1; var_3 = 0.13; while ( var_0.radiation.rate >= 100 ) { if ( var_2 <= 0 || var_2 >= 1 ) var_3 = var_3 * -1; var_2 = var_2 + var_3; if ( var_2 <= 0 ) var_2 = 0; if ( var_2 >= 1 ) var_2 = 1; self.color = ( 1, var_2, var_2 ); wait( var_1 ); } self.color = ( 1, 1, 1 ); wait( var_1 ); } } updateradiationblackout() { level endon( "special_op_terminated" ); self endon( "death" ); var_0 = newclienthudelem( self ); var_0.x = 0; var_0.y = 0; var_0 setshader( "black", 640, 480 ); var_0.alignx = "left"; var_0.aligny = "top"; var_0.horzalign = "fullscreen"; var_0.vertalign = "fullscreen"; var_0.alpha = 0; var_1 = 1; var_2 = 4; var_3 = 0.25; var_4 = 1; var_5 = 25; var_6 = 100; var_7 = 0; for (;;) { while ( self.radiation.totalpercent > 25 && self.radiation.ratepercent > 25 ) { var_8 = var_6 - var_5; var_7 = ( self.radiation.totalpercent - var_5 ) / var_8; if ( var_7 < 0 ) var_7 = 0; else if ( var_7 > 1 ) var_7 = 1; var_9 = var_2 - var_1; var_10 = var_1 + var_9 * ( 1 - var_7 ); var_11 = var_4 - var_3; var_12 = var_3 + var_11 * var_7; var_13 = 7.2 * var_12; var_14 = var_7 * 0.5; var_15 = 7.2 * var_14; if ( var_7 == 1 ) break; var_16 = var_10 / 2; var_0 fadeinblackout( var_16, var_12, var_13, self ); var_0 fadeoutblackout( var_16, var_14, var_15, self ); wait( var_7 * 0.5 ); } if ( var_7 == 1 ) break; if ( var_0.alpha != 0 ) var_0 fadeoutblackout( 1, 0, 0, self ); wait 0.05; } var_0 fadeinblackout( 2, 1, 6, self ); thread radiation_kill(); } radiation_kill() { self.specialdamage = 1; self.specialdeath = 1; self.radiationdeath = 1; if ( !maps\_utility::kill_wrapper() ) return; waittillframeend; var_0 = &"SCRIPT_RADIATION_DEATH"; setdvar( "ui_deadquote", var_0 ); } fadeinblackout( var_0, var_1, var_2, var_3 ) { self fadeovertime( var_0 ); self.alpha = var_1; var_3 setblurforplayer( var_2, var_0 ); wait( var_0 ); } fadeoutblackout( var_0, var_1, var_2, var_3 ) { self fadeovertime( var_0 ); self.alpha = var_1; var_3 setblurforplayer( var_2, var_0 ); wait( var_0 ); } 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; } }