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

◆ HandleComboHit()

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

combo hits - when we are already in Melee command and clicking UseButton

wait for the previous hit commit before hitting again

select if the next attack will be light or heavy (based on input/attachment modifier)

no suitable attack - skip that

No combos for the finisher command

targetting

continue 'combo' - left hand attacks

broken legs shock

stamina depletion per attack

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

505 {
506 //Debug.MeleeLog(m_Player, "HandleComboHit::");
507 m_IsInComboRange = false;
508
511 return false;
512
514 if (itemInHands && itemInHands.IsWeapon())
516 else
518
520 if (m_HitType == EMeleeHitType.NONE)
521 return false;
522
524 if (m_MeleeCombat.GetFinisherType() > -1)
525 return false;
526
527 EntityAI target;
528 EMeleeTargetType targetType;
529 GetTargetData(target, targetType);
530 float attackByDistance = GetAttackTypeByDistanceToTarget(target, targetType);
531
533 //Debug.MeleeLog(m_Player, string.Format("HandleComboHit:: %1", EnumTools.EnumToString(EMeleeHitType, m_HitType)));
534 m_MeleeCombat.Update(itemInHands, m_HitType);
535
537 bool isHeavy = (m_HitType == EMeleeHitType.HEAVY || m_HitType == EMeleeHitType.WPN_STAB);
538 m_Player.GetCommand_Melee2().ContinueCombo(isHeavy, attackByDistance, target, m_MeleeCombat.GetHitPos());
540
542 if (m_Player.GetBrokenLegs() == eBrokenLegs.BROKEN_LEGS)
543 {
545
546 if (!isHeavy)
548
550 m_Player.m_ShockHandler.CheckValue(true);
551 }
552
554 switch (m_HitType)
555 {
556 case EMeleeHitType.HEAVY:
557 case EMeleeHitType.SPRINT:
558 case EMeleeHitType.WPN_STAB:
559 case EMeleeHitType.WPN_HIT_BUTTSTOCK:
560 case EMeleeHitType.WPN_HIT:
561 m_Player.DepleteStamina(EStaminaModifiers.MELEE_HEAVY);
562 break;
563 default:
564 m_Player.DepleteStamina(EStaminaModifiers.MELEE_LIGHT);
565 break;
566 }
567
568 return true;
569 }
EMeleeHitType
Определения DayZPlayerImplementMeleeCombat.c:2
EMeleeHitType m_HitType
Hit type of the most recent attack.
bool m_IsInComboRange
ref DayZPlayerImplementMeleeCombat m_MeleeCombat
EMeleeHitType GetAttackTypeFromInputs(HumanInputController pInputs)
void GetTargetData(out EntityAI target, out EMeleeTargetType targetType)
float GetAttackTypeByDistanceToTarget(EntityAI pTarget, EMeleeTargetType pTargetType=EMeleeTargetType.ALIGNABLE)
bool m_WasPreviousHitProcessed
EMeleeHitType GetAttackTypeByWeaponAttachments(EntityAI pEntity)
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, DisableControls(), GetAttackTypeByDistanceToTarget(), GetAttackTypeByWeaponAttachments(), GetAttackTypeFromInputs(), GetTargetData(), m_HitType, m_IsInComboRange, m_MeleeCombat, m_Player и m_WasPreviousHitProcessed.

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