1 #using scripts\codescripts\struct; 
    3 #using scripts\shared\array_shared; 
    4 #using scripts\shared\callbacks_shared; 
    5 #using scripts\shared\system_shared; 
    6 #using scripts\shared\sound_shared; 
    8 #insert scripts\shared\shared.gsh; 
   24     if ( isdefined( level._levelSpecificAmbient ) )
 
   26         thread [[level._levelSpecificAmbient]]( localClientNum );
 
   33     if(isdefined(point.script_fxid))
 
   35         fx_id = point.script_fxid;
 
   40     if(isdefined(point.angles))
 
   42         point.forward = anglesToForward(point.angles);
 
   43         point.up = anglesToUp(point.angles);
 
   47         point.angles = (0, 0, 0);
 
   48         point.forward = (0, 0, 0);
 
   52     if(point.targetname == 
"flak_fire_fx")
 
   57     if(point.targetname == 
"fake_fire_fx")
 
   76     point.is_firing = 
false;
 
   82         timer = randomFloatRange(min_burst_time, max_burst_time);
 
   85             point.is_firing = 
true;
 
   86             playFX(0, level._effect[point.fx_id], point.origin, point.forward, point.up);
 
   93         point.is_firing = 
false;
 
   94         wait(randomFloatRange(min_delay, max_delay));
 
  105     if(isdefined(point.angles))
 
  107         pointangles = point.angles;
 
  111         pointangles = (0, 0, 0);
 
  116         time = randomFloatRange(0.5, 2);
 
  119         random_angle = (randomIntRange(min_pitch, max_pitch) * -1, randomInt(360), 0);
 
  121         forward = anglesToForward(random_angle);
 
  122         up = anglesToUp(random_angle);
 
  124         diff_forward = (forward - point.forward) / steps;
 
  125         diff_up = (up - point.up) / steps;
 
  127         for(i = 0; i < steps; i++)
 
  129             point.forward += diff_forward;
 
  135         point.forward = forward;
 
  147     if(isdefined(point.script_mindist))
 
  149         min_dist = point.script_mindist;
 
  152     if(isdefined(point.script_maxdist))
 
  154         max_dist = point.script_maxdist;
 
  157     min_burst_time = 0.25;
 
  164         if( !point.is_firing )
 
  170         fxpos = point.origin + VectorScale(point.forward, randomIntRange(min_dist, max_dist));
 
  172         playFX(0, level._effect[
"flak_burst_single"], fxpos);
 
  174         if(isdefined(level.timeofday) && (level.timeofday == 
"evening" || level.timeofday == 
"night"))
 
  176             playFX(0, level._effect[
"flak_cloudflash_night"], fxpos);
 
  179         wait randomFloatRange(min_burst_time, max_burst_time);
 
  192     fireSound = undefined;
 
  193     weapType  = undefined;
 
  195     burstMin = undefined;
 
  196     burstMax = undefined;
 
  197     betweenShotsMin = undefined;
 
  198     betweenShotsMax = undefined;
 
  199     reloadTimeMin = undefined;
 
  200     reloadTimeMax = undefined;
 
  201     soundChance = undefined;
 
  203     if(!isdefined(point.weaponinfo))
 
  205         point.weaponinfo = 
"axis_turret";
 
  209     switch(point.weaponinfo)
 
  211         case "allies_assault":
 
  213             if(isdefined(level.allies_team) && (level.allies_team == 
"marines"))
 
  215                 fireSound = 
"weap_bar_fire";
 
  219                 fireSound = 
"weap_dp28_fire_plr";
 
  224             betweenShotsMin = 0.05;
 
  225             betweenShotsMax = 0.08;
 
  229             weapType = 
"assault";
 
  234             if(isdefined(level.axis_team) && (level.axis_team == 
"german"))
 
  236                 fireSound = 
"weap_mp44_fire";
 
  240                 fireSound = 
"weap_type99_fire";
 
  245             betweenShotsMin = 0.05;
 
  246             betweenShotsMax = 0.08;
 
  250             weapType = 
"assault";
 
  255             if(isdefined(level.allies_team) && (level.allies_team == 
"marines"))
 
  257                 fireSound = 
"weap_m1garand_fire";
 
  261                 fireSound = 
"weap_mosinnagant_fire";
 
  266             betweenShotsMin = 0.8;
 
  267             betweenShotsMax = 1.3;
 
  276             if(isdefined(level.axis_team) && (level.axis_team == 
"german"))
 
  278                 fireSound = 
