DayZ 1.26
DayZ Explorer by KGB
Загрузка...
Поиск...
Не найдено
Класс DayZInfected

Защищенные члены

void ZombieBase ()
 
void Init ()
 
override void OnVariablesSynchronized ()
 synced variable(s) handler
 
override void EOnInit (IEntity other, int extra)
 
override bool IsZombie ()
 
override bool IsDanger ()
 
override bool IsZombieMilitary ()
 
bool IsMale ()
 
override bool CanBeBackstabbed ()
 
override AnimBootsType GetBootsType ()
 
override bool CanBeSkinned ()
 
override bool IsHealthVisible ()
 
override bool IsRefresherSignalingViable ()
 
override bool IsSelfAdjustingTemperature ()
 
override string GetHitComponentForAI ()
 returns hit component for attacking AI
 
override string GetDefaultHitComponent ()
 returns default hit component (fallback)
 
override vector GetDefaultHitPosition ()
 
vector SetDefaultHitPosition (string pSelection)
 
override array< stringGetSuitableFinisherHitComponents ()
 returns suitable hit components for finisher attacks; DEPRECATED
 
int GetMindStateSynced ()
 
int GetOrientationSynced ()
 returns rounded zombie yaw for sync purposes
 
void CommandHandler (float pDt, int pCurrentCommandID, bool pCurrentCommandFinished)
 
void CommandHandlerDebug (float pDt, int pCurrentCommandID, bool pCurrentCommandFinished)
 
void HandleMove (int pCurrentCommandID)
 
void HandleOrientation (float pDt, int pCurrentCommandID)
 
bool HandleDeath (int pCurrentCommandID)
 
bool EvaluateDeathAnimationEx (EntityAI pSource, ZombieHitData data, out int pAnimType, out float pAnimHitDir)
 
bool EvaluateDeathAnimation (EntityAI pSource, string pComponent, string pAmmoType, out int pAnimType, out float pAnimHitDir)
 
int GetVaultType (float height)
 
bool HandleVault (int pCurrentCommandID, DayZInfectedInputController pInputController, float pDt)
 
bool HandleMindStateChange (int pCurrentCommandID, DayZInfectedInputController pInputController, float pDt)
 
void HandleSoundEvents ()
 
AbstractWave ProcessVoiceFX (string pSoundSetName)
 
override void OnSoundVoiceEvent (int event_id, string event_user_string)
 
void ProcessSoundVoiceEvent (AnimSoundVoiceEvent sound_event, out AbstractWave aw)
 
bool FightLogic (int pCurrentCommandID, DayZInfectedInputController pInputController, float pDt)
 
bool ChaseAttackLogic (int pCurrentCommandID, DayZInfectedInputController pInputController, float pDt)
 
bool FightAttackLogic (int pCurrentCommandID, DayZInfectedInputController pInputController, float pDt)
 
int GetAttackPitch (EntityAI target)
 
bool HandleCrawlTransition (int pCurrentCommandID)
 
bool EvaluateCrawlTransitionAnimation (EntityAI pSource, string pComponent, string pAmmoType, out int pAnimType)
 
bool HandleDamageHit (int pCurrentCommandID)
 
bool EvaluateDamageHitAnimation (EntityAI pSource, string pComponent, string pAmmoType, out bool pHeavyHit, out int pAnimType, out float pAnimHitDir)
 selects animation type and direction based on damage system data
 
float ComputeHitDirectionAngle (EntityAI pSource)
 
float ComputeHitDirectionAngleEx (EntityAI pSource, int invertHitDir=0)
 
override void EEHitBy (TotalDamageResult damageResult, int damageType, EntityAI source, int component, string dmgZone, string ammo, vector modelPos, float speedCoef)
 
override void EEHitByRemote (int damageType, EntityAI source, int component, string dmgZone, string ammo, vector modelPos)
 
void DebugSound (string s)
 sound debug messages
 
void EOnContact (IEntity other, Contact extra)
 
override bool CanReceiveAttachment (EntityAI attachment, int slotId)
 
override vector GetCenter ()
 
override bool IsBeingBackstabbed ()
 returns true if backstab is in progress; used for suspending of AI targeting and other useful things besides
 
override void SetBeingBackstabbed (int backstabType)
 
bool IsCrawling ()
 returns true if crawling; 'DayZInfectedCommandCrawl' is only for the transition, after that it remains 'DayZInfectedCommandMove' (unreliable)
 
void OnRecoverFromDeath ()
 
override void AddArrow (Object arrow, int componentIndex, vector closeBonePosWS, vector closeBoneRotWS)
 
override bool IsManagingArrows ()
 
override ArrowManagerBase GetArrowManager ()
 

Защищенные данные

int m_StanceVariation = 0
 server / singleplayer properties
 
int m_LastMindState = -1
 
float m_LastMovementSpeed = -1
 
bool m_KnuckleLand = false
 
float m_KnuckleOutTimer = 0
 
int m_MindState = -1
 
int m_OrientationLocal = -1
 
int m_OrientationSynced = -1
 
float m_OrientationTimer
 
float m_MovementSpeed = -1
 
vector m_DefaultHitPosition
 
float m_DeltaTime
 
AbstractWave m_LastSoundVoiceAW
 
ref InfectedSoundEventHandler m_InfectedSoundEventHandler
 
ref array< Objectm_AllTargetObjects
 
ref array< typenamem_TargetableObjects
 
bool m_IsCrawling
 
bool m_FinisherInProgress = false
 
ref ArrowManagerBase m_ArrowManager
 
float m_DamageHitDirection = 0
 
int m_DeathType = 0
 
int m_ActiveVaultType = -1
 
EntityAI m_ActualTarget = null
 
float m_AttackCooldownTime = 0
 
DayZInfectedAttackType m_ActualAttackType = null
 
int m_CrawlTransition = -1
 
bool m_DamageHitToProcess = false
 
bool m_DamageHitHeavy = false
 
int m_DamageHitType = 0
 
float m_ShockDamage = 0
 
const float HIT_INTERVAL_MIN = 0.3
 
float m_HitElapsedTime = HIT_INTERVAL_MIN
 

Закрытые данные

const float TARGET_CONE_ANGLE_CHASE = 20
 
const float TARGET_CONE_ANGLE_FIGHT = 30
 
const float ORIENTATION_SYNC_THRESHOLD = 30
 
const float SHOCK_TO_STUN_MULTIPLIER = 2.82
 

Подробное описание

Методы

◆ AddArrow()

