From cad5322198881fb5cbf0ab12b05f06dc2642fb6d Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 23 一月 2019 14:57:04 +0800
Subject: [PATCH] 5931 【后端】【1.5.100】诛仙装备开发(诛仙装备传奇属性效果、套装属性效果; 增加GM命令 PrintZXEquipSkill 输出诛仙装备所影响的相关技能效果信息)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintZXEquipSkill.py | 76 +++++++++++++++++++++++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/EquipZhuXian.py | 28 +++------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py | 41 +++++++++++++
3 files changed, 126 insertions(+), 19 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py
index b2df452..bb89a25 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py
+++ b/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)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintZXEquipSkill.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintZXEquipSkill.py
new file mode 100644
index 0000000..e98f977
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintZXEquipSkill.py
@@ -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
+
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/EquipZhuXian.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/EquipZhuXian.py
index 92d5fd1..df88ad9 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/EquipZhuXian.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/EquipZhuXian.py
@@ -239,26 +239,16 @@
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
- PyGameData.g_zhuXianSkillAddPerDict[playerID] = skillAddPerDict
- elif attrID in reduceAttrIDList:
- skillReducePerDict = PyGameData.g_zhuXianSkillReducePerDict.get(playerID, {})
- skillReducePerDict[effSkillTypeID] = plusValue
- PyGameData.g_zhuXianSkillReducePerDict[playerID] = skillReducePerDict
-
+ if attrID in addAttrIDList:
+ skillAddPerDict = PyGameData.g_zhuXianSkillAddPerDict.get(playerID, {})
+ skillAddPerDict[skillTypeID] = plusValue
+ PyGameData.g_zhuXianSkillAddPerDict[playerID] = skillAddPerDict
+ elif attrID in reduceAttrIDList:
+ skillReducePerDict = PyGameData.g_zhuXianSkillReducePerDict.get(playerID, {})
+ skillReducePerDict[skillTypeID] = plusValue
+ PyGameData.g_zhuXianSkillReducePerDict[playerID] = skillReducePerDict
+
# GameWorld.DebugLog(" PyGameData.g_zhuXianSkillAddPerDict=%s" % PyGameData.g_zhuXianSkillAddPerDict)
# GameWorld.DebugLog(" PyGameData.g_zhuXianSkillReducePerDict=%s" % PyGameData.g_zhuXianSkillReducePerDict)
--
Gitblit v1.8.0