@@ -17,6 +17,7 @@ function NativeHumanAI:Create(Owner)
17
17
Members .fire = false ;
18
18
Members .groundContact = 5 ;
19
19
Members .flying = false ;
20
+ Members .running = false ;
20
21
21
22
Members .squadShoot = false ;
22
23
Members .useMedikit = false ;
@@ -29,6 +30,9 @@ function NativeHumanAI:Create(Owner)
29
30
Members .SquadShootTimer = Timer ();
30
31
Members .SquadShootDelay = math.random (50 ,100 );
31
32
33
+ Members .RunStateTimer = Timer ();
34
+ Members .RunStateTimer :SetSimTimeLimitMS (math.random (2000 ,5000 ));
35
+
32
36
Members .AlarmTimer = Timer ();
33
37
Members .AlarmTimer :SetSimTimeLimitMS (400 );
34
38
@@ -336,6 +340,18 @@ function NativeHumanAI:Update(Owner)
336
340
end
337
341
end
338
342
343
+ local AlarmPoint = Owner :GetAlarmPoint ();
344
+
345
+ -- If we currently have a target or are alerted, we walk. Otherwise we run
346
+ -- We also have a small random chance to walk for a lil bit
347
+ local wasAlarmed = AlarmPoint .Largest > 0 ;
348
+ if wasAlarmed or self .RunStateTimer :IsPastSimTimeLimit () then
349
+ self .running = self .Target == nil and not wasAlarmed and math.random () < 0.6 ;
350
+ self .RunStateTimer :Reset ();
351
+ end
352
+
353
+ self .Ctrl :SetState (Controller .MOVE_FAST , self .running );
354
+
339
355
self .squadShoot = false ;
340
356
if Owner .MOMoveTarget then
341
357
-- make the last waypoint marker stick to the MO we are following
@@ -547,7 +563,6 @@ function NativeHumanAI:Update(Owner)
547
563
end
548
564
549
565
-- listen and react to AlarmEvents and AlarmPoints
550
- local AlarmPoint = Owner :GetAlarmPoint ();
551
566
if AlarmPoint .Largest > 0 then
552
567
if not self .Target and not self .UnseenTarget then
553
568
self .AlarmPos = Vector (AlarmPoint .X , AlarmPoint .Y );
0 commit comments