"weap_kar98k_fire";
 
  282                 fireSound = 
"weap_arisaka_fire";
 
  287             betweenShotsMin = 0.8;
 
  288             betweenShotsMax = 1.3;
 
  297             if(isdefined(level.allies_team) && (level.allies_team == 
"marines"))
 
  299                 fireSound = 
"weap_thompson_fire";
 
  303                 fireSound = 
"weap_ppsh_fire";
 
  308             betweenShotsMin = 0.08;
 
  309             betweenShotsMax = 0.12;
 
  318             if(isdefined(level.axis_team) && (level.axis_team == 
"german"))
 
  320                 fireSound = 
"weap_mp40_fire";
 
  324                 fireSound = 
"weap_type100_fire";
 
  329             betweenShotsMin = 0.08;
 
  330             betweenShotsMax = 0.12;
 
  337         case "allies_turret":
 
  339             if(isdefined(level.allies_team) && (level.allies_team == 
"marines"))
 
  341                 fireSound = 
"weap_30cal_fire";
 
  345                 fireSound = 
"weap_dp28_fire_plr";
 
  350             betweenShotsMin = 0.05;
 
  351             betweenShotsMax = 0.08;
 
  360             if(isdefined(level.axis_team) && (level.axis_team == 
"german"))
 
  362                 fireSound = 
"weap_bar_fire"; 
 
  366                 fireSound = 
"weap_type92_fire";
 
  371             betweenShotsMin = 0.05;
 
  372             betweenShotsMax = 0.08;
 
  380             ASSERTMSG(
"Ambient Fakefire: Weapon Info '" + point.weaponinfo + 
"' is not recognized.");
 
  386         burst = randomIntRange(burstMin, burstMax);
 
  388         for(i = 0; i < burst; i++)
 
  392             target = point.origin + VectorScale(anglesToForward(point.angles + (-3 + randomInt(6), -5 + randomInt(10), 0)), traceDist);
 
  395             if ( randomInt(100) <= 20 )
 
  397                 bulletTracer(point.origin, target);
 
  400             playFX(0, level._effect[point.fx_id], point.origin, point.forward);
 
  408             wait (randomFloatRange(betweenShotsMin, betweenShotsMax));
 
  411         wait (randomFloatRange(reloadTimeMin, reloadTimeMax));
 
  418     fan_array = GetEntArray(clientNum, 
"ceiling_fan", 
"targetname");
 
  419     if( isdefined(fan_array) )
 
  421     /#  println(
"**********fan array is defined, size: " + fan_array.size); #/
 
  422         array::thread_all( fan_array,&
spin_fan );
 
  428     self endon(
"entityshutdown");
 
  432     if ( !isdefined ( 
self.speed ) )
 
  434         self.speed = RandomIntRange(1, 100);
 
  435         self.speed = (
self.speed % 10) + 1;
 
  437     if ( 
self.speed < 1 )
 
  439         self.speed = RandomIntRange(1, 100);
 
  440         self.speed = (
self.speed % 10) + 1;
 
  445     wobble = 
self.script_noteworthy;
 
  446     if( isdefined(wobble) )
 
  448         if( wobble == 
"wobble" )
 
  451             self.wobble_speed = 
self.speed * 0.5;
 
  462             self RotateYaw(180, 
self.speed);
 
  463             self waittill(
"rotatedone");
 
  467             self RotateYaw(340, 
self.speed);
 
  468             self waittill(
"rotatedone");
 
  469             self RotateYaw(20, 
self.wobble_speed);
 
  470             self waittill(
"rotatedone");
 
  480     curr_time = GetSystemTime();
 
  483     hours = curr_time[0];
 
  492     minutes = curr_time[1];
 
  493     seconds = curr_time[2];
 
  500     hour_hand = GetEntArray(clientNum, 
"hour_hand", 
"targetname");
 
  502     hour_values[
"hand_time"] = hours;
 
  503     hour_values[
"rotate"] = 30;
 
  504     hour_values[
"rotate_bit"] = 30 / 3600;
 
  506     hour_values[
"first_rotate"] = ((minutes * 60) + seconds) * hour_values[
"rotate_bit"];
 
  511     minute_hand = GetEntArray(clientNum, 
"minute_hand", 
"targetname");
 
  513     minute_values[
"hand_time"] = minutes;
 
  514     minute_values[
"rotate"] = 6;
 
  515     minute_values[
"rotate_bit"] = 6 / 60;
 
  517     minute_values[
"first_rotate"] = seconds * minute_values[
"rotate_bit"];
 
  520     second_hand = GetEntArray(clientNum, 
"second_hand", 
"targetname");
 
  522     second_values[
"hand_time"] = seconds;
 
  523     second_values[
"rotate"] = 6;
 
  524     second_values[
"rotate_bit"] = 6;
 
  526     hour_hand_array = GetEntArray(clientNum, 
"hour_hand", 
"targetname");
 
  527     if( isdefined(hour_hand_array) )
 
  529     /#  println(
