| | |
| | | #使用技能行为状态, 客户端限制
|
| | | if not OperControlManager.IsObjCanDoAction(curPlayer,
|
| | | ChConfig.Def_Obj_ActState_ClientSkill,
|
| | | curSkill.GetSkillOfSeries()):
|
| | | curSkill.GetSkillOfSeries(), curSkill):
|
| | | AttackFailNotify(curPlayer, curSkill)
|
| | | return
|
| | |
|
| | |
| | | return False
|
| | |
|
| | | #玩家属性点要求
|
| | | stateSkillLV = curSkill.GetStateSkillLV() #需要基础属性ID*10000+需要属性点
|
| | | needBaseAttrID, needBaseAttrValue = stateSkillLV /10000, stateSkillLV%10000
|
| | | stateSkillLV = curSkill.GetStateSkillLV() #需要基础属性ID*100000+需要属性点
|
| | | needBaseAttrID, needBaseAttrValue = GetSkillUpNeedAttr(stateSkillLV)
|
| | | if needBaseAttrID and needBaseAttrValue:
|
| | | baseAttrDict = {
|
| | | ShareDefine.Def_Effect_Metal:PlayerControl.GetMetal(curPlayer),
|
| | |
| | | return False
|
| | |
|
| | | return True
|
| | | ## 获取技能升级属性需求 rutrun attrID, attrvalue
|
| | | def GetSkillUpNeedAttr(stateSkillLV):return stateSkillLV /100000, stateSkillLV%100000
|
| | |
|
| | | #// A5 16 选择技能五行专精 #tagCMSelectSkillElement
|
| | | #
|
| | |
| | | maxSkillLV = len(limitInfoList)
|
| | | updSkillLV = 0
|
| | | for i, limitInfo in enumerate(limitInfoList):
|
| | | needAttrID, needAttrValue = limitInfo /10000, limitInfo%10000
|
| | | needAttrID, needAttrValue = GetSkillUpNeedAttr(limitInfo)
|
| | | curAttrValue = baseAttrDict.get(needAttrID, 0)
|
| | | if curAttrValue >= needAttrValue:
|
| | | updSkillLV = maxSkillLV - i
|
| | |
| | | continue
|
| | | if curElementSkillID not in PyGameData.g_elemntSkillDict:
|
| | | continue
|
| | | if PyGameData.g_elemntSkillDict[curElementSkillID][0] /10000 not in attrIDList:
|
| | | attrID = GetSkillUpNeedAttr(PyGameData.g_elemntSkillDict[curElementSkillID][0])[0]
|
| | | if attrID not in attrIDList:
|
| | | continue
|
| | | if RefreshElementSkill(curPlayer, curElementSkillID):
|
| | | isRefresh = True
|
| | |
| | | return cnt
|
| | |
|
| | | def __InitElementSkillInfo():
|
| | | #缓存技能专精信息{skillID:[attrID*10000+needValue,..]}
|
| | | #缓存技能专精信息{skillID:[attrID*100000+needValue,..]}
|
| | | if not PyGameData.g_elemntSkillDict:
|
| | | ipyMgr = IpyGameDataPY.IPY_Data()
|
| | | for i in xrange(ipyMgr.GetSkillElementCount()):
|
| | |
| | | OperControlManager.SetObjActState(curObj, buffSkill)
|
| | |
|
| | |
|
| | | # 非属性技能算属性 特殊处理
|
| | | # 法宝SP技能 如1-4级为增加属性,第5级为伤害效果,第6-10级就要包含属性和伤害效果
|
| | | def CalcFabaoSPSkillAttr(curPlayer, curPlayerSkill, allAttrList):
|
| | | if curPlayerSkill.GetFuncType() != ChConfig.Def_SkillFuncType_FbSPSkill:
|
| | | return
|
| | | |
| | | value = GetMaxHPAttrValue(curPlayerSkill)
|
| | | if value == 0:
|
| | | return
|
| | | |
| | | PlayerControl.CalcAttrDict_Type(ShareDefine.Def_Effect_MaxHP, value, allAttrList)
|
| | | return
|
| | |
|
| | |
|
| | | # 计算属性类技能的属性,同buff层不算战力
|
| | | def CalcPassiveAttr_Effect(curPlayer, allAttrList):
|
| | |
| | | if curPlayerSkill == None:
|
| | | continue
|
| | |
|
| | | CalcFabaoSPSkillAttr(curPlayer, curPlayerSkill, allAttrList)
|
| | | if not SkillCommon.isPassiveAttr(curPlayerSkill):
|
| | | continue
|
| | |
|
| | |
| | |
|
| | | # 不受限制和影响的技能
|
| | | def Trigger_UseSkill(attacker, defender, curSkill, tick, tagRoundPosX = 0, tagRoundPosY = 0, isEnhanceSkill = False):
|
| | |
|
| | |
|
| | | #这个技能是Buff
|
| | | if SkillCommon.IsBuff(curSkill):
|
| | |
| | | def GetAddBuffValue(attacker, curSkill, defender):
|
| | | #验证该技能效果1的ID,提取公式
|
| | | curEffect = curSkill.GetEffect(0)
|
| | | effectID = curEffect.GetEffectID() |
| | |
|
| | | moduleSuffix = GetBuffModuleSuffix(curEffect)
|
| | |
|
| | |
| | | return
|
| | |
|
| | | #---------------------------------------------------------------------
|
| | | # 获得关联技能
|
| | | # 获得关联技能,0 全部 1是主动型技能(法宝,普攻) 其他技能ID
|
| | | def GetConnectSkillID(curSkill):
|
| | | return curSkill.GetExAttr1()
|
| | |
|
| | |
| | | def GetUpLVCostItemNum(curSkill):
|
| | | return curSkill.GetExAttr5()
|
| | |
|
| | | # 技能特殊增加属性配置,目前只支持生命,潜力技能专用
|
| | | def GetMaxHPAttrValue(curSkill):
|
| | | return curSkill.GetMP()
|
| | |
|
| | |
|
| | | ##获得当前技能升级消耗的真气值
|
| | | # @param curSkill 当前技能技能
|