| | |
| | |
|
| | | #获得技能等级
|
| | | curSkillLV = curSkill.GetSkillLV()
|
| | | |
| | | DataRecordPack.DR_LearnORUPSkill(curPlayer, curSkillID, curSkillLV)
|
| | |
|
| | | EventShell.EventRespons_SkillUp(curPlayer, curSkill.GetFuncType())
|
| | | GameWorld.Log("升级技能名 = %s 成功, 当前等级 = %s"%(curSkill.GetSkillName(), curSkill.GetSkillLV()), curPlayer.GetPlayerID())
|
| | | return True
|
| | |
|
| | |
| | | if not ipyData:
|
| | | return
|
| | | mainSkillID = ipyData.GetMainSkillID()
|
| | | |
| | | if curPlayer.GetLV() < ipyData.GetNeedLV():
|
| | | GameWorld.DebugLog('选择技能五行专精等级不足!')
|
| | | return
|
| | | |
| | | curElementSkillID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SkillElementID % mainSkillID)
|
| | | if selectSkillID == curElementSkillID:
|
| | | GameWorld.DebugLog('已经是该专精技能!')
|
| | |
| | | #更新新技能
|
| | | RefreshElementSkill(curPlayer, selectSkillID)
|
| | | # 重刷被动技能
|
| | | PassiveBuffEffMng.GetPassiveEffManager().RegistPassiveEff(curPlayer) |
| | | PassiveBuffEffMng.GetPassiveEffManager().RegistPassiveEff(curPlayer)
|
| | | # 重刷技能战力
|
| | | PlayerControl.PlayerControl(curPlayer).RefreshAllSkill()
|
| | | PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState()
|
| | |
|
| | | NotifyElementSkillInfo(curPlayer, mainSkillID)
|
| | | return
|
| | |
| | | def RefreshElementSkillByAttr(curPlayer, attrIDList):
|
| | | #加点、丹药、境界、洗点 会影响灵根点
|
| | | __InitElementSkillInfo()
|
| | |
|
| | | isRefresh = False
|
| | | |
| | | needRefreshSkillIDList = []
|
| | | skillManager = curPlayer.GetSkillManager()
|
| | | for i in xrange(skillManager.GetSkillCount()):
|
| | | hasSkill = skillManager.GetSkillByIndex(i)
|
| | |
| | | attrID = GetSkillUpNeedAttr(PyGameData.g_elemntSkillDict[curElementSkillID][0])[0]
|
| | | if attrID not in attrIDList:
|
| | | continue
|
| | | if RefreshElementSkill(curPlayer, curElementSkillID):
|
| | | needRefreshSkillIDList.append(curElementSkillID)
|
| | | |
| | | isRefresh = False
|
| | | for skillID in needRefreshSkillIDList:
|
| | | if RefreshElementSkill(curPlayer, skillID):
|
| | | isRefresh = True
|
| | | if isRefresh:
|
| | | # 重刷被动技能
|
| | | PassiveBuffEffMng.GetPassiveEffManager().RegistPassiveEff(curPlayer)
|
| | | # 重刷技能战力
|
| | | PlayerControl.PlayerControl(curPlayer).RefreshAllSkill()
|
| | | PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState()
|
| | | return
|
| | |
|
| | | def GetElementSkillCnt(curPlayer):
|
| | |
| | | callFunc = GameWorld.GetExecFunc(GameBuffs, "Buff_%s.%s"%(moduleSuffix, "OnCalcBuffEx"))
|
| | | if callFunc:
|
| | | callFunc(objDetel, curEffect, allAttrList[index], curBuff)
|
| | | |
| | | # 持续性属性变化的buff,目前只有持续减益
|
| | | callFunc = GameWorld.GetExecFunc(GameBuffs, "BuffProcess_%s.%s"%(moduleSuffix, "OnCalcBuffEx"))
|
| | | if callFunc:
|
| | | callFunc(objDetel, curEffect, allAttrList[index], curBuff)
|
| | | return
|
| | |
|
| | | ## 获得buff效果的计算模块文件后缀
|
| | |
| | | def CalcBuffers_Effect(curPlayer, allAttrList, calcEffectIDList=[]):
|
| | |
|
| | | for buffType in range(IPY_GameWorld.bfBuff, IPY_GameWorld.btBufMax):
|
| | | #这些类型不影响玩家计算属性
|
| | | if buffType in [IPY_GameWorld.bfProcessBuff, #IPY_GameWorld.bfProcessDeBuff, |
| | | IPY_GameWorld.bfMapBuff,
|
| | | IPY_GameWorld.bfEquipBuff]:
|
| | | continue
|
| | | |
| | | buffTuple = SkillCommon.GetBuffManagerByBuffType(curPlayer, buffType)
|
| | | #通过类型获取目标的buff管理器为空,则跳出
|
| | | if buffTuple == ():
|
| | | continue
|
| | | |
| | | #这些类型不影响玩家计算属性
|
| | | if buffType in [IPY_GameWorld.bfProcessBuff,
|
| | | IPY_GameWorld.bfProcessDeBuff, IPY_GameWorld.bfMapBuff,
|
| | | IPY_GameWorld.bfEquipBuff]:
|
| | | continue
|
| | |
|
| | | buffManager = buffTuple[0]
|
| | |
| | | return True
|
| | |
|
| | |
|
| | | #===============================================================================
|
| | | # Def_Effect_GoddessAddHP = 1300 # 加血 (压总值血量百分比)
|
| | | # Def_Effect_AddHPValue_All = 1027 # 持续加血(压总值攻击)
|
| | | # Def_Effect_LostHPValue_All = 1033 # 持续减血(压总值攻击)
|
| | | # Def_Effect_LostAndAddHPValue_All = 1050 # 持续吸血(压总值攻击)
|
| | | # Def_Effect_LostHPValue_Single = 1201 # 持续单次减血计算 攻击
|
| | | # Def_Effect_AddHPValue_Single = 1202 # 持续单次加血计算 攻击
|
| | | # Def_Effect_LostHP_MaxHP = 1089 # 持续减血(压总值, 血量百分比)
|
| | | #===============================================================================
|
| | |
|
| | | #waring: 此值影响了BUFF的替换规则,值大替换小的
|
| | | ##添加BUFF前压入BUFF的值,这边只计算和攻击者相关,仅支持放在效果1的buff
|
| | | # @param attacker 攻击方
|
| | |
| | | ## 获取技能总等级
|
| | | # @param curPlayer
|
| | | # @return allSkillLV:总技能等级
|
| | | def GetAllSkillLV(curPlayer):
|
| | | successSkillIDList = ReadChConfig.GetEvalChConfig("SuccessSkillIDList")
|
| | | def GetAllSkillLV(curPlayer, funcType):
|
| | | allSkillLV = 0
|
| | | skillManager = curPlayer.GetSkillManager()
|
| | | for i in range(0 , skillManager.GetSkillCount()):
|
| | | for i in xrange(skillManager.GetSkillCount()):
|
| | | curPlayerSkill = skillManager.GetSkillByIndex(i)
|
| | | if curPlayerSkill == None:
|
| | | continue
|
| | | |
| | | skillTypeID = curPlayerSkill.GetSkillTypeID()
|
| | | if skillTypeID not in successSkillIDList:
|
| | | if curPlayerSkill.GetFuncType() != funcType:
|
| | | continue
|
| | | |
| | | skillLV = curPlayerSkill.GetSkillLV()
|
| | | allSkillLV += skillLV
|
| | |
|