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");