8[
Obsolete(
"This behavior is no longer used and might be deleted in future. It is replaced by SCR_AIObserveThreatSystemBehavior.")]
24 ref SCR_BTParam<vector>
m_vPosition =
new SCR_BTParam<vector>(
"Position");
25 ref SCR_BTParam<float>
m_fDuration =
new SCR_BTParam<float>(
"Duration");
26 ref SCR_BTParam<float>
m_fRadius =
new SCR_BTParam<float>(
"Radius");
28 ref SCR_BTParam<float>
m_fDelay =
new SCR_BTParam<float>(
"Delay");
30 ref SCR_BTParam<bool>
m_bLookedOnce =
new SCR_BTParam<bool>(
"LookedOnce");
40 if (!utility || !utility.GetAIAgent())
43 m_sBehaviorTree =
"{AD1A56AE2A7ADFE8}AI/BehaviorTrees/Chimera/Soldier/ObservePositionBehavior.bt";
47 SetIsUniqueInActionQueue(
true);
53 IEntity controlledEntity = utility.GetAIAgent().GetControlledEntity();
60 m_fPriority = SCR_AIActionBase.PRIORITY_BEHAVIOR_OBSERVE_UNKNOWN_FIRE_HIGH_PRIORITY;
69 bool inVehicleOrTurret = utility.m_AIInfo.HasUnitState(EUnitState.IN_VEHICLE) || utility.m_AIInfo.HasUnitState(EUnitState.IN_TURRET);
96 duration_s =
Math.RandomFloat(0.7*duration_s, 1.3*duration_s);
103 delay_s =
Math.RandomFloat(0.7*delay_s, 1.3*delay_s);
110 float currentTime_ms =
GetGame().GetWorld().GetWorldTime();
124 super.OnActionSelected();
126 if (
Math.RandomFloat01() < 0.2)
128 if (!
m_Utility.m_CommsHandler.CanBypass())
139 m_Utility.m_CombatMoveState.EnableAiming(
true);
147 float currentTime_ms =
GetGame().GetWorld().GetWorldTime();
156 return PRIORITY_BEHAVIOR_OBSERVE_LOW_PRIORITY;
164 vector vDirOld =
vector.Direction(myWorldPos, oldWorldPos);
165 vector vDirNew =
vector.Direction(myWorldPos, newWorldPos);
166 float cosAngle =
vector.Dot(vDirOld, vDirNew);
168 return cosAngle < 0.707;
175 static ref
TStringArray s_aVarsOut = {
"Position",
"Duration",
"Radius",
"UseBinoculars",
"Delay",
"UseMovement",
"LookedOnce"};
183 static ref
TStringArray s_aVarsIn = {
"Position",
"Duration",
"Radius",
"UseBinoculars",
"Delay",
"UseMovement",
"LookedOnce"};
ArmaReforgerScripted GetGame()
ref SCR_BTParam< float > m_fPriorityLevel
enum EAIActionFailReason PRIORITY_LEVEL_NORMAL
ResourceName m_sBehaviorTree
void Fail(bool doNotCompleteWaypoint)
void SCR_AIActivityBase(SCR_AIGroupUtilityComponent utility, AIWaypoint relatedWaypoint)
enum SCR_EAIActivityCause m_Utility
void SCR_AIBehaviorBase(SCR_AIUtilityComponent utility, SCR_AIActivityBase groupActivity)
override TStringArray GetVariablesIn()
override TStringArray GetVariablesOut()
void SCR_AITalkRequest(ECommunicationType type, IEntity entity, vector pos, int enumSignal, bool transmitIfNoReceivers, bool transmitIfPassenger, SCR_EAITalkRequestPreset preset)
proto external vector GetOrigin()
static override bool VisibleInPalette()
ref SCR_BTParam< float > m_fRadius
ref SCR_BTParam< float > m_fDelay
const float DELAY_S_PER_METER
const float HIGH_PRIORITY_MAX_DISTANCE
override void OnActionSelected()
float m_fDeleteActionTime_ms
const float DIRECTION_SPAN_DEG
override float CustomEvaluate()
void SCR_AIObserveUnknownFireBehavior(SCR_AIUtilityComponent utility, SCR_AIActivityBase groupActivity, vector posWorld, bool useMovement, float priorityLevel=PRIORITY_LEVEL_NORMAL, float priority=PRIORITY_BEHAVIOR_OBSERVE_UNKNOWN_FIRE)
void SetUseMovement(bool value)
ref SCR_BTParam< bool > m_bLookedOnce
static bool IsNewPositionMoreRelevant(vector myWorldPos, vector oldWorldPos, vector newWorldPos)
ref SCR_BTParam< bool > m_bUseMovement
const float DURATION_S_PER_METER
void InitParameters(vector position, bool useMovement)
float m_fCombatMoveLogicTimeout
const float USE_BINOCULARS_DISTANCE_THRESHOLD
ref SCR_BTParam< bool > m_bUseBinoculars
void InitTimeout(float timeout_s)
const float DURATION_MIN_S
ref SCR_BTParam< float > m_fDuration
ref SCR_BTParam< vector > m_vPosition
void InitTiming(float distance)
array< string > TStringArray