From 62986bb30351731bddecd141607cf4dc8c58d54c Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 19 一月 2026 11:41:36 +0800
Subject: [PATCH] 423 【内政】命格系统-服务端(命格卦玉战斗属性增加感悟等级对应基础值配置;品质表改为加成随机值范围;)

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

diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index 1c1a803..3e54a89 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -713,6 +713,7 @@
 	DWORD		DefBase;	//防御基础值
 	DWORD		HPBase;	//生命基础值
 	DWORD		AtkSpeedBase;	//先攻基础值
+	dict		BatAttrBaseDict;	//其他战斗属性基础值字典,{属性ID:基础值, ...}
 };
 
 //卦玉品质表
@@ -725,8 +726,8 @@
 	float		HPPlus;	//生命加成
 	float		AtkSpeedPlus;	//先攻加成
 	BYTE		AttrLibCnt;	//库属性条数
-	list		AttrRange;	//通用属性范围,下限|上限
-	dict		AttrRangeDict;	//指定属性范围字典,{指定属性ID:[范围下限, 上限], ...}
+	list		AttrRange;	//其他属性通用加成范围,下限|上限
+	dict		AttrRangeDict;	//其他指定属性加成范围字典,{指定属性ID:[范围下限, 上限], ...}
 };
 
 //卦玉类型表
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index a73cf8e..dbbfe4f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -618,6 +618,7 @@
                         ("DWORD", "DefBase", 0),
                         ("DWORD", "HPBase", 0),
                         ("DWORD", "AtkSpeedBase", 0),
+                        ("dict", "BatAttrBaseDict", 0),
                         ),
 
                 "MGGuayuQuality":(
@@ -3143,7 +3144,8 @@
     def GetAtkBase(self): return self.attrTuple[2] # 攻击基础值 DWORD
     def GetDefBase(self): return self.attrTuple[3] # 防御基础值 DWORD
     def GetHPBase(self): return self.attrTuple[4] # 生命基础值 DWORD
-    def GetAtkSpeedBase(self): return self.attrTuple[5] # 先攻基础值 DWORD
+    def GetAtkSpeedBase(self): return self.attrTuple[5] # 先攻基础值 DWORD
+    def GetBatAttrBaseDict(self): return self.attrTuple[6] # 其他战斗属性基础值字典,{属性ID:基础值, ...} dict
 
 # 卦玉品质表
 class IPY_MGGuayuQuality():
@@ -3158,8 +3160,8 @@
     def GetHPPlus(self): return self.attrTuple[3] # 生命加成 float
     def GetAtkSpeedPlus(self): return self.attrTuple[4] # 先攻加成 float
     def GetAttrLibCnt(self): return self.attrTuple[5] # 库属性条数 BYTE
-    def GetAttrRange(self): return self.attrTuple[6] # 通用属性范围,下限|上限 list
-    def GetAttrRangeDict(self): return self.attrTuple[7] # 指定属性范围字典,{指定属性ID:[范围下限, 上限], ...} dict
+    def GetAttrRange(self): return self.attrTuple[6] # 其他属性通用加成范围,下限|上限 list
+    def GetAttrRangeDict(self): return self.attrTuple[7] # 其他指定属性加成范围字典,{指定属性ID:[范围下限, 上限], ...} dict
 
 # 卦玉类型表
 class IPY_MGGuayuType():
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 dd620a5..31fcbc8 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
@@ -585,6 +585,8 @@
                     ChConfig.AttrID_MaxHP:[gwIpyData.GetHPBase(), colorIpyData.GetHPPlus()],
                     ChConfig.AttrID_AtkSpeed:[gwIpyData.GetAtkSpeedBase(), colorIpyData.GetAtkSpeedPlus()],
                     }
+    batAttrBaseDict = gwIpyData.GetBatAttrBaseDict() # 其他战斗属性基础值字典,{属性ID:基础值, ...}
+    
     # 四维占比
     attrProportion = typeIpyData.GetBaseAttrProportion()
     
@@ -630,12 +632,14 @@
                 
             # 其他战斗属性
             else:
+                baseValue = batAttrBaseDict.get(attrID, 0)
                 attrRange = attrRangeDict.get(attrID, attrRangeDefault)
                 if not attrRange or len(attrRange) != 2:
                     continue
                 attrMin, attrMax = attrRange
-                attrValue = random.randint(attrMin, attrMax)
-                GameWorld.DebugLog("        attrID=%s,attrValue=%s(%s~%s)" % (attrID, attrValue, attrMin, attrMax), playerID)
+                plusValue = random.randint(attrMin, attrMax)
+                attrValue = baseValue + plusValue
+                GameWorld.DebugLog("        attrID=%s,attrValue=%s,baseValue=%s,plusValue=%s,(%s~%s)" % (attrID, attrValue, baseValue, plusValue, attrMin, attrMax), playerID)
                 
             legendAttrIDList.append(attrID)
             legendAttrValueList.append(attrValue)

--
Gitblit v1.8.0