From bd0c2216211fcb46fc784d1a36ff077a89951861 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 10 六月 2019 11:27:31 +0800
Subject: [PATCH] 6805 【后端】【2.0】副本前端化(修复妖王奖励物品ID配0无效问题)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py |  531 +++++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 356 insertions(+), 175 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index a00ba7b..915a280 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -44,8 +44,8 @@
                 "RolePoint":(
                         ("BYTE", "AttrID", 1),
                         ("dict", "AddAttrInfoPerPoint", 0),
-                        ("dict", "PointQualityAttrIDDict", 0),
-                        ("dict", "PointQualityAttrValueDict", 0),
+                        ("BYTE", "FightPowerPerPoint", 0),
+                        ("dict", "PointQualityAttrDict", 0),
                         ("list", "PointQualityIntervalList", 0),
                         ),
 
@@ -54,6 +54,7 @@
                         ("DWORD", "NeedLV", 0),
                         ("DWORD", "NeedItemID", 0),
                         ("WORD", "NeedItemCnt", 0),
+                        ("list", "NeedEquip", 0),
                         ("list", "AddAttrType", 0),
                         ("list", "AddAttrNum", 0),
                         ("DWORD", "BossID", 0),
@@ -205,7 +206,8 @@
                 "AttrFruit":(
                         ("DWORD", "ID", 1),
                         ("BYTE", "FuncID", 0),
-                        ("WORD", "MaxUseCnt", 0),
+                        ("dict", "MaxUseCnt", 0),
+                        ("list", "AddItemInfo", 0),
                         ("WORD", "RecycleMoney", 0),
                         ("DWORD", "FightPowerEx", 0),
                         ),
@@ -337,7 +339,11 @@
                         ("DWORD", "NPCID", 1),
                         ("DWORD", "LostHPPerSecond", 0),
                         ("BYTE", "MaxPlayerCount", 0),
-                        ("DWORD", "ReduceRate", 0),
+                        ("DWORD", "LostHPPerSecondEx", 0),
+                        ("DWORD", "FightPowerMin", 0),
+                        ("DWORD", "FightPowerMax", 0),
+                        ("DWORD", "EveryFightPower", 0),
+                        ("DWORD", "EveryFightPowerLostHPEx", 0),
                         ),
 
                 "EquipSuitAttr":(
@@ -375,26 +381,26 @@
                         ("WORD", "LV", 1),
                         ("DWORD", "CftHit", 0),
                         ("DWORD", "CftMiss", 0),
-                        ("DWORD", "CftDamagePer", 0),
-                        ("DWORD", "CftDamReduce", 0),
                         ("DWORD", "CftIgnoreDefRate", 0),
                         ("DWORD", "CftDamChanceDef", 0),
-                        ("DWORD", "CftBleedDamage", 0),
                         ("DWORD", "CftFaintRate", 0),
-                        ("DWORD", "CftSuperHitReduce", 0),
+                        ("DWORD", "CftSuperHitRateReduce", 0),
+                        ("DWORD", "CftSuperHitRate", 0),
+                        ("DWORD", "CftLuckyHitRate", 0),
                         ("DWORD", "CftLuckyHitRateReduce", 0),
                         ("DWORD", "CftSkillAtkRate", 0),
                         ("DWORD", "CftSkillAtkRateReduce", 0),
+                        ("DWORD", "CftFinalHurtPer", 0),
+                        ("DWORD", "CftFinalHurtReducePer", 0),
                         ("DWORD", "CftDamagePerPVP", 0),
                         ("DWORD", "CftDamagePerPVPReduce", 0),
+                        ("DWORD", "CftNPCHurtAddPer", 0),
+                        ("DWORD", "CftNormalHurtPer", 0),
+                        ("DWORD", "CftFabaoHurtPer", 0),
                         ("DWORD", "CftDamBackPer", 0),
                         ("DWORD", "CftIgnoreDefRateReduce", 0),
                         ("DWORD", "CftFaintDefRate", 0),
                         ("DWORD", "CftAtkSpeed", 0),
-                        ("DWORD", "CftLuckyHit", 0),
-                        ("DWORD", "CftSpeedPer", 0),
-                        ("DWORD", "CftAtkPer", 0),
-                        ("DWORD", "CftMaxHPPer", 0),
                         ("DWORD", "CftJobAHurtAddPer", 0),
                         ("DWORD", "CftJobBHurtAddPer", 0),
                         ("DWORD", "CftJobCHurtAddPer", 0),
@@ -416,6 +422,7 @@
                         ("dict", "EquipColorMaxDropCount", 0),
                         ("dict", "EquipColorSuitInfo", 0),
                         ("dict", "EquipPartKeyRateInfo", 0),
+                        ("BYTE", "ColorSuitPartOptimization", 0),
                         ("dict", "KillCountDropEquipPub", 0),
                         ("dict", "ItemIDDropRate", 0),
                         ("dict", "ItemIDMaxDropCount", 0),
@@ -443,6 +450,12 @@
                         ("DWORD", "SweepRunePoint", 0),
                         ("DWORD", "SweepYsog", 0),
                         ("dict", "SweepGoodDrop", 0),
+                        ),
+
+                "ChinMap":(
+                        ("DWORD", "MapID", 1),
+                        ("BYTE", "CanRide", 0),
+                        ("BYTE", "CanOutPet", 0),
                         ),
 
                 "FBFunc":(
@@ -684,41 +697,28 @@
                         ("list", "ItemBind", 0),
                         ),
 
-                "TreasureRefine":(
-                        ("WORD", "TreasureID", 1),
-                        ("BYTE", "TreasureLV", 1),
-                        ("dict", "TreasureAttr", 0),
-                        ("dict", "Material", 0),
-                        ("WORD", "SuccessRate", 0),
-                        ("DWORD", "OpenSkill", 0),
-                        ("BYTE", "NeedAlchemyLV", 0),
-                        ("BYTE", "NeedAllTreasureLV", 0),
-                        ),
-
                 "RefineStove":(
                         ("BYTE", "StoveLV", 1),
                         ("DWORD", "UpNeedExp", 0),
-                        ("list", "AddAttrType", 0),
-                        ("list", "AddAttrNum", 0),
                         ),
 
                 "Alchemy":(
-                        ("WORD", "AlchemyID", 1),
-                        ("dict", "Material", 0),
+                        ("DWORD", "ID", 1),
+                        ("DWORD", "AlchemItemID", 0),
+                        ("BYTE", "AlchemType", 0),
+                        ("BYTE", "AlchemyQuality", 0),
+                        ("DWORD", "LearnNeedItemID", 0),
+                        ("BYTE", "LearnNeedAlchemLV", 0),
+                        ("WORD", "LearnNeedLingGenPoint", 0),
+                        ("WORD", "NeedTime", 0),
                         ("WORD", "AlchemyExp", 0),
-                        ("list", "AlchemyItem", 0),
-                        ("list", "SpecAlchemyID", 0),
-                        ("list", "AlchemyUp", 0),
-                        ("BYTE", "NeedAlchemyLV", 0),
+                        ("dict", "Material", 0),
                         ),
 