"**********hour_hand_array is defined, size: " + hour_hand_array.size); #/
 
  530         array::thread_all( hour_hand_array,&
clock_run, hour_values );
 
  532     minute_hand_array = GetEntArray(clientNum, 
"minute_hand", 
"targetname");
 
  533     if( isdefined(minute_hand_array) )
 
  535     /#  println(
"**********minute_hand_array is defined, size: " + minute_hand_array.size); #/
 
  536         array::thread_all( minute_hand_array,&
clock_run, minute_values );
 
  538     second_hand_array = GetEntArray(clientNum, 
"second_hand", 
"targetname");
 
  539     if( isdefined(second_hand_array) )
 
  541     /#  println(
"**********second_hand_array is defined, size: " + second_hand_array.size); #/
 
  542         array::thread_all( second_hand_array,&
clock_run, second_values );
 
  549     self endon(
"entityshutdown");
 
  552     if( isdefined(
self.script_noteworthy) )
 
  554         hour = time_values[
"hand_time"];
 
  555         curr_time = GetSystemTime(1);
 
  557         switch( ToLower(
self.script_noteworthy) )
 
  560             hour = curr_time[0] - 10;
 
  563             hour = curr_time[0] - 9;
 
  566             hour = curr_time[0] - 8;
 
  569             hour = curr_time[0] - 7;
 
  572             hour = curr_time[0] - 6;
 
  575             hour = curr_time[0] - 5;
 
  578             hour = curr_time[0] - 4;
 
  581             hour = curr_time[0] - 3;
 
  587             hour = curr_time[0] + 1;
 
  590             hour = curr_time[0] + 2;
 
  593             hour = curr_time[0] + 3;
 
  596             hour = curr_time[0] + 7;
 
  599             hour = curr_time[0] + 8;
 
  611         time_values[
"hand_time"] = hour;
 
  614     self RotatePitch(time_values[
"hand_time"] * time_values[
"rotate"], 0.05);
 
  615     self waittill(
"rotatedone");
 
  617     if( isdefined(time_values[
"first_rotate"]) )
 
  619         self RotatePitch(time_values[
"first_rotate"], 0.05);
 
  620         self waittill(
"rotatedone");
 
  623     prev_time = GetSystemTime();
 
  627         curr_time = GetSystemTime();
 
  628         if( prev_time != curr_time )
 
  630             self RotatePitch(time_values[
"rotate_bit"], 0.05);
 
  632             prev_time = curr_time;
 
  642     spoon_spinners = GetEntArray(clientNum, 
"spinner1",
"targetname");
 
  643     flat_spinners = GetEntArray( clientNum, 
"spinner2",
"targetname");
 
  645     if( isdefined( spoon_spinners ))
 
  647     /#  println(
"**********spoon_spinners is defined, size: " + spoon_spinners.size);   #/
 
  651     if( isdefined( flat_spinners ))
 
  653     /#  println(
"**********flat_spinners is defined, size: " + flat_spinners.size);     #/
 
  662     self endon( 
"entityshutdown" );
 
  664     if(isdefined( 
self.script_float))
 
  666         model_speed = 
self.script_float;
 
  675         speed = RandomFloatRange( model_speed * .6, model_speed);
 
  676         self RotateYaw( 1200, speed);
 
  677         self waittill (
"rotatedone");
 
  684     self endon( 
"entityshutdown" );
 
  686     if(isdefined( 
self.script_int))
 
  688         model_direction_change = 
self.script_int;
 
  692         model_direction_change = 25;
 
  695     if(isdefined( 
self.script_float))
 
  697         model_speed = 
self.script_float;
 
  706         direction_change = model_direction_change + RandomIntRange(-11, 11);
 
  707         speed_change = RandomFloatRange(model_speed * .3, model_speed);
 
  709         self RotateYaw( direction_change, speed_change);
 
  710         self waittill (
"rotatedone");
 
  711         self RotateYaw( (direction_change * -1), speed_change);
 
  712         self waittill (
"rotatedone");