Esempio n. 1
0
        //扣除技能消耗
        public void DoCost(DRSkillData pSkillData)
        {
            if (Owner == null || pSkillData == null)
            {
                return;
            }

            DoCost(pSkillData.MSV_CostType1, pSkillData.MSV_CostValue1, pSkillData.IsActiveSkill());
            DoCost(pSkillData.MSV_CostType2, pSkillData.MSV_CostValue2, pSkillData.IsActiveSkill());
        }
Esempio n. 2
0
        public bool CanSpellSkill(DRSkillData pSkillData, GTargetInfo sTarInfo)
        {
            Avatar pCaster = Owner;

            if (!pCaster || pSkillData == null)
            {
                return(false);
            }

            if (!pSkillData.IsActiveSkill())
            {
                return(false);
            }

            //检查当前施放技能
            if (m_pSpellLogic != null && m_pSpellLogic.IsLock())
            {
                return(false);
            }

            //检查消耗
            if (!CheckCost(pSkillData))
            {
                return(false);
            }
            //检查CD
            if (!CheckCD(pSkillData))
            {
                return(false);
            }

            //检查施法者位置
            if (pCaster.GetPos().Distance2D(sTarInfo.m_vSrcPos) > 64.0f)
            {
                return(false);
            }

            //自身检查
            int nSrvCheck = pSkillData.MSV_SrcCheck;

            if (nSrvCheck > 0)
            {
                //todo 添加条件检查组后修复
                //if(!GSKillConditionCheckManager::Instance().Check(nSrvCheck, pCaster))
                //	return false;
            }

            //目标检查
            if (!GSkillLogicManager.Instance.CheckTarget(pSkillData, pCaster, sTarInfo))
            {
                return(false);
            }

            return(true);
        }