From e0f4e51415c77d7b7daa1762e6e8b0f6d2f12f66 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 23 五月 2022 18:07:06 +0800
Subject: [PATCH] 9480 【BT6】【后端】炼体系统(属性条目增加炼体属性百分比;优化炼体属性百分比计算方式)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/EffGetSet.py | 1 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerLianTi.py | 24 ++++--------------------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py | 1 +
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py | 1 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 5 +++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 7 ++++++-
6 files changed, 18 insertions(+), 21 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
index 77015ad..026ac03 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -638,6 +638,7 @@
Def_Effect_WingTrainAttrPer = 157 # 翅膀培养属性加成(攻防血)
Def_Effect_PeerlessWeaponTrainAttrPer = 158 # 灭世培养属性加成(攻防血)
Def_Effect_PeerlessWeapon2TrainAttrPer = 159 # 弑神培养属性加成(攻防血)
+Def_Effect_LianTiAttrPer = 160 # 炼体属性百分比(攻防血)
#增加%d物理伤害值,其中a值为伤害值
Def_Effect_AddAtk = 1005
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index a26e756..52496a3 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -74,7 +74,7 @@
Def_BuffValue_Count = 3 # buff记录的value个数
#游戏对象属性--------------------------------------------
-Def_Calc_AllAttrType_MAX = 159
+Def_Calc_AllAttrType_MAX = 160
#基本属性BUFF计算,顺序与 ObjProperty_AttrByIndex 对应,同时也为buff效果ID同步通知策划
TYPE_Calc_AttrList = (
TYPE_Calc_Metal, # 金 1
@@ -247,6 +247,7 @@
TYPE_Calc_WingTrainAttrPer, # 翅膀培养属性加成(攻防血)
TYPE_Calc_PeerlessWeaponTrainAttrPer, # 灭世培养属性加成(攻防血)
TYPE_Calc_PeerlessWeapon2TrainAttrPer, # 弑神培养属性加成(攻防血)
+TYPE_Calc_LianTiAttrPer, # 坐骑培养属性加成(攻防血) 159
) = range(1, Def_Calc_AllAttrType_MAX)
## 支持大数值属性,超过20E
@@ -3312,6 +3313,7 @@
Def_PlayerKey_WingTrainAttrPer = "WingTrainAttrPer" # 翅膀培养属性加成
Def_PlayerKey_PeerlessWeaponTrainAttrPer = "PeerlessWeaponTrainAttrPer" # 灭世培养属性加成
Def_PlayerKey_PeerlessWeapon2TrainAttrPer = "PeerlessWeapon2TrainAttrPer" # 弑神培养属性加成
+Def_PlayerKey_LianTiAttrPer = "LianTiAttrPer" # 炼体属性属性加成
Def_PlayerKey_StoneBasePer = "StoneBasePer" # 宝石基础属性百分比
Def_PlayerKey_RealmBasePer = "RealmBasePer" # 境界基础属性百分比
Def_PlayerKey_WingHPPer = "WingHPPer" # 翅膀生命百分比
@@ -4560,6 +4562,7 @@
ShareDefine.Def_Effect_WingTrainAttrPer:[[TYPE_Calc_WingTrainAttrPer], False, TYPE_NoLinear],
ShareDefine.Def_Effect_PeerlessWeaponTrainAttrPer:[[TYPE_Calc_PeerlessWeaponTrainAttrPer], False, TYPE_NoLinear],
ShareDefine.Def_Effect_PeerlessWeapon2TrainAttrPer:[[TYPE_Calc_PeerlessWeapon2TrainAttrPer], False, TYPE_NoLinear],
+ ShareDefine.Def_Effect_LianTiAttrPer:[[TYPE_Calc_LianTiAttrPer], False, TYPE_NoLinear],
ShareDefine.Def_Effect_WingHPPer:[[TYPE_Calc_WingHPPer], False, TYPE_NoLinear],
ShareDefine.Def_Effect_SuiteBasePer:[[TYPE_Calc_SuiteBasePer], False, TYPE_NoLinear],
ShareDefine.Def_Effect_PlusBaseAtkPer:[[TYPE_Calc_PlusBaseAtkPer], False, TYPE_NoLinear],
@@ -4595,6 +4598,8 @@
TYPE_Calc_AttrMaxHP, TYPE_Calc_AttrDEF],
TYPE_Calc_PeerlessWeapon2TrainAttrPer:[TYPE_Calc_AttrATKMin, TYPE_Calc_AttrATKMax,
TYPE_Calc_AttrMaxHP, TYPE_Calc_AttrDEF],
+ TYPE_Calc_LianTiAttrPer:[TYPE_Calc_AttrATKMin, TYPE_Calc_AttrATKMax,
+ TYPE_Calc_AttrMaxHP, TYPE_Calc_AttrDEF],
TYPE_Calc_WingHPPer:[TYPE_Calc_AttrMaxHP],
TYPE_Calc_SuiteBasePer:[TYPE_Calc_AttrATKMin, TYPE_Calc_AttrATKMax,
TYPE_Calc_AttrMaxHP],
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 146faea..09f9ab6 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -4728,6 +4728,7 @@
ChConfig.TYPE_Calc_WingTrainAttrPer:funcAttrInfoList[ChConfig.Def_CalcAttrFunc_WingTarin],
ChConfig.TYPE_Calc_PeerlessWeaponTrainAttrPer:funcAttrInfoList[ChConfig.Def_CalcAttrFunc_PeerlessWeaponTrain],
ChConfig.TYPE_Calc_PeerlessWeapon2TrainAttrPer:funcAttrInfoList[ChConfig.Def_CalcAttrFunc_PeerlessWeapon2Train],
+ ChConfig.TYPE_Calc_LianTiAttrPer:funcAttrInfoList[ChConfig.Def_CalcAttrFunc_LianTi],
}
# 3.2 统计各功能之间非线性属性交叉影响累加
funcCrossAttrPerInfoDict = {} # 百分比交叉影响所提升的属性值 {功能属性编号:{提升的属性类型:数值, ...}, ...}
@@ -6945,6 +6946,10 @@
def GetPeerlessWeapon2TrainAttrPer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_PeerlessWeapon2TrainAttrPer)
def SetPeerlessWeapon2TrainAttrPer(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_PeerlessWeapon2TrainAttrPer, value)
+# 炼体属性属性加成
+def GetLianTiAttrPer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_LianTiAttrPer)
+def SetLianTiAttrPer(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_LianTiAttrPer, value)
+
# 宝石基础属性百分比
def GetStoneBasePer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_StoneBasePer)
def SetStoneBasePer(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_StoneBasePer, value)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerLianTi.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerLianTi.py
index 6280826..302a71c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerLianTi.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerLianTi.py
@@ -189,8 +189,6 @@
return
allAttrList = [{} for _ in range(4)]
- plusAttrRateDict = {}
- lianTiAttrDict = {}
ipyDataMgr = IpyGameDataPY.IPY_Data()
for index in xrange(ipyDataMgr.GetLianTiCount()):
@@ -210,8 +208,7 @@
for i, attrID in enumerate(fixedAttrTypeList):
attrValue = fixedAttrValueList[i] if len(fixedAttrValueList) > i else 0
PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrList)
- lianTiAttrDict[attrID] = lianTiAttrDict.get(attrID, 0) + attrValue
- #GameWorld.DebugLog(" %s, attrID=%s,attrValue=%s,%s" % (i, attrID, attrValue, lianTiAttrDict))
+ #GameWorld.DebugLog(" %s, attrID=%s,attrValue=%s,%s" % (i, attrID, attrValue, allAttrList))
# 培养丹增加属性
upItemPerCount = lvupIpyData.GetEatPerCount()
@@ -224,28 +221,15 @@
attrValue = upItemAttrValueList[i] if len(upItemAttrValueList) > i else 0
attrValue *= attrMultiple
PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrList)
- lianTiAttrDict[attrID] = lianTiAttrDict.get(attrID, 0) + attrValue
- #GameWorld.DebugLog(" %s, attrID=%s,attrValue=%s,%s" % (i, attrID, attrValue, lianTiAttrDict))
+ #GameWorld.DebugLog(" %s, attrID=%s,attrValue=%s,%s" % (i, attrID, attrValue, allAttrList))
# 增强属性万分率累加
plusAttrTypeList = lvupIpyData.GetPlusAttrType()
plusAttrRateList = lvupIpyData.GetPlusAttrRate()
for i, attrID in enumerate(plusAttrTypeList):
- plusRate = plusAttrRateList[i] if len(plusAttrRateList) > i else 0
- plusAttrRateDict[attrID] = plusAttrRateDict.get(attrID, 0) + plusRate
+ attrValue = plusAttrRateList[i] if len(plusAttrRateList) > i else 0
+ PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrList)
- #GameWorld.DebugLog(" lianTiAttrDict=%s" % lianTiAttrDict)
- #GameWorld.DebugLog(" plusAttrRateDict=%s" % plusAttrRateDict)
-
- # 固定属性增强值计算
- for attrID, plusRate in plusAttrRateDict.items():
- if attrID not in lianTiAttrDict:
- continue
- attrValue = lianTiAttrDict[attrID]
- plusValue = int(attrValue * plusRate / 10000.0)
- PlayerControl.CalcAttrDict_Type(attrID, plusValue, allAttrList)
- #GameWorld.DebugLog(" plus: attrID=%s,attrValue=%s,plusRate=%s,plusValue=%s" % (attrID, attrValue, plusRate, plusValue))
-
#GameWorld.DebugLog(" allAttrList=%s" % allAttrList)
# 保存计算值
PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_LianTi, allAttrList)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index 77015ad..026ac03 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -638,6 +638,7 @@
Def_Effect_WingTrainAttrPer = 157 # 翅膀培养属性加成(攻防血)
Def_Effect_PeerlessWeaponTrainAttrPer = 158 # 灭世培养属性加成(攻防血)
Def_Effect_PeerlessWeapon2TrainAttrPer = 159 # 弑神培养属性加成(攻防血)
+Def_Effect_LianTiAttrPer = 160 # 炼体属性百分比(攻防血)
#增加%d物理伤害值,其中a值为伤害值
Def_Effect_AddAtk = 1005
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 268f375..ec787f5 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/EffGetSet.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/EffGetSet.py
@@ -198,6 +198,7 @@
[lambda curObj:PlayerControl.GetWingTrainAttrPer(curObj), lambda curObj, value:PlayerControl.SetWingTrainAttrPer(curObj, value), 0, 0, 0], # 翅膀培养属性加成
[lambda curObj:PlayerControl.GetPeerlessWeaponTrainAttrPer(curObj), lambda curObj, value:PlayerControl.SetPeerlessWeaponTrainAttrPer(curObj, value), 0, 0, 0], # 灭世培养属性加成
[lambda curObj:PlayerControl.GetPeerlessWeapon2TrainAttrPer(curObj), lambda curObj, value:PlayerControl.SetPeerlessWeapon2TrainAttrPer(curObj, value), 0, 0, 0], # 弑神培养属性加成
+ [lambda curObj:PlayerControl.GetLianTiAttrPer(curObj), lambda curObj, value:PlayerControl.SetLianTiAttrPer(curObj, value), 0, 0, 0], # 炼体属性属性加成
]
## 通过索引获得属性值
--
Gitblit v1.8.0