5931 【后端】【1.5.100】诛仙装备开发(诛仙装备传奇属性效果、套装属性效果; 增加GM命令 PrintZXEquipSkill 输出诛仙装备所影响的相关技能效果信息)
| | |
| | | import ChPyNetSendPack
|
| | | import NetPackCommon
|
| | | import FamilyRobBoss
|
| | | import EquipZhuXian
|
| | | import FBCommon
|
| | | import ChNPC
|
| | |
|
| | |
| | | return
|
| | |
|
| | |
|
| | | def ChangeSkillHurtPer(atkObj, defObj, curSkill, skillPer):
|
| | | ## 改变技能伤害百分比
|
| | | |
| | | if not curSkill:
|
| | | return skillPer
|
| | | |
| | | if atkObj.GetGameObjType() != IPY_GameWorld.gotPlayer:
|
| | | return skillPer
|
| | | |
| | | skillTypeID = curSkill.GetSkillTypeID()
|
| | | |
| | | addPer = EquipZhuXian.GetZhuXianEquipSkillAddPer(atkObj.GetPlayerID(), skillTypeID)
|
| | | reducePer = 0
|
| | | |
| | | if defObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
|
| | | reducePer = EquipZhuXian.GetZhuXianEquipSkillReducePer(defObj.GetPlayerID(), skillTypeID)
|
| | | |
| | | #根据防守方职业 计算攻击方伤害加成
|
| | | if defObj.GetJob() in [ShareDefine.PlayerJob_Warrior, ShareDefine.PlayerJob_Knight]:
|
| | | addPer += PlayerControl.GetJobAHurtAddPer(atkObj)
|
| | | elif defObj.GetJob() in [ShareDefine.PlayerJob_Wizard, ShareDefine.PlayerJob_ForceUser]:
|
| | | addPer += PlayerControl.GetJobBHurtAddPer(atkObj)
|
| | | elif defObj.GetJob() in [ShareDefine.PlayerJob_Assassin, ShareDefine.PlayerJob_BowMaster]:
|
| | | addPer += PlayerControl.GetJobCHurtAddPer(atkObj)
|
| | | |
| | | #根据攻击方职业 计算防守方伤害减免
|
| | | if atkObj.GetJob() in [ShareDefine.PlayerJob_Warrior, ShareDefine.PlayerJob_Knight]:
|
| | | reducePer += PlayerControl.GetJobAAtkReducePer(defObj)
|
| | | elif atkObj.GetJob() in [ShareDefine.PlayerJob_Wizard, ShareDefine.PlayerJob_ForceUser]:
|
| | | reducePer += PlayerControl.GetJobBAtkReducePer(defObj)
|
| | | elif atkObj.GetJob() in [ShareDefine.PlayerJob_Assassin, ShareDefine.PlayerJob_BowMaster]:
|
| | | reducePer += PlayerControl.GetJobCAtkReducePer(defObj)
|
| | | |
| | | if addPer or reducePer:
|
| | | addSkillPer = (addPer - reducePer) / 10000.0
|
| | | skillPer = max(0, skillPer + addSkillPer)
|
| | | |
| | | return skillPer
|
| | |
|
| | | # 改变技能伤害(效果ID1010), 野外小怪1009替换1010伤害(2018-03-07增加精英怪)
|
| | | def ChangeSkillHurt(curPlayer, defObj, curSkill, skillPer, skillValue):
|
| | |
| | | # 改变技能伤害
|
| | | atkSkillPer, atkSkillValue = ChangeSkillHurt(atkObj, defObj, curSkill, atkSkillPer, atkSkillValue)
|
| | |
|
| | | atkSkillPer = ChangeSkillHurtPer(atkObj, defObj, curSkill, atkSkillPer)
|
| | | |
| | | # atkSkillPer 包含普攻,所以不是用技能增强处理
|
| | | atkSkillPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AttackAddSkillPer)
|
| | |
|
New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | ##@package GM.Commands.PrintZXEquipSkill
|
| | | #
|
| | | # @todo:输出诛仙装备技能相关信息
|
| | | # @author hxp
|
| | | # @date 2019-01-23
|
| | | # @version 1.0
|
| | | #
|
| | | # 详细描述: 输出诛仙装备技能相关信息
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2019-01-23 15:00"""
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | import GameWorld
|
| | | import PyGameData
|
| | | import PlayerControl
|
| | | import IpyGameDataPY
|
| | | import ShareDefine
|
| | |
|
| | | ## GM命令执行入口
|
| | | # @param curPlayer 当前玩家
|
| | | # @param cmdList 参数列表 [开启格数]
|
| | | # @return None
|
| | | # @remarks 函数详细说明.
|
| | | def OnExec(curPlayer, cmdList):
|
| | | |
| | | playerID = curPlayer.GetPlayerID()
|
| | | gameData = GameWorld.GetGameData()
|
| | | GameWorld.DebugAnswer(curPlayer, "诛仙装备技能效果")
|
| | | |
| | | addPerDict = PyGameData.g_zhuXianSkillAddPerDict.get(playerID, {})
|
| | | reducePerDict = PyGameData.g_zhuXianSkillReducePerDict.get(playerID, {})
|
| | | attrIDSkillPlusDict = IpyGameDataPY.GetFuncEvalCfg("SkillPlusAttrID", 1, {})
|
| | | addAttrIDList = range(ShareDefine.Def_Effect_SkillAddPer1, ShareDefine.Def_Effect_SkillAddPer7 + 1)
|
| | | reduceAttrIDList = range(ShareDefine.Def_Effect_SkillReducePer1, ShareDefine.Def_Effect_SkillReducePer7 + 1)
|
| | | for attrID, skillIDList in attrIDSkillPlusDict.items():
|
| | | addSkillInfo = ""
|
| | | reduceSkillInfo = ""
|
| | | for i, skillID in enumerate(skillIDList):
|
| | | curSkill = gameData.GetSkillBySkillID(skillID)
|
| | | if curSkill == None:
|
| | | continue
|
| | | |
| | | if attrID in addAttrIDList:
|
| | | addSkillInfo += "%s " % (curSkill.GetSkillName())
|
| | | if i == len(skillIDList) - 1:
|
| | | addPerValue = addPerDict.get(skillID, 0)
|
| | | addSkillInfo += " +%s" % addPerValue
|
| | | |
| | | elif attrID in reduceAttrIDList:
|
| | | reduceSkillInfo += "%s " % (curSkill.GetSkillName())
|
| | | if i == len(skillIDList) - 1:
|
| | | reducePerValue = reducePerDict.get(skillID, 0)
|
| | | reduceSkillInfo += " +%s" % reducePerValue
|
| | | |
| | | if addSkillInfo:
|
| | | GameWorld.DebugAnswer(curPlayer, "增伤%s: %s" % (attrID, addSkillInfo))
|
| | | if reduceSkillInfo:
|
| | | GameWorld.DebugAnswer(curPlayer, "减伤%s: %s" % (attrID, reduceSkillInfo))
|
| | | |
| | | GameWorld.DebugAnswer(curPlayer, "职业增伤: [%s, %s, %s]" |
| | | % (PlayerControl.GetJobAHurtAddPer(curPlayer), |
| | | PlayerControl.GetJobBHurtAddPer(curPlayer), |
| | | PlayerControl.GetJobCHurtAddPer(curPlayer)))
|
| | | |
| | | GameWorld.DebugAnswer(curPlayer, "职业减伤: [%s, %s, %s]" |
| | | % (PlayerControl.GetJobAAtkReducePer(curPlayer), |
| | | PlayerControl.GetJobBAtkReducePer(curPlayer), |
| | | PlayerControl.GetJobCAtkReducePer(curPlayer)))
|
| | | |
| | | return
|
| | |
|
| | |
| | | if attrID not in attrIDSkillPlusDict:
|
| | | continue
|
| | | skillTypeIDList = attrIDSkillPlusDict[attrID]
|
| | | effSkillTypeID = 0
|
| | | for skillTypeID in skillTypeIDList:
|
| | | skillData = curPlayer.GetSkillManager().FindSkillBySkillTypeID(skillTypeID)
|
| | | if not skillData:
|
| | | continue
|
| | | if SkillCommon.CheckSkillJob(curPlayer, skillData):
|
| | | effSkillTypeID = skillTypeID
|
| | | break
|
| | | if not effSkillTypeID:
|
| | | continue
|
| | | |
| | | if attrID in addAttrIDList:
|
| | | skillAddPerDict = PyGameData.g_zhuXianSkillAddPerDict.get(playerID, {})
|
| | | skillAddPerDict[effSkillTypeID] = plusValue
|
| | | skillAddPerDict[skillTypeID] = plusValue
|
| | | PyGameData.g_zhuXianSkillAddPerDict[playerID] = skillAddPerDict
|
| | | elif attrID in reduceAttrIDList:
|
| | | skillReducePerDict = PyGameData.g_zhuXianSkillReducePerDict.get(playerID, {})
|
| | | skillReducePerDict[effSkillTypeID] = plusValue
|
| | | skillReducePerDict[skillTypeID] = plusValue
|
| | | PyGameData.g_zhuXianSkillReducePerDict[playerID] = skillReducePerDict
|
| | |
|
| | | # GameWorld.DebugLog(" PyGameData.g_zhuXianSkillAddPerDict=%s" % PyGameData.g_zhuXianSkillAddPerDict)
|