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

◆ HandleInitialMeleeErc()

bool HandleInitialMeleeErc ( int pCurrentCommandID,
HumanInputController pInputs,
InventoryItem itemInHands,
HumanMovementState pMovementState,
out bool pContinueAttack )
protected

First attack in raised erc (light or heavy if modifier is used). Also added support for finishers.

См. определение в файле DayZPlayerMeleeFightLogic_LightHeavy.c строка 387

388 {
389 //Debug.MeleeLog(m_Player, "HandleInitialMeleeErc[1]");
390
392 m_MeleeCombat.Update(itemInHands, m_HitType);
393
394 //Debug.MeleeLog(m_Player, string.Format("HandleInitialMeleeErc[2] %1", EnumTools.EnumToString(EMeleeHitType, m_HitType)));
395
396 EntityAI target;
397 EMeleeTargetType targetType;
398 GetTargetData(target, targetType);
399 float attackByDistance = GetAttackTypeByDistanceToTarget(target, targetType);
400
401 // finisher attack hittype override
402 int finisherType = m_MeleeCombat.GetFinisherType();
403 if (finisherType != -1)
404 {
405 int animationType = DetermineFinisherAnimation(finisherType);
406 if (animationType > -1)
407 {
408 //Debug.MeleeLog(m_Player, string.Format("HandleInitialMeleeErc[3a] target=%1, finisherType=%2, animationType=%3, hitPositionWS=%4", target, finisherType, animationType, m_MeleeCombat.GetHitPos().ToString()));
409 m_Player.StartCommand_Melee2(target, animationType, attackByDistance, m_MeleeCombat.GetHitPos());
410 }
411 else
412 {
413 //Debug.MeleeLog(m_Player, string.Format("HandleInitialMeleeErc[3b] target=%1, finisherType=%2, animationType=%3, hitPositionWS=%4", target, finisherType, (m_HitType == EMeleeHitType.HEAVY).ToString(), m_MeleeCombat.GetHitPos().ToString()));
414 m_Player.StartCommand_Melee2(target, m_HitType == EMeleeHitType.HEAVY, attackByDistance, m_MeleeCombat.GetHitPos());
415 }
416
417 m_HitType = finisherType;
418 target.SetBeingBackstabbed(finisherType);
419 }
420 else
421 {
422 //Debug.MeleeLog(m_Player, string.Format("HandleInitialMeleeErc[3d] target=%1, animationType=%2, hitPositionWS=%3", target, (m_HitType == EMeleeHitType.HEAVY).ToString(), m_MeleeCombat.GetHitPos().ToString()));
423 m_Player.StartCommand_Melee2(target, m_HitType == EMeleeHitType.HEAVY, attackByDistance, m_MeleeCombat.GetHitPos());
424 }
425
426 if (m_HitType == EMeleeHitType.HEAVY)
427 {
428 m_Player.DepleteStamina(EStaminaModifiers.MELEE_HEAVY);
429 if (m_Player.GetBrokenLegs() == eBrokenLegs.BROKEN_LEGS)
430 {
432 m_Player.m_ShockHandler.CheckValue(true);
433 }
434 }
435 else
436 {
437 m_Player.DepleteStamina(EStaminaModifiers.MELEE_LIGHT);
438 if (m_Player.GetBrokenLegs() == eBrokenLegs.BROKEN_LEGS)
439 {
441 m_Player.m_ShockHandler.CheckValue(true);
442 }
443 }
444
446
448
449 return true;
450 }
EMeleeHitType
Определения DayZPlayerImplementMeleeCombat.c:2
EMeleeHitType m_HitType
Hit type of the most recent attack.
ref DayZPlayerImplementMeleeCombat m_MeleeCombat
EMeleeHitType GetAttackTypeFromInputs(HumanInputController pInputs)
int DetermineFinisherAnimation(int finisher_type)
Picks a specific finisher animation. Not used for mounted bayonet stabs.
void GetTargetData(out EntityAI target, out EMeleeTargetType targetType)
float GetAttackTypeByDistanceToTarget(EntityAI pTarget, EMeleeTargetType pTargetType=EMeleeTargetType.ALIGNABLE)
bool m_WasPreviousHitProcessed
void DisableControls()
eBrokenLegs
Определения EBrokenLegs.c:2
EMeleeTargetType
Определения EMeleeTargetType.c:2
EStaminaModifiers
Определения EStaminaModifiers.c:2
DayZPlayer m_Player
Определения Hand_Events.c:42
Определения Building.c:6
static const float BROKEN_LEGS_LIGHT_MELEE_SHOCK
Определения PlayerConstants.c:227
static const float BROKEN_LEGS_HEAVY_MELEE_SHOCK
Определения PlayerConstants.c:228
Определения PlayerConstants.c:2

Перекрестные ссылки PlayerConstants::BROKEN_LEGS_HEAVY_MELEE_SHOCK, PlayerConstants::BROKEN_LEGS_LIGHT_MELEE_SHOCK, DetermineFinisherAnimation(), DisableControls(), GetAttackTypeByDistanceToTarget(), GetAttackTypeFromInputs(), GetTargetData(), m_HitType, m_MeleeCombat, m_Player и m_WasPreviousHitProcessed.

Используется в HandleFightLogic().