private bool CanBlockAttack(PlayerBaseAttackLogic attackLogic) { if (attackLogic is PlayerProjectileAttackLogic projectileAttack) { if (projectileAttack.IsGuardCrush()) { return(false); } } if (IsBlockingAllAttacks()) { SetupStanceToBlockAttack(attackLogic); return(true); } else { bool canBlockAttack = IsInBlockingStance_Internal(); if (canBlockAttack && m_MovementComponent) { //Check if the player is in the right stance for this attack bool isCrouching = m_MovementComponent.IsCrouching(); canBlockAttack &= attackLogic.CanAttackBeBlocked(isCrouching); if (!canBlockAttack && m_StunInfoSC.IsInAutoBlockingState()) { SetupStanceToBlockAttack(attackLogic); canBlockAttack = true; } } return(canBlockAttack); } }