From c880e89aec10d4b98575830cc2f81253082a9574 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 14 一月 2026 19:45:01 +0800
Subject: [PATCH] 302 【公会】BOSS讨伐-服务端(玩家过天额外刷新最新可领取宝箱数;启动服务器加载物品数据异常时补运营邮件通知;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py |  521 ++++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 435 insertions(+), 86 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index 4dba3d9..4ed6ad9 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -182,6 +182,7 @@
                         ("list", "AttrIDList", 0),
                         ("list", "AttrValueList", 0),
                         ("DWORD", "SkillID", 0),
+                        ("list", "SkillIDExList", 0),
                         ),
 
                 "HeroAwake":(
@@ -217,7 +218,7 @@
                         ),
 
                 "HeroQuality":(
-                        ("DWORD", "Quality", 1),
+                        ("BYTE", "Quality", 1),
                         ("list", "InitTalentWeight", 0),
                         ("BYTE", "InitStarUpper", 0),
                         ("DWORD", "InitAddPer", 0),
@@ -230,22 +231,21 @@
                         ),
 
                 "HeroQualityBreak":(
-                        ("DWORD", "Quality", 1),
+                        ("BYTE", "Quality", 1),
                         ("DWORD", "BreakLV", 1),
-                        ("WORD", "LVMax", 0),
                         ("WORD", "UPLVNeed", 0),
                         ("list", "UPCostItemList", 0),
                         ),
 
                 "HeroQualityAwake":(
-                        ("DWORD", "Quality", 1),
+                        ("BYTE", "Quality", 1),
                         ("DWORD", "AwakeLV", 1),
                         ("list", "UPCostItem", 0),
                         ("DWORD", "RebirthCostMoney", 0),
                         ),
 
                 "HeroQualityLV":(
-                        ("DWORD", "Quality", 1),
+                        ("BYTE", "Quality", 1),
                         ("DWORD", "HeroLV", 1),
                         ("list", "UPCostItem", 0),
                         ("list", "AttrIDList", 0),
@@ -255,6 +255,23 @@
                 "LineupRecommend":(
                         ("DWORD", "RecommendID", 1),
                         ("list", "HeroIDList", 0),
+                        ),
+
+                "HeroFates":(
+                        ("WORD", "FatesID", 1),
+                        ("BYTE", "FatesQuality", 0),
+                        ("list", "HeroIDList", 0),
+                        ("list", "AwardItemList", 0),
+                        ("list", "AttrIDList", 0),
+                        ("list", "LVAttrValueList", 0),
+                        ),
+
+                "HeroFatesQualityLV":(
+                        ("BYTE", "FatesQuality", 1),
+                        ("BYTE", "FatesLV", 1),
+                        ("BYTE", "NeedStarTotal", 0),
+                        ("BYTE", "NeedHeroCnt", 0),
+                        ("BYTE", "NeedQuality", 0),
                         ),
 
                 "PlayerAttr":(
@@ -267,6 +284,7 @@
                         ("float", "AtkRatio", 0),
                         ("float", "MaxHPRatio", 0),
                         ("float", "DefRatio", 0),
+                        ("float", "AtkSpeedRatio", 0),
                         ("float", "StunRateRatio", 0),
                         ("float", "SuperHitRateRatio", 0),
                         ("float", "ComboRateRatio", 0),
@@ -307,6 +325,10 @@
                         ("float", "QunFinalDamPerDefRatio", 0),
                         ("float", "PVPDamPerRatio", 0),
                         ("float", "PVPDamPerDefRatio", 0),
+                        ("float", "GuanchuanRatio", 0),
+                        ("float", "GuanchuanDefRatio", 0),
+                        ("float", "ZhaojiaRatio", 0),
+                        ("float", "ZhaojiaDefRatio", 0),
                         ),
 
                 "MainChapter":(
@@ -341,6 +363,7 @@
                         ("BYTE", "BossPosView", 0),
                         ("list", "SkillIDExList", 0),
                         ("BYTE", "SkillExCnt", 0),
+                        ("WORD", "ReModelID", 0),
                         ),
 
                 "Title":(
@@ -582,6 +605,39 @@
                         ("list", "LegendAttrValue", 0),
                         ),
 
+                "MGGanwuLV":(
+                        ("BYTE", "GanwuLV", 1),
+                        ("DWORD", "NextNeedExp", 0),
+                        ("DWORD", "AtkBase", 0),
+                        ("DWORD", "DefBase", 0),
+                        ("DWORD", "HPBase", 0),
+                        ("DWORD", "AtkSpeedBase", 0),
+                        ),
+
+                "MGGuayuQuality":(
+                        ("BYTE", "ItemColor", 1),
+                        ("float", "AtkPlus", 0),
+                        ("float", "DefPlus", 0),
+                        ("float", "HPPlus", 0),
+                        ("float", "AtkSpeedPlus", 0),
+                        ("BYTE", "AttrLibCnt", 0),
+                        ("list", "AttrRange", 0),
+                        ("dict", "AttrRangeDict", 0),
+                        ),
+
+                "MGGuayuType":(
+                        ("BYTE", "ItemType", 1),
+                        ("BYTE", "EquipPlace", 0),
+                        ("float", "BaseAttrProportion", 0),
+                        ("DWORD", "FixedAttrID", 0),
+                        ("list", "AttrIDLib", 0),
+                        ),
+
+                "MGLingyingQuality":(
+                        ("DWORD", "Lingying", 1),
+                        ("list", "ItemColorWeightList", 0),
+                        ),
+
                 "EquipLegendAttrCount":(
                         ("BYTE", "ItemType", 1),
                         ("BYTE", "ItemColor", 1),
@@ -768,8 +824,11 @@
                         ("BYTE", "SpecEffLayerMax", 0),
                         ("BYTE", "SpecAttrID", 0),
                         ("DWORD", "SpecAttrValue", 0),
-                        ("DWORD", "SpecAttrPerLVAdd", 0),
                         ("DWORD", "SpecAttrPerStarAdd", 0),
+                        ("BYTE", "PowerType", 0),
+                        ("DWORD", "PowerTypeValue", 0),
+                        ("DWORD", "PowerValue", 0),
+                        ("DWORD", "PowerPerStarAdd", 0),
                         ),
 
                 "GubaoResonanceAttr":(
@@ -787,6 +846,7 @@
                 "GubaoStar":(
                         ("BYTE", "GubaoQuality", 1),
                         ("BYTE", "GubaoStar", 0),
+                        ("list", "QualityStarCond", 0),
                         ("BYTE", "StarUPNeedSelfCnt", 0),
                         ("list", "StarUPNeedItemList", 0),
                         ),
@@ -795,6 +855,13 @@
                         ("BYTE", "GubaoQuality", 1),
                         ("BYTE", "LessEqualLV", 0),
                         ("list", "LVUPNeedItemInfo", 0),
+                        ),
+
+                "GubaoLVAttr":(
+                        ("BYTE", "GubaoQuality", 1),
+                        ("BYTE", "GubaoLV", 1),
+                        ("list", "SpecAttrIDList", 0),
+                        ("list", "SpecAttrValueList", 0),
                         ),
 
                 "Beauty":(
@@ -857,6 +924,11 @@
                         ("DWORD", "MaxHP", 0),
                         ("DWORD", "Atk", 0),
                         ("DWORD", "Def", 0),
+                        ),
+
+                "LVReValue":(
+                        ("WORD", "ModelID", 1),
+                        ("WORD", "LV", 1),
                         ("BYTE", "ReHeroStar", 0),
                         ("BYTE", "ReHeroBreakLV", 0),
                         ("BYTE", "ReHeroAwakeLV", 0),
@@ -940,6 +1012,29 @@
                         ("DWORD", "MaxHP", 0),
                         ("dict", "OtherAttrDict", 0),
                         ("list", "RandWeightItemList", 0),
+                        ),
+
+                "FBDJGLevel":(
+                        ("WORD", "LayerNum", 1),
+                        ("BYTE", "LevelNum", 1),
+                        ("list", "PassAwardList", 0),
+                        ("list", "AwardList", 0),
+                        ("list", "LineupIDList", 0),
+                        ("WORD", "NPCLV", 0),
+                        ("float", "Difficulty", 0),
+                        ),
+
+                "FBDJGQuick":(
+                        ("WORD", "NeedLayer", 1),
+                        ("list", "QuickAwardList", 0),
+                        ),
+
+                "FBDJGEffect":(
+                        ("DWORD", "EffID", 1),
+                        ("BYTE", "EffQuality", 0),
+                        ("BYTE", "AttrID", 0),
+                        ("DWORD", "AttrValue", 0),
+                        ("DWORD", "RandWeight", 0),
                         ),
 
                 "ADAward":(
@@ -1249,9 +1344,13 @@
                         ("BYTE", "LuckyGridNum", 0),
                         ("dict", "GridNumMaxLimitInfo", 0),
                         ("list", "NotifyGridNumList", 0),
-                        ("char", "NotifyKey", 0),
+                        ("dict", "NotifyKeyDict", 0),
                         ("BYTE", "AwardMoneyType", 0),
                         ("WORD", "AwardMoneyValue", 0),
+                        ("BYTE", "WishReset", 0),
+                        ("dict", "WishLibSelect", 0),
+                        ("dict", "WishLibPubFreeCnt", 0),
+                        ("dict", "WishLibCard", 0),
                         ),
 
                 "TreasureHouse":(
@@ -1269,10 +1368,13 @@
                         ),
 
                 "TreasureItemLib":(
+                        ("WORD", "ID", 0),
                         ("WORD", "LibID", 1),
                         ("DWORD", "ItemID", 0),
                         ("DWORD", "ItemCount", 0),
                         ("DWORD", "ItemWeight", 0),
+                        ("BYTE", "IsWishItem", 0),
+                        ("BYTE", "WishOutCnt", 0),
                         ),
 
                 "TreasureCntAward":(
@@ -2155,6 +2257,7 @@
                         ("list", "EquipColorRateList", 0),
                         ("list", "EquipColorRateList1", 0),
                         ("list", "EquipColorRateList2", 0),
+                        ("DWORD", "LastSureOutNeed", 0),
                         ),
 
                 "LLMJ":(
@@ -2388,7 +2491,8 @@
     def GetBreakLV(self): return self.attrTuple[1] #  突破等级 BYTE
     def GetAttrIDList(self): return self.attrTuple[2] #  属性ID列表 list
     def GetAttrValueList(self): return self.attrTuple[3] #  属性值列表 list
-    def GetSkillID(self): return self.attrTuple[4] #  激活技能ID DWORD
+    def GetSkillID(self): return self.attrTuple[4] #  激活技能ID DWORD
+    def GetSkillIDExList(self): return self.attrTuple[5] #  激活的额外技能ID列表 list
 
 # 武将觉醒天赋表
 class IPY_HeroAwake():
@@ -2449,7 +2553,7 @@
         self.attrTuple = None
         return
         
-    def GetQuality(self): return self.attrTuple[0] # 品质 DWORD
+    def GetQuality(self): return self.attrTuple[0] # 品质 BYTE
     def GetInitTalentWeight(self): return self.attrTuple[1] #  初始天赋数权重 list
     def GetInitStarUpper(self): return self.attrTuple[2] #  初始星级上限 BYTE
     def GetInitAddPer(self): return self.attrTuple[3] #  卡牌初始加成万分率 DWORD
@@ -2467,11 +2571,10 @@
         self.attrTuple = None
         return
         
-    def GetQuality(self): return self.attrTuple[0] # 品质 DWORD
+    def GetQuality(self): return self.attrTuple[0] # 品质 BYTE
     def GetBreakLV(self): return self.attrTuple[1] # 突破等级 DWORD
-    def GetLVMax(self): return self.attrTuple[2] #  等级上限 WORD
-    def GetUPLVNeed(self): return self.attrTuple[3] #  突破到下级需要等级 WORD
-    def GetUPCostItemList(self): return self.attrTuple[4] #  突破到下级消耗道具 list
+    def GetUPLVNeed(self): return self.attrTuple[2] #  突破到下级需要等级 WORD
+    def GetUPCostItemList(self): return self.attrTuple[3] #  突破到下级消耗道具 list
 
 # 武将品质觉醒表
 class IPY_HeroQualityAwake():
@@ -2480,7 +2583,7 @@
         self.attrTuple = None
         return
         
-    def GetQuality(self): return self.attrTuple[0] # 品质 DWORD
+    def GetQuality(self): return self.attrTuple[0] # 品质 BYTE
     def GetAwakeLV(self): return self.attrTuple[1] # 觉醒等级 DWORD
     def GetUPCostItem(self): return self.attrTuple[2] #  觉醒到下级消耗道具 list
     def GetRebirthCostMoney(self): return self.attrTuple[3] # 重生消耗货币 DWORD
@@ -2492,7 +2595,7 @@
         self.attrTuple = None
         return
         
-    def GetQuality(self): return self.attrTuple[0] # 品质 DWORD
+    def GetQuality(self): return self.attrTuple[0] # 品质 BYTE
     def GetHeroLV(self): return self.attrTuple[1] # 武将等级 DWORD
     def GetUPCostItem(self): return self.attrTuple[2] #  升级到下级消耗道具 list
     def GetAttrIDList(self): return self.attrTuple[3] #  武将属性ID列表 list
@@ -2507,6 +2610,33 @@
         
     def GetRecommendID(self): return self.attrTuple[0] # 推荐ID DWORD
     def GetHeroIDList(self): return self.attrTuple[1] #  推荐武将ID列表 list
+
+# 武将宿缘表
+class IPY_HeroFates():
+    
+    def __init__(self):
+        self.attrTuple = None
+        return
+        
+    def GetFatesID(self): return self.attrTuple[0] # 宿缘ID WORD
+    def GetFatesQuality(self): return self.attrTuple[1] # 宿缘品质 BYTE
+    def GetHeroIDList(self): return self.attrTuple[2] #  武将ID组合列表 list
+    def GetAwardItemList(self): return self.attrTuple[3] #  激活奖励物品列表 list
+    def GetAttrIDList(self): return self.attrTuple[4] #  属性ID列表 list
+    def GetLVAttrValueList(self): return self.attrTuple[5] #  每级属性值列表 list
+
+# 武将宿缘品质等级表
+class IPY_HeroFatesQualityLV():
+    
+    def __init__(self):
+        self.attrTuple = None
+        return
+        
+    def GetFatesQuality(self): return self.attrTuple[0] # 宿缘品质 BYTE
+    def GetFatesLV(self): return self.attrTuple[1] # 宿缘等级 BYTE
+    def GetNeedStarTotal(self): return self.attrTuple[2] #  升到该级所需总星数 BYTE
+    def GetNeedHeroCnt(self): return self.attrTuple[3] #  所需品质武将数 BYTE
+    def GetNeedQuality(self): return self.attrTuple[4] #  所需武将品质 BYTE
 
 # 属性条目表
 class IPY_PlayerAttr():
@@ -2529,46 +2659,51 @@
     def GetAtkRatio(self): return self.attrTuple[1] # 攻击系数 float
     def GetMaxHPRatio(self): return self.attrTuple[2] # float
     def GetDefRatio(self): return self.attrTuple[3] # float
-    def GetStunRateRatio(self): return self.attrTuple[4] # float
-    def GetSuperHitRateRatio(self): return self.attrTuple[5] # float
-    def GetComboRateRatio(self): return self.attrTuple[6] # float
-    def GetMissRateRatio(self): return self.attrTuple[7] # float
-    def GetParryRateRatio(self): return self.attrTuple[8] # float
-    def GetSuckHPPerRatio(self): return self.attrTuple[9] # float
-    def GetStunRateDefRatio(self): return self.attrTuple[10] # float
-    def GetSuperHitRateDefRatio(self): return self.attrTuple[11] # float
-    def GetComboRateDefRatio(self): return self.attrTuple[12] # float
-    def GetMissRateDefRatio(self): return self.attrTuple[13] # float
-    def GetParryRateDefRatio(self): return self.attrTuple[14] # float
-    def GetSuckHPPerDefRatio(self): return self.attrTuple[15] # float
-    def GetFinalDamPerRatio(self): return self.attrTuple[16] # float
-    def GetFinalDamPerDefRatio(self): return self.attrTuple[17] # float
-    def GetPhyDamPerRatio(self): return self.attrTuple[18] # float
-    def GetPhyDamPerDefRatio(self): return self.attrTuple[19] # float
-    def GetMagDamPerRatio(self): return self.attrTuple[20] # float
-    def GetMagDamPerDefRatio(self): return self.attrTuple[21] # float
-    def GetNormalSkillPerRatio(self): return self.attrTuple[22] # float
-    def GetNormalSkillPerDefRatio(self): return self.attrTuple[23] # float
-    def GetAngerSkillPerRatio(self): return self.attrTuple[24] # float
-    def GetAngerSkillPerDefRatio(self): return self.attrTuple[25] # float
-    def GetSuperDamPerRatio(self): return self.attrTuple[26] # float
-    def GetSuperDamPerDefRatio(self): return self.attrTuple[27] # float
-    def GetCurePerRatio(self): return self.attrTuple[28] # float
-    def GetCurePerDefRatio(self): return self.attrTuple[29] # float
-    def GetShieldPerRatio(self): return self.attrTuple[30] # float
-    def GetShieldPerDefRatio(self): return self.attrTuple[31] # float
-    def GetDOTPerRatio(self): return self.attrTuple[32] # float
-    def GetDOTPerDefRatio(self): return self.attrTuple[33] # float
-    def GetWeiFinalDamPerRatio(self): return self.attrTuple[34] # float
-    def GetWeiFinalDamPerDefRatio(self): return self.attrTuple[35] # float
-    def GetShuFinalDamPerRatio(self): return self.attrTuple[36] # float
-    def GetShuFinalDamPerDefRatio(self): return self.attrTuple[37] # float
-    def GetWuFinalDamPerRatio(self): return self.attrTuple[38] # float
-    def GetWuFinalDamPerDefRatio(self): return self.attrTuple[39] # float
-    def GetQunFinalDamPerRatio(self): return self.attrTuple[40] # float
-    def GetQunFinalDamPerDefRatio(self): return self.attrTuple[41] # float
-    def GetPVPDamPerRatio(self): return self.attrTuple[42] # float
-    def GetPVPDamPerDefRatio(self): return self.attrTuple[43] # float
+    def GetAtkSpeedRatio(self): return self.attrTuple[4] # float
+    def GetStunRateRatio(self): return self.attrTuple[5] # float
+    def GetSuperHitRateRatio(self): return self.attrTuple[6] # float
+    def GetComboRateRatio(self): return self.attrTuple[7] # float
+    def GetMissRateRatio(self): return self.attrTuple[8] # float
+    def GetParryRateRatio(self): return self.attrTuple[9] # float
+    def GetSuckHPPerRatio(self): return self.attrTuple[10] # float
+    def GetStunRateDefRatio(self): return self.attrTuple[11] # float
+    def GetSuperHitRateDefRatio(self): return self.attrTuple[12] # float
+    def GetComboRateDefRatio(self): return self.attrTuple[13] # float
+    def GetMissRateDefRatio(self): return self.attrTuple[14] # float
+    def GetParryRateDefRatio(self): return self.attrTuple[15] # float
+    def GetSuckHPPerDefRatio(self): return self.attrTuple[16] # float
+    def GetFinalDamPerRatio(self): return self.attrTuple[17] # float
+    def GetFinalDamPerDefRatio(self): return self.attrTuple[18] # float
+    def GetPhyDamPerRatio(self): return self.attrTuple[19] # float
+    def GetPhyDamPerDefRatio(self): return self.attrTuple[20] # float
+    def GetMagDamPerRatio(self): return self.attrTuple[21] # float
+    def GetMagDamPerDefRatio(self): return self.attrTuple[22] # float
+    def GetNormalSkillPerRatio(self): return self.attrTuple[23] # float
+    def GetNormalSkillPerDefRatio(self): return self.attrTuple[24] # float
+    def GetAngerSkillPerRatio(self): return self.attrTuple[25] # float
+    def GetAngerSkillPerDefRatio(self): return self.attrTuple[26] # float
+    def GetSuperDamPerRatio(self): return self.attrTuple[27] # float
+    def GetSuperDamPerDefRatio(self): return self.attrTuple[28] # float
+    def GetCurePerRatio(self): return self.attrTuple[29] # float
+    def GetCurePerDefRatio(self): return self.attrTuple[30] # float
+    def GetShieldPerRatio(self): return self.attrTuple[31] # float
+    def GetShieldPerDefRatio(self): return self.attrTuple[32] # float
+    def GetDOTPerRatio(self): return self.attrTuple[33] # float
+    def GetDOTPerDefRatio(self): return self.attrTuple[34] # float
+    def GetWeiFinalDamPerRatio(self): return self.attrTuple[35] # float
+    def GetWeiFinalDamPerDefRatio(self): return self.attrTuple[36] # float
+    def GetShuFinalDamPerRatio(self): return self.attrTuple[37] # float
+    def GetShuFinalDamPerDefRatio(self): return self.attrTuple[38] # float
+    def GetWuFinalDamPerRatio(self): return self.attrTuple[39] # float
+    def GetWuFinalDamPerDefRatio(self): return self.attrTuple[40] # float
+    def GetQunFinalDamPerRatio(self): return self.attrTuple[41] # float
+    def GetQunFinalDamPerDefRatio(self): return self.attrTuple[42] # float
+    def GetPVPDamPerRatio(self): return self.attrTuple[43] # float
+    def GetPVPDamPerDefRatio(self): return self.attrTuple[44] # float
+    def GetGuanchuanRatio(self): return self.attrTuple[45] # float
+    def GetGuanchuanDefRatio(self): return self.attrTuple[46] # float
+    def GetZhaojiaRatio(self): return self.attrTuple[47] # float
+    def GetZhaojiaDefRatio(self): return self.attrTuple[48] # float
 
 # 主线章节表
 class IPY_MainChapter():
@@ -2617,7 +2752,8 @@
     def GetBossID(self): return self.attrTuple[7] #  本阵容的BossID,没有boss时为0 DWORD
     def GetBossPosView(self): return self.attrTuple[8] # Boss通知站位 BYTE
     def GetSkillIDExList(self): return self.attrTuple[9] #  boss附加技能列表 list
-    def GetSkillExCnt(self): return self.attrTuple[10] # 随机附加技能数,0为所有 BYTE
+    def GetSkillExCnt(self): return self.attrTuple[10] # 随机附加技能数,0为所有 BYTE
+    def GetReModelID(self): return self.attrTuple[11] # 等级参考值模版 WORD
 
 # 称号表
 class IPY_Title():
@@ -2978,6 +3114,59 @@
     def GetLegendAttrID(self): return self.attrTuple[5] # 传奇属性ID list
     def GetLegendAttrValue(self): return self.attrTuple[6] # 传奇属性值 list
 
+# 感悟等级表
+class IPY_MGGanwuLV():
+    
+    def __init__(self):
+        self.attrTuple = None
+        return
+        
+    def GetGanwuLV(self): return self.attrTuple[0] # 感悟等级 BYTE
+    def GetNextNeedExp(self): return self.attrTuple[1] # 升到下一级所需经验 DWORD
+    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
+
+# 卦玉品质表
+class IPY_MGGuayuQuality():
+    
+    def __init__(self):
+        self.attrTuple = None
+        return
+        
+    def GetItemColor(self): return self.attrTuple[0] # 品质 BYTE
+    def GetAtkPlus(self): return self.attrTuple[1] # 攻击加成 float
+    def GetDefPlus(self): return self.attrTuple[2] # 防御加成 float
+    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
+
+# 卦玉类型表
+class IPY_MGGuayuType():
+    
+    def __init__(self):
+        self.attrTuple = None
+        return
+        
+    def GetItemType(self): return self.attrTuple[0] # 类型 BYTE
+    def GetEquipPlace(self): return self.attrTuple[1] # 装备位 BYTE
+    def GetBaseAttrProportion(self): return self.attrTuple[2] # 基础四维属性占比 float
+    def GetFixedAttrID(self): return self.attrTuple[3] # 固定属性ID DWORD
+    def GetAttrIDLib(self): return self.attrTuple[4] # 随机属性ID库,[属性ID, ...] list
+
+# 灵应品质表
+class IPY_MGLingyingQuality():
+    
+    def __init__(self):
+        self.attrTuple = None
+        return
+        
+    def GetLingying(self): return self.attrTuple[0] # 灵应段值 DWORD
+    def GetItemColorWeightList(self): return self.attrTuple[1] # 品质权重列表 list
+
 # 装备传奇属性条数表
 class IPY_EquipLegendAttrCount():
     
@@ -3260,8 +3449,11 @@
     def GetSpecEffLayerMax(self): return self.attrTuple[8] # 特殊效果最大层数 BYTE
     def GetSpecAttrID(self): return self.attrTuple[9] # 特殊属性ID BYTE
     def GetSpecAttrValue(self): return self.attrTuple[10] # 特殊属性初始值 DWORD
-    def GetSpecAttrPerLVAdd(self): return self.attrTuple[11] # 特殊属性每级成长 DWORD
-    def GetSpecAttrPerStarAdd(self): return self.attrTuple[12] # 特殊属性每星成长 DWORD
+    def GetSpecAttrPerStarAdd(self): return self.attrTuple[11] # 特殊属性每星成长 DWORD
+    def GetPowerType(self): return self.attrTuple[12] # 特权效果类型 BYTE
+    def GetPowerTypeValue(self): return self.attrTuple[13] # 特权类型值 DWORD
+    def GetPowerValue(self): return self.attrTuple[14] # 特权初始值 DWORD
+    def GetPowerPerStarAdd(self): return self.attrTuple[15] # 特权每星值成长 DWORD
 
 # 古宝共鸣属性表
 class IPY_GubaoResonanceAttr():
@@ -3294,8 +3486,9 @@
         
     def GetGubaoQuality(self): return self.attrTuple[0] # 古宝品质 BYTE
     def GetGubaoStar(self): return self.attrTuple[1] # 古宝星级 BYTE
-    def GetStarUPNeedSelfCnt(self): return self.attrTuple[2] # 升到本星消耗本体碎片数量 BYTE
-    def GetStarUPNeedItemList(self): return self.attrTuple[3] # 消耗其他物品列表 [[物品ID,个数], ...] list
+    def GetQualityStarCond(self): return self.attrTuple[2] # 需同品质X个X星 list
+    def GetStarUPNeedSelfCnt(self): return self.attrTuple[3] # 升到本星消耗本体碎片数量 BYTE
+    def GetStarUPNeedItemList(self): return self.attrTuple[4] # 消耗其他物品列表 [[物品ID,个数], ...] list
 
 # 古宝品质升级表
 class IPY_GubaoLV():
@@ -3307,6 +3500,18 @@
     def GetGubaoQuality(self): return self.attrTuple[0] # 古宝品质 BYTE
     def GetLessEqualLV(self): return self.attrTuple[1] # 小于等于等级 BYTE
     def GetLVUPNeedItemInfo(self): return self.attrTuple[2] # 升级所需物品 [[物品ID,个数], ...] list
+
+# 品质升级属性表
+class IPY_GubaoLVAttr():
+    
+    def __init__(self):
+        self.attrTuple = None
+        return
+        
+    def GetGubaoQuality(self): return self.attrTuple[0] # 古宝品质 BYTE
+    def GetGubaoLV(self): return self.attrTuple[1] # 古宝等级 BYTE
+    def GetSpecAttrIDList(self): return self.attrTuple[2] # 特殊属性ID列表 list
+    def GetSpecAttrValueList(self): return self.attrTuple[3] # 特殊总属性值列表 list
 
 # 红颜表
 class IPY_Beauty():
@@ -3398,25 +3603,35 @@
     def GetExp(self): return self.attrTuple[1] # 升级所需经验 DWORD
     def GetMaxHP(self): return self.attrTuple[2] # 生命 DWORD
     def GetAtk(self): return self.attrTuple[3] # 攻击 DWORD
-    def GetDef(self): return self.attrTuple[4] # 防御 DWORD
-    def GetReHeroStar(self): return self.attrTuple[5] # 参考星级 BYTE
-    def GetReHeroBreakLV(self): return self.attrTuple[6] # 参考突破等级 BYTE
-    def GetReHeroAwakeLV(self): return self.attrTuple[7] # 参考觉醒等级 BYTE
-    def GetReAtk(self): return self.attrTuple[8] # 参考攻击 DWORD
-    def GetReDef(self): return self.attrTuple[9] # 防御 DWORD
-    def GetReMaxHP(self): return self.attrTuple[10] # 生命 DWORD
-    def GetReStunRate(self): return self.attrTuple[11] # DWORD
-    def GetReSuperHitRate(self): return self.attrTuple[12] # DWORD
-    def GetReComboRate(self): return self.attrTuple[13] # DWORD
-    def GetReMissRate(self): return self.attrTuple[14] # DWORD
-    def GetReParryRate(self): return self.attrTuple[15] # DWORD
-    def GetReSuckHPPer(self): return self.attrTuple[16] # DWORD
-    def GetReStunRateDef(self): return self.attrTuple[17] # DWORD
-    def GetReSuperHitRateDef(self): return self.attrTuple[18] # DWORD
-    def GetReComboRateDef(self): return self.attrTuple[19] # DWORD
-    def GetReMissRateDef(self): return self.attrTuple[20] # DWORD
-    def GetReParryRateDef(self): return self.attrTuple[21] # DWORD
-    def GetReSuckHPPerDef(self): return self.attrTuple[22] # DWORD
+    def GetDef(self): return self.attrTuple[4] # 防御 DWORD
+
+# 等级参考值
+class IPY_LVReValue():
+    
+    def __init__(self):
+        self.attrTuple = None
+        return
+        
+    def GetModelID(self): return self.attrTuple[0] # 模版ID WORD
+    def GetLV(self): return self.attrTuple[1] # 玩家等级 WORD
+    def GetReHeroStar(self): return self.attrTuple[2] # 参考星级 BYTE
+    def GetReHeroBreakLV(self): return self.attrTuple[3] # 参考突破等级 BYTE
+    def GetReHeroAwakeLV(self): return self.attrTuple[4] # 参考觉醒等级 BYTE
+    def GetReAtk(self): return self.attrTuple[5] # 参考攻击 DWORD
+    def GetReDef(self): return self.attrTuple[6] # 防御 DWORD
+    def GetReMaxHP(self): return self.attrTuple[7] # 生命 DWORD
+    def GetReStunRate(self): return self.attrTuple[8] # DWORD
+    def GetReSuperHitRate(self): return self.attrTuple[9] # DWORD
+    def GetReComboRate(self): return self.attrTuple[10] # DWORD
+    def GetReMissRate(self): return self.attrTuple[11] # DWORD
+    def GetReParryRate(self): return self.attrTuple[12] # DWORD
+    def GetReSuckHPPer(self): return self.attrTuple[13] # DWORD
+    def GetReStunRateDef(self): return self.attrTuple[14] # DWORD
+    def GetReSuperHitRateDef(self): return self.attrTuple[15] # DWORD
+    def GetReComboRateDef(self): return self.attrTuple[16] # DWORD
+    def GetReMissRateDef(self): return self.attrTuple[17] # DWORD
+    def GetReParryRateDef(self): return self.attrTuple[18] # DWORD
+    def GetReSuckHPPerDef(self): return self.attrTuple[19] # DWORD
 
 # 特殊地图玩家属性公式表
 class IPY_SpecMapPlayerAttrFormat():
@@ -3517,6 +3732,44 @@
     def GetMaxHP(self): return self.attrTuple[4] # DWORD
     def GetOtherAttrDict(self): return self.attrTuple[5] # 其他属性 {attrID:attrValue, ...} dict
     def GetRandWeightItemList(self): return self.attrTuple[6] # 宝箱随机物品权重列表,[[权重,物品ID,数量], ...] list
+
+# 定军阁关卡表
+class IPY_FBDJGLevel():
+    
+    def __init__(self):
+        self.attrTuple = None
+        return
+        
+    def GetLayerNum(self): return self.attrTuple[0] # 层数 WORD
+    def GetLevelNum(self): return self.attrTuple[1] # 关卡编号 BYTE
+    def GetPassAwardList(self): return self.attrTuple[2] #  过关奖励列表,[[物品ID,个数], ...] list
+    def GetAwardList(self): return self.attrTuple[3] #  挑战奖励,[[物品ID,个数], ...] list
+    def GetLineupIDList(self): return self.attrTuple[4] #  阵容ID列表,小队1阵容ID|小队2阵容ID|... list
+    def GetNPCLV(self): return self.attrTuple[5] # NPC等级 WORD
+    def GetDifficulty(self): return self.attrTuple[6] # 难度系数 float
+
+# 定军阁速战奖励表
+class IPY_FBDJGQuick():
+    
+    def __init__(self):
+        self.attrTuple = None
+        return
+        
+    def GetNeedLayer(self): return self.attrTuple[0] # 所需层数 WORD
+    def GetQuickAwardList(self): return self.attrTuple[1] #  速战奖励列表,[[物品ID,个数], ...] list
+
+# 定军阁效果表
+class IPY_FBDJGEffect():
+    
+    def __init__(self):
+        self.attrTuple = None
+        return
+        
+    def GetEffID(self): return self.attrTuple[0] # 效果ID DWORD
+    def GetEffQuality(self): return self.attrTuple[1] #  效果品质 BYTE
+    def GetAttrID(self): return self.attrTuple[2] #  属性ID BYTE
+    def GetAttrValue(self): return self.attrTuple[3] #  属性值 DWORD
+    def GetRandWeight(self): return self.attrTuple[4] #  随机权重 DWORD
 
 # 广告奖励表
 class IPY_ADAward():
@@ -3971,9 +4224,13 @@
     def GetLuckyGridNum(self): return self.attrTuple[15] # 幸运格子编号 BYTE
     def GetGridNumMaxLimitInfo(self): return self.attrTuple[16] # 格子最大产出次数限制,{"格子":最大可产出次数, ...} dict
     def GetNotifyGridNumList(self): return self.attrTuple[17] # 需要额外广播的格子 list
-    def GetNotifyKey(self): return self.attrTuple[18] # 广播key char
+    def GetNotifyKeyDict(self): return self.attrTuple[18] # 广播key dict
     def GetAwardMoneyType(self): return self.attrTuple[19] # 额外奖励货币类型 BYTE
-    def GetAwardMoneyValue(self): return self.attrTuple[20] # 单次奖励货币数 WORD
+    def GetAwardMoneyValue(self): return self.attrTuple[20] # 单次奖励货币数 WORD
+    def GetWishReset(self): return self.attrTuple[21] # 心愿重置规则 BYTE
+    def GetWishLibSelect(self): return self.attrTuple[22] # 心愿库选择数 dict
+    def GetWishLibPubFreeCnt(self): return self.attrTuple[23] # 心愿库公共免费次数 dict
+    def GetWishLibCard(self): return self.attrTuple[24] # 心愿库心愿卡 dict
 
 # 寻宝产出库表
 class IPY_TreasureHouse():
@@ -4001,10 +4258,13 @@
         self.attrTuple = None
         return
         
-    def GetLibID(self): return self.attrTuple[0] # 库ID WORD
-    def GetItemID(self): return self.attrTuple[1] # 物品ID DWORD
-    def GetItemCount(self): return self.attrTuple[2] # 物品个数 DWORD
-    def GetItemWeight(self): return self.attrTuple[3] # 物品权重 DWORD
+    def GetID(self): return self.attrTuple[0] # ID WORD
+    def GetLibID(self): return self.attrTuple[1] # 库ID WORD
+    def GetItemID(self): return self.attrTuple[2] # 物品ID DWORD
+    def GetItemCount(self): return self.attrTuple[3] # 物品个数 DWORD
+    def GetItemWeight(self): return self.attrTuple[4] # 物品权重 DWORD
+    def GetIsWishItem(self): return self.attrTuple[5] # 心愿可选 BYTE
+    def GetWishOutCnt(self): return self.attrTuple[6] # 心愿独立产出次数 BYTE
 
 # 寻宝累计次数奖励表
 class IPY_TreasureCntAward():
@@ -5396,7 +5656,8 @@
     def GetLVUPNeedTime(self): return self.attrTuple[2] # 升级下一级所需所需秒 DWORD
     def GetEquipColorRateList(self): return self.attrTuple[3] # 小怪产出装备品质概率列表,[0品质万分率, 1品质万分率, ...] list
     def GetEquipColorRateList1(self): return self.attrTuple[4] # 精英产出装备品质概率列表,[0品质万分率, 1品质万分率, ...] list
-    def GetEquipColorRateList2(self): return self.attrTuple[5] # boss产出装备品质概率列表,[0品质万分率, 1品质万分率, ...] list
+    def GetEquipColorRateList2(self): return self.attrTuple[5] # boss产出装备品质概率列表,[0品质万分率, 1品质万分率, ...] list
+    def GetLastSureOutNeed(self): return self.attrTuple[6] # 最后一档保底必出 DWORD
 
 # 历练秘笈
 class IPY_LLMJ():
@@ -5533,6 +5794,8 @@
         self.__LoadFileData("HeroQualityAwake", onlyCheck)
         self.__LoadFileData("HeroQualityLV", onlyCheck)
         self.__LoadFileData("LineupRecommend", onlyCheck)
+        self.__LoadFileData("HeroFates", onlyCheck)
+        self.__LoadFileData("HeroFatesQualityLV", onlyCheck)
         self.__LoadFileData("PlayerAttr", onlyCheck)
         self.__LoadFileData("FightPowerRatio", onlyCheck)
         self.__LoadFileData("MainChapter", onlyCheck)
@@ -5562,6 +5825,10 @@
         self.__LoadFileData("EquipColor", onlyCheck)
         self.__LoadFileData("EquipPlace", onlyCheck)
         self.__LoadFileData("AppointItem", onlyCheck)
+        self.__LoadFileData("MGGanwuLV", onlyCheck)
+        self.__LoadFileData("MGGuayuQuality", onlyCheck)
+        self.__LoadFileData("MGGuayuType", onlyCheck)
+        self.__LoadFileData("MGLingyingQuality", onlyCheck)
         self.__LoadFileData("EquipLegendAttrCount", onlyCheck)
         self.__LoadFileData("EquipLegendAttrType", onlyCheck)
         self.__LoadFileData("EquipLegendAttrLib", onlyCheck)
@@ -5585,12 +5852,14 @@
         self.__LoadFileData("GubaoResonance", onlyCheck)
         self.__LoadFileData("GubaoStar", onlyCheck)
         self.__LoadFileData("GubaoLV", onlyCheck)
+        self.__LoadFileData("GubaoLVAttr", onlyCheck)
         self.__LoadFileData("Beauty", onlyCheck)
         self.__LoadFileData("BeautyQualityLV", onlyCheck)
         self.__LoadFileData("BeautySkin", onlyCheck)
         self.__LoadFileData("TravelEvent", onlyCheck)
         self.__LoadFileData("TravelScenery", onlyCheck)
         self.__LoadFileData("PlayerLV", onlyCheck)
+        self.__LoadFileData("LVReValue", onlyCheck)
         self.__LoadFileData("SpecMapPlayerAttrFormat", onlyCheck)
         self.__LoadFileData("GMAttr", onlyCheck)
         self.__LoadFileData("RuneTower", onlyCheck)
@@ -5598,6 +5867,9 @@
         self.__LoadFileData("FBFunc", onlyCheck)
         self.__LoadFileData("FBLine", onlyCheck)
         self.__LoadFileData("Tianzi", onlyCheck)
+        self.__LoadFileData("FBDJGLevel", onlyCheck)
+        self.__LoadFileData("FBDJGQuick", onlyCheck)
+        self.__LoadFileData("FBDJGEffect", onlyCheck)
         self.__LoadFileData("ADAward", onlyCheck)
         self.__LoadFileData("Success", onlyCheck)
         self.__LoadFileData("TongTianLV", onlyCheck)
@@ -6080,6 +6352,20 @@
         self.CheckLoadData("LineupRecommend")
         return self.ipyLineupRecommendCache[index]
 
+    def GetHeroFatesCount(self):
+        self.CheckLoadData("HeroFates")
+        return self.ipyHeroFatesLen
+    def GetHeroFatesByIndex(self, index):
+        self.CheckLoadData("HeroFates")
+        return self.ipyHeroFatesCache[index]
+
+    def GetHeroFatesQualityLVCount(self):
+        self.CheckLoadData("HeroFatesQualityLV")
+        return self.ipyHeroFatesQualityLVLen
+    def GetHeroFatesQualityLVByIndex(self, index):
+        self.CheckLoadData("HeroFatesQualityLV")
+        return self.ipyHeroFatesQualityLVCache[index]
+
     def GetPlayerAttrCount(self):
         self.CheckLoadData("PlayerAttr")
         return self.ipyPlayerAttrLen
@@ -6283,6 +6569,34 @@
         self.CheckLoadData("AppointItem")
         return self.ipyAppointItemCache[index]
 
+    def GetMGGanwuLVCount(self):
+        self.CheckLoadData("MGGanwuLV")
+        return self.ipyMGGanwuLVLen
+    def GetMGGanwuLVByIndex(self, index):
+        self.CheckLoadData("MGGanwuLV")
+        return self.ipyMGGanwuLVCache[index]
+
+    def GetMGGuayuQualityCount(self):
+        self.CheckLoadData("MGGuayuQuality")
+        return self.ipyMGGuayuQualityLen
+    def GetMGGuayuQualityByIndex(self, index):
+        self.CheckLoadData("MGGuayuQuality")
+        return self.ipyMGGuayuQualityCache[index]
+
+    def GetMGGuayuTypeCount(self):
+        self.CheckLoadData("MGGuayuType")
+        return self.ipyMGGuayuTypeLen
+    def GetMGGuayuTypeByIndex(self, index):
+        self.CheckLoadData("MGGuayuType")
+        return self.ipyMGGuayuTypeCache[index]
+
+    def GetMGLingyingQualityCount(self):
+        self.CheckLoadData("MGLingyingQuality")
+        return self.ipyMGLingyingQualityLen
+    def GetMGLingyingQualityByIndex(self, index):
+        self.CheckLoadData("MGLingyingQuality")
+        return self.ipyMGLingyingQualityCache[index]
+
     def GetEquipLegendAttrCountCount(self):
         self.CheckLoadData("EquipLegendAttrCount")
         return self.ipyEquipLegendAttrCountLen
@@ -6444,6 +6758,13 @@
         self.CheckLoadData("GubaoLV")
         return self.ipyGubaoLVCache[index]
 
+    def GetGubaoLVAttrCount(self):
+        self.CheckLoadData("GubaoLVAttr")
+        return self.ipyGubaoLVAttrLen
+    def GetGubaoLVAttrByIndex(self, index):
+        self.CheckLoadData("GubaoLVAttr")
+        return self.ipyGubaoLVAttrCache[index]
+
     def GetBeautyCount(self):
         self.CheckLoadData("Beauty")
         return self.ipyBeautyLen
@@ -6485,6 +6806,13 @@
     def GetPlayerLVByIndex(self, index):
         self.CheckLoadData("PlayerLV")
         return self.ipyPlayerLVCache[index]
+
+    def GetLVReValueCount(self):
+        self.CheckLoadData("LVReValue")
+        return self.ipyLVReValueLen
+    def GetLVReValueByIndex(self, index):
+        self.CheckLoadData("LVReValue")
+        return self.ipyLVReValueCache[index]
 
     def GetSpecMapPlayerAttrFormatCount(self):
         self.CheckLoadData("SpecMapPlayerAttrFormat")
@@ -6535,6 +6863,27 @@
         self.CheckLoadData("Tianzi")
         return self.ipyTianziCache[index]
 
+    def GetFBDJGLevelCount(self):
+        self.CheckLoadData("FBDJGLevel")
+        return self.ipyFBDJGLevelLen
+    def GetFBDJGLevelByIndex(self, index):
+        self.CheckLoadData("FBDJGLevel")
+        return self.ipyFBDJGLevelCache[index]
+
+    def GetFBDJGQuickCount(self):
+        self.CheckLoadData("FBDJGQuick")
+        return self.ipyFBDJGQuickLen
+    def GetFBDJGQuickByIndex(self, index):
+        self.CheckLoadData("FBDJGQuick")
+        return self.ipyFBDJGQuickCache[index]
+
+    def GetFBDJGEffectCount(self):
+        self.CheckLoadData("FBDJGEffect")
+        return self.ipyFBDJGEffectLen
+    def GetFBDJGEffectByIndex(self, index):
+        self.CheckLoadData("FBDJGEffect")
+        return self.ipyFBDJGEffectCache[index]
+
     def GetADAwardCount(self):
         self.CheckLoadData("ADAward")
         return self.ipyADAwardLen

--
Gitblit v1.8.0