override void AddArrow ( Object arrow,
int componentIndex,
vector closeBonePosWS,
vector closeBoneRotWS )
inlineprotected
1094 {
1096 GetActionComponentNameList(componentIndex, CachedObjectsArrays.ARRAY_STRING, "fire");
1097
1098 int pivot = -1;
1099
1100
1101 for (int i = 0; i < CachedObjectsArrays.ARRAY_STRING.Count() && pivot == -1; i++)
1102 {
1104 }
1105
1108
1109 if (pivot == -1)
1110 {
1112 }
1113 else
1114 {
1115 vector rotMatrix[3];
1117
1118 parentTransMat[0] = rotMatrix[0];
1119 parentTransMat[1] = rotMatrix[1];
1120 parentTransMat[2] = rotMatrix[2];
1122 }
1123
1124 arrow.GetTransform(arrowTransMat);
1126 // orthogonalize matrix - parent might be skewed
1128 arrow.SetTransform(arrowTransMat);
1129
1131 }
proto native int GetBoneIndexByName(string pBoneName)
returns bone index for a name (-1 if pBoneName doesn't exist)
Definition UtilityClasses.c:41
static ref TStringArray ARRAY_STRING
Definition UtilityClasses.c:49
Definition EnMath3D.c:28
Definition EnMath.c:7
Definition EntityAI.c:95
Definition EnConvert.c:106
static proto void MatrixOrthogonalize4(vector mat[4])
Orthogonalizes matrix.
static proto void MatrixInvMultiply4(vector mat0[4], vector mat1[4], out vector res[4])
Invert-transforms matrix.
static proto void YawPitchRollMatrix(vector ang, out vector mat[3])
Creates rotation matrix from angles.
static const float RAD2DEG
Definition EnMath.c:16
proto native void AddChild(Widget child, bool immedUpdate=true)

Перекрестные ссылки AddChild(), CachedObjectsArrays::ARRAY_STRING, GetBoneIndexByName(), Math3D::MatrixInvMultiply4(), Math3D::MatrixOrthogonalize4(), Math::RAD2DEG и Math3D::YawPitchRollMatrix().

◆ CanBeBackstabbed()

override bool CanBeBackstabbed ( )
inlineprotected
124 {
125 return true;
126 }

◆ CanBeSkinned()

override bool CanBeSkinned ( )
inlineprotected
135 {
136 return false;
137 }

◆ CanReceiveAttachment()

override bool CanReceiveAttachment ( EntityAI attachment,
int slotId )
inlineprotected
1034 {
1035 if ( !IsAlive() )
1036 {
1037 return false;
1038 }
1039 return super.CanReceiveAttachment(attachment, slotId);
1040 }

◆ ChaseAttackLogic()

bool ChaseAttackLogic ( int pCurrentCommandID,
DayZInfectedInputController pInputController,
float pDt )
inlineprotected

do not attack players in vehicle - hotfix

target is outside the targeting cone; skip attack

677 {
678 // always update target - it can be destroyed
679 m_ActualTarget = pInputController.GetTargetEntity();
680
683 if ( pb && pb.GetCommand_Vehicle() )
684 {
685 return false;
686 }
687
688 if ( m_ActualTarget == NULL )
689 return false;
690
691 vector targetPos = m_ActualTarget.GetPosition();
693 return false;
694
697
700 {
703 if (m_ActualTarget != target)
704 {
705 m_AllTargetObjects.Clear();
706 return false;
707 }
708
711 return true;
712 }
713
714 return false;
715 }
DayZInfectedAttackGroupType
Definition DayZInfectedType.c:14
void DayZPlayerUtils()
cannot be instantiated
Definition DayZPlayerUtils.c:465
class JsonUndergroundAreaTriggerData GetPosition
Definition UndergroundAreaLoader.c:9
int m_Type
Definition DayZInfectedType.c:5
float m_Distance
Definition DayZInfectedType.c:3
float m_Subtype
Definition DayZInfectedType.c:6
float m_Cooldown
Definition DayZInfectedType.c:9
float m_AttackCooldownTime
Definition ZombieBase.c:604
EntityAI m_ActualTarget
Definition ZombieBase.c:603
int GetAttackPitch(EntityAI target)
Definition ZombieBase.c:762
ref array< Object > m_AllTargetObjects
Definition ZombieBase.c:29
DayZInfectedAttackType m_ActualAttackType
Definition ZombieBase.c:605
const float TARGET_CONE_ANGLE_CHASE
Definition ZombieBase.c:3
ref array< typename > m_TargetableObjects
Definition ZombieBase.c:30
Definition ObjectTyped.c:2
Definition PlayerBaseClient.c:2
static proto native float Distance(vector v1, vector v2)
Returns the distance between tips of two 3D vectors.

Перекрестные ссылки DayZPlayerUtils(), vector::Distance(), GetPosition, m_AllTargetObjects, DayZInfectedAttackType::m_Cooldown, DayZInfectedAttackType::m_Distance, DayZInfectedAttackType::m_Subtype, m_TargetableObjects и DayZInfectedAttackType::m_Type.

◆ CommandHandler()

void CommandHandler ( float pDt,
int pCurrentCommandID,
bool pCurrentCommandFinished )
inlineprotected

CommandHandler

for mods

handle death

movement handler (just for sync now)

handle finished commands

default behaviour after finish is to start move

for mods

crawl transition

damage hits

199 {
201
204 {
205 return;
206 }
207
209 if ( pCurrentCommandID != DayZInfectedConstants.COMMANDID_DEATH )
210 {
212 return;
213 }
214 else if (!pCurrentCommandFinished)
215 {
216 return;
217 }
218
219
223
226 {
228 DayZInfectedCommandMove moveCommand = StartCommand_Move();
229 moveCommand.SetStanceVariation(m_StanceVariation);
230
231 return;
232 }
233
236 {
237 return;
238 }
239
242 {
243 return;
244 }
245
248 {
249 return;
250 }
251
252 DayZInfectedInputController inputController = GetInputController();
253 if ( inputController )
254 {
256 {
257 return;
258 }
259
261 {
262 return;
263 }
264
266 {
267 return;
268 }
269 }
270
273 {
274 return;
275 }
276 }
bool ModCommandHandlerInside(float pDt, int pCurrentCommandID, bool pCurrentCommandFinished)
Definition DayZAnimal.c:136
bool ModCommandHandlerBefore(float pDt, int pCurrentCommandID, bool pCurrentCommandFinished)
Definition DayZAnimal.c:131
bool ModCommandHandlerAfter(float pDt, int pCurrentCommandID, bool pCurrentCommandFinished)
Definition DayZAnimal.c:141
DayZInfectedConstants
Definition DayZInfected.c:2
Definition DayZInfectedImplement.c:1
bool HandleDeath(int pCurrentCommandID)
Definition ZombieBase.c:349
bool HandleVault(int pCurrentCommandID, DayZInfectedInputController pInputController, float pDt)
Definition ZombieBase.c:413
bool HandleDamageHit(int pCurrentCommandID)
Definition ZombieBase.c:855
void HandleMove(int pCurrentCommandID)
Definition ZombieBase.c:297
float m_DeltaTime
Definition ZombieBase.c:24
int m_StanceVariation
server / singleplayer properties
Definition ZombieBase.c:10
bool FightLogic(int pCurrentCommandID, DayZInfectedInputController pInputController, float pDt)
Definition ZombieBase.c:607
void HandleOrientation(float pDt, int pCurrentCommandID)
Definition ZombieBase.c:314
bool HandleCrawlTransition(int pCurrentCommandID)
Definition ZombieBase.c:799
bool HandleMindStateChange(int pCurrentCommandID, DayZInfectedInputController pInputController, float pDt)
Definition ZombieBase.c:450
Definition DayZInfectedInputController.c:2

Перекрестные ссылки ModCommandHandlerAfter(), ModCommandHandlerBefore() и ModCommandHandlerInside().

◆ CommandHandlerDebug()

void CommandHandlerDebug ( float pDt,
int pCurrentCommandID,
bool pCurrentCommandFinished )
inlineprotected

CommandHandlerDebug

284 {
285 if ( GetPluginManager() )
286 {
287 PluginDayZInfectedDebug infectedDebug = PluginDayZInfectedDebug.Cast(GetPluginManager().GetPluginByType(PluginDayZInfectedDebug));
288 if ( infectedDebug )
289 infectedDebug.CommandHandler(this);
290 }
291 }
PluginManager GetPluginManager()
Returns registred plugin by class type, better is to use global funtion GetPlugin(typename plugin_typ...
Definition PluginManager.c:274

Перекрестные ссылки GetPluginManager().

◆ ComputeHitDirectionAngle()

float ComputeHitDirectionAngle ( EntityAI pSource)
inlineprotected
918 {
919 vector targetDirection = GetDirection();
920 vector toSourceDirection = (pSource.GetPosition() - GetPosition());
921
922 targetDirection[1] = 0;
923 toSourceDirection[1] = 0;
924
925 targetDirection.Normalize();
926 toSourceDirection.Normalize();
927
930
931 float dirAngle = Math.Acos(cosFi) * Math.RAD2DEG;
932 if ( cross[1] < 0 )
934
935 return dirAngle;
936 }
static float Dot(vector v1, vector v2)
Returns Dot product of vector v1 and vector v2.
Definition EnConvert.c:271
static proto float Acos(float c)
Returns angle in radians from cosinus.

Перекрестные ссылки Math::Acos(), vector::Dot(), GetPosition и Math::RAD2DEG.

◆ ComputeHitDirectionAngleEx()

float ComputeHitDirectionAngleEx ( EntityAI pSource,
int invertHitDir = 0 )
inlineprotected
939 {
940 vector targetDirection = GetDirection();
941 vector toSourceDirection = (pSource.GetPosition() - GetPosition());
942
943 targetDirection[1] = 0;
944 toSourceDirection[1] = 0;
945
946 targetDirection.Normalize();
947 toSourceDirection.Normalize();
948
951
952 float dirAngle = Math.Acos(cosFi) * Math.RAD2DEG;
953
954 // We will invert direction of the hit
955 if ( invertHitDir > 0 )
956 dirAngle -= 180;
957
958 if ( cross[1] < 0 )
960
961 return dirAngle;
962 }

Перекрестные ссылки Math::Acos(), vector::Dot(), GetPosition и Math::RAD2DEG.

◆ DebugSound()

void DebugSound ( string s)
inlineprotected

sound debug messages

1009 {
1010 //Print(s);
1011 }

◆ EEHitBy()

override void EEHitBy ( TotalDamageResult damageResult,
int damageType,
EntityAI source,
int component,
string dmgZone,
string ammo,
vector modelPos,
float speedCoef )
inlineprotected

Events from damage system

970 {
972
973 m_TransportHitRegistered = false;
974
975 if ( !IsAlive() )
976 {
978 data.m_Component = component;
979 data.m_DamageZone = dmgZone;
980 data.m_AmmoType = ammo;
982 }
983 else
984 {
985 int crawlTransitionType = -1;
987 {
989 return;
990 }
991
993 {
994 if ( dmgZone )
995 m_ShockDamage = damageResult.GetDamage( dmgZone, "Shock" );
997 return;
998 }
999 }
1000 }
class BoxCollidingParams component
ComponentInfo for BoxCollidingResult.
float m_DamageHitDirection
Definition ZombieBase.c:346
int m_DeathType
Definition ZombieBase.c:347
bool EvaluateCrawlTransitionAnimation(EntityAI pSource, string pComponent, string pAmmoType, out int pAnimType)
Definition ZombieBase.c:814
bool m_DamageHitHeavy
Definition ZombieBase.c:848
bool m_DamageHitToProcess
Definition ZombieBase.c:846
float m_ShockDamage
Definition ZombieBase.c:850
bool EvaluateDamageHitAnimation(EntityAI pSource, string pComponent, string pAmmoType, out bool pHeavyHit, out int pAnimType, out float pAnimHitDir)
selects animation type and direction based on damage system data
Definition ZombieBase.c:890
bool EvaluateDeathAnimationEx(EntityAI pSource, ZombieHitData data, out int pAnimType, out float pAnimHitDir)
Definition ZombieBase.c:363
int m_DamageHitType
Definition ZombieBase.c:849
int m_CrawlTransition
Definition ZombieBase.c:797

Перекрестные ссылки component.

◆ EEHitByRemote()

override void EEHitByRemote ( int damageType,
EntityAI source,
int component,
string dmgZone,
string ammo,
vector modelPos )
inlineprotected
1003 {
1004 super.EEHitByRemote(damageType, source, component, dmgZone, ammo, modelPos);
1005 }

Перекрестные ссылки component.

◆ EOnContact()

void EOnContact ( IEntity other,
Contact extra )
inlineprotected

Phx contact event

1019 {
1020 if ( !IsAlive() )
1021 return;
1022
1024 if ( transport )
1025 {
1026 if ( GetGame().IsServer() )
1027 {
1028 RegisterTransportHit(transport);
1029 }
1030 }
1031 }
Base native class for all motorized wheeled vehicles.
Definition Boat.c:28
proto native CGame GetGame()

Перекрестные ссылки GetGame().

◆ EOnInit()

override void EOnInit ( IEntity other,
int extra )
inlineprotected
93 {
94 if ( !GetGame().IsMultiplayer() || GetGame().IsServer() )
95 {
97
99 moveCommand.SetStanceVariation(m_StanceVariation);
100 }
101 }
static proto int RandomInt(int min, int max)
Returns a random int number between and min [inclusive] and max [exclusive].

Перекрестные ссылки GetGame() и Math::RandomInt().

◆ EvaluateCrawlTransitionAnimation()

bool EvaluateCrawlTransitionAnimation ( EntityAI pSource,
string pComponent,
string pAmmoType,
out int pAnimType )
inlineprotected
815 {
816 pAnimType = -1;
817 if ( pComponent == "LeftLeg" && GetHealth(pComponent, "Health") == 0 )
818 pAnimType = 0;
819 else if ( pComponent == "RightLeg" && GetHealth(pComponent, "Health") == 0 )
820 pAnimType = 2;
821
822 if ( pAnimType != -1 )
823 {
824 vector targetDirection = GetDirection();
825 vector toSourceDirection = (pSource.GetPosition() - GetPosition());
826
827 targetDirection[1] = 0;
828 toSourceDirection[1] = 0;
829
830 targetDirection.Normalize();
831 toSourceDirection.Normalize();
832
834 if ( cosFi >= 0 ) // front
835 pAnimType++;
836 }
837
838 return pAnimType != -1;
839 }

Перекрестные ссылки vector::Dot() и GetPosition.

◆ EvaluateDamageHitAnimation()

bool EvaluateDamageHitAnimation ( EntityAI pSource,
string pComponent,
string pAmmoType,
out bool pHeavyHit,
out int pAnimType,
out float pAnimHitDir )
inlineprotected

selects animation type and direction based on damage system data

heavy hit

anim type

direction

shock GetDamage

891 {
892 int invertHitDir = 0; //Used to flip the heavy hit animation direction
893
895 pHeavyHit = ((GetGame().ConfigGetInt("cfgAmmo " + pAmmoType + " hitAnimation") > 0) || m_HeavyHitOverride);
896 invertHitDir = GetGame().ConfigGetInt("cfgAmmo " + pAmmoType + " invertHitDir");
897
899 pAnimType = 0; // belly
900
901 if ( !pHeavyHit )
902 {
903 if ( pComponent == "Torso" ) // body
904 pAnimType = 1;
905 else if ( pComponent == "Head" ) // head
906 pAnimType = 2;
907 }
908
910 //pAnimHitDir = ComputeHitDirectionAngle(pSource);
913 //m_ShockDamage = GetGame().ConfigGetFloat( "CfgAmmo " + pAmmoType + " DamageApplied " + "Shock " + "damage");
914 return true;
915 }
float ComputeHitDirectionAngleEx(EntityAI pSource, int invertHitDir=0)
Definition ZombieBase.c:938

Перекрестные ссылки GetGame().

◆ EvaluateDeathAnimation()

bool EvaluateDeathAnimation ( EntityAI pSource,
string pComponent,
string pAmmoType,
out int pAnimType,
out float pAnimHitDir )
inlineprotected

anim type

direction

add some impulse if needed

371 {
373 bool doPhxImpulse = GetGame().ConfigGetInt("cfgAmmo " + pAmmoType + " doPhxImpulse") > 0;
374
377
380
382 if ( doPhxImpulse )
383 {
384 vector impulse = 80 * m_TransportHitVelocity;
385 impulse[1] = 80 * 1.5;
386 //Print("Impulse: " + impulse.ToString());
387
389 }
390
391 return true;
392 }
float ComputeHitDirectionAngle(EntityAI pSource)
Definition ZombieBase.c:917
proto void dBodyApplyImpulse(notnull IEntity body, vector impulse)
Applies impuls on a rigidbody (origin)

Перекрестные ссылки dBodyApplyImpulse() и GetGame().

◆ EvaluateDeathAnimationEx()

bool EvaluateDeathAnimationEx ( EntityAI pSource,
ZombieHitData data,
out int pAnimType,
out float pAnimHitDir )
inlineprotected
364 {
365 bool ret = EvaluateDeathAnimation(pSource,data.m_DamageZone,data.m_AmmoType,pAnimType,pAnimHitDir);
366
367 return ret;
368 }
bool EvaluateDeathAnimation(EntityAI pSource, string pComponent, string pAmmoType, out int pAnimType, out float pAnimHitDir)
Definition ZombieBase.c:370

◆ FightAttackLogic()

bool FightAttackLogic ( int pCurrentCommandID,
DayZInfectedInputController pInputController,
float pDt )
inlineprotected

do not attack players in vehicle - hotfix

target is outside the targeting cone; skip attack

718 {
719 // always update target - it can be destroyed
720 m_ActualTarget = pInputController.GetTargetEntity();
721
724 if (pb && pb.GetCommand_Vehicle())
725 return false;
726
727 if (m_AttackCooldownTime > 0)
728 {
730 return false;
731 }
732
733 if (m_ActualTarget == null)
734 return false;
735
736 vector targetPos = m_ActualTarget.GetPosition();
739
741 return false;
742
745 {
749 {
750 m_AllTargetObjects.Clear();
751 return false;
752 }
753
756 return true;
757 }
758
759 return false;
760 }
const float TARGET_CONE_ANGLE_FIGHT
Definition ZombieBase.c:4
Definition constants.c:638
const float AI_ATTACKSPEED
Definition constants.c:1019

Перекрестные ссылки GameConstants::AI_ATTACKSPEED, DayZPlayerUtils(), vector::Distance(), GetPosition, m_AllTargetObjects, DayZInfectedAttackType::m_Cooldown, DayZInfectedAttackType::m_Distance, DayZInfectedAttackType::m_Subtype, m_TargetableObjects и DayZInfectedAttackType::m_Type.

◆ FightLogic()

bool FightLogic ( int pCurrentCommandID,
DayZInfectedInputController pInputController,
float pDt )
inlineprotected

player is in block stance and facing the infected

infected is playing heavy attack - decrease the dmg to light

override hit pos by pos defined in type

infected is playing light attack - do not send damage, play animation instead

override hit pos by pos defined in type

608 {
609 if (pCurrentCommandID == DayZInfectedConstants.COMMANDID_MOVE)
610 {
611 // we attack only in chase & fight state
612 int mindState = pInputController.GetMindState();
613 if (mindState == DayZInfectedConstants.MINDSTATE_CHASE)
614 {
616 }
617 else if (mindState == DayZInfectedConstants.MINDSTATE_FIGHT)
618 {
620 }
621 }
622 else if (pCurrentCommandID == DayZInfectedConstants.COMMANDID_ATTACK)
623 {
625 if (attackCommand && attackCommand.WasHit())
626 {
627 if (m_ActualTarget != null)
628 {
630 return false;
631
632 bool playerInBlockStance = false;
633 vector targetPos = m_ActualTarget.GetPosition();
636
638 if (playerTarget)
639 {
640 playerInBlockStance = playerTarget.GetMeleeFightLogic() && playerTarget.GetMeleeFightLogic().IsInBlock();
641 }
642
644 {
647 {
650 {
651 hitPosWS = m_ActualTarget.ModelToWorld(m_ActualTarget.GetDefaultHitPosition());
652 DamageSystem.CloseCombatDamageName(this, m_ActualTarget, m_ActualTarget.GetHitComponentForAI(), "MeleeZombie", hitPosWS);
653 }
654 else
655 {
657 hitPosWS = m_ActualTarget.ModelToWorld(m_ActualTarget.GetDefaultHitPosition());
658 DamageSystem.CloseCombatDamageName(this, m_ActualTarget, m_ActualTarget.GetHitComponentForAI(), "Dummy_Light", hitPosWS);
659 }
660 }
661 else
662 {
663 hitPosWS = m_ActualTarget.ModelToWorld(m_ActualTarget.GetDefaultHitPosition());
664 DamageSystem.CloseCombatDamageName(this, m_ActualTarget, m_ActualTarget.GetHitComponentForAI(), m_ActualAttackType.m_AmmoType, hitPosWS);
665 }
666 }
667 }
668 }
669
670 return true;
671 }
672
673 return false;
674 }
EMeleeTargetType
Definition EMeleeTargetType.c:2
string m_AmmoType
Definition DayZInfectedType.c:7
int m_IsHeavy
Definition DayZInfectedType.c:8
bool FightAttackLogic(int pCurrentCommandID, DayZInfectedInputController pInputController, float pDt)
Definition ZombieBase.c:717
bool ChaseAttackLogic(int pCurrentCommandID, DayZInfectedInputController pInputController, float pDt)
Definition ZombieBase.c:676
override int GetMeleeTargetType()
Definition Building.c:234
static proto native float DistanceSq(vector v1, vector v2)
Returns the square distance between tips of two 3D vectors.
const float AI_MAX_BLOCKABLE_ANGLE
Definition constants.c:1020
static proto float AngleFromPosition(vector origin, vector originDir, vector target)
Angle that a target is from the direction of an origin.
static proto float AbsFloat(float f)
Returns absolute value.

Перекрестные ссылки Math::AbsFloat(), GameConstants::AI_MAX_BLOCKABLE_ANGLE, Math3D::AngleFromPosition(), vector::DistanceSq(), EntityAI::GetMeleeTargetType(), GetPosition, DayZInfectedAttackType::m_AmmoType, DayZInfectedAttackType::m_Distance, DayZInfectedAttackType::m_IsHeavy и Math::RAD2DEG.

◆ GetArrowManager()

override ArrowManagerBase GetArrowManager ( )
inlineprotected
1139 {
1140 return m_ArrowManager;
1141 }
ref ArrowManagerBase m_ArrowManager
Definition ZombieBase.c:38

Перекрестные ссылки m_ArrowManager.

◆ GetAttackPitch()

int GetAttackPitch ( EntityAI target)
inlineprotected

no default hit pos fallback

763 {
765
766 attackRefPos = target.GetDefaultHitPosition();
768 if ( attackRefPos != vector.Zero )
769 {
770 attackRefPos = target.ModelToWorld(attackRefPos);
771 }
772 else
773 {
774 attackRefPos = target.GetPosition();
775 }
776
777 // Now we have only erect stance, we need to get head position later too
778 float headPosY = GetPosition()[1];
779 headPosY += 1.8;
780
781 float diff = Math.AbsFloat(attackRefPos[1] - headPosY);
782
783 if ( diff < 0.3 )
784 return 0;
785
786 if ( headPosY > attackRefPos[1] )
787 return -1;
788 else
789 return 1;
790 }
static const vector Zero
Definition EnConvert.c:110

Перекрестные ссылки Math::AbsFloat(), GetPosition и vector::Zero.

◆ GetBootsType()

override AnimBootsType GetBootsType ( )
inlineprotected
130 {
131 return AnimBootsType.Boots;
132 }
AnimBootsType
Definition DayZAnimEvents.c:98

◆ GetCenter()

override vector GetCenter ( )
inlineprotected
1043 {
1044 return GetBonePositionWS( GetBoneIndexByName( "spine3" ) );
1045 }

Перекрестные ссылки GetBoneIndexByName().

◆ GetDefaultHitComponent()

override string GetDefaultHitComponent ( )
inlineprotected

returns default hit component (fallback)

162 {
163 return GetDayZInfectedType().GetDefaultHitComponent();
164 }

◆ GetDefaultHitPosition()

override vector GetDefaultHitPosition ( )
inlineprotected
167 {
169 }
vector m_DefaultHitPosition
Definition ZombieBase.c:23

◆ GetHitComponentForAI()

override string GetHitComponentForAI ( )
inlineprotected

returns hit component for attacking AI

156 {
157 return GetDayZInfectedType().GetHitComponentForAI();
158 }

◆ GetMindStateSynced()

int GetMindStateSynced ( )
inlineprotected
183 {
184 return m_MindState;
185 }
int m_MindState
Definition ZombieBase.c:17

◆ GetOrientationSynced()

int GetOrientationSynced ( )
inlineprotected

returns rounded zombie yaw for sync purposes

189 {
190 return m_OrientationSynced;
191 }
int m_OrientationSynced
Definition ZombieBase.c:19

◆ GetSuitableFinisherHitComponents()

override array< string > GetSuitableFinisherHitComponents ( )
inlineprotected

returns suitable hit components for finisher attacks; DEPRECATED

178 {
179 return GetDayZInfectedType().GetSuitableFinisherHitComponents();
180 }

◆ GetVaultType()

int GetVaultType ( float height)
inlineprotected
402 {
403 if ( height <= 0.6 )
404 return 0;
405 else if ( height <= 1.1 )
406 return 1;
407 else if ( height <= 1.6 )
408 return 2;
409 else
410 return 3;
411 }

◆ HandleCrawlTransition()

bool HandleCrawlTransition ( int pCurrentCommandID)
inlineprotected
800 {
801 if ( m_CrawlTransition != -1 )
802 {
804
806 m_IsCrawling = true;
807 SetSynchDirty();
808 return true;
809 }
810
811 return pCurrentCommandID == DayZInfectedConstants.COMMANDID_CRAWL;
812 }
bool m_IsCrawling
Definition ZombieBase.c:34

◆ HandleDamageHit()

bool HandleDamageHit ( int pCurrentCommandID)
inlineprotected
856 {
857 if ( pCurrentCommandID == DayZInfectedConstants.COMMANDID_HIT )
858 {
859 // Throttle hit command up to a fixed rate
861 {
863 m_DamageHitToProcess = false;
864 m_ShockDamage = 0;
865 return false;
866 }
867 }
868
870 {
871 int randNum = Math.RandomIntInclusive(0, 100);
873
874 if ( m_DamageHitHeavy || randNum <= stunChange || ( m_MindState == DayZInfectedConstants.MINDSTATE_CALM || m_MindState == DayZInfectedConstants.MINDSTATE_DISTURBED ) )
875 {
878 }
879
880 m_DamageHitToProcess = false;
881 m_ShockDamage = 0;
882 m_HeavyHitOverride = false;
883 return true;
884 }
885
886 return false;
887 }
float m_HitElapsedTime
Definition ZombieBase.c:853
const float HIT_INTERVAL_MIN
Definition ZombieBase.c:852
const float SHOCK_TO_STUN_MULTIPLIER
Definition ZombieBase.c:7
static int RandomIntInclusive(int min, int max)
Returns a random int number between and min [inclusive] and max [inclusive].
Definition EnMath.c:54

Перекрестные ссылки Math::RandomIntInclusive().

◆ HandleDeath()

bool HandleDeath ( int pCurrentCommandID)
inlineprotected
350 {
351 if ( !IsAlive() || m_FinisherInProgress )
352 {
353 StartCommand_Death(m_DeathType, m_DamageHitDirection);
354 m_MovementSpeed = -1;
355 m_MindState = -1;
356 SetSynchDirty();
357 return true;
358 }
359
360 return false;
361 }
float m_MovementSpeed
Definition ZombieBase.c:21
bool m_FinisherInProgress
Definition ZombieBase.c:36

◆ HandleMindStateChange()

bool HandleMindStateChange ( int pCurrentCommandID,
DayZInfectedInputController pInputController,
float pDt )
inlineprotected

Mind state change

451 {
453
454 m_MindState = pInputController.GetMindState();
456 {
457 switch ( m_MindState )
458 {
459 case DayZInfectedConstants.MINDSTATE_CALM:
460 if ( moveCommand && !moveCommand.IsTurning() )
461 moveCommand.SetIdleState(0);
462 break;
463
464 case DayZInfectedConstants.MINDSTATE_DISTURBED:
465 if ( moveCommand && !moveCommand.IsTurning() )
466 moveCommand.SetIdleState(1);
467 break;
468
469 case DayZInfectedConstants.MINDSTATE_CHASE:
470 if ( moveCommand && !moveCommand.IsTurning() && (m_LastMindState < DayZInfectedConstants.MINDSTATE_CHASE) )
471 moveCommand.SetIdleState(2);
472 break;
473 }
474
477 SetSynchDirty();
478 }
479 return false;
480 }
int m_LastMindState
Definition ZombieBase.c:11

◆ HandleMove()

void HandleMove ( int pCurrentCommandID)
inlineprotected

HandleMove

298 {
299 DayZInfectedInputController ic = GetInputController();
300 m_MovementSpeed = ic.GetMovementSpeed();
302 {
303 SetSynchDirty();
304 }
305
307 }
float m_LastMovementSpeed
Definition ZombieBase.c:12

Перекрестные ссылки Math::AbsFloat().

◆ HandleOrientation()

void HandleOrientation ( float pDt,
int pCurrentCommandID )
inlineprotected

HandleOrientation

315 {
317
318 int yaw = Math.Round(GetOrientation()[0]);
320
321 //atan2(sin(x-y), cos(x-y))
323 float angleTargetRad = yaw * Math.DEG2RAD;
324
328
330 {
331 m_OrientationTimer = 0.0;
332
334 {
336 SetSynchDirty();
337 }
338 }
339 }
vector GetOrientation()
Definition AreaDamageManager.c:306
const float ORIENTATION_SYNC_THRESHOLD
Definition ZombieBase.c:5
float m_OrientationTimer
Definition ZombieBase.c:20
static proto float Cos(float angle)
Returns cosinus of angle in radians.
static proto float Round(float f)
Returns mathematical round of value.
static proto float Atan2(float y, float x)
Returns angle in radians from tangent.
static proto float NormalizeAngle(float ang)
Normalizes the angle (0...360)
static const float DEG2RAD
Definition EnMath.c:17
static proto float Sin(float angle)
Returns sinus of angle in radians.
static proto int AbsInt(int i)
Returns absolute value.

Перекрестные ссылки Math::AbsInt(), Math::Atan2(), Math::Cos(), Math::DEG2RAD, GetOrientation(), Math::NormalizeAngle(), Math::RAD2DEG, Math::Round() и Math::Sin().

◆ HandleSoundEvents()

void HandleSoundEvents ( )
inlineprotected

Sound (client only)

no sound handler - bail out

infected is dead

stop all sounds

488 {
491 {
492 return;
493 }
494
496 if ( !IsAlive() )
497 {
500 return;
501 }
502
503 switch ( m_MindState )
504 {
505 case DayZInfectedConstants.MINDSTATE_CALM:
506 m_InfectedSoundEventHandler.PlayRequest(EInfectedSoundEventID.MINDSTATE_CALM_MOVE);
507 break;
508 case DayZInfectedConstants.MINDSTATE_ALERTED:
509 m_InfectedSoundEventHandler.PlayRequest(EInfectedSoundEventID.MINDSTATE_ALERTED_MOVE);
510 break;
511 case DayZInfectedConstants.MINDSTATE_DISTURBED:
512 m_InfectedSoundEventHandler.PlayRequest(EInfectedSoundEventID.MINDSTATE_DISTURBED_IDLE);
513 break
514 case DayZInfectedConstants.MINDSTATE_CHASE:
515 m_InfectedSoundEventHandler.PlayRequest(EInfectedSoundEventID.MINDSTATE_CHASE_MOVE);
516 break;
517 default:
519 break;
520 }
521
522 DebugSound("[Infected @ " + this + "][MindState]" + typename.EnumToString(DayZInfectedConstants, m_MindState));
523 DebugSound("[Infected @ " + this + "][SoundEventID]" + typename.EnumToString(EInfectedSoundEventID, m_InfectedSoundEventHandler.GetCurrentStateEventID()));
524 }
EInfectedSoundEventID
Definition InfectedSoundEventHandler.c:2
ref InfectedSoundEventHandler m_InfectedSoundEventHandler
Definition ZombieBase.c:27
void DebugSound(string s)
sound debug messages
Definition ZombieBase.c:1008

◆ HandleVault()

bool HandleVault ( int pCurrentCommandID,
DayZInfectedInputController pInputController,
float pDt )
inlineprotected
414 {
415 if ( pCurrentCommandID == DayZInfectedConstants.COMMANDID_VAULT )
416 {
418 if ( vaultCmd && vaultCmd.WasLand() )
419 {
421 m_KnuckleLand = true;
422 }
423 if ( m_KnuckleLand )
424 {
426 if ( m_KnuckleOutTimer > 2.0 )
428 }
429
430 return true;
431 }
432
433 if ( pInputController.IsVault() )
434 {
435 float vaultHeight = pInputController.GetVaultHeight();
437 m_KnuckleLand = false;
439 return true;
440 }
441
442 return false;
443 }
int GetVaultType(float height)
Definition ZombieBase.c:401
bool m_KnuckleLand
Definition ZombieBase.c:14
float m_KnuckleOutTimer
Definition ZombieBase.c:15

◆ Init()

void Init ( )
inlineprotected

sets default hit position and cache it here (mainly for impact particles)

client only

49 {
50 SetEventMask(EntityEvent.INIT);
51
52 m_IsCrawling = false;
53
54 RegisterNetSyncVariableInt("m_MindState", -1, 4);
55 RegisterNetSyncVariableInt("m_OrientationSynced", 0, 359);
56 RegisterNetSyncVariableFloat("m_MovementSpeed", -1, 3);
57 RegisterNetSyncVariableBool("m_IsCrawling");
58
61
63 if ( !GetGame().IsDedicatedServer() )
64 {
67 }
68
73
75
77 }
void InfectedSoundEventHandler(ZombieBase pInfected)
Definition InfectedSoundEventHandler.c:21
Definition AnimalBase.c:94
Definition ArrowManagerBase.c:2
vector SetDefaultHitPosition(string pSelection)
Definition ZombieBase.c:171
AbstractWave m_LastSoundVoiceAW
Definition ZombieBase.c:26
string GetDefaultHitPositionComponent()
Definition dayzplayer.c:502
EntityEvent
Entity events for event-mask, or throwing event from code.
Definition EnEntity.c:45

Перекрестные ссылки GetDefaultHitPositionComponent(), GetGame(), InfectedSoundEventHandler(), m_AllTargetObjects, m_ArrowManager и m_TargetableObjects.

◆ IsBeingBackstabbed()

override bool IsBeingBackstabbed ( )
inlineprotected

returns true if backstab is in progress; used for suspending of AI targeting and other useful things besides

1049 {
1050 return m_FinisherInProgress;
1051 }

◆ IsCrawling()

bool IsCrawling ( )
inlineprotected

returns true if crawling; 'DayZInfectedCommandCrawl' is only for the transition, after that it remains 'DayZInfectedCommandMove' (unreliable)

1079 {
1080 return m_IsCrawling;
1081 }

◆ IsDanger()

override bool IsDanger ( )
inlineprotected
109 {
110 return true;
111 }

◆ IsHealthVisible()

override bool IsHealthVisible ( )
inlineprotected
140 {
141 return false;
142 }

◆ IsMale()

bool IsMale ( )
inlineprotected
119 {
120 return true;
121 }

◆ IsManagingArrows()

override bool IsManagingArrows ( )
inlineprotected
1134 {
1135 return true;
1136 }

◆ IsRefresherSignalingViable()

override bool IsRefresherSignalingViable ( )
inlineprotected
145 {
146 return false;
147 }

◆ IsSelfAdjustingTemperature()

override bool IsSelfAdjustingTemperature ( )
inlineprotected
150 {
151 return IsAlive();
152 }

◆ IsZombie()

override bool IsZombie ( )
inlineprotected
104 {
105 return true;
106 }

◆ IsZombieMilitary()

override bool IsZombieMilitary ( )
inlineprotected
114 {
115 return false;
116 }

◆ OnRecoverFromDeath()

void OnRecoverFromDeath ( )
inlineprotected
1085 {
1086 // enable AI simulation again
1087 GetAIAgent().SetKeepInIdle(false);
1088
1089 // reset flag
1090 m_FinisherInProgress = false;
1091 }

◆ OnSoundVoiceEvent()

override void OnSoundVoiceEvent ( int event_id,
string event_user_string )
inlineprotected

stop state sound when playing anim SoundVoice

stop playing of old SoundVoice from anim (if any)

play new SoundVoice from anim

551 {
552 //super.OnSoundVoiceEvent(event_id, event_user_string);
553 AnimSoundVoiceEvent voice_event = GetCreatureAIType().GetSoundVoiceEvent(event_id);
554 if (voice_event != null)
555 {
557 if (m_InfectedSoundEventHandler) // && m_InfectedSoundEventHandler.IsPlaying())
558 {
560 DebugSound("[Infected @ " + this + "][SoundEvent] InfectedSoundEventHandler - stop all");
561 }
562
565 {
566 DebugSound("[Infected @ " + this + "][AnimVoiceEvent] Stopping LastAW");
568 }
569
572
574 }
575 }
proto void Stop()
void ProcessSoundVoiceEvent(AnimSoundVoiceEvent sound_event, out AbstractWave aw)
Definition ZombieBase.c:577
void HandleSoundEvents()
Definition ZombieBase.c:487

Перекрестные ссылки AbstractWave::Stop().

◆ OnVariablesSynchronized()

override void OnVariablesSynchronized ( )
inlineprotected

synced variable(s) handler

81 {
82 DebugSound("[Infected @ " + this + "][OnVariablesSynchronized]");
84
86 {
88 }
89 }
int m_OrientationLocal
Definition ZombieBase.c:18

◆ ProcessSoundVoiceEvent()

void ProcessSoundVoiceEvent ( AnimSoundVoiceEvent sound_event,
out AbstractWave aw )
inlineprotected
578 {
579 if (!GetGame().IsDedicatedServer())
580 {
581 SoundObjectBuilder objectBuilder = sound_event.GetSoundBuilder();
582 if (NULL != objectBuilder)
583 {
584 objectBuilder.AddEnvSoundVariables(GetPosition());
585 SoundObject soundObject = objectBuilder.BuildSoundObject();
586 AttenuateSoundIfNecessary(soundObject);
588 }
589 }
590
591 if (GetGame().IsServer())
592 {
593 if (sound_event.m_NoiseParams != NULL)
594 GetGame().GetNoiseSystem().AddNoise(this, sound_event.m_NoiseParams, NoiseAIEvaluate.GetNoiseReduction(GetGame().GetWeather()));
595 }
596 }
void PlaySound()
Definition HungerSoundHandler.c:38
class SoundObjectBuilder SoundObject(SoundParams soundParams)
Definition SensesAIEvaluate.c:2
static float GetNoiseReduction(Weather weather)
Definition SensesAIEvaluate.c:18
Definition Sound.c:46

Перекрестные ссылки GetGame(), NoiseAIEvaluate::GetNoiseReduction(), GetPosition, PlaySound() и SoundObject().

◆ ProcessVoiceFX()

AbstractWave ProcessVoiceFX ( string pSoundSetName)
inlineprotected
527 {
531 if (!GetGame().IsDedicatedServer())
532 {
534 if ( !soundParams.IsValid() )
535 {
536 //SoundError("Invalid sound set.");
537 return null;
538 }
539
541 soundObject = soundObjectBuilder.BuildSoundObject();
542 AttenuateSoundIfNecessary(soundObject);
543
545 }
546
547 return null;
548 }
void SoundObjectBuilder(SoundParams soundParams)
Definition Sound.c:101

Перекрестные ссылки GetGame(), PlaySound(), SoundObject() и SoundObjectBuilder().

◆ SetBeingBackstabbed()

override void SetBeingBackstabbed ( int backstabType)
inlineprotected
1054 {
1055 // disable AI simulation
1056 GetAIAgent().SetKeepInIdle(true);
1057
1058 // select death animation
1059 switch (backstabType)
1060 {
1061 case EMeleeHitType.FINISHER_LIVERSTAB:
1062 m_DeathType = DayZInfectedDeathAnims.ANIM_DEATH_BACKSTAB;
1063 break;
1064
1065 case EMeleeHitType.FINISHER_NECKSTAB:
1066 m_DeathType = DayZInfectedDeathAnims.ANIM_DEATH_NECKSTAB;
1067 break;
1068
1069 default:
1070 m_DeathType = DayZInfectedDeathAnims.ANIM_DEATH_DEFAULT;
1071 }
1072
1073 // set flag - death command will be executed
1074 m_FinisherInProgress = true;
1075 }
EMeleeHitType
Definition DayZPlayerImplementMeleeCombat.c:2

◆ SetDefaultHitPosition()

vector SetDefaultHitPosition ( string pSelection)
inlineprotected
172 {
173 return GetSelectionPositionMS(pSelection);
174 }

◆ ZombieBase()

void ZombieBase ( )
inlineprotected
44 {
45 Init();
46 }
void Init()
Definition ZombieBase.c:48

Перекрестные ссылки Init().

Поля

◆ HIT_INTERVAL_MIN

const float HIT_INTERVAL_MIN = 0.3
protected

◆ m_ActiveVaultType

int m_ActiveVaultType = -1
protected

HandleVault

◆ m_ActualAttackType

DayZInfectedAttackType m_ActualAttackType = null
protected

◆ m_ActualTarget

EntityAI m_ActualTarget = null
protected

Combat

◆ m_AllTargetObjects

ref array<Object> m_AllTargetObjects
protected

◆ m_ArrowManager

ref ArrowManagerBase m_ArrowManager
protected

◆ m_AttackCooldownTime

float m_AttackCooldownTime = 0
protected

◆ m_CrawlTransition

int m_CrawlTransition = -1
protected

Crawl transition

◆ m_DamageHitDirection

float m_DamageHitDirection = 0
protected

HandleDeath

◆ m_DamageHitHeavy

bool m_DamageHitHeavy = false
protected

◆ m_DamageHitToProcess

bool m_DamageHitToProcess = false
protected

Damage hits

◆ m_DamageHitType

int m_DamageHitType = 0
protected

◆ m_DeathType

int m_DeathType = 0
protected

◆ m_DefaultHitPosition

vector m_DefaultHitPosition
protected

◆ m_DeltaTime

float m_DeltaTime
protected

◆ m_FinisherInProgress

bool m_FinisherInProgress = false
protected

◆ m_HitElapsedTime

float m_HitElapsedTime = HIT_INTERVAL_MIN
protected

◆ m_InfectedSoundEventHandler

ref InfectedSoundEventHandler m_InfectedSoundEventHandler
protected

◆ m_IsCrawling

bool m_IsCrawling
protected

◆ m_KnuckleLand

bool m_KnuckleLand = false
protected

◆ m_KnuckleOutTimer

float m_KnuckleOutTimer = 0
protected

◆ m_LastMindState

int m_LastMindState = -1
protected

◆ m_LastMovementSpeed

float m_LastMovementSpeed = -1
protected

◆ m_LastSoundVoiceAW

AbstractWave m_LastSoundVoiceAW
protected

◆ m_MindState

int m_MindState = -1
protected

◆ m_MovementSpeed

float m_MovementSpeed = -1
protected

◆ m_OrientationLocal

int m_OrientationLocal = -1
protected

◆ m_OrientationSynced

int m_OrientationSynced = -1
protected

◆ m_OrientationTimer

float m_OrientationTimer
protected

◆ m_ShockDamage

float m_ShockDamage = 0
protected

◆ m_StanceVariation

int m_StanceVariation = 0
protected

server / singleplayer properties

◆ m_TargetableObjects

ref array<typename> m_TargetableObjects
protected

◆ ORIENTATION_SYNC_THRESHOLD

const float ORIENTATION_SYNC_THRESHOLD = 30
private

◆ SHOCK_TO_STUN_MULTIPLIER

const float SHOCK_TO_STUN_MULTIPLIER = 2.82
private

◆ TARGET_CONE_ANGLE_CHASE

const float TARGET_CONE_ANGLE_CHASE = 20
private

◆ TARGET_CONE_ANGLE_FIGHT

const float TARGET_CONE_ANGLE_FIGHT = 30
private

Объявления и описания членов класса находятся в файле: