2class BotEventHuntedTargetInSight : BotEventBase
8class BotEventHuntedTargetLost : BotEventBase
15class BotHunt
extends BotStateBase
20 ref BotHunt_Tracking m_Tracking;
21 ref BotHunt_Hunting m_Hunting;
23 void BotHunt (Bot bot = NULL, BotStateBase parent = NULL)
26 m_FSM =
new BotFSM(
this);
28 m_Tracking =
new BotHunt_Tracking(m_Bot,
this);
29 m_Hunting =
new BotHunt_Hunting(m_Bot,
this);
32 BotEventBase __InSight__ =
new BotEventHuntedTargetInSight;
33 BotEventBase __Lost__ =
new BotEventHuntedTargetLost;
36 m_FSM.AddTransition(
new BotTransition( m_Tracking, __InSight__, m_Hunting));
37 m_FSM.AddTransition(
new BotTransition( m_Hunting, __Lost__ , m_Tracking));
39 m_FSM.SetInitialState(m_Tracking);
44 m_Target = BotSelectNearestTarget(GetPlayerOwner());
47 botDebugPrint(
"[bot] + " +
m_Owner +
" hunt SelectTarget target=" +
m_Target);
50 override void OnEntry (BotEventBase e)
58 override void OnExit (BotEventBase e)
82 Print(
"Searching...");
89class BotHunt_Tracking
extends BotStateBase
92 bool m_TargetInSight =
false;
93 bool m_TargetLost =
false;
94 bool m_Tracking =
true;
96 override void OnEntry (BotEventBase e)
100 m_TargetLost =
false;
101 m_TargetInSight =
false;
105 override void OnAbort (BotEventBase e)
107 m_TargetLost =
false;
108 m_TargetInSight =
false;
114 override void OnExit (BotEventBase e)
116 m_TargetLost =
false;
117 m_TargetInSight =
false;
128 vector targetPos =
m_Target.GetPosition();
129 botDebugPrint(
"[bot] + " +
m_Owner +
" hunt Tracking target=" +
m_Target +
" pos=" + targetPos);
135 m_TargetInSight =
true;
139 m_TargetInSight =
false;
142 if (!m_TargetInSight)
144 GetPlayerOwner().GetInputController().OverrideMovementSpeed(
true, 1);
145 GetPlayerOwner().GetInputController().OverrideMovementAngle(
true, 1);
149 GetPlayerOwner().GetInputController().OverrideMovementSpeed(
false, 0);
150 GetPlayerOwner().GetInputController().OverrideMovementAngle(
false, 0);
164 m_TargetInSight =
false;
167 GetPlayerOwner().GetInputController().OverrideMovementSpeed(
false, 0);
168 GetPlayerOwner().GetInputController().OverrideMovementAngle(
false, 0);
174class BotHunt_Hunting
extends BotStateBase
178 override void OnEntry (BotEventBase e)
183 override void OnAbort (BotEventBase e) { super.OnAbort(e); }
185 override void OnExit (BotEventBase e)
195Man BotSelectNearestTarget (
EntityAI bot)
218 vector pos = bot.GetPosition();
223 g_Game.GetObjectsAtPosition(pos, 100.0, objects, proxyCargos);
225 float min_dist = 1234567.0;
227 int c = objects.Count();
228 for (
int i = 0; i < c; i++)
244 botDebugPrint(
"[bot] + " + bot +
" BotSelectNearestTarget idx=" + min_index +
" dist=" + min_dist +
" obj=" + o);
245 return Man.Cast( objects.Get(min_index) );
ref ActionTarget m_Target
HandStateEquipped OnEntry
enum ProcessDirectDamageFlags m_Owner
class WeaponChambering_Chamber_OnEntry extends WeaponChambering_Base OnExit
class WeaponFireWithEject extends WeaponFire m_dtAccumulator
override void OnEntry(HandEventBase e)
override void OnExit(WeaponEventBase e)
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
static proto native float Distance(vector v1, vector v2)
Returns the distance between tips of two 3D vectors.
proto void Print(void var)
Prints content of variable to console/log.
vector GetPosition()
Get the world position of the Effect.