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;
29 if(isdefined(point.script_fxid))
31 fx_id = point.script_fxid;
36 if(isdefined(point.angles))
38 point.forward = anglesToForward(point.angles);
39 point.up = anglesToUp(point.angles);
43 point.angles = (0, 0, 0);
44 point.forward = (0, 0, 0);
48 if(point.targetname ==
"flak_fire_fx")
53 if(point.targetname ==
"fake_fire_fx")
72 point.is_firing =
false;
78 timer = randomFloatRange(min_burst_time, max_burst_time);
81 point.is_firing =
true;
82 playFX(0, level._effect[point.fx_id], point.origin, point.forward, point.up);
89 point.is_firing =
false;
90 wait(randomFloatRange(min_delay, max_delay));
101 if(isdefined(point.angles))
103 pointangles = point.angles;
107 pointangles = (0, 0, 0);
112 time = randomFloatRange(0.5, 2);
115 random_angle = (randomIntRange(min_pitch, max_pitch) * -1, randomInt(360), 0);
117 forward = anglesToForward(random_angle);
118 up = anglesToUp(random_angle);
120 diff_forward = (forward - point.forward) / steps;
121 diff_up = (up - point.up) / steps;
123 for(i = 0; i < steps; i++)
125 point.forward += diff_forward;
131 point.forward = forward;
143 if(isdefined(point.script_mindist))
145 min_dist = point.script_mindist;
148 if(isdefined(point.script_maxdist))
150 max_dist = point.script_maxdist;
153 min_burst_time = 0.25;
160 if( !point.is_firing )
166 fxpos = point.origin + VectorScale(point.forward, randomIntRange(min_dist, max_dist));
168 playFX(0, level._effect[
"flak_burst_single"], fxpos);
170 if(isdefined(level.timeofday) && (level.timeofday ==
"evening" || level.timeofday ==
"night"))
172 playFX(0, level._effect[
"flak_cloudflash_night"], fxpos);
175 wait randomFloatRange(min_burst_time, max_burst_time);
188 fireSound = undefined;
189 weapType = undefined;
191 burstMin = undefined;
192 burstMax = undefined;
193 betweenShotsMin = undefined;
194 betweenShotsMax = undefined;
195 reloadTimeMin = undefined;
196 reloadTimeMax = undefined;
197 soundChance = undefined;
199 if(!isdefined(point.weaponinfo))
201 point.weaponinfo =
"axis_turret";
205 switch(point.weaponinfo)
207 case "allies_assault":
209 if(isdefined(level.allies_team) && (level.allies_team ==
"marines"))
211 fireSound =
"weap_bar_fire";
215 fireSound =
"weap_dp28_fire_plr";
220 betweenShotsMin = 0.05;
221 betweenShotsMax = 0.08;
225 weapType =
"assault";
230 if(isdefined(level.axis_team) && (level.axis_team ==
"german"))
232 fireSound =
"weap_mp44_fire";
236 fireSound =
"weap_type99_fire";
241 betweenShotsMin = 0.05;
242 betweenShotsMax = 0.08;
246 weapType =
"assault";
251 if(isdefined(level.allies_team) && (level.allies_team ==
"marines"))
253 fireSound =
"weap_m1garand_fire";
257 fireSound =
"weap_mosinnagant_fire";
262 betweenShotsMin = 0.8;
263 betweenShotsMax = 1.3;
272 if(isdefined(level.axis_team) && (level.axis_team ==
"german"))
274 fireSound =
"weap_kar98k_fire";
278 fireSound =
"weap_arisaka_fire";
283 betweenShotsMin = 0.8;
284 betweenShotsMax = 1.3;
293 if(isdefined(level.allies_team) && (level.allies_team ==
"marines"))
295 fireSound =
"weap_thompson_fire";
299 fireSound =
"weap_ppsh_fire";
304 betweenShotsMin = 0.08;
305 betweenShotsMax = 0.12;
314 if(isdefined(level.axis_team) && (level.axis_team ==
"german"))
316 fireSound =
"weap_mp40_fire";
320 fireSound =
"weap_type100_fire";
325 betweenShotsMin = 0.08;
326 betweenShotsMax = 0.12;
333 case "allies_turret":
335 if(isdefined(level.allies_team) && (level.allies_team ==
"marines"))
337 fireSound =
"weap_30cal_fire";
341 fireSound =
"weap_dp28_fire_plr";
346 betweenShotsMin = 0.05;
347 betweenShotsMax = 0.08;
356 if(isdefined(level.axis_team) && (level.axis_team ==
"german"))
358 fireSound =
"weap_bar_fire";
362 fireSound =
"weap_type92_fire";
367 betweenShotsMin = 0.05;
368 betweenShotsMax = 0.08;
376 ASSERTMSG(
"Ambient Fakefire: Weapon Info '" + point.weaponinfo +
"' is not recognized.");
382 burst = randomIntRange(burstMin, burstMax);
384 for(i = 0; i < burst; i++)
388 target = point.origin + VectorScale(anglesToForward(point.angles + (-3 + randomInt(6), -5 + randomInt(10), 0)), traceDist);
391 if ( randomInt(100) <= 20 )
393 bulletTracer(point.origin, target);
396 playFX(0, level._effect[point.fx_id], point.origin, point.forward);
404 wait (randomFloatRange(betweenShotsMin, betweenShotsMax));
407 wait (randomFloatRange(reloadTimeMin, reloadTimeMax));
414 fan_array = GetEntArray(clientNum,
"ceiling_fan",
"targetname");
415 if( isdefined(fan_array) )
417 array::thread_all( fan_array,&
spin_fan );
423 self endon(
"entityshutdown");
427 if ( !isdefined (
self.speed ) )
429 self.speed = RandomIntRange(1, 100);
430 self.speed = (
self.speed % 10) + 1;
432 if (
self.speed < 1 )
434 self.speed = RandomIntRange(1, 100);
435 self.speed = (
self.speed % 10) + 1;
440 wobble =
self.script_noteworthy;
441 if( isdefined(wobble) )
443 if( wobble ==
"wobble" )
446 self.wobble_speed =
self.speed * 0.5;
457 self RotateYaw(180,
self.speed);
458 self waittill(
"rotatedone");
462 self RotateYaw(340,
self.speed);
463 self waittill(
"rotatedone");
464 self RotateYaw(20,
self.wobble_speed);
465 self waittill(
"rotatedone");
475 curr_time = GetSystemTime();
478 hours = curr_time[0];
487 minutes = curr_time[1];
488 seconds = curr_time[2];
495 hour_hand = GetEntArray(clientNum,
"hour_hand",
"targetname");
497 hour_values[
"hand_time"] = hours;
498 hour_values[
"rotate"] = 30;
499 hour_values[
"rotate_bit"] = 30 / 3600;
501 hour_values[
"first_rotate"] = ((minutes * 60) + seconds) * hour_values[
"rotate_bit"];
506 minute_hand = GetEntArray(clientNum,
"minute_hand",
"targetname");
508 minute_values[
"hand_time"] = minutes;
509 minute_values[
"rotate"] = 6;
510 minute_values[
"rotate_bit"] = 6 / 60;
512 minute_values[
"first_rotate"] = seconds * minute_values[
"rotate_bit"];
515 second_hand = GetEntArray(clientNum,
"second_hand",
"targetname");
517 second_values[
"hand_time"] = seconds;
518 second_values[
"rotate"] = 6;
519 second_values[
"rotate_bit"] = 6;
521 hour_hand_array = GetEntArray(clientNum,
"hour_hand",
"targetname");
522 if( isdefined(hour_hand_array) )
524 array::thread_all( hour_hand_array,&
clock_run, hour_values );
526 minute_hand_array = GetEntArray(clientNum,
"minute_hand",
"targetname");
527 if( isdefined(minute_hand_array) )
529 array::thread_all( minute_hand_array,&
clock_run, minute_values );
531 second_hand_array = GetEntArray(clientNum,
"second_hand",
"targetname");
532 if( isdefined(second_hand_array) )
534 array::thread_all( second_hand_array,&
clock_run, second_values );
541 self endon(
"entityshutdown");
544 if( isdefined(
self.script_noteworthy) )
546 hour = time_values[
"hand_time"];
547 curr_time = GetSystemTime(1);
549 switch( ToLower(
self.script_noteworthy) )
552 hour = curr_time[0] - 10;
555 hour = curr_time[0] - 9;
558 hour = curr_time[0] - 8;
561 hour = curr_time[0] - 7;
564 hour = curr_time[0] - 6;
567 hour = curr_time[0] - 5;
570 hour = curr_time[0] - 4;
573 hour = curr_time[0] - 3;
579 hour = curr_time[0] + 1;
582 hour = curr_time[0] + 2;
585 hour = curr_time[0] + 3;
588 hour = curr_time[0] + 7;
591 hour = curr_time[0] + 8;
603 time_values[
"hand_time"] = hour;
606 self RotatePitch(time_values[
"hand_time"] * time_values[
"rotate"], 0.05);
607 self waittill(
"rotatedone");
609 if( isdefined(time_values[
"first_rotate"]) )
611 self RotatePitch(time_values[
"first_rotate"], 0.05);
612 self waittill(
"rotatedone");
615 prev_time = GetSystemTime();
619 curr_time = GetSystemTime();
620 if( prev_time != curr_time )
622 self RotatePitch(time_values[
"rotate_bit"], 0.05);
624 prev_time = curr_time;
634 spoon_spinners = GetEntArray(clientNum,
"spinner1",
"targetname");
635 flat_spinners = GetEntArray( clientNum,
"spinner2",
"targetname");
637 if( isdefined( spoon_spinners ))
642 if( isdefined( flat_spinners ))
652 self endon(
"entityshutdown" );
654 if(isdefined(
self.script_float))
656 model_speed =
self.script_float;
665 speed = RandomFloatRange( model_speed * .6, model_speed);
666 self RotateYaw( 1200, speed);
667 self waittill (
"rotatedone");
674 self endon(
"entityshutdown" );
676 if(isdefined(
self.script_int))
678 model_direction_change =
self.script_int;
682 model_direction_change = 25;
685 if(isdefined(
self.script_float))
687 model_speed =
self.script_float;
696 direction_change = model_direction_change + RandomIntRange(-11, 11);
697 speed_change = RandomFloatRange(model_speed * .3, model_speed);
699 self RotateYaw( direction_change, speed_change);
700 self waittill (
"rotatedone");
701 self RotateYaw( (direction_change * -1), speed_change);
702 self waittill (
"rotatedone");