From 4ef8a162160e3028d4a8382304382872c79a44f9 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期四, 11 四月 2019 20:40:02 +0800
Subject: [PATCH] 6494 子 【开发】【2.0】战斗公式增加普攻伤害和技能伤害 / 【后端】【2.0】战斗公式增加普攻伤害和技能伤害属性
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/EffGetSet.py | 17 +++++---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py | 6 ++
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py | 6 ++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 13 ++++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py | 10 ++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 55 +++++++++++++++------------
6 files changed, 73 insertions(+), 34 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
index 063ab36..c927e2a 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -835,7 +835,11 @@
CDBPlayerRefresh_Water, # 水
CDBPlayerRefresh_Fire, # 火
CDBPlayerRefresh_Earth, # 土 205
-) = range(146, 206)
+CDBPlayerRefresh_NormalHurt, # 属性普通攻击增伤:普通攻击附加的固定值伤害 206
+CDBPlayerRefresh_NormalHurtPer, # 属性普通攻击加成:普通攻击附加的伤害百分比 207
+CDBPlayerRefresh_FabaoHurt, # 属性法宝技能增伤:法宝技能攻击附加的固定值伤害 208
+CDBPlayerRefresh_FabaoHurtPer, # 属性法宝技能加成:法宝技能攻击附加的伤害百分比 209
+) = range(146, 210)
TYPE_Price_Gold_Paper_Money = 5 # 金钱类型,(先用礼券,再用金子)
TYPE_Price_Family_Contribution = 6 # 战盟贡献度(活跃度转换得来)
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 2c511af..73586cc 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
@@ -1957,9 +1957,17 @@
# 改变技能伤害
atkSkillPer, atkSkillValue = ChangeSkillHurt(atkObj, defObj, curSkill, atkSkillPer, atkSkillValue)
-
atkSkillPer = ChangeSkillHurtPer(atkObj, defObj, curSkill, atkSkillPer)
+ # --- 新增普通攻击的数值和技能攻击的数值,根据类型各自计算
+ if atkObjType == IPY_GameWorld.gotPlayer:
+ if not curSkill or curSkill.GetFuncType() == ChConfig.Def_SkillFuncType_NormalAttack:
+ atkSkillPer += PlayerControl.GetNormalHurtPer(atkObj)
+ atkSkillValue += PlayerControl.GetNormalHurt(atkObj)
+ elif curSkill.GetFuncType() in [ChConfig.Def_SkillFuncType_FbSkill, ChConfig.Def_SkillFuncType_FbPassiveSkill]:
+ atkSkillPer += PlayerControl.GetFabaoHurtPer(atkObj)
+ atkSkillValue += PlayerControl.GetFabaoHurt(atkObj)
+
# atkSkillPer 包含普攻,所以不是用技能增强处理
atkSkillPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AttackAddSkillPer)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 114d97d..b9646bc 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -68,29 +68,25 @@
Def_BuffValue_Count = 3 # buff记录的value个数
#游戏对象属性--------------------------------------------
-Def_Calc_AllAttrType_MAX = 125
+Def_Calc_AllAttrType_MAX = 129
#基本属性BUFF计算,顺序与 ObjProperty_AttrByIndex 对应,同时也为buff效果ID同步通知策划
TYPE_Calc_AttrList = (
-#基础属性
TYPE_Calc_Metal, # 金 1
TYPE_Calc_Wood, # 木 2
TYPE_Calc_Water, # 水 3
TYPE_Calc_Fire, # 火 4
-TYPE_Calc_Earth, # 土 5
-#战斗属性
-TYPE_Calc_AttrMaxHP, # 最大血量 6
-TYPE_Calc_AttrMaxMP, # 最大魔法值 7
-TYPE_Calc_AttrDEF, # 防御力 8
-TYPE_Calc_AttrHit, # 命中 9
-TYPE_Calc_AttrMiss, # 闪避 10
-TYPE_Calc_AttrATKMin, # 最小攻击力 11
-TYPE_Calc_AttrATKMax, # 最大攻击力 12
-TYPE_Calc_AttrHP, # 当前HP 13
-TYPE_Calc_AttrMP, # 当前MP 14
-#TYPE_Calc_AttrMATKMin, # 最小魔法攻击力 #废弃:NPC表字段代表境界
-#TYPE_Calc_AttrMATKMax, # 最大魔法攻击力 #废弃
-TYPE_Calc_Luck, # 气运 15
+TYPE_Calc_AttrHP, # 当前HP 5
+TYPE_Calc_AttrMP, # 当前MP 6
+TYPE_Calc_AttrMaxHP, # 最大血量 7
+TYPE_Calc_AttrMaxMP, # 最大魔法值 8
+TYPE_Calc_AttrATKMin, # 最小攻击力 9
+TYPE_Calc_AttrATKMax, # 最大攻击力 10
+TYPE_Calc_Earth, # 土 11
+TYPE_Calc_Luck, # 气运 12
+TYPE_Calc_AttrDEF, # 防御力 13
+TYPE_Calc_AttrHit, # 命中 14
+TYPE_Calc_AttrMiss, # 闪避 15
TYPE_Calc_AttrSpeed, # 移动速度 16
TYPE_Calc_AttrAtkSpeed, # 攻击速度 17
@@ -190,27 +186,32 @@
TYPE_Calc_BaseDefAddPer, # 基础防御百分比
TYPE_Calc_BaseHitAddPer, # 基础命中百分比
TYPE_Calc_BaseMissAddPer, # 基础闪避百分比
-TYPE_Calc_GodWeaponMaxHPPer, # 神兵生命百分比 110
-TYPE_Calc_GodWeaponAtkPer, # 神兵攻击百分比
+TYPE_Calc_GodWeaponMaxHPPer, # 神兵生命百分比
+TYPE_Calc_GodWeaponAtkPer, # 神兵攻击百分比 105
TYPE_Calc_StoneMaxHPPer, # 宝石生命百分比
TYPE_Calc_StoneAtkPer, # 宝石攻击百分比
TYPE_Calc_HPCureEnhance, # 血瓶恢复效果增加
-TYPE_Calc_OnlyFinalHurt, # 额外输出伤害 115
-TYPE_Calc_PVPAtkBackHP, # PVP攻击回血
+TYPE_Calc_OnlyFinalHurt, # 额外输出伤害
+TYPE_Calc_PVPAtkBackHP, # PVP攻击回血 110
TYPE_Calc_HitSucessRate, # 命中成功率
TYPE_Calc_MissSucessRate, # 闪避成功率
TYPE_Calc_AtkInterval, # NPC攻击频率
-TYPE_Calc_FuncDef, # 功能层防御 120
-TYPE_Calc_CurePer, # 治疗效果加成,默认100%
+TYPE_Calc_FuncDef, # 功能层防御
+TYPE_Calc_CurePer, # 治疗效果加成,默认100% 115
TYPE_Calc_BeHurtPer, # 加深受到伤害百分比
TYPE_Calc_HorseAtkPer, # 坐骑攻击百分比
TYPE_Calc_StoneBasePer, # 宝石基础属性百分比
-TYPE_Calc_RealmBasePer, # 境界基础属性百分比 125
-TYPE_Calc_PetSkillAtkRate, # 宠物技能攻击比例加成
+TYPE_Calc_RealmBasePer, # 境界基础属性百分比
+TYPE_Calc_PetSkillAtkRate, # 宠物技能攻击比例加成 120
TYPE_Calc_WingHPPer, # 翅膀生命百分比
TYPE_Calc_SuiteBasePer, # 套装基础属性百分比
TYPE_Calc_PlusBaseAtkPer, # 强化基础攻击百分比
-TYPE_Calc_ProDef, # 当前防护值 130
+TYPE_Calc_ProDef, # 当前防护值
+TYPE_Calc_NormalHurt, # 普通攻击增伤 125
+TYPE_Calc_NormalHurtPer, # 普通攻击加成
+TYPE_Calc_FabaoHurt, # 法宝技能增伤
+TYPE_Calc_FabaoHurtPer, # 法宝技能加成
+
) = range(1, Def_Calc_AllAttrType_MAX)
@@ -3000,6 +3001,10 @@
#---SetDict 玩家字典KEY,不存于数据库---
# key的长度不能超过29个字节
+Def_PlayerKey_NormalHurt = "NormalHurt" # 属性普通攻击增伤:普通攻击附加的固定值伤害
+Def_PlayerKey_NormalHurtPer = "NormalHurtPer" # 属性普通攻击加成:普通攻击附加的伤害百分比
+Def_PlayerKey_FabaoHurt = "FabaoHurt" # 属性法宝技能增伤:法宝技能攻击附加的固定值伤害
+Def_PlayerKey_FabaoHurtPer = "FabaoHurtPer" # 属性法宝技能加成:法宝技能攻击附加的伤害百分比
Def_PlayerKey_AddBuffLayer = "addBuffLayer" # buff当前层数
Def_PlayerKey_BuffHurtCnt = "BuffHurtCnt" # 持续buff掉血次数
Def_PlayerKey_Zhansha = "zhansha" # 斩杀标志
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
index d122e9c..0953bf8 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -6568,6 +6568,19 @@
def GetFuncDef(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_CopyFuncAttr % (ChConfig.TYPE_Calc_AttrDEF - 1))
def SetFuncDef(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_CopyFuncAttr % (ChConfig.TYPE_Calc_AttrDEF - 1), value)
+#普通攻击增伤:普通攻击附加的固定值伤害
+def GetNormalHurt(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_NormalHurt)
+def SetNormalHurt(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_NormalHurt, value)
+#普通攻击加成:普通攻击附加的伤害百分比
+def GetNormalHurtPer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_NormalHurtPer)
+def SetNormalHurtPer(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_NormalHurtPer, value)
+#法宝技能增伤:法宝技能攻击附加的固定值伤害
+def GetFabaoHurt(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_FabaoHurt)
+def SetFabaoHurt(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_FabaoHurt, value)
+#法宝技能加成:法宝技能攻击附加的伤害百分比
+def GetFabaoHurtPer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_FabaoHurtPer)
+def SetFabaoHurtPer(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_FabaoHurtPer, value)
+
## 计算功能背包物品属性
# @param curPlayer 当前玩家
# @param packType 背包类型
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index 063ab36..c927e2a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -835,7 +835,11 @@
CDBPlayerRefresh_Water, # 水
CDBPlayerRefresh_Fire, # 火
CDBPlayerRefresh_Earth, # 土 205
-) = range(146, 206)
+CDBPlayerRefresh_NormalHurt, # 属性普通攻击增伤:普通攻击附加的固定值伤害 206
+CDBPlayerRefresh_NormalHurtPer, # 属性普通攻击加成:普通攻击附加的伤害百分比 207
+CDBPlayerRefresh_FabaoHurt, # 属性法宝技能增伤:法宝技能攻击附加的固定值伤害 208
+CDBPlayerRefresh_FabaoHurtPer, # 属性法宝技能加成:法宝技能攻击附加的伤害百分比 209
+) = range(146, 210)
TYPE_Price_Gold_Paper_Money = 5 # 金钱类型,(先用礼券,再用金子)
TYPE_Price_Family_Contribution = 6 # 战盟贡献度(活跃度转换得来)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/EffGetSet.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/EffGetSet.py
index d7ddcb4..28d4073 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/EffGetSet.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/EffGetSet.py
@@ -22,6 +22,7 @@
import IPY_PlayerDefine
import ShareDefine
+
#生物属性接口,顺序对应ChConfig.TYPE_Calc_AttrList
#同个属性Get, Set 写在一起,方便维护 [Get, Set, 属性类型, 是否通知自身, 是否通知周围玩家]
ObjProperty_AttrByIndex = [
@@ -29,20 +30,20 @@
[lambda curObj:PlayerControl.GetWood(curObj), lambda curObj, value:PlayerControl.SetWood(curObj, value), ShareDefine.CDBPlayerRefresh_Wood, 1, 0], # 木
[lambda curObj:PlayerControl.GetWater(curObj), lambda curObj, value:PlayerControl.SetWater(curObj, value), ShareDefine.CDBPlayerRefresh_Water, 1, 0], # 水
[lambda curObj:PlayerControl.GetFire(curObj), lambda curObj, value:PlayerControl.SetFire(curObj, value), ShareDefine.CDBPlayerRefresh_Fire, 1, 0], # 火
- [lambda curObj:PlayerControl.GetEarth(curObj), lambda curObj, value:PlayerControl.SetEarth(curObj, value), ShareDefine.CDBPlayerRefresh_Earth, 1, 0], # 土
+ [lambda curObj:GameObj.GetHP(curObj), lambda curObj, value:GameObj.SetHP(curObj, value), IPY_PlayerDefine.CDBPlayerRefresh_HP, 1, 1], # 当前血量
+ [lambda curObj:curObj.GetMP(), lambda curObj, value:curObj.SetMP(value), IPY_PlayerDefine.CDBPlayerRefresh_MP, 0, 0], # 当前魔量
[lambda curObj:GameObj.GetMaxHP(curObj), lambda curObj, value:GameObj.SetMaxHP(curObj, value), IPY_PlayerDefine.CDBPlayerRefresh_MaxHP, 1, 1], # 最大血量
[lambda curObj:curObj.GetMaxMP(), lambda curObj, value:curObj.SetMaxMP(value), IPY_PlayerDefine.CDBPlayerRefresh_MaxMP, 0, 0], # 最大魔量
+ [lambda curObj:curObj.GetMinAtk(), lambda curObj, value:curObj.SetMinAtk(value), IPY_PlayerDefine.CDBPlayerRefresh_MINATK, 1, 0], # 最小攻击力
+ [lambda curObj:curObj.GetMaxAtk(), lambda curObj, value:curObj.SetMaxAtk(value), IPY_PlayerDefine.CDBPlayerRefresh_MAXATK, 1, 0], # 最大攻击力
+ [lambda curObj:PlayerControl.GetEarth(curObj), lambda curObj, value:PlayerControl.SetEarth(curObj, value), ShareDefine.CDBPlayerRefresh_Earth, 1, 0], # 土
+ [lambda curObj:curObj.GetLuckValue(), lambda curObj, value:curObj.SetLuckValue(value), IPY_PlayerDefine.CDBPlayerRefresh_LuckValue, 1, 0], # 气运
[lambda curObj:curObj.GetDef(), lambda curObj, value:curObj.SetDef(value), IPY_PlayerDefine.CDBPlayerRefresh_DEF, 1, 0], # 防御力
[lambda curObj:curObj.GetHit(), lambda curObj, value:curObj.SetHit(value), IPY_PlayerDefine.CDBPlayerRefresh_HIT, 1, 0], # 命中
[lambda curObj:curObj.GetMiss(), lambda curObj, value:curObj.SetMiss(value), IPY_PlayerDefine.CDBPlayerRefresh_Miss, 1, 0], # 闪避
- [lambda curObj:curObj.GetMinAtk(), lambda curObj, value:curObj.SetMinAtk(value), IPY_PlayerDefine.CDBPlayerRefresh_MINATK, 1, 0], # 最小攻击力
- [lambda curObj:curObj.GetMaxAtk(), lambda curObj, value:curObj.SetMaxAtk(value), IPY_PlayerDefine.CDBPlayerRefresh_MAXATK, 1, 0], # 最大攻击力
- [lambda curObj:GameObj.GetHP(curObj), lambda curObj, value:GameObj.SetHP(curObj, value), IPY_PlayerDefine.CDBPlayerRefresh_HP, 1, 1], # 当前血量
- [lambda curObj:curObj.GetMP(), lambda curObj, value:curObj.SetMP(value), IPY_PlayerDefine.CDBPlayerRefresh_MP, 0, 0], # 当前魔量
#[lambda curObj:curObj.GetMAtkMin(), lambda curObj, value:curObj.SetMAtkMin(value), IPY_PlayerDefine.CDBPlayerRefresh_MAtkMin, 0, 0], # 最小魔攻
#[lambda curObj:curObj.GetMAtkMax(), lambda curObj, value:curObj.SetMAtkMax(value), IPY_PlayerDefine.CDBPlayerRefresh_MAtkMax, 0, 0], # 最大魔攻
- [lambda curObj:curObj.GetLuckValue(), lambda curObj, value:curObj.SetLuckValue(value), IPY_PlayerDefine.CDBPlayerRefresh_LuckValue, 1, 0], # 气运
[lambda curObj:PlayerControl.GetSpeedNotBuff(curObj), lambda curObj, value:PlayerControl.SetSpeedNotBuff(curObj, value), 0, 0, 0], # 移动速度
[lambda curObj:PlayerControl.GetAtkSpeed(curObj), lambda curObj, value:PlayerControl.SetAtkSpeed(curObj, value), IPY_PlayerDefine.CDBPlayerRefresh_BattleValEx1, 1, 1], # 攻击速度
@@ -163,6 +164,10 @@
[lambda curObj:PlayerControl.GetSuiteBasePer(curObj), lambda curObj, value:PlayerControl.SetSuiteBasePer(curObj, value), 0, 0, 0], # 套装基础属性百分比
[lambda curObj:PlayerControl.GetPlusBaseAtkPer(curObj), lambda curObj, value:PlayerControl.SetPlusBaseAtkPer(curObj, value), 0, 0, 0], # 强化基础攻击百分比
[lambda curObj:PlayerControl.GetProDef(curObj), lambda curObj, value:PlayerControl.SetProDef(curObj, value), IPY_PlayerDefine.CDBPlayerRefresh_ExAttr4, 1, 0], # 当前防护值
+ [lambda curObj:PlayerControl.GetNormalHurt(curObj), lambda curObj, value:PlayerControl.SetNormalHurt(curObj, value), ShareDefine.CDBPlayerRefresh_NormalHurt, 1, 0], # 属性普通攻击增伤
+ [lambda curObj:PlayerControl.GetNormalHurtPer(curObj), lambda curObj, value:PlayerControl.SetNormalHurtPer(curObj, value), ShareDefine.CDBPlayerRefresh_NormalHurtPer, 1, 0], # 属性普通攻击加成
+ [lambda curObj:PlayerControl.GetFabaoHurt(curObj), lambda curObj, value:PlayerControl.SetFabaoHurt(curObj, value), ShareDefine.CDBPlayerRefresh_FabaoHurt, 1, 0], # 属性法宝技能增伤
+ [lambda curObj:PlayerControl.GetFabaoHurtPer(curObj), lambda curObj, value:PlayerControl.SetFabaoHurtPer(curObj, value), ShareDefine.CDBPlayerRefresh_FabaoHurtPer, 1, 0], # 属性法宝技能加成
]
## 通过索引获得属性值
--
Gitblit v1.8.0