//扣除技能消耗 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()); }
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); }