Пример #1
0
    public OPERATE_RESULT IsCanUse_CheckDeplete(int idUser)
    {
        CObject_Character pUser = (CObject_Character)CObjectManager.Instance.FindObject(idUser);

        if (pUser == null)
        {
            return(OPERATE_RESULT.OR_ERROR);
        }

        CCharacterData pCharData = CDataPool.Instance.CharacterData_Get(idUser);

        if (pCharData == null)
        {
            return(OPERATE_RESULT.OR_ERROR);
        }

        // 心法要求
        //const SCLIENT_XINFA* pXinfa = CObjectManager::GetMe()->GetMySelf()->GetCharacterData()->Get_XinFa(m_pDefine->m_nXinFaID);
        //if ( pXinfa && pXinfa->m_nLevel <m_pDefine->m_nXinFaLevelRequirement )
        //{
        //	return OR_NEED_HIGH_LEVEL_XINFA;
        //}

        // 武器判断
        if (m_pDefine.m_bMustUseWeapon != 0)
        {
            if (pUser.GetCharacterData().Get_Equip(HUMAN_EQUIP.HEQUIP_WEAPON) == MacroDefine.INVALID_ID)
            {
                return(OPERATE_RESULT.OR_NEED_A_WEAPON);
            }
        }

        // 消耗判断
        if (m_pDeplete == null)
        {
            //Assert( m_pDeplete != NULL && "SCLIENT_SKILL::IsCanUse_CheckDeplete" );
            return(OPERATE_RESULT.OR_OK);
        }
        //待实现
        CImpact_Character impactChar = pUser.Impact;
        uint nDerateAllImpactID      = MacroDefine.UINT_MAX;

        if (impactChar.isExistEffect(nDerateAllImpactID))
        {
            return(OPERATE_RESULT.OR_OK);
        }

        // 是否有减免当前技能消耗的BUFF
        uint nDerateCurImpactID = MacroDefine.UINT_MAX;

        if (impactChar.isExistEffect(nDerateCurImpactID))
        {
            return(OPERATE_RESULT.OR_OK);
        }
//
        if (m_pDeplete.m_nHP > 0)
        {
            // 是否有减免HP消耗的BUFF
            uint nDerateHPImpactID = MacroDefine.UINT_MAX;
            if (!impactChar.isExistEffect(nDerateHPImpactID))
            {
                if (pCharData.Get_HP() < m_pDeplete.m_nHP)
                {
                    return(OPERATE_RESULT.OR_NOT_ENOUGH_HP);
                }
            }
        }
//
        if (m_pDeplete.m_nMP > 0)
        {
            // 是否有减免MP消耗的BUFF
            uint nDerateMPImpactID = MacroDefine.UINT_MAX;
            if (!impactChar.isExistEffect(nDerateMPImpactID))
            {
                if (pCharData.Get_MP() < m_pDeplete.m_nMP)
                {
                    return(OPERATE_RESULT.OR_LACK_MANA);
                }
            }
        }
//
        //if (m_pDeplete.m_nSP > 0)
        //{
        //    // 是否有减免SP消耗的BUFF
        //    uint nDerateSPImpactID = MacroDefine.UINT_MAX;
        //    if (!impactChar.isExistEffect(nDerateSPImpactID))
        //    {
        //        if (pCharData.Get_Rage() < m_pDeplete.m_nSP)
        //            return OPERATE_RESULT.OR_NOT_ENOUGH_RAGE;
        //    }
        //}
//
        if (m_pDeplete.m_nStrikePoint > 0)
        {
            // 是否有减免StrikePoint消耗的BUFF
            // 这里的m_pDeplete->m_nStrikePoint为连技段
            uint nDerateStrikePointImpactID = MacroDefine.UINT_MAX;
            if (!impactChar.isExistEffect(nDerateStrikePointImpactID))
            {
                int nStrikePoint = m_pDeplete.m_nStrikePoint * 3;
                if (pCharData.Get_StrikePoint() < nStrikePoint)
                {
                    return(OPERATE_RESULT.OR_NOT_ENOUGH_STRIKE_POINT);
                }
            }
        }
//
        if (m_pDeplete.m_nItemID != MacroDefine.INVALID_ID)
        {
            // 是否有减免Item消耗的BUFF
            uint nDerateItemImpactID = MacroDefine.UINT_MAX;
            if (!impactChar.isExistEffect(nDerateItemImpactID))
            {
                int nIndex = CDataPool.Instance.UserBag_GetItemIndexByID(m_pDeplete.m_nItemID);
                if (nIndex == -1)
                {
                    return(OPERATE_RESULT.OR_NOT_ENOUGH_ITEM);
                }
            }
        }
        return(OPERATE_RESULT.OR_OK);
    }