From d32ee6fcbad4d426b44e35495b702a8ce6a315ed Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 25 四月 2024 15:09:32 +0800
Subject: [PATCH] 10033 【后端】仙树升级系统及砍树产出规则(修改战斗属性、战斗抗性产出规则,改为由品质部位决定范围,纯随机;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py |   39 +++++++------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py           |   58 +++++++++----------
 PySysDB/PySysDBPY.h                                                                            |   27 ++++----
 3 files changed, 62 insertions(+), 62 deletions(-)

diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index e0a6ae0..7fd35b8 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -953,22 +953,9 @@
 struct tagEquipColor
 {
 	BYTE		_EquipColor;	// 装备颜色
-	list		RangeLV;		// 等级范围
-	list		RangeRand;		// 随机上下限范围
+	list		BaseAttrRangeLV;		// 基础属性等级范围
 	BYTE		BattleAttrCount;	// 战斗属性条数
 	BYTE		BattleDefAttrCount;	// 战斗抗性条数
-	list		RangeFaintRate;		// 击晕范围
-	list		RangeFaintDefRate;		// 抗击晕范围
-	list		RangeSuperHitRate;		// 暴击范围
-	list		RangeSuperHitRateReduce;		// 抗暴击范围
-	list		RangeComboRate;		// 连击范围
-	list		RangeComboDefRate;		// 抗连击范围
-	list		RangeMissRate;		// 闪避范围
-	list		RangeMissDefRate;		// 抗闪避范围
-	list		RangeAtkBackRate;		// 反击范围
-	list		RangeAtkBackDefRate;		// 抗反击范围
-	list		RangeSuckHPPer;		// 吸血范围
-	list		RangeSuckHPDefPer;		// 抗吸血范围
 	DWORD		MoneyBase;		// 分解基础货币值
 };
 
@@ -982,6 +969,18 @@
 	list		RangeHP;		// 生命范围
 	list		RangeDef;		// 防御范围
 	list		RangeAtkSpeed;		// 攻速范围
+	list		RangeFaintRate;		// 击晕范围
+	list		RangeFaintDefRate;		// 抗击晕范围
+	list		RangeSuperHitRate;		// 暴击范围
+	list		RangeSuperHitRateReduce;		// 抗暴击范围
+	list		RangeComboRate;		// 连击范围
+	list		RangeComboDefRate;		// 抗连击范围
+	list		RangeMissRate;		// 闪避范围
+	list		RangeMissDefRate;		// 抗闪避范围
+	list		RangeAtkBackRate;		// 反击范围
+	list		RangeAtkBackDefRate;		// 抗反击范围
+	list		RangeSuckHPPer;		// 吸血范围
+	list		RangeSuckHPDefPer;		// 抗吸血范围
 };
 
 //装备评分属性系数表
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index 02784f3..414765e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -785,10 +785,19 @@
 
                 "EquipColor":(
                         ("BYTE", "EquipColor", 1),
-                        ("list", "RangeLV", 0),
-                        ("list", "RangeRand", 0),
+                        ("list", "BaseAttrRangeLV", 0),
                         ("BYTE", "BattleAttrCount", 0),
                         ("BYTE", "BattleDefAttrCount", 0),
+                        ("DWORD", "MoneyBase", 0),
+                        ),
+
+                "EquipColorPlace":(
+                        ("BYTE", "EquipColor", 1),
+                        ("BYTE", "EquipPlace", 1),
+                        ("list", "RangeAtk", 0),
+                        ("list", "RangeHP", 0),
+                        ("list", "RangeDef", 0),
+                        ("list", "RangeAtkSpeed", 0),
                         ("list", "RangeFaintRate", 0),
                         ("list", "RangeFaintDefRate", 0),
                         ("list", "RangeSuperHitRate", 0),
@@ -801,16 +810,6 @@
                         ("list", "RangeAtkBackDefRate", 0),
                         ("list", "RangeSuckHPPer", 0),
                         ("list", "RangeSuckHPDefPer", 0),
-                        ("DWORD", "MoneyBase", 0),
-                        ),
-
-                "EquipColorPlace":(
-                        ("BYTE", "EquipColor", 1),
-                        ("BYTE", "EquipPlace", 1),
-                        ("list", "RangeAtk", 0),
-                        ("list", "RangeHP", 0),
-                        ("list", "RangeDef", 0),
-                        ("list", "RangeAtkSpeed", 0),
                         ),
 
                 "EquipGSParam":(
@@ -3365,23 +3364,10 @@
         return
         
     def GetEquipColor(self): return self.attrTuple[0] #  装备颜色 BYTE
-    def GetRangeLV(self): return self.attrTuple[1] #  等级范围 list
-    def GetRangeRand(self): return self.attrTuple[2] #  随机上下限范围 list
-    def GetBattleAttrCount(self): return self.attrTuple[3] #  战斗属性条数 BYTE
-    def GetBattleDefAttrCount(self): return self.attrTuple[4] #  战斗抗性条数 BYTE
-    def GetRangeFaintRate(self): return self.attrTuple[5] #  击晕范围 list
-    def GetRangeFaintDefRate(self): return self.attrTuple[6] #  抗击晕范围 list
-    def GetRangeSuperHitRate(self): return self.attrTuple[7] #  暴击范围 list
-    def GetRangeSuperHitRateReduce(self): return self.attrTuple[8] #  抗暴击范围 list
-    def GetRangeComboRate(self): return self.attrTuple[9] #  连击范围 list
-    def GetRangeComboDefRate(self): return self.attrTuple[10] #  抗连击范围 list
-    def GetRangeMissRate(self): return self.attrTuple[11] #  闪避范围 list
-    def GetRangeMissDefRate(self): return self.attrTuple[12] #  抗闪避范围 list
-    def GetRangeAtkBackRate(self): return self.attrTuple[13] #  反击范围 list
-    def GetRangeAtkBackDefRate(self): return self.attrTuple[14] #  抗反击范围 list
-    def GetRangeSuckHPPer(self): return self.attrTuple[15] #  吸血范围 list
-    def GetRangeSuckHPDefPer(self): return self.attrTuple[16] #  抗吸血范围 list
-    def GetMoneyBase(self): return self.attrTuple[17] #  分解基础货币值 DWORD
+    def GetBaseAttrRangeLV(self): return self.attrTuple[1] #  基础属性等级范围 list
+    def GetBattleAttrCount(self): return self.attrTuple[2] #  战斗属性条数 BYTE
+    def GetBattleDefAttrCount(self): return self.attrTuple[3] #  战斗抗性条数 BYTE
+    def GetMoneyBase(self): return self.attrTuple[4] #  分解基础货币值 DWORD
 
 # 装备品质部位表
 class IPY_EquipColorPlace():
@@ -3395,7 +3381,19 @@
     def GetRangeAtk(self): return self.attrTuple[2] #  攻击范围 list
     def GetRangeHP(self): return self.attrTuple[3] #  生命范围 list
     def GetRangeDef(self): return self.attrTuple[4] #  防御范围 list
-    def GetRangeAtkSpeed(self): return self.attrTuple[5] #  攻速范围 list
+    def GetRangeAtkSpeed(self): return self.attrTuple[5] #  攻速范围 list
+    def GetRangeFaintRate(self): return self.attrTuple[6] #  击晕范围 list
+    def GetRangeFaintDefRate(self): return self.attrTuple[7] #  抗击晕范围 list
+    def GetRangeSuperHitRate(self): return self.attrTuple[8] #  暴击范围 list
+    def GetRangeSuperHitRateReduce(self): return self.attrTuple[9] #  抗暴击范围 list
+    def GetRangeComboRate(self): return self.attrTuple[10] #  连击范围 list
+    def GetRangeComboDefRate(self): return self.attrTuple[11] #  抗连击范围 list
+    def GetRangeMissRate(self): return self.attrTuple[12] #  闪避范围 list
+    def GetRangeMissDefRate(self): return self.attrTuple[13] #  抗闪避范围 list
+    def GetRangeAtkBackRate(self): return self.attrTuple[14] #  反击范围 list
+    def GetRangeAtkBackDefRate(self): return self.attrTuple[15] #  抗反击范围 list
+    def GetRangeSuckHPPer(self): return self.attrTuple[16] #  吸血范围 list
+    def GetRangeSuckHPDefPer(self): return self.attrTuple[17] #  抗吸血范围 list
 
 # 装备评分属性系数表
 class IPY_EquipGSParam():
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 0f81f36..a4f30c0 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
@@ -452,7 +452,7 @@
     equipAttrDict[str(ShareDefine.Def_IudetItemLV)] = itemLV
     
     reRatio = 0 # 参考基准值所在比率 0~1
-    lvMin, lvMax = colorIpyData.GetRangeLV() # 品质对应的等级范围
+    lvMin, lvMax = colorIpyData.GetBaseAttrRangeLV() # 品质对应的等级范围
     if itemLV <= lvMin:
         reRatio = 0
     elif itemLV >= lvMax:
@@ -476,7 +476,7 @@
         equipAttrDict[str(ShareDefine.Def_IudetLegendAttrID)] = legendAttrIDList
         equipAttrDict[str(ShareDefine.Def_IudetLegendAttrValue)] = legendAttrValueList
     else:
-        __RandCreateEquipLegendAttr(reRatio, colorIpyData, equipAttrDict)
+        __RandCreateEquipLegendAttr(colorIpyData, colorPlaceIpyData, equipAttrDict)
         
     # 神仙极属性可在这里扩展...
     
@@ -505,28 +505,27 @@
     GameWorld.DebugLog("    baseAttrIDList=%s,baseAttrValueList=%s" % (baseAttrIDList, baseAttrValueList))
     return
 
-def __RandCreateEquipLegendAttr(reRatio, colorIpyData, setAttrDict):
+def __RandCreateEquipLegendAttr(colorIpyData, colorPlaceIpyData, setAttrDict):
     ## 随机装备传奇属性
-    upDownRateList = colorIpyData.GetRangeRand()
     battleAttrCount = colorIpyData.GetBattleAttrCount() # 战斗属性条数
     battleDefAttrCount = colorIpyData.GetBattleDefAttrCount() #战斗抗性条数
     if not battleAttrCount and not battleDefAttrCount:
         return
     
     # 注: 闪避率-对应原闪避值;抗闪避-对应原命中值
-    battleAttrDict = {ShareDefine.Def_Effect_FaintRate:colorIpyData.GetRangeFaintRate(),
-                      ShareDefine.Def_Effect_SuperHitRate:colorIpyData.GetRangeSuperHitRate(),
-                      ShareDefine.Def_Effect_ComboRate:colorIpyData.GetRangeComboRate(),
-                      ShareDefine.Def_Effect_Miss:colorIpyData.GetRangeMissRate(),
-                      ShareDefine.Def_Effect_AtkBackRate:colorIpyData.GetRangeAtkBackRate(),
-                      ShareDefine.Def_Effect_SuckHPPer:colorIpyData.GetRangeSuckHPPer(),
+    battleAttrDict = {ShareDefine.Def_Effect_FaintRate:colorPlaceIpyData.GetRangeFaintRate(),
+                      ShareDefine.Def_Effect_SuperHitRate:colorPlaceIpyData.GetRangeSuperHitRate(),
+                      ShareDefine.Def_Effect_ComboRate:colorPlaceIpyData.GetRangeComboRate(),
+                      ShareDefine.Def_Effect_Miss:colorPlaceIpyData.GetRangeMissRate(),
+                      ShareDefine.Def_Effect_AtkBackRate:colorPlaceIpyData.GetRangeAtkBackRate(),
+                      ShareDefine.Def_Effect_SuckHPPer:colorPlaceIpyData.GetRangeSuckHPPer(),
                       }
-    battleDefAttrDict = {ShareDefine.Def_Effect_FaintDefRate:colorIpyData.GetRangeFaintDefRate(),
-                         ShareDefine.Def_Effect_SuperHitRateReduce:colorIpyData.GetRangeSuperHitRateReduce(),
-                         ShareDefine.Def_Effect_ComboDefRate:colorIpyData.GetRangeComboDefRate(),
-                         ShareDefine.Def_Effect_Hit:colorIpyData.GetRangeMissDefRate(),
-                         ShareDefine.Def_Effect_AtkBackDefRate:colorIpyData.GetRangeAtkBackDefRate(),
-                         ShareDefine.Def_Effect_SuckHPDefPer:colorIpyData.GetRangeSuckHPDefPer(),
+    battleDefAttrDict = {ShareDefine.Def_Effect_FaintDefRate:colorPlaceIpyData.GetRangeFaintDefRate(),
+                         ShareDefine.Def_Effect_SuperHitRateReduce:colorPlaceIpyData.GetRangeSuperHitRateReduce(),
+                         ShareDefine.Def_Effect_ComboDefRate:colorPlaceIpyData.GetRangeComboDefRate(),
+                         ShareDefine.Def_Effect_Hit:colorPlaceIpyData.GetRangeMissDefRate(),
+                         ShareDefine.Def_Effect_AtkBackDefRate:colorPlaceIpyData.GetRangeAtkBackDefRate(),
+                         ShareDefine.Def_Effect_SuckHPDefPer:colorPlaceIpyData.GetRangeSuckHPDefPer(),
                          }
     
     # 没有配置值的属性不产出,打乱顺序后直接取限制条数前x个即为随机的属性ID
@@ -539,7 +538,9 @@
     battleAttrIDList = battleAttrIDList[:battleAttrCount]
     batAttrIDList, batAttrValueList= [], []
     for attrID in battleAttrIDList:
-        atkValue = __GetRandAttrValueByRatio(attrID, battleAttrDict[attrID], reRatio, upDownRateList)
+        #atkValue = __GetRandAttrValueByRatio(attrID, battleAttrDict[attrID], reRatio, upDownRateList)
+        valueMin, valueMax = battleAttrDict[attrID]
+        atkValue = random.randint(valueMin, valueMax) # 改为纯随机
         if not atkValue:
             continue
         batAttrIDList.append(attrID)
@@ -555,7 +556,9 @@
     battleDefAttrIDList = battleDefAttrIDList[:battleDefAttrCount]
     batDefAttrIDList, batDefAttrValueList= [], []
     for attrID in battleDefAttrIDList:
-        atkValue = __GetRandAttrValueByRatio(attrID, battleDefAttrDict[attrID], reRatio, upDownRateList)
+        #atkValue = __GetRandAttrValueByRatio(attrID, battleDefAttrDict[attrID], reRatio, upDownRateList)
+        valueMin, valueMax = battleDefAttrDict[attrID]
+        atkValue = random.randint(valueMin, valueMax) # 改为纯随机
         if not atkValue:
             continue
         batDefAttrIDList.append(attrID)

--
Gitblit v1.8.0