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

◆ StaminaProcessor_Move()

void StaminaHandler::StaminaProcessor_Move ( HumanMovementState pHumanMovementState)
inlineprotected

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

678 {
679 switch (pHumanMovementState.m_iMovement)
680 {
681 case DayZPlayerConstants.MOVEMENTIDX_SPRINT: //sprint
682 if (pHumanMovementState.m_iStanceIdx == DayZPlayerConstants.STANCEIDX_ERECT)
683 {
684 m_StaminaDelta = -GameConstants.STAMINA_DRAIN_STANDING_SPRINT_PER_SEC * CfgGameplayHandler.GetSprintStaminaModifierErc();
685 SetCooldown(GameConstants.STAMINA_REGEN_COOLDOWN_DEPLETION);
686 break;
687 }
688 else if ( pHumanMovementState.m_iStanceIdx == DayZPlayerConstants.STANCEIDX_CROUCH)
689 {
690 m_StaminaDelta = -GameConstants.STAMINA_DRAIN_CROUCHED_SPRINT_PER_SEC * CfgGameplayHandler.GetSprintStaminaModifierCro();
691 SetCooldown(GameConstants.STAMINA_REGEN_COOLDOWN_DEPLETION);
692 break;
693 }
694
695 m_StaminaDelta = GameConstants.STAMINA_GAIN_JOG_PER_SEC;
696 break;
697
698 case DayZPlayerConstants.MOVEMENTIDX_RUN: //jog
699 if (m_Player.GetCurrentWaterLevel() >= m_HumanMoveSettings.m_fWaterLevelSpeedRectrictionHigh)
700 {
701 m_StaminaDelta = -GameConstants.STAMINA_DRAIN_STANDING_SPRINT_PER_SEC * CfgGameplayHandler.GetSprintStaminaModifierErc();
702 break;
703 }
704
705 if (!m_IsInCooldown)
706 {
707 m_StaminaDelta = (GameConstants.STAMINA_GAIN_JOG_PER_SEC + CalcStaminaGainBonus());
708 }
709 break;
710
711 case DayZPlayerConstants.MOVEMENTIDX_WALK: //walk
712 if (!m_IsInCooldown)
713 {
714 m_StaminaDelta = (GameConstants.STAMINA_GAIN_WALK_PER_SEC + CalcStaminaGainBonus());
715 }
716 break;
717
718 case DayZPlayerConstants.MOVEMENTIDX_IDLE: //idle
719 if (m_Player.IsRolling())
720 {
721 m_StaminaDelta = GameConstants.STAMINA_GAIN_ROLL_PER_SEC;
722 break;
723 }
724
725 if (!m_IsInCooldown)
726 {
727 m_StaminaDelta = (GameConstants.STAMINA_GAIN_IDLE_PER_SEC + CalcStaminaGainBonus());
728 }
729 break;
730
731 default:
732 if (!m_IsInCooldown)
733 {
734 m_StaminaDelta = GameConstants.STAMINA_GAIN_IDLE_PER_SEC;
735 }
736 break;
737 }
738 }
int m_iMovement
current stance (DayZPlayerConstants.STANCEIDX_ERECT, ...), only if the command has a stance
Определения human.c:1157
int m_iStanceIdx
current command's id
Определения human.c:1156
PlayerBase m_Player
Определения StaminaHandler.c:282
float CalcStaminaGainBonus()
Calulates stamina regain bonus coef based on current stamina cap and level and caches it during one U...
Определения StaminaHandler.c:932
float m_StaminaDelta
Определения StaminaHandler.c:268
void SetCooldown(float time, int modifier=-1)
set cooldown timer between each consume of stamina
Определения StaminaHandler.c:1000
bool m_IsInCooldown
Определения StaminaHandler.c:292
SHumanCommandMoveSettings m_HumanMoveSettings
Определения StaminaHandler.c:281
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602

Перекрестные ссылки CalcStaminaGainBonus(), CfgGameplayHandler::GetSprintStaminaModifierCro(), CfgGameplayHandler::GetSprintStaminaModifierErc(), m_HumanMoveSettings, HumanMovementState::m_iMovement, m_IsInCooldown, HumanMovementState::m_iStanceIdx, m_Player, m_StaminaDelta, SetCooldown(), GameConstants::STAMINA_DRAIN_CROUCHED_SPRINT_PER_SEC, GameConstants::STAMINA_DRAIN_STANDING_SPRINT_PER_SEC, GameConstants::STAMINA_GAIN_IDLE_PER_SEC, GameConstants::STAMINA_GAIN_JOG_PER_SEC, GameConstants::STAMINA_GAIN_ROLL_PER_SEC, GameConstants::STAMINA_GAIN_WALK_PER_SEC и GameConstants::STAMINA_REGEN_COOLDOWN_DEPLETION.

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