From ba951da9a5916d6250ea2fdf0a8f9028740ade34 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 12 三月 2024 19:59:10 +0800
Subject: [PATCH] 10033 【后端】仙树升级系统及砍树产出规则(增加装备评分参数支持: 攻速、击晕、连击、抗连击、反击、抗反击、吸血、抗吸血)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py |   21 ++++++++++++++++++---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py           |   28 ++++++++++++++++++++++++++--
 PySysDB/PySysDBPY.h                                                                            |    8 ++++++++
 3 files changed, 52 insertions(+), 5 deletions(-)

diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index f5fe338..13398de 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -1032,6 +1032,14 @@
 	DWORD		ProDefPerC;	// 防护百分比系数
 	DWORD		FinalHurtPerC;	// 最终伤害加成系数
 	DWORD		FinalHurtReducePerC;	// 最终伤害减免系数
+	DWORD		AtkSpeedC;	// 攻速系数
+	DWORD		FaintRateC;	// 击晕率系数
+	DWORD		ComboRateC;	// 连击率系数
+	DWORD		ComboDefRateC;	// 抗连击系数
+	DWORD		AtkBackRateC;	// 反击率系数
+	DWORD		AtkBackDefRateC;	// 抗反击系数
+	DWORD		SuckHPPerC;	// 吸血率系数
+	DWORD		SuckHPDefPerC;	// 抗吸血系数
 };
 
 //成就表
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index 8ad89e4..f716fa7 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -857,6 +857,14 @@
                         ("DWORD", "ProDefPerC", 0),
                         ("DWORD", "FinalHurtPerC", 0),
                         ("DWORD", "FinalHurtReducePerC", 0),
+                        ("DWORD", "AtkSpeedC", 0),
+                        ("DWORD", "FaintRateC", 0),
+                        ("DWORD", "ComboRateC", 0),
+                        ("DWORD", "ComboDefRateC", 0),
+                        ("DWORD", "AtkBackRateC", 0),
+                        ("DWORD", "AtkBackDefRateC", 0),
+                        ("DWORD", "SuckHPPerC", 0),
+                        ("DWORD", "SuckHPDefPerC", 0),
                         ),
 
                 "Success":(
@@ -3947,7 +3955,15 @@
         self.IgnoreDefRateReduceC = 0
         self.ProDefPerC = 0
         self.FinalHurtPerC = 0
-        self.FinalHurtReducePerC = 0
+        self.FinalHurtReducePerC = 0
+        self.AtkSpeedC = 0
+        self.FaintRateC = 0
+        self.ComboRateC = 0
+        self.ComboDefRateC = 0
+        self.AtkBackRateC = 0
+        self.AtkBackDefRateC = 0
+        self.SuckHPPerC = 0
+        self.SuckHPDefPerC = 0
         return
         
     def GetClassLV(self): return self.ClassLV #  装备阶级
@@ -3995,7 +4011,15 @@
     def GetIgnoreDefRateReduceC(self): return self.IgnoreDefRateReduceC #  无视防御减免系数
     def GetProDefPerC(self): return self.ProDefPerC #  防护百分比系数
     def GetFinalHurtPerC(self): return self.FinalHurtPerC #  最终伤害加成系数
-    def GetFinalHurtReducePerC(self): return self.FinalHurtReducePerC #  最终伤害减免系数
+    def GetFinalHurtReducePerC(self): return self.FinalHurtReducePerC #  最终伤害减免系数
+    def GetAtkSpeedC(self): return self.AtkSpeedC #  攻速系数
+    def GetFaintRateC(self): return self.FaintRateC #  击晕率系数
+    def GetComboRateC(self): return self.ComboRateC #  连击率系数
+    def GetComboDefRateC(self): return self.ComboDefRateC #  抗连击系数
+    def GetAtkBackRateC(self): return self.AtkBackRateC #  反击率系数
+    def GetAtkBackDefRateC(self): return self.AtkBackDefRateC #  抗反击系数
+    def GetSuckHPPerC(self): return self.SuckHPPerC #  吸血率系数
+    def GetSuckHPDefPerC(self): return self.SuckHPDefPerC #  抗吸血系数
 
 # 成就表
 class IPY_Success():
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
index 5c5d224..4205311 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
@@ -669,6 +669,15 @@
     itemQuality = curItem.GetItemQuality()
     isSuit = 1 if curItem.GetSuiteID() > 0 else 0
     gsParamIpyData = IpyGameDataPY.GetIpyGameDataNotLog("EquipGSParam", classLV, color, isSuit, itemQuality)
+    
+    baseAttrIDCnt = curItem.GetUserAttrCount(ShareDefine.Def_IudetBaseAttrID)
+    baseAttrValueCnt = curItem.GetUserAttrCount(ShareDefine.Def_IudetBaseAttrValue)
+    if baseAttrIDCnt == baseAttrValueCnt:
+        for i in xrange(baseAttrIDCnt):
+            baseAttrID = curItem.GetUserAttrByIndex(ShareDefine.Def_IudetBaseAttrID, i)
+            baseAttrValue = curItem.GetUserAttrByIndex(ShareDefine.Def_IudetBaseAttrValue, i)
+            attrDict[baseAttrID] = attrDict.get(baseAttrID, 0) + baseAttrValue
+            
     # 传奇属性
     legAttrIDList, legAttrValueList = ItemControler.GetEquipLegendAttrAll(curItem)
     for i, legendAttrID in enumerate(legAttrIDList):
@@ -751,13 +760,19 @@
     FinalHurtPerC = attrDict.get(ShareDefine.Def_Effect_FinalHurtPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetFinalHurtPerC())
     FinalHurtReducePerC = attrDict.get(ShareDefine.Def_Effect_FinalHurtReducePer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetFinalHurtReducePerC())
     
-    # 攻速不默认乘,仅作为参数提供策划使用
-    AtkSpeed = 0#attrDict.get(ShareDefine.Def_Effect_AtkSpeed, 0)
-    AtkSpeedC = 1#1 if not gsParamIpyData else gsParamIpyData.GetAtkSpeedC()
+    AtkSpeed = attrDict.get(ShareDefine.Def_Effect_AtkSpeed, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetAtkSpeedC())
     
     OnlyFinalHurt = attrDict.get(ShareDefine.Def_Effect_OnlyFinalHurt, 0)
     PVPAtkBackHP = attrDict.get(ShareDefine.Def_Effect_PVPAtkBackHP, 0)  
     
+    FaintRate = attrDict.get(ShareDefine.Def_Effect_FaintRate, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetFaintRateC())
+    ComboRate = attrDict.get(ShareDefine.Def_Effect_ComboRate, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetComboRateC())
+    ComboDefRate = attrDict.get(ShareDefine.Def_Effect_ComboDefRate, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetComboDefRateC())
+    AtkBackRate = attrDict.get(ShareDefine.Def_Effect_AtkBackRate, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetAtkBackRateC())
+    AtkBackDefRate = attrDict.get(ShareDefine.Def_Effect_AtkBackDefRate, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetAtkBackDefRateC())
+    SuckHPPer = attrDict.get(ShareDefine.Def_Effect_SuckHPPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSuckHPPerC())
+    SuckHPDefPer = attrDict.get(ShareDefine.Def_Effect_SuckHPDefPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSuckHPDefPerC())
+    
     if GetIsDogzEquip(curItem):
         # 神兽装备用不同公式
         value = eval(FormulaControl.GetCompileFormula("EquipGSFormula3", IpyGameDataPY.GetFuncCfg("EquipGSFormula", 3)))

--
Gitblit v1.8.0