Example #1
0
    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);
        }
    }