5931 【后端】【1.5.100】诛仙装备开发(诛仙装备传奇属性效果、套装属性效果; 增加GM命令 PrintZXEquipSkill 输出诛仙装备所影响的相关技能效果信息)
2个文件已修改
1个文件已添加
131 ■■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintZXEquipSkill.py 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/EquipZhuXian.py 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py
@@ -57,6 +57,7 @@
import ChPyNetSendPack
import NetPackCommon
import FamilyRobBoss
import EquipZhuXian
import FBCommon
import ChNPC
@@ -1417,6 +1418,44 @@
    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):
@@ -1855,6 +1894,8 @@
    # 改变技能伤害
    atkSkillPer, atkSkillValue = ChangeSkillHurt(atkObj, defObj, curSkill, atkSkillPer, atkSkillValue)
    
    atkSkillPer = ChangeSkillHurtPer(atkObj, defObj, curSkill, atkSkillPer)
    #  atkSkillPer 包含普攻,所以不是用技能增强处理
    atkSkillPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AttackAddSkillPer)
    
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintZXEquipSkill.py
New file
@@ -0,0 +1,76 @@
#!/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
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/EquipZhuXian.py
@@ -239,24 +239,14 @@
        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)