-                "AlchemySpec":(
-                        ("WORD", "SpecAlchemyID", 1),
-                        ("DWORD", "MaterialID", 0),
-                        ("BYTE", "MaterialCnt", 0),
-                        ("WORD", "AlchemyExp", 0),
-                        ("list", "AlchemyItem", 0),
-                        ("BYTE", "NeedAlchemyLV", 0),
+                "AlchemyResult":(
+                        ("BYTE", "AlchemyQuality", 1),
+                        ("DWORD", "LuckValue", 0),
+                        ("list", "CntRateList", 0),
                         ),
 
                 "BOSSInfo":(
@@ -737,8 +737,8 @@
                         ),
 
                 "PersonalBoss":(
-                        ("DWORD", "NPCID", 1),
-                        ("DWORD", "ChanllengeLv", 0),
+                        ("DWORD", "NPCID", 0),
+                        ("DWORD", "FuncLineID", 1),
                         ),
 
                 "FamilyActivity":(
@@ -784,6 +784,17 @@
                         ("char", "MoneyCount", 0),
                         ),
 
+                "MapRefreshNPC":(
+                        ("DWORD", "MapID", 1),
+                        ("BYTE", "RefreshNum", 0),
+                        ("list", "NPCIDList", 0),
+                        ("list", "RefreshMarkList", 0),
+                        ("BYTE", "PointMaxCount", 0),
+                        ("BYTE", "TotalMaxCount", 0),
+                        ("BYTE", "RefreshSeconds", 0),
+                        ("BYTE", "RefreshPerMinutes", 0),
+                        ),
+
                 "RuneCompound":(
                         ("DWORD", "TagItemID", 1),
                         ("list", "NeedItem", 0),
@@ -804,11 +815,27 @@
 
                 "CollectNPC":(
                         ("DWORD", "NPCID", 1),
+                        ("BYTE", "IsMissionCollectNPC", 0),
                         ("BYTE", "PrepareTime", 0),
                         ("list", "LostHPPer", 0),
                         ("BYTE", "MaxCollectCount", 0),
+                        ("BYTE", "CollectResetType", 0),
                         ("char", "CollectCountLimitNotify", 0),
                         ("list", "CollectAward", 0),
+                        ("dict", "CollectAppointAward", 0),
+                        ("BYTE", "AlchemyDiffLV", 0),
+                        ("BYTE", "NotifyCollectResult", 0),
+                        ("BYTE", "CanBreakCollect", 0),
+                        ),
+
+                "TreasureNPC":(
+                        ("DWORD", "NPCID", 1),
+                        ("dict", "AttackCountDropWeightInfo", 0),
+                        ("list", "AttackDropWeightList", 0),
+                        ("list", "AttackDropWeightListEx", 0),
+                        ("BYTE", "DropCountEx", 0),
+                        ("BYTE", "AlchemyDiffLV", 0),
+                        ("char", "NotDropNotify", 0),
                         ),
 
                 "Chests":(
@@ -818,6 +845,7 @@
                         ("WORD", "CostGold", 0),
                         ("BYTE", "ShowType", 0),
                         ("BYTE", "IsBind", 0),
+                        ("BYTE", "AucionItemCanSell", 0),
                         ),
 
                 "ChestsAward":(
@@ -1153,6 +1181,12 @@
                         ("list", "ServerGroupIDList", 0),
                         ),
 
+                "CrossZonePK":(
+                        ("char", "CrossZoneName", 1),
+                        ("BYTE", "ZoneID", 1),
+                        ("list", "ServerGroupIDList", 0),
+                        ),
+
                 "CrossPenglaiZoneMap":(
                         ("BYTE", "ZoneID", 0),
                         ("DWORD", "MapID", 1),
@@ -1261,15 +1295,6 @@
                         ("DWORD", "ZhuXianScore", 0),
                         ),
 
-                "ZhuXianTower":(
-                        ("DWORD", "ID", 1),
-                        ("DWORD", "NPCID", 0),
-                        ("list", "FirstAward", 0),
-                        ("dict", "GradeAward", 0),
-                        ("WORD", "UnLockEquipPlace", 0),
-                        ("DWORD", "NeedPower", 0),
-                        ),
-
                 "ZhuXianEquipDecompose":(
                         ("BYTE", "ClassLV", 1),
                         ("dict", "DecomposeInfo", 0),
@@ -1351,6 +1376,7 @@
                         ("BYTE", "EquipPlace", 1),
                         ("BYTE", "Star", 1),
                         ("list", "CostEquipPlace", 0),
+                        ("BYTE", "IsJobLimit", 0),
                         ("list", "CostEquipColor", 0),
                         ("BYTE", "CostEquipCnt", 0),
                         ("BYTE", "SuitTotalRate", 0),
@@ -1385,7 +1411,7 @@
                         ("list", "WorldLV", 0),
                         ("list", "Rank", 0),
                         ("list", "Award1", 0),
-                        ("dict", "Award2", 0),
+                        ("list", "Award2", 0),
                         ),
 
                 "FairyDomain":(
@@ -1394,10 +1420,13 @@
                         ("DWORD", "MapID", 0),
                         ("BYTE", "LineID", 0),
                         ("DWORD", "BossID", 0),
+                        ("BYTE", "EventFBType", 0),
                         ("BYTE", "CostEnergy", 0),
                         ("BYTE", "NeedAlchemyLV", 0),
                         ("list", "NeedLV", 0),
                         ("DWORD", "Weight", 0),
+                        ("DWORD", "HourCntPriLimit", 0),
+                        ("DWORD", "DayCntPriLimit", 0),
                         ),
 
                 "FairyAdventures":(
@@ -1413,6 +1442,29 @@
                         ("WORD", "Cnt", 1),
                         ("DWORD", "EventID", 0),
                         ("list", "Award", 0),
+                        ("list", "RandomAward", 0),
+                        ),
+
+                "FBBuyBuff":(
+                        ("DWORD", "MapId", 1),
+                        ("WORD", "MoneyCnt", 1),
+                        ("DWORD", "BuffID", 0),
+                        ("WORD", "BuffCD", 0),
+                        ),
+
+                "SkillElement":(
+                        ("DWORD", "ElementSkillID", 1),
+                        ("DWORD", "MainSkillID", 0),
+                        ("DWORD", "NeedLV", 0),
+                        ),
+
+                "SkyTower":(
+                        ("DWORD", "FloorID", 1),
+                        ("DWORD", "BossID", 0),
+                        ("dict", "Reward", 0),
+                        ("WORD", "NeedLV", 0),
+                        ("DWORD", "FightPower", 0),
+                        ("BYTE", "IsNotify", 0),
                         ),
                 }
 
@@ -1442,15 +1494,15 @@
     def __init__(self):
         self.AttrID = 0
         self.AddAttrInfoPerPoint = {}
-        self.PointQualityAttrIDDict = {}
-        self.PointQualityAttrValueDict = {}
+        self.FightPowerPerPoint = 0
+        self.PointQualityAttrDict = {}
         self.PointQualityIntervalList = []
         return
         
     def GetAttrID(self): return self.AttrID # 属性ID
-    def GetAddAttrInfoPerPoint(self): return self.AddAttrInfoPerPoint # 每点增加属性信息
-    def GetPointQualityAttrIDDict(self): return self.PointQualityAttrIDDict # 点数品质进阶增加属性ID, 根据职业区分
-    def GetPointQualityAttrValueDict(self): return self.PointQualityAttrValueDict # 点数品质进阶增加属性值列表, 根据职业区分
+    def GetAddAttrInfoPerPoint(self): return self.AddAttrInfoPerPoint # 每点增加属性信息 {"职业":[[每X点,属性ID,值], ...], ..}
+    def GetFightPowerPerPoint(self): return self.FightPowerPerPoint # 每点附加战斗力
+    def GetPointQualityAttrDict(self): return self.PointQualityAttrDict # 点数品质进阶增加属性,  {职业:{属性ID:[阶段属性,..],..},..}
     def GetPointQualityIntervalList(self): return self.PointQualityIntervalList # 点数品质进阶属性点区间列表
 
 # 境界表
@@ -1461,6 +1513,7 @@
         self.NeedLV = 0
         self.NeedItemID = 0
         self.NeedItemCnt = 0
+        self.NeedEquip = []
         self.AddAttrType = []
         self.AddAttrNum = []
         self.BossID = 0
@@ -1473,6 +1526,7 @@
     def GetNeedLV(self): return self.NeedLV # 需要等级
     def GetNeedItemID(self): return self.NeedItemID # 需要道具ID
     def GetNeedItemCnt(self): return self.NeedItemCnt # 消耗的道具数量
+    def GetNeedEquip(self): return self.NeedEquip # 需要8部位装备条件阶级|品质|是否套装
     def GetAddAttrType(self): return self.AddAttrType # 境界加成属性类型
     def GetAddAttrNum(self): return self.AddAttrNum # 境界加成属性值
     def GetBossID(self): return self.BossID # 渡劫bossid
@@ -1781,14 +1835,16 @@
     def __init__(self):
         self.ID = 0
         self.FuncID = 0
-        self.MaxUseCnt = 0
+        self.MaxUseCnt = {}
+        self.AddItemInfo = []
         self.RecycleMoney = 0
         self.FightPowerEx = 0
         return
         
     def GetID(self): return self.ID # 物品ID
     def GetFuncID(self): return self.FuncID # 所属功能ID
-    def GetMaxUseCnt(self): return self.MaxUseCnt # 最大可使用数量
+    def GetMaxUseCnt(self): return self.MaxUseCnt # 境界对应最大可使用数量
+    def GetAddItemInfo(self): return self.AddItemInfo # [增幅丹ID,单次物品数量,单次增加上限]
     def GetRecycleMoney(self): return self.RecycleMoney # 回收货币值
     def GetFightPowerEx(self): return self.FightPowerEx # 附加战斗力
 
@@ -2054,13 +2110,21 @@
         self.NPCID = 0
         self.LostHPPerSecond = 0
         self.MaxPlayerCount = 0
-        self.ReduceRate = 0
+        self.LostHPPerSecondEx = 0
+        self.FightPowerMin = 0
+        self.FightPowerMax = 0
+        self.EveryFightPower = 0
+        self.EveryFightPowerLostHPEx = 0
         return
         
     def GetNPCID(self): return self.NPCID # NPCID
     def GetLostHPPerSecond(self): return self.LostHPPerSecond # 单人每秒掉血量
     def GetMaxPlayerCount(self): return self.MaxPlayerCount # 最大人数
-    def GetReduceRate(self): return self.ReduceRate # 衰减万分率
+    def GetLostHPPerSecondEx(self): return self.LostHPPerSecondEx # 每增加一人附加掉血量
+    def GetFightPowerMin(self): return self.FightPowerMin # 标准战力
+    def GetFightPowerMax(self): return self.FightPowerMax # 上限战力
+    def GetEveryFightPower(self): return self.EveryFightPower # 每x点战力
+    def GetEveryFightPowerLostHPEx(self): return self.EveryFightPowerLostHPEx # 每x点战力附加伤害
 
 # 装备套装属性表
 class IPY_EquipSuitAttr():
@@ -2135,26 +2199,26 @@
         self.LV = 0
         self.CftHit = 0
         self.CftMiss = 0
-        self.CftDamagePer = 0
-        self.CftDamReduce = 0
         self.CftIgnoreDefRate = 0
         self.CftDamChanceDef = 0
-        self.CftBleedDamage = 0
         self.CftFaintRate = 0
-        self.CftSuperHitReduce = 0
+        self.CftSuperHitRateReduce = 0
+        self.CftSuperHitRate = 0
+        self.CftLuckyHitRate = 0
         self.CftLuckyHitRateReduce = 0
         self.CftSkillAtkRate = 0
         self.CftSkillAtkRateReduce = 0
+        self.CftFinalHurtPer = 0
+        self.CftFinalHurtReducePer = 0
         self.CftDamagePerPVP = 0
         self.CftDamagePerPVPReduce = 0
+        self.CftNPCHurtAddPer = 0
+        self.CftNormalHurtPer = 0
+        self.CftFabaoHurtPer = 0
         self.CftDamBackPer = 0
         self.CftIgnoreDefRateReduce = 0
         self.CftFaintDefRate = 0
         self.CftAtkSpeed = 0
-        self.CftLuckyHit = 0
-        self.CftSpeedPer = 0
-        self.CftAtkPer = 0
-        self.CftMaxHPPer = 0
         self.CftJobAHurtAddPer = 0
         self.CftJobBHurtAddPer = 0
         self.CftJobCHurtAddPer = 0
@@ -2166,26 +2230,26 @@
     def GetLV(self): return self.LV # 等级
     def GetCftHit(self): return self.CftHit # 命中系数
     def GetCftMiss(self): return self.CftMiss # 闪避系数
-    def GetCftDamagePer(self): return self.CftDamagePer # 增加伤害系数
-    def GetCftDamReduce(self): return self.CftDamReduce # 减少伤害系数
     def GetCftIgnoreDefRate(self): return self.CftIgnoreDefRate # 无视防御系数
     def GetCftDamChanceDef(self): return self.CftDamChanceDef # 抵御系数
-    def GetCftBleedDamage(self): return self.CftBleedDamage # 流血伤害系数
     def GetCftFaintRate(self): return self.CftFaintRate # 击晕系数
-    def GetCftSuperHitReduce(self): return self.CftSuperHitReduce # 暴击抗性系数
+    def GetCftSuperHitRateReduce(self): return self.CftSuperHitRateReduce # 暴击率抗性系数
+    def GetCftSuperHitRate(self): return self.CftSuperHitRate # 暴击率系数
+    def GetCftLuckyHitRate(self): return self.CftLuckyHitRate # 会心一击率系数
     def GetCftLuckyHitRateReduce(self): return self.CftLuckyHitRateReduce # 会心一击抗性系数
     def GetCftSkillAtkRate(self): return self.CftSkillAtkRate # 技能伤害系数
     def GetCftSkillAtkRateReduce(self): return self.CftSkillAtkRateReduce # 技能减伤系数
-    def GetCftDamagePerPVP(self): return self.CftDamagePerPVP # PVP伤害增肌系数
+    def GetCftFinalHurtPer(self): return self.CftFinalHurtPer # 最终伤害加成系数
+    def GetCftFinalHurtReducePer(self): return self.CftFinalHurtReducePer # 最终伤害减免系数
+    def GetCftDamagePerPVP(self): return self.CftDamagePerPVP # PVP伤害增加系数
     def GetCftDamagePerPVPReduce(self): return self.CftDamagePerPVPReduce # PVP伤害减少系数
+    def GetCftNPCHurtAddPer(self): return self.CftNPCHurtAddPer # PVE技能加成系数
+    def GetCftNormalHurtPer(self): return self.CftNormalHurtPer # 普通附加伤害加成系数
+    def GetCftFabaoHurtPer(self): return self.CftFabaoHurtPer # 法宝附加伤害加成系数
     def GetCftDamBackPer(self): return self.CftDamBackPer # 伤害反射系数
     def GetCftIgnoreDefRateReduce(self): return self.CftIgnoreDefRateReduce # 无视防御抗性系数
     def GetCftFaintDefRate(self): return self.CftFaintDefRate # 控制抵抗系数
     def GetCftAtkSpeed(self): return self.CftAtkSpeed # 攻速系数
-    def GetCftLuckyHit(self): return self.CftLuckyHit # 会心一击系数
-    def GetCftSpeedPer(self): return self.CftSpeedPer # 移动速度百分比系数
-    def GetCftAtkPer(self): return self.CftAtkPer # 攻击百分比系数
-    def GetCftMaxHPPer(self): return self.CftMaxHPPer # 生命百分比系数
     def GetCftJobAHurtAddPer(self): return self.CftJobAHurtAddPer # 对目标战士伤害加成
     def GetCftJobBHurtAddPer(self): return self.CftJobBHurtAddPer # 对目标法师伤害加成
     def GetCftJobCHurtAddPer(self): return self.CftJobCHurtAddPer # 对目标弓箭伤害加成
@@ -2209,6 +2273,7 @@
         self.EquipColorMaxDropCount = {}
         self.EquipColorSuitInfo = {}
         self.EquipPartKeyRateInfo = {}
+        self.ColorSuitPartOptimization = 0
         self.KillCountDropEquipPub = {}
         self.ItemIDDropRate = {}
         self.ItemIDMaxDropCount = {}
@@ -2237,6 +2302,7 @@
     def GetEquipColorMaxDropCount(self): return self.EquipColorMaxDropCount # 装备颜色最大掉落物品数 {颜色:上限数量,...}
     def GetEquipColorSuitInfo(self): return self.EquipColorSuitInfo # 装备颜色对应套装概率 {颜色:套装概率, ...}
     def GetEquipPartKeyRateInfo(self): return self.EquipPartKeyRateInfo # 装备部位集合信息 {(颜色,是否套装):部位集合key, ...}
+    def GetColorSuitPartOptimization(self): return self.ColorSuitPartOptimization # 部位颜色套评分优选掉落,十位代表颜色,个位代表套装
     def GetKillCountDropEquipPub(self): return self.KillCountDropEquipPub # 第x次击杀附加必掉装备 {次数:[阶,颜色,是否套装,部位集合key], ...}
     def GetItemIDDropRate(self): return self.ItemIDDropRate # 指定物品ID掉率信息 {物品ID:概率, ...}
     def GetItemIDMaxDropCount(self): return self.ItemIDMaxDropCount # 指定物品ID最大掉落个数,没配默认1次 {物品ID:随机次数,...}
@@ -2278,6 +2344,19 @@
     def GetSweepRunePoint(self): return self.SweepRunePoint # 扫荡符印精华
     def GetSweepYsog(self): return self.SweepYsog # 扫荡魔精
     def GetSweepGoodDrop(self): return self.SweepGoodDrop # 扫荡珍稀符印
+
+# 地图表格
+class IPY_ChinMap():
+    
+    def __init__(self):
+        self.MapID = 0
+        self.CanRide = 0
+        self.CanOutPet = 0
+        return
+        
+    def GetMapID(self): return self.MapID # 地图ID
+    def GetCanRide(self): return self.CanRide # 可否骑乘
+    def GetCanOutPet(self): return self.CanOutPet # 可否召唤宠物
 
 # 副本总表
 class IPY_FBFunc():
@@ -2776,83 +2855,56 @@
     def GetItemCount(self): return self.ItemCount # 物品数量
     def GetItemBind(self): return self.ItemBind # 是否绑定
 
-# 法宝铸炼表
-class IPY_TreasureRefine():
-    
-    def __init__(self):
-        self.TreasureID = 0
-        self.TreasureLV = 0
-        self.TreasureAttr = {}
-        self.Material = {}
-        self.SuccessRate = 0
-        self.OpenSkill = 0
-        self.NeedAlchemyLV = 0
-        self.NeedAllTreasureLV = 0
-        return
-        
-    def GetTreasureID(self): return self.TreasureID # 法宝id
-    def GetTreasureLV(self): return self.TreasureLV # 法宝阶数
-    def GetTreasureAttr(self): return self.TreasureAttr # 属性(最多3条)
-    def GetMaterial(self): return self.Material # 铸炼材料
-    def GetSuccessRate(self): return self.SuccessRate # 成功率
-    def GetOpenSkill(self): return self.OpenSkill # 解锁技能
-    def GetNeedAlchemyLV(self): return self.NeedAlchemyLV # 所需炼丹等级
-    def GetNeedAllTreasureLV(self): return self.NeedAllTreasureLV # 所需所有法宝等级
-
 # 炼丹炉等级表
 class IPY_RefineStove():
     
     def __init__(self):
         self.StoveLV = 0
-        self.UpNeedExp = 0
-        self.AddAttrType = []
-        self.AddAttrNum = []
+        self.UpNeedExp = 0
         return
         
     def GetStoveLV(self): return self.StoveLV # 炼丹炉等级
-    def GetUpNeedExp(self): return self.UpNeedExp # 升下一级所需经验
-    def GetAddAttrType(self): return self.AddAttrType # 等级加成属性类型
-    def GetAddAttrNum(self): return self.AddAttrNum # 等级加成属性值
+    def GetUpNeedExp(self): return self.UpNeedExp # 升下一级所需经验
 
 # 炼丹表
 class IPY_Alchemy():
     
     def __init__(self):
-        self.AlchemyID = 0
-        self.Material = {}
+        self.ID = 0
+        self.AlchemItemID = 0
+        self.AlchemType = 0
+        self.AlchemyQuality = 0
+        self.LearnNeedItemID = 0
+        self.LearnNeedAlchemLV = 0
+        self.LearnNeedLingGenPoint = 0
+        self.NeedTime = 0
         self.AlchemyExp = 0
-        self.AlchemyItem = []
-        self.SpecAlchemyID = []
-        self.AlchemyUp = []
-        self.NeedAlchemyLV = 0
+        self.Material = {}
         return
         
-    def GetAlchemyID(self): return self.AlchemyID # 炼丹编号
-    def GetMaterial(self): return self.Material # 所需所有材料和数量
+    def GetID(self): return self.ID # 秘方唯一ID不可变更
+    def GetAlchemItemID(self): return self.AlchemItemID # 丹药物品ID
+    def GetAlchemType(self): return self.AlchemType # 秘方类型1-灵丹 2-仙丹
+    def GetAlchemyQuality(self): return self.AlchemyQuality # 秘方品级
+    def GetLearnNeedItemID(self): return self.LearnNeedItemID # 丹方物品ID
+    def GetLearnNeedAlchemLV(self): return self.LearnNeedAlchemLV # 丹方需要炼丹等级
+    def GetLearnNeedLingGenPoint(self): return self.LearnNeedLingGenPoint # 丹方需要总灵根点数
+    def GetNeedTime(self): return self.NeedTime # 炼丹时间(秒)
     def GetAlchemyExp(self): return self.AlchemyExp # 炼丹获得经验值
-    def GetAlchemyItem(self): return self.AlchemyItem # 产出物品及数量及权重
-    def GetSpecAlchemyID(self): return self.SpecAlchemyID # 特殊炼丹ID组
-    def GetAlchemyUp(self): return self.AlchemyUp # 产出包含的进阶丹药
-    def GetNeedAlchemyLV(self): return self.NeedAlchemyLV # 所需炼丹等级
+    def GetMaterial(self): return self.Material # 炼丹材料
 
-# 炼丹特殊产出表
-class IPY_AlchemySpec():
+# 炼丹数量表
+class IPY_AlchemyResult():
     
     def __init__(self):
-        self.SpecAlchemyID = 0
-        self.MaterialID = 0
-        self.MaterialCnt = 0
-        self.AlchemyExp = 0
-        self.AlchemyItem = []
-        self.NeedAlchemyLV = 0
+        self.AlchemyQuality = 0
+        self.LuckValue = 0
+        self.CntRateList = []
         return
         
-    def GetSpecAlchemyID(self): return self.SpecAlchemyID # 特殊炼丹ID
-    def GetMaterialID(self): return self.MaterialID # 特殊材料ID
-    def GetMaterialCnt(self): return self.MaterialCnt # 特殊材料ID消耗个数
-    def GetAlchemyExp(self): return self.AlchemyExp # 特殊材料经验
-    def GetAlchemyItem(self): return self.AlchemyItem # 产出物品及数量及权重
-    def GetNeedAlchemyLV(self): return self.NeedAlchemyLV # 所需炼丹等级
+    def GetAlchemyQuality(self): return self.AlchemyQuality # 丹方等级
+    def GetLuckValue(self): return self.LuckValue # 慧根
+    def GetCntRateList(self): return self.CntRateList # 数量饼图
 
 # BOSS信息表
 class IPY_BOSSInfo():
@@ -2891,11 +2943,11 @@
     
     def __init__(self):
         self.NPCID = 0
-        self.ChanllengeLv = 0
+        self.FuncLineID = 0
         return
         
     def GetNPCID(self): return self.NPCID # ID
-    def GetChanllengeLv(self): return self.ChanllengeLv # 可挑战等级
+    def GetFuncLineID(self): return self.FuncLineID # 可挑战等级
 
 # 仙盟活跃表
 class IPY_FamilyActivity():
@@ -2989,6 +3041,29 @@
     def GetInspireMaxLV(self): return self.InspireMaxLV # 鼓舞等级限制
     def GetMoneyCount(self): return self.MoneyCount # 单次消耗金钱数量
 
+# 地图标试点NPC刷新
+class IPY_MapRefreshNPC():
+    
+    def __init__(self):
+        self.MapID = 0
+        self.RefreshNum = 0
+        self.NPCIDList = []
+        self.RefreshMarkList = []
+        self.PointMaxCount = 0
+        self.TotalMaxCount = 0
+        self.RefreshSeconds = 0
+        self.RefreshPerMinutes = 0
+        return
+        
+    def GetMapID(self): return self.MapID # 地图ID
+    def GetRefreshNum(self): return self.RefreshNum # 刷怪规则编号
+    def GetNPCIDList(self): return self.NPCIDList # NPCID列表
+    def GetRefreshMarkList(self): return self.RefreshMarkList # 标试点列表
+    def GetPointMaxCount(self): return self.PointMaxCount # 单个点最大存在怪物数
+    def GetTotalMaxCount(self): return self.TotalMaxCount # 所有点总怪物数
+    def GetRefreshSeconds(self): return self.RefreshSeconds # 刷怪间隔秒
+    def GetRefreshPerMinutes(self): return self.RefreshPerMinutes # 每整X分刷怪
+
 # 符印合成表
 class IPY_RuneCompound():
     
@@ -3032,19 +3107,52 @@
     
     def __init__(self):
         self.NPCID = 0
+        self.IsMissionCollectNPC = 0
         self.PrepareTime = 0
         self.LostHPPer = []
         self.MaxCollectCount = 0
+        self.CollectResetType = 0
         self.CollectCountLimitNotify = ""
-        self.CollectAward = []
+        self.CollectAward = []
+        self.CollectAppointAward = {}
+        self.AlchemyDiffLV = 0
+        self.NotifyCollectResult = 0
+        self.CanBreakCollect = 0
         return
         
     def GetNPCID(self): return self.NPCID # ID
+    def GetIsMissionCollectNPC(self): return self.IsMissionCollectNPC # 是否任务采集物
     def GetPrepareTime(self): return self.PrepareTime # 采集耗时,秒
     def GetLostHPPer(self): return self.LostHPPer # 采集掉血,[每X秒,掉血百分比]
-    def GetMaxCollectCount(self): return self.MaxCollectCount # 每日可采集次数,0限制
+    def GetMaxCollectCount(self): return self.MaxCollectCount # 可采集次数,0无限制
+    def GetCollectResetType(self): return self.CollectResetType # 采集次数重置类型,0-不重置,1-每日5点重置
     def GetCollectCountLimitNotify(self): return self.CollectCountLimitNotify # 无采集次数采集提示
-    def GetCollectAward(self): return self.CollectAward # 采集奖励物品, [物品ID,个数,是否绑定]
+    def GetCollectAward(self): return self.CollectAward # 采集奖励物品,权重列表 [[权重, [物品ID,个数,是否拍品]], ...]
+    def GetCollectAppointAward(self): return self.CollectAppointAward # 采集次数定制产出 {次数:[物品ID,个数,是否拍品], ...}
+    def GetAlchemyDiffLV(self): return self.AlchemyDiffLV # 过滤炼丹等级差,0-不过滤,>0过滤大于自身炼丹等级X级的物品
+    def GetNotifyCollectResult(self): return self.NotifyCollectResult # 是否通知采集结果
+    def GetCanBreakCollect(self): return self.CanBreakCollect # 被攻击是否打断采集
+
+# 宝箱怪表
+class IPY_TreasureNPC():
+    
+    def __init__(self):
+        self.NPCID = 0
+        self.AttackCountDropWeightInfo = {}
+        self.AttackDropWeightList = []
+        self.AttackDropWeightListEx = []
+        self.DropCountEx = 0
+        self.AlchemyDiffLV = 0
+        self.NotDropNotify = ""
+        return
+        
+    def GetNPCID(self): return self.NPCID # 宝箱怪NPCID
+    def GetAttackCountDropWeightInfo(self): return self.AttackCountDropWeightInfo # 攻击次数对应掉落权重饼图 {次数:[[权重, [物品ID,个数,是否拍品]], ...], ...}
+    def GetAttackDropWeightList(self): return self.AttackDropWeightList # 常规攻击权重饼图 [[权重, [物品ID,个数,是否拍品]], ...]
+    def GetAttackDropWeightListEx(self): return self.AttackDropWeightListEx # 额外掉落权重饼图库,每次攻击都会掉落  [[权重, [物品ID,个数,是否拍品]], ...]
+    def GetDropCountEx(self): return self.DropCountEx # 额外库执行次数
+    def GetAlchemyDiffLV(self): return self.AlchemyDiffLV # 过滤炼丹等级差,0-不过滤,>0过滤大于自身炼丹等级X级的物品
+    def GetNotDropNotify(self): return self.NotDropNotify # 没有掉落时提示信息
 
 # 宝箱表开启
 class IPY_Chests():
@@ -3055,7 +3163,8 @@
         self.CostItemCount = 0
         self.CostGold = 0
         self.ShowType = 0
-        self.IsBind = 0
+        self.IsBind = 0
+        self.AucionItemCanSell = 0
         return
         
     def GetChestsItemID(self): return self.ChestsItemID # 宝箱物品ID
@@ -3063,7 +3172,8 @@
     def GetCostItemCount(self): return self.CostItemCount # 消耗物品个数
     def GetCostGold(self): return self.CostGold # 消耗仙玉
     def GetShowType(self): return self.ShowType # 前端表现类型0-无表现, >0有表现需同步结果,具体类型前端自定义
-    def GetIsBind(self): return self.IsBind # 开出物品是否绑定
+    def GetIsBind(self): return self.IsBind # 开出物品是否绑定
+    def GetAucionItemCanSell(self): return self.AucionItemCanSell # 开出拍品可否上架集市
 
 # 宝箱表产出表
 class IPY_ChestsAward():
@@ -3771,6 +3881,19 @@
     def GetZoneID(self): return self.ZoneID # 赛区ID
     def GetServerGroupIDList(self): return self.ServerGroupIDList # 赛区服务器组ID列表
 
+# 跨服分区表竞技场
+class IPY_CrossZonePK():
+    
+    def __init__(self):
+        self.CrossZoneName = ""
+        self.ZoneID = 0
+        self.ServerGroupIDList = []
+        return
+        
+    def GetCrossZoneName(self): return self.CrossZoneName # 跨服分区名
+    def GetZoneID(self): return self.ZoneID # 赛区ID
+    def GetServerGroupIDList(self): return self.ServerGroupIDList # 赛区服务器组ID列表
+
 # 跨服Boss蓬莱仙境分区地图表
 class IPY_CrossPenglaiZoneMap():
     
@@ -4000,25 +4123,6 @@
     def GetRealmLV(self): return self.RealmLV # 需要境界
     def GetZhuXianScore(self): return self.ZhuXianScore # 需要诛仙总评分
 
-# 诛仙塔表
-class IPY_ZhuXianTower():
-    
-    def __init__(self):
-        self.ID = 0
-        self.NPCID = 0
-        self.FirstAward = []
-        self.GradeAward = {}
-        self.UnLockEquipPlace = 0
-        self.NeedPower = 0
-        return
-        
-    def GetID(self): return self.ID # 塔编号
-    def GetNPCID(self): return self.NPCID # npcid
-    def GetFirstAward(self): return self.FirstAward # 首次S级奖励
-    def GetGradeAward(self): return self.GradeAward # 评级奖励
-    def GetUnLockEquipPlace(self): return self.UnLockEquipPlace # 解锁的装备位
-    def GetNeedPower(self): return self.NeedPower # 推荐战力
-
 # 诛仙装备分解表
 class IPY_ZhuXianEquipDecompose():
     
@@ -4189,6 +4293,7 @@
         self.EquipPlace = 0
         self.Star = 0
         self.CostEquipPlace = []
+        self.IsJobLimit = 0
         self.CostEquipColor = []
         self.CostEquipCnt = 0
         self.SuitTotalRate = 0
@@ -4201,6 +4306,7 @@
     def GetEquipPlace(self): return self.EquipPlace # 装备位
     def GetStar(self): return self.Star # 星数
     def GetCostEquipPlace(self): return self.CostEquipPlace # 可用装备部位
+    def GetIsJobLimit(self): return self.IsJobLimit # 是否只用本职业装备材料
     def GetCostEquipColor(self): return self.CostEquipColor # 可用装备品质
     def GetCostEquipCnt(self): return self.CostEquipCnt # 装备数量
     def GetSuitTotalRate(self): return self.SuitTotalRate # 全套装加成概率(非套50%)
@@ -4261,14 +4367,14 @@
         self.WorldLV = []
         self.Rank = []
         self.Award1 = []
-        self.Award2 = {}
+        self.Award2 = []
         return
         
     def GetLineID(self): return self.LineID #  线路ID
     def GetWorldLV(self): return self.WorldLV # 世界等级
     def GetRank(self): return self.Rank # 排名
     def GetAward1(self): return self.Award1 # 奖励 [[独立概率万分率,[物品ID,数量,是否拍品]],..]
-    def GetAward2(self): return self.Award2 # 饼图奖励{随机次数:[(概率,[物品ID,数量,是否拍品]),..]}
+    def GetAward2(self): return self.Award2 # 饼图奖励  [[(概率,[物品ID,数量,是否拍品]),..]]
 
 # 缥缈仙域表
 class IPY_FairyDomain():
@@ -4279,10 +4385,13 @@
         self.MapID = 0
         self.LineID = 0
         self.BossID = 0
+        self.EventFBType = 0
         self.CostEnergy = 0
         self.NeedAlchemyLV = 0
         self.NeedLV = []
-        self.Weight = 0
+        self.Weight = 0
+        self.HourCntPriLimit = 0
+        self.DayCntPriLimit = 0
         return
         
     def GetID(self): return self.ID # 事件编号
@@ -4290,10 +4399,13 @@
     def GetMapID(self): return self.MapID # 副本id
     def GetLineID(self): return self.LineID # 副本线路id
     def GetBossID(self): return self.BossID # 副本BossID
+    def GetEventFBType(self): return self.EventFBType # 事件副本类型,0-前端,1-本服,2-跨服
     def GetCostEnergy(self): return self.CostEnergy # 消耗体力
     def GetNeedAlchemyLV(self): return self.NeedAlchemyLV # 出现的炼丹等级要求
     def GetNeedLV(self): return self.NeedLV # 出现的玩家等级要求
-    def GetWeight(self): return self.Weight # 权重
+    def GetWeight(self): return self.Weight # 权重
+    def GetHourCntPriLimit(self): return self.HourCntPriLimit # 个人每小时次数限制
+    def GetDayCntPriLimit(self): return self.DayCntPriLimit # 个人每天次数限制
 
 # 缥缈奇遇表
 class IPY_FairyAdventures():
@@ -4320,12 +4432,61 @@
     def __init__(self):
         self.Cnt = 0
         self.EventID = 0
-        self.Award = []
+        self.Award = []
+        self.RandomAward = []
         return
         
     def GetCnt(self): return self.Cnt # 次数
     def GetEventID(self): return self.EventID # 事件编号
-    def GetAward(self): return self.Award # 定制奖励(没配走正常奖励规则)[[物品ID,数量,是否拍品],..]
+    def GetAward(self): return self.Award # 定制奖励(没配走正常奖励规则)[[物品ID,数量,是否拍品],..]
+    def GetRandomAward(self): return self.RandomAward # 随机奖励 [[(权重,[物品ID,数量,是否拍品]),..],..]
+
+# 副本Buff表
+class IPY_FBBuyBuff():
+    
+    def __init__(self):
+        self.MapId = 0
+        self.MoneyCnt = 0
+        self.BuffID = 0
+        self.BuffCD = 0
+        return
+        
+    def GetMapId(self): return self.MapId # 
+    def GetMoneyCnt(self): return self.MoneyCnt # 仙玉数量
+    def GetBuffID(self): return self.BuffID # BuffID
+    def GetBuffCD(self): return self.BuffCD # 间隔时间s
+
+# 技能升级表
+class IPY_SkillElement():
+    
+    def __init__(self):
+        self.ElementSkillID = 0
+        self.MainSkillID = 0
+        self.NeedLV = 0
+        return
+        
+    def GetElementSkillID(self): return self.ElementSkillID # 专精技能ID
+    def GetMainSkillID(self): return self.MainSkillID # 主技能ID
+    def GetNeedLV(self): return self.NeedLV # 选择需要等级
+
+# 天星塔表
+class IPY_SkyTower():
+    
+    def __init__(self):
+        self.FloorID = 0
+        self.BossID = 0
+        self.Reward = {}
+        self.NeedLV = 0
+        self.FightPower = 0
+        self.IsNotify = 0
+        return
+        
+    def GetFloorID(self): return self.FloorID # 层
+    def GetBossID(self): return self.BossID # bossID
+    def GetReward(self): return self.Reward # 奖励
+    def GetNeedLV(self): return self.NeedLV # 要求等级
+    def GetFightPower(self): return self.FightPower # 推荐战力
+    def GetIsNotify(self): return self.IsNotify # 是否广播
 
 
 def Log(msg, playerID=0, par=0):
@@ -4423,6 +4584,8 @@
         self.ipyNPCDropItemLen = len(self.ipyNPCDropItemCache)
         self.ipyRuneTowerCache = self.__LoadFileData("RuneTower", IPY_RuneTower)
         self.ipyRuneTowerLen = len(self.ipyRuneTowerCache)
+        self.ipyChinMapCache = self.__LoadFileData("ChinMap", IPY_ChinMap)
+        self.ipyChinMapLen = len(self.ipyChinMapCache)
         self.ipyFBFuncCache = self.__LoadFileData("FBFunc", IPY_FBFunc)
         self.ipyFBFuncLen = len(self.ipyFBFuncCache)
         self.ipyFBLineCache = self.__LoadFileData("FBLine", IPY_FBLine)
@@ -4461,14 +4624,12 @@
         self.ipyDailyQuestLen = len(self.ipyDailyQuestCache)
         self.ipyDailyLivenessRewardCache = self.__LoadFileData("DailyLivenessReward", IPY_DailyLivenessReward)
         self.ipyDailyLivenessRewardLen = len(self.ipyDailyLivenessRewardCache)
-        self.ipyTreasureRefineCache = self.__LoadFileData("TreasureRefine", IPY_TreasureRefine)
-        self.ipyTreasureRefineLen = len(self.ipyTreasureRefineCache)
         self.ipyRefineStoveCache = self.__LoadFileData("RefineStove", IPY_RefineStove)
         self.ipyRefineStoveLen = len(self.ipyRefineStoveCache)
         self.ipyAlchemyCache = self.__LoadFileData("Alchemy", IPY_Alchemy)
         self.ipyAlchemyLen = len(self.ipyAlchemyCache)
-        self.ipyAlchemySpecCache = self.__LoadFileData("AlchemySpec", IPY_AlchemySpec)
-        self.ipyAlchemySpecLen = len(self.ipyAlchemySpecCache)
+        self.ipyAlchemyResultCache = self.__LoadFileData("AlchemyResult", IPY_AlchemyResult)
+        self.ipyAlchemyResultLen = len(self.ipyAlchemyResultCache)
         self.ipyBOSSInfoCache = self.__LoadFileData("BOSSInfo", IPY_BOSSInfo)
         self.ipyBOSSInfoLen = len(self.ipyBOSSInfoCache)
         self.ipyElderGodAreaCache = self.__LoadFileData("ElderGodArea", IPY_ElderGodArea)
@@ -4487,12 +4648,16 @@
         self.ipySealDemonLen = len(self.ipySealDemonCache)
         self.ipyFbEncourageCache = self.__LoadFileData("FbEncourage", IPY_FbEncourage)
         self.ipyFbEncourageLen = len(self.ipyFbEncourageCache)
+        self.ipyMapRefreshNPCCache = self.__LoadFileData("MapRefreshNPC", IPY_MapRefreshNPC)
+        self.ipyMapRefreshNPCLen = len(self.ipyMapRefreshNPCCache)
         self.ipyRuneCompoundCache = self.__LoadFileData("RuneCompound", IPY_RuneCompound)
         self.ipyRuneCompoundLen = len(self.ipyRuneCompoundCache)
         self.ipyResourcesBackCache = self.__LoadFileData("ResourcesBack", IPY_ResourcesBack)
         self.ipyResourcesBackLen = len(self.ipyResourcesBackCache)
         self.ipyCollectNPCCache = self.__LoadFileData("CollectNPC", IPY_CollectNPC)
         self.ipyCollectNPCLen = len(self.ipyCollectNPCCache)
+        self.ipyTreasureNPCCache = self.__LoadFileData("TreasureNPC", IPY_TreasureNPC)
+        self.ipyTreasureNPCLen = len(self.ipyTreasureNPCCache)
         self.ipyChestsCache = self.__LoadFileData("Chests", IPY_Chests)
         self.ipyChestsLen = len(self.ipyChestsCache)
         self.ipyChestsAwardCache = self.__LoadFileData("ChestsAward", IPY_ChestsAward)
@@ -4575,6 +4740,8 @@
         self.ipyCrossRealmPKOrderAwardLen = len(self.ipyCrossRealmPKOrderAwardCache)
         self.ipyCrossZoneCommCache = self.__LoadFileData("CrossZoneComm", IPY_CrossZoneComm)
         self.ipyCrossZoneCommLen = len(self.ipyCrossZoneCommCache)
+        self.ipyCrossZonePKCache = self.__LoadFileData("CrossZonePK", IPY_CrossZonePK)
+        self.ipyCrossZonePKLen = len(self.ipyCrossZonePKCache)
         self.ipyCrossPenglaiZoneMapCache = self.__LoadFileData("CrossPenglaiZoneMap", IPY_CrossPenglaiZoneMap)
         self.ipyCrossPenglaiZoneMapLen = len(self.ipyCrossPenglaiZoneMapCache)
         self.ipyGatherSoulCache = self.__LoadFileData("GatherSoul", IPY_GatherSoul)
@@ -4601,8 +4768,6 @@
         self.ipyZhuXianSuitAttrLen = len(self.ipyZhuXianSuitAttrCache)
         self.ipyZhuXianBossCache = self.__LoadFileData("ZhuXianBoss", IPY_ZhuXianBoss)
         self.ipyZhuXianBossLen = len(self.ipyZhuXianBossCache)
-        self.ipyZhuXianTowerCache = self.__LoadFileData("ZhuXianTower", IPY_ZhuXianTower)
-        self.ipyZhuXianTowerLen = len(self.ipyZhuXianTowerCache)
         self.ipyZhuXianEquipDecomposeCache = self.__LoadFileData("ZhuXianEquipDecompose", IPY_ZhuXianEquipDecompose)
         self.ipyZhuXianEquipDecomposeLen = len(self.ipyZhuXianEquipDecomposeCache)
         self.ipyActFeastWeekPartyCache = self.__LoadFileData("ActFeastWeekParty", IPY_ActFeastWeekParty)
@@ -4639,6 +4804,12 @@
         self.ipyFairyAdventuresLen = len(self.ipyFairyAdventuresCache)
         self.ipyFairyDomainAppointCache = self.__LoadFileData("FairyDomainAppoint", IPY_FairyDomainAppoint)
         self.ipyFairyDomainAppointLen = len(self.ipyFairyDomainAppointCache)
+        self.ipyFBBuyBuffCache = self.__LoadFileData("FBBuyBuff", IPY_FBBuyBuff)
+        self.ipyFBBuyBuffLen = len(self.ipyFBBuyBuffCache)
+        self.ipySkillElementCache = self.__LoadFileData("SkillElement", IPY_SkillElement)
+        self.ipySkillElementLen = len(self.ipySkillElementCache)
+        self.ipySkyTowerCache = self.__LoadFileData("SkyTower", IPY_SkyTower)
+        self.ipySkyTowerLen = len(self.ipySkyTowerCache)
         Log("IPY_FuncConfig count=%s" % len(self.ipyFuncConfigDict))
         Log("IPY_DataMgr InitOK!")
         return
@@ -4877,6 +5048,8 @@
     def GetNPCDropItemByIndex(self, index): return self.ipyNPCDropItemCache[index]
     def GetRuneTowerCount(self): return self.ipyRuneTowerLen
     def GetRuneTowerByIndex(self, index): return self.ipyRuneTowerCache[index]
+    def GetChinMapCount(self): return self.ipyChinMapLen
+    def GetChinMapByIndex(self, index): return self.ipyChinMapCache[index]
     def GetFBFuncCount(self): return self.ipyFBFuncLen
     def GetFBFuncByIndex(self, index): return self.ipyFBFuncCache[index]
     def GetFBLineCount(self): return self.ipyFBLineLen
@@ -4915,14 +5088,12 @@
     def GetDailyQuestByIndex(self, index): return self.ipyDailyQuestCache[index]
     def GetDailyLivenessRewardCount(self): return self.ipyDailyLivenessRewardLen
     def GetDailyLivenessRewardByIndex(self, index): return self.ipyDailyLivenessRewardCache[index]
-    def GetTreasureRefineCount(self): return self.ipyTreasureRefineLen
-    def GetTreasureRefineByIndex(self, index): return self.ipyTreasureRefineCache[index]
     def GetRefineStoveCount(self): return self.ipyRefineStoveLen
     def GetRefineStoveByIndex(self, index): return self.ipyRefineStoveCache[index]
     def GetAlchemyCount(self): return self.ipyAlchemyLen
     def GetAlchemyByIndex(self, index): return self.ipyAlchemyCache[index]
-    def GetAlchemySpecCount(self): return self.ipyAlchemySpecLen
-    def GetAlchemySpecByIndex(self, index): return self.ipyAlchemySpecCache[index]
+    def GetAlchemyResultCount(self): return self.ipyAlchemyResultLen
+    def GetAlchemyResultByIndex(self, index): return self.ipyAlchemyResultCache[index]
     def GetBOSSInfoCount(self): return self.ipyBOSSInfoLen
     def GetBOSSInfoByIndex(self, index): return self.ipyBOSSInfoCache[index]
     def GetElderGodAreaCount(self): return self.ipyElderGodAreaLen
@@ -4941,12 +5112,16 @@
     def GetSealDemonByIndex(self, index): return self.ipySealDemonCache[index]
     def GetFbEncourageCount(self): return self.ipyFbEncourageLen
     def GetFbEncourageByIndex(self, index): return self.ipyFbEncourageCache[index]
+    def GetMapRefreshNPCCount(self): return self.ipyMapRefreshNPCLen
+    def GetMapRefreshNPCByIndex(self, index): return self.ipyMapRefreshNPCCache[index]
     def GetRuneCompoundCount(self): return self.ipyRuneCompoundLen
     def GetRuneCompoundByIndex(self, index): return self.ipyRuneCompoundCache[index]
     def GetResourcesBackCount(self): return self.ipyResourcesBackLen
     def GetResourcesBackByIndex(self, index): return self.ipyResourcesBackCache[index]
     def GetCollectNPCCount(self): return self.ipyCollectNPCLen
     def GetCollectNPCByIndex(self, index): return self.ipyCollectNPCCache[index]
+    def GetTreasureNPCCount(self): return self.ipyTreasureNPCLen
+    def GetTreasureNPCByIndex(self, index): return self.ipyTreasureNPCCache[index]
     def GetChestsCount(self): return self.ipyChestsLen
     def GetChestsByIndex(self, index): return self.ipyChestsCache[index]
     def GetChestsAwardCount(self): return self.ipyChestsAwardLen
@@ -5029,6 +5204,8 @@
     def GetCrossRealmPKOrderAwardByIndex(self, index): return self.ipyCrossRealmPKOrderAwardCache[index]
     def GetCrossZoneCommCount(self): return self.ipyCrossZoneCommLen
     def GetCrossZoneCommByIndex(self, index): return self.ipyCrossZoneCommCache[index]
+    def GetCrossZonePKCount(self): return self.ipyCrossZonePKLen
+    def GetCrossZonePKByIndex(self, index): return self.ipyCrossZonePKCache[index]
     def GetCrossPenglaiZoneMapCount(self): return self.ipyCrossPenglaiZoneMapLen
     def GetCrossPenglaiZoneMapByIndex(self, index): return self.ipyCrossPenglaiZoneMapCache[index]
     def GetGatherSoulCount(self): return self.ipyGatherSoulLen
@@ -5055,8 +5232,6 @@
     def GetZhuXianSuitAttrByIndex(self, index): return self.ipyZhuXianSuitAttrCache[index]
     def GetZhuXianBossCount(self): return self.ipyZhuXianBossLen
     def GetZhuXianBossByIndex(self, index): return self.ipyZhuXianBossCache[index]
-    def GetZhuXianTowerCount(self): return self.ipyZhuXianTowerLen
-    def GetZhuXianTowerByIndex(self, index): return self.ipyZhuXianTowerCache[index]
     def GetZhuXianEquipDecomposeCount(self): return self.ipyZhuXianEquipDecomposeLen
     def GetZhuXianEquipDecomposeByIndex(self, index): return self.ipyZhuXianEquipDecomposeCache[index]
     def GetActFeastWeekPartyCount(self): return self.ipyActFeastWeekPartyLen
@@ -5093,6 +5268,12 @@
     def GetFairyAdventuresByIndex(self, index): return self.ipyFairyAdventuresCache[index]
     def GetFairyDomainAppointCount(self): return self.ipyFairyDomainAppointLen
     def GetFairyDomainAppointByIndex(self, index): return self.ipyFairyDomainAppointCache[index]
+    def GetFBBuyBuffCount(self): return self.ipyFBBuyBuffLen
+    def GetFBBuyBuffByIndex(self, index): return self.ipyFBBuyBuffCache[index]
+    def GetSkillElementCount(self): return self.ipySkillElementLen
+    def GetSkillElementByIndex(self, index): return self.ipySkillElementCache[index]
+    def GetSkyTowerCount(self): return self.ipySkyTowerLen
+    def GetSkyTowerByIndex(self, index): return self.ipySkyTowerCache[index]
 
 IPYData = IPY_DataMgr()
 def IPY_Data(): return IPYData

--
Gitblit v1.8.0