From a56b87458cd32bcea06e3fcc8a2d25e295745f10 Mon Sep 17 00:00:00 2001
From: client_Hale <339726288@qq.com>
Date: 星期一, 21 一月 2019 21:34:39 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts

---
 Core/GameEngine/Model/ConfigManager.cs                                                   |    1 
 System/JadeDynastyBoss.meta                                                              |    9 
 System/JadeDynastyKnapSack/JadeDynastyDecomposeWin.cs.meta                               |   12 
 Core/NetworkPackage/ServerPack/HB2_ActionMap/HB212_tagMCZhuXianBossCnt.cs                |   17 
 Lua/Gen/CrossServerUtilityWrap.cs.meta                                                   |   12 
 System/Dungeon/DungeonBuyTimesWin.cs                                                     |   18 
 UI/Common/SortTable.cs                                                                   |    1 
 System/JadeDynastyBoss/JadeDynastyBossBehaviour.cs.meta                                  |   12 
 System/JadeDynastyKnapSack/JadeDynastySuitAttrBeh.cs.meta                                |   12 
 System/JadeDynastyKnapSack/JadeDynastyItemBeh.cs.meta                                    |   12 
 Core/NetworkPackage/DTCFile/ServerPack/HB2_ActionMap/DTCB212_tagMCZhuXianBossCnt.cs      |   25 
 Lua/Gen/link.xml                                                                         |    2 
 System/JadeDynastyKnapSack/JadeDynastyItemBeh.cs                                         |   39 
 Core/GameEngine/Model/Config/JadeDynastyBossConfig.cs                                    |   56 
 System/FindPrecious/LootPreciousFrameWin.cs                                              |   13 
 Core/GameEngine/DataToCtl/PackageRegedit.cs                                              |    2 
 Core/NetworkPackage/ServerPack/HB4_Fight/HB413_tagMCPlayerSkills.cs                      |   31 
 System/JadeDynastyBoss/JadeDynastyBossWin.cs                                             |  386 +++++
 System/JadeDynastyBoss/JadeDynastyDamageRankWin.cs                                       |   53 
 System/JadeDynastyKnapSack/JadeDynastyItemLineBeh.cs.meta                                |   12 
 Lua/Gen/SnxxzUIJadeDynastyBossModelWrap.cs                                               |  888 +++++++++++
 System/JadeDynastyBoss/JadeDynastyDamageRankWin.cs.meta                                  |   12 
 System/JadeDynastyKnapSack/JadeDynastySuitAttrBeh.cs                                     |  108 +
 System/JadeDynastyKnapSack/JadeDynastyEquipWin.cs.meta                                   |   12 
 System/Dungeon/DungeonInspireBehaviour.cs                                                |   11 
 Lua/Gen/DelegatesGensBridge.cs                                                           |  392 +++-
 System/JadeDynastyKnapSack.meta                                                          |    9 
 System/PlayerDead/ReliveWin.cs                                                           |    5 
 System/JadeDynastyKnapSack/JadeDynastyEquipWin.cs                                        |   97 +
 Lua/Gen/XLuaGenAutoRegister.cs                                                           |   36 
 Core/NetworkPackage/ServerPack/HB2_ActionMap/HB212_tagMCZhuXianBossCnt.cs.meta           |   12 
 System/JadeDynastyBoss/JadeDynastyBossWin.cs.meta                                        |   12 
 System/JadeDynastyBoss/JadeDynastyBossKillRecord.cs.meta                                 |   12 
 System/JadeDynastyKnapSack/JadeDynastySuitAttrWin.cs.meta                                |   12 
 System/JadeDynastyKnapSack/JadeDynastyKnapSackWin.cs                                     |   84 +
 Core/NetworkPackage/DTCFile/ServerPack/HA0_Sys/DTCA007_tagGCFBLinePlayerCnt.cs           |   51 
 System/FindPrecious/FindPreciousBossRebornBehaviour.cs                                   |   21 
 Core/NetworkPackage/DTCFile/ServerPack/HB2_ActionMap/DTCB212_tagMCZhuXianBossCnt.cs.meta |   12 
 Lua/Gen/CrossServerUtilityWrap.cs                                                        |  184 ++
 System/JadeDynastyKnapSack/JadeDynastyDecomposeLineBeh.cs                                |   76 +
 System/KnapSack/Logic/EquipTip.cs                                                        |   37 
 System/DailyQuest/DailyQuestWin.cs                                                       |    4 
 Utility/EnumHelper.cs                                                                    |   29 
 System/JadeDynastyBoss/JadeDynastyBossKillRecord.cs                                      |   22 
 Core/NetworkPackage/ServerPack/HB4_Fight/HB413_tagMCPlayerSkills.cs.meta                 |   12 
 Core/NetworkPackage/DTCFile/ServerPack/HB4_Fight/DTCB413_tagMCPlayerSkills.cs            |   39 
 Lua/Gen/SnxxzUIJadeDynastyBossModelWrap.cs.meta                                          |   12 
 Lua/Gen/SDKUtilityWrap.cs                                                                |   30 
 System/JadeDynastyBoss/JadeDynastyBossBehaviour.cs                                       |  178 ++
 System/JadeDynastyKnapSack/JadeDynastyEquipBeh.cs.meta                                   |   12 
 Core/NetworkPackage/DTCFile/ServerPack/HB4_Fight/DTCB413_tagMCPlayerSkills.cs.meta       |   12 
 System/MainInterfacePanel/InGamePushContainer.cs                                         |   19 
 System/JadeDynastyKnapSack/JadeDynastyDecomposeLineBeh.cs.meta                           |   12 
 System/JadeDynastyBoss/JadeDynastyBossVictoryWin.cs.meta                                 |   12 
 System/JadeDynastyKnapSack/JadeDynastyDecomposeModel.cs.meta                             |   12 
 Core/NetworkPackage/ServerPack/HA0_Sys/HA007_tagGCFBLinePlayerCnt.cs                     |   71 
 System/JadeDynastyBoss/JadeDynastyBossVictoryWin.cs                                      |  252 +++
 System/JadeDynastyBoss/JadeDynastyBossModel.cs.meta                                      |   12 
 System/JadeDynastyKnapSack/JadeDynastyDecomposeWin.cs                                    |  115 +
 System/Dungeon/DungeonModel.cs                                                           |   15 
 System/JadeDynastyKnapSack/JadeDynastyEquipBeh.cs                                        |   81 +
 System/Dungeon/DungeonRankBehaviour.cs                                                   |   15 
 System/JadeDynastyKnapSack/JadeDynastySuitAttrWin.cs                                     |   58 
 System/FindPrecious/FindPreciousModel.cs                                                 |   12 
 System/JadeDynastyKnapSack/JadeDynastyDecomposeModel.cs                                  |  142 +
 System/Dungeon/DungeonFightWin.cs                                                        |    3 
 System/Dungeon/TargetBriefInfoWin.cs                                                     |    6 
 System/JadeDynastyKnapSack/JadeDynastyItemLineBeh.cs                                     |   25 
 System/WindowBase/ModelCenter.cs                                                         |    1 
 System/JadeDynastyBoss/JadeDynastyBossModel.cs                                           |  460 ++++++
 Core/GameEngine/Model/Config/JadeDynastyBossConfig.cs.meta                               |   12 
 System/JadeDynastyKnapSack/JadeDynastyKnapSackWin.cs.meta                                |   12 
 72 files changed, 4,313 insertions(+), 192 deletions(-)

diff --git a/Core/GameEngine/DataToCtl/PackageRegedit.cs b/Core/GameEngine/DataToCtl/PackageRegedit.cs
index 3f83b52..85826f7 100644
--- a/Core/GameEngine/DataToCtl/PackageRegedit.cs
+++ b/Core/GameEngine/DataToCtl/PackageRegedit.cs
@@ -25,6 +25,8 @@
     public static void Init()
     {
         // 鐧昏鐩稿簲鐨勬暟鎹綋鍙婂搴旂殑鏁版嵁杞�昏緫绫�
+		Register(typeof(HB413_tagMCPlayerSkills), typeof(DTCB413_tagMCPlayerSkills));
+		Register(typeof(HB212_tagMCZhuXianBossCnt), typeof(DTCB212_tagMCZhuXianBossCnt));
         Register(typeof(H0208_tagTalkCountry), typeof(DTC0208_tagTalkCountry));
         Register(typeof(HB102_tagMCClothesCoatSkinState), typeof(DTCB102_tagMCClothesCoatSkinState));
         Register(typeof(HA112_tagMCDBPlayer), typeof(DTCA112_tagMCDBPlayer));
diff --git a/Core/GameEngine/Model/Config/JadeDynastyBossConfig.cs b/Core/GameEngine/Model/Config/JadeDynastyBossConfig.cs
new file mode 100644
index 0000000..7401ee4
--- /dev/null
+++ b/Core/GameEngine/Model/Config/JadeDynastyBossConfig.cs
@@ -0,0 +1,56 @@
+锘�//--------------------------------------------------------
+//    [Author]:			绗簩涓栫晫
+//    [  Date ]:		   Friday, January 18, 2019
+//--------------------------------------------------------
+
+using UnityEngine;
+using System;
+
+namespace TableConfig {
+
+    
+	public partial class JadeDynastyBossConfig : ConfigBase {
+
+		public int NPCID { get ; private set ; }
+		public int LineID { get ; private set ; }
+		public int Time { get ; private set ; }
+		public int RealmLV { get ; private set ; }
+		public int ZhuXianScore { get ; private set ; }
+		public string dropItems { get ; private set; } 
+		public string PortraitID { get ; private set; } 
+
+		public override string getKey()
+        {
+            return NPCID.ToString();
+        }
+
+		public override void Parse() {
+			try
+            {
+                NPCID=IsNumeric(rawContents[0]) ? int.Parse(rawContents[0]):0; 
+			
+				LineID=IsNumeric(rawContents[1]) ? int.Parse(rawContents[1]):0; 
+			
+				Time=IsNumeric(rawContents[2]) ? int.Parse(rawContents[2]):0; 
+			
+				RealmLV=IsNumeric(rawContents[3]) ? int.Parse(rawContents[3]):0; 
+			
+				ZhuXianScore=IsNumeric(rawContents[4]) ? int.Parse(rawContents[4]):0; 
+			
+				dropItems = rawContents[5].Trim();
+			
+				PortraitID = rawContents[6].Trim();
+            }
+            catch (Exception ex)
+            {
+                DebugEx.Log(ex);
+            }
+		}
+	
+	}
+
+}
+
+
+
+
diff --git a/Core/GameEngine/Model/Config/JadeDynastyBossConfig.cs.meta b/Core/GameEngine/Model/Config/JadeDynastyBossConfig.cs.meta
new file mode 100644
index 0000000..69ebe16
--- /dev/null
+++ b/Core/GameEngine/Model/Config/JadeDynastyBossConfig.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: bc9f70989c6d3344aad5bd0dbda7bc2b
+timeCreated: 1547804881
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Core/GameEngine/Model/ConfigManager.cs b/Core/GameEngine/Model/ConfigManager.cs
index 93ea9a6..91e7351 100644
--- a/Core/GameEngine/Model/ConfigManager.cs
+++ b/Core/GameEngine/Model/ConfigManager.cs
@@ -225,6 +225,7 @@
         AddAsyncTask<FashionDressConfig>();
         AddAsyncTask<WeekPartyPointConfig>();
         AddAsyncTask<SceneReplaceConfig>();
+        AddAsyncTask<JadeDynastyBossConfig>();
 
         while (!AllCompleted())
         {
diff --git a/Core/NetworkPackage/DTCFile/ServerPack/HA0_Sys/DTCA007_tagGCFBLinePlayerCnt.cs b/Core/NetworkPackage/DTCFile/ServerPack/HA0_Sys/DTCA007_tagGCFBLinePlayerCnt.cs
index e458a88..27511b2 100644
--- a/Core/NetworkPackage/DTCFile/ServerPack/HA0_Sys/DTCA007_tagGCFBLinePlayerCnt.cs
+++ b/Core/NetworkPackage/DTCFile/ServerPack/HA0_Sys/DTCA007_tagGCFBLinePlayerCnt.cs
@@ -1,25 +1,26 @@
-锘�//--------------------------------------------------------
-//    [Author]:           绗簩涓栫晫
-//    [  Date ]:           Monday, January 08, 2018
-//--------------------------------------------------------
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using Snxxz.UI;
-
-public class DTCA007_tagGCFBLinePlayerCnt : DtcBasic {
-
-    public override void Done(GameNetPackBasic vNetPack)
-    {
-        base.Done(vNetPack);
-        var package = vNetPack as HA007_tagGCFBLinePlayerCnt;
-
-        ModelCenter.Instance.GetModel<MapModel>().UpdateDungeonMapLines(package);
-    }
-
-}
-
-
-
-
+锘�//--------------------------------------------------------
+//    [Author]:           绗簩涓栫晫
+//    [  Date ]:           Monday, January 08, 2018
+//--------------------------------------------------------
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using Snxxz.UI;
+
+public class DTCA007_tagGCFBLinePlayerCnt : DtcBasic {
+
+    public override void Done(GameNetPackBasic vNetPack)
+    {
+        base.Done(vNetPack);
+        var package = vNetPack as HA007_tagGCFBLinePlayerCnt;
+
+        ModelCenter.Instance.GetModel<MapModel>().UpdateDungeonMapLines(package);
+        ModelCenter.Instance.GetModel<JadeDynastyBossModel>().OnReceivePackage(package);
+    }
+
+}
+
+
+
+
diff --git a/Core/NetworkPackage/DTCFile/ServerPack/HB2_ActionMap/DTCB212_tagMCZhuXianBossCnt.cs b/Core/NetworkPackage/DTCFile/ServerPack/HB2_ActionMap/DTCB212_tagMCZhuXianBossCnt.cs
new file mode 100644
index 0000000..7e08814
--- /dev/null
+++ b/Core/NetworkPackage/DTCFile/ServerPack/HB2_ActionMap/DTCB212_tagMCZhuXianBossCnt.cs
@@ -0,0 +1,25 @@
+锘�//--------------------------------------------------------
+//    [Author]:           绗簩涓栫晫
+//    [  Date ]:           Monday, January 21, 2019
+//--------------------------------------------------------
+
+using Snxxz.UI;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+public class DTCB212_tagMCZhuXianBossCnt : DtcBasic
+{
+
+    public override void Done(GameNetPackBasic vNetPack)
+    {
+        base.Done(vNetPack);
+        var package = vNetPack as HB212_tagMCZhuXianBossCnt;
+        ModelCenter.Instance.GetModel<JadeDynastyBossModel>().OnReceivePackage(package);
+    }
+
+}
+
+
+
+
diff --git a/Core/NetworkPackage/DTCFile/ServerPack/HB2_ActionMap/DTCB212_tagMCZhuXianBossCnt.cs.meta b/Core/NetworkPackage/DTCFile/ServerPack/HB2_ActionMap/DTCB212_tagMCZhuXianBossCnt.cs.meta
new file mode 100644
index 0000000..56e75d1
--- /dev/null
+++ b/Core/NetworkPackage/DTCFile/ServerPack/HB2_ActionMap/DTCB212_tagMCZhuXianBossCnt.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 387e6e44272f55646a66a4613419d3a6
+timeCreated: 1548040998
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Core/NetworkPackage/DTCFile/ServerPack/HB4_Fight/DTCB413_tagMCPlayerSkills.cs b/Core/NetworkPackage/DTCFile/ServerPack/HB4_Fight/DTCB413_tagMCPlayerSkills.cs
new file mode 100644
index 0000000..683eff6
--- /dev/null
+++ b/Core/NetworkPackage/DTCFile/ServerPack/HB4_Fight/DTCB413_tagMCPlayerSkills.cs
@@ -0,0 +1,39 @@
+锘�//--------------------------------------------------------
+//    [Author]:           绗簩涓栫晫
+//    [  Date ]:           Monday, January 21, 2019
+//--------------------------------------------------------
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+[XLua.Hotfix]
+public class DTCB413_tagMCPlayerSkills : DtcBasic
+{
+
+    public override void Done(GameNetPackBasic vNetPack)
+    {
+        base.Done(vNetPack);
+        var package = vNetPack as HB413_tagMCPlayerSkills;
+
+        DTC0310_tagRoleSkillChange dtc = new DTC0310_tagRoleSkillChange();
+        for (int i = 0; i < package.Count; i++)
+        {
+            var data = package.Skills[i];
+            H0310_tagRoleSkillChange h0310 = new H0310_tagRoleSkillChange()
+            {
+                OldSkillID = 0,
+                NewSkillID = (int)data.SkillID,
+                Proficiency = (int)data.Proficiency,
+                RemainTime = (int)data.RemainTime,
+                socketType = package.socketType,
+            };
+            dtc.Done(h0310);
+        }
+    }
+
+}
+
+
+
+
diff --git a/Core/NetworkPackage/DTCFile/ServerPack/HB4_Fight/DTCB413_tagMCPlayerSkills.cs.meta b/Core/NetworkPackage/DTCFile/ServerPack/HB4_Fight/DTCB413_tagMCPlayerSkills.cs.meta
new file mode 100644
index 0000000..0be7333
--- /dev/null
+++ b/Core/NetworkPackage/DTCFile/ServerPack/HB4_Fight/DTCB413_tagMCPlayerSkills.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 84c04df606cdb0c48adba8b99914fdb6
+timeCreated: 1548069797
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Core/NetworkPackage/ServerPack/HA0_Sys/HA007_tagGCFBLinePlayerCnt.cs b/Core/NetworkPackage/ServerPack/HA0_Sys/HA007_tagGCFBLinePlayerCnt.cs
index 04b5d43..be4069f 100644
--- a/Core/NetworkPackage/ServerPack/HA0_Sys/HA007_tagGCFBLinePlayerCnt.cs
+++ b/Core/NetworkPackage/ServerPack/HA0_Sys/HA007_tagGCFBLinePlayerCnt.cs
@@ -1,36 +1,35 @@
-锘縰sing UnityEngine;
-using System.Collections;
-
-// A0 07 鍓湰鍦板浘鍔熻兘绾胯矾浜烘暟 #tagGCFBLinePlayerCnt
-
-public class HA007_tagGCFBLinePlayerCnt : GameNetPackBasic
-{
-    public uint MapID;    // 鍦板浘ID
-    public byte Count;
-    public tagGCFBLineInfo[] FBLineInfoList = null;
-
-    public HA007_tagGCFBLinePlayerCnt()
-    {
-        _cmd = (ushort)0xA007;
-    }
-
-    public override void ReadFromBytes(byte[] vBytes)
-    {
-        TransBytes(out MapID, vBytes, NetDataType.DWORD);
-        TransBytes(out Count, vBytes, NetDataType.BYTE);
-        FBLineInfoList = new tagGCFBLineInfo[Count];
-        for (int i = 0; i < Count; i++)
-        {
-            FBLineInfoList[i] = new tagGCFBLineInfo();
-            TransBytes(out FBLineInfoList[i].FBLineID, vBytes, NetDataType.BYTE);
-            TransBytes(out FBLineInfoList[i].PlayerCnt, vBytes, NetDataType.WORD);
-        }
-    }
-
-    public struct tagGCFBLineInfo
-    {
-        public byte FBLineID;        // 鍔熻兘绾胯矾ID
-        public ushort PlayerCnt;        // 绾胯矾褰撳墠鐜╁鏁�
-    }
-
-}
\ No newline at end of file
+using UnityEngine;
+using System.Collections;
+
+// A0 07 副本地图功能线路人数 #tagGCFBLinePlayerCnt

+

+public class HA007_tagGCFBLinePlayerCnt : GameNetPackBasic {

+    public uint MapID;    // 地图ID

+    public byte Count;

+    public  tagGCFBLineInfo[] FBLineInfoList;

+

+    public HA007_tagGCFBLinePlayerCnt () {

+        _cmd = (ushort)0xA007;

+    }

+

+    public override void ReadFromBytes (byte[] vBytes) {

+        TransBytes (out MapID, vBytes, NetDataType.DWORD);

+        TransBytes (out Count, vBytes, NetDataType.BYTE);

+        FBLineInfoList = new tagGCFBLineInfo[Count];

+        for (int i = 0; i < Count; i ++) {

+            FBLineInfoList[i] = new tagGCFBLineInfo();

+            TransBytes (out FBLineInfoList[i].FBLineID, vBytes, NetDataType.BYTE);

+            TransBytes (out FBLineInfoList[i].PlayerCnt, vBytes, NetDataType.WORD);

+            TransBytes (out FBLineInfoList[i].ExtraStrLen, vBytes, NetDataType.WORD);

+            TransBytes (out FBLineInfoList[i].ExtraStr, vBytes, NetDataType.Chars, FBLineInfoList[i].ExtraStrLen);

+        }

+    }

+

+    public struct tagGCFBLineInfo {

+        public byte FBLineID;        // 功能线路ID

+        public ushort PlayerCnt;        // 线路当前玩家数

+        public ushort ExtraStrLen;        // 长度

+        public string ExtraStr;        // 额外信息

+    }

+

+}

diff --git a/Core/NetworkPackage/ServerPack/HB2_ActionMap/HB212_tagMCZhuXianBossCnt.cs b/Core/NetworkPackage/ServerPack/HB2_ActionMap/HB212_tagMCZhuXianBossCnt.cs
new file mode 100644
index 0000000..d50176e
--- /dev/null
+++ b/Core/NetworkPackage/ServerPack/HB2_ActionMap/HB212_tagMCZhuXianBossCnt.cs
@@ -0,0 +1,17 @@
+using UnityEngine;
+using System.Collections;
+
+// B2 12 诛仙BOSS协助次数 #tagMCZhuXianBossCnt

+

+public class HB212_tagMCZhuXianBossCnt : GameNetPackBasic {

+    public byte Cnt;    // 剩余可协助次数

+

+    public HB212_tagMCZhuXianBossCnt () {

+        _cmd = (ushort)0xB212;

+    }

+

+    public override void ReadFromBytes (byte[] vBytes) {

+        TransBytes (out Cnt, vBytes, NetDataType.BYTE);

+    }

+

+}

diff --git a/Core/NetworkPackage/ServerPack/HB2_ActionMap/HB212_tagMCZhuXianBossCnt.cs.meta b/Core/NetworkPackage/ServerPack/HB2_ActionMap/HB212_tagMCZhuXianBossCnt.cs.meta
new file mode 100644
index 0000000..4844a6c
--- /dev/null
+++ b/Core/NetworkPackage/ServerPack/HB2_ActionMap/HB212_tagMCZhuXianBossCnt.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: f511f09c68c0ae345a0208282471b83e
+timeCreated: 1548040944
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Core/NetworkPackage/ServerPack/HB4_Fight/HB413_tagMCPlayerSkills.cs b/Core/NetworkPackage/ServerPack/HB4_Fight/HB413_tagMCPlayerSkills.cs
new file mode 100644
index 0000000..ba6b246
--- /dev/null
+++ b/Core/NetworkPackage/ServerPack/HB4_Fight/HB413_tagMCPlayerSkills.cs
@@ -0,0 +1,31 @@
+using UnityEngine;
+using System.Collections;
+
+// B4 13 通知玩家所有已学技能 #tagMCPlayerSkills

+

+public class HB413_tagMCPlayerSkills : GameNetPackBasic {

+    public ushort Count;    //技能个数

+    public  tagPlayerSkill[] Skills;    // 技能数据

+

+    public HB413_tagMCPlayerSkills () {

+        _cmd = (ushort)0xB413;

+    }

+

+    public override void ReadFromBytes (byte[] vBytes) {

+        TransBytes (out Count, vBytes, NetDataType.WORD);

+        Skills = new tagPlayerSkill[Count];

+        for (int i = 0; i < Count; i ++) {

+            Skills[i] = new tagPlayerSkill();

+            TransBytes (out Skills[i].SkillID, vBytes, NetDataType.DWORD);

+            TransBytes (out Skills[i].RemainTime, vBytes, NetDataType.DWORD);

+            TransBytes (out Skills[i].Proficiency, vBytes, NetDataType.DWORD);

+        }

+    }

+

+    public struct tagPlayerSkill {

+        public uint SkillID;        //技能ID

+        public uint RemainTime;        //剩余时间

+        public uint Proficiency;        //熟练度

+    }

+

+}

diff --git a/Core/NetworkPackage/ServerPack/HB4_Fight/HB413_tagMCPlayerSkills.cs.meta b/Core/NetworkPackage/ServerPack/HB4_Fight/HB413_tagMCPlayerSkills.cs.meta
new file mode 100644
index 0000000..43e0e89
--- /dev/null
+++ b/Core/NetworkPackage/ServerPack/HB4_Fight/HB413_tagMCPlayerSkills.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 655db91bbfb8bae40aa038269eebc6be
+timeCreated: 1548069755
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Lua/Gen/CrossServerUtilityWrap.cs b/Lua/Gen/CrossServerUtilityWrap.cs
new file mode 100644
index 0000000..a0f3c4b
--- /dev/null
+++ b/Lua/Gen/CrossServerUtilityWrap.cs
@@ -0,0 +1,184 @@
+锘�#if USE_UNI_LUA
+using LuaAPI = UniLua.Lua;
+using RealStatePtr = UniLua.ILuaState;
+using LuaCSFunction = UniLua.CSharpFunctionDelegate;
+#else
+using LuaAPI = XLua.LuaDLL.Lua;
+using RealStatePtr = System.IntPtr;
+using LuaCSFunction = XLua.LuaDLL.lua_CSFunction;
+#endif
+
+using XLua;
+using System.Collections.Generic;
+
+
+namespace XLua.CSObjectWrap
+{
+    using Utils = XLua.Utils;
+    public class CrossServerUtilityWrap 
+    {
+        public static void __Register(RealStatePtr L)
+        {
+			ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+			System.Type type = typeof(CrossServerUtility);
+			Utils.BeginObjectRegister(type, L, translator, 0, 0, 0, 0);
+			
+			
+			
+			
+			
+			
+			Utils.EndObjectRegister(type, L, translator, null, null,
+			    null, null, null);
+
+		    Utils.BeginClassRegister(type, L, __CreateInstance, 6, 0, 0);
+			Utils.RegisterFunc(L, Utils.CLS_IDX, "IsCrossServer", _m_IsCrossServer_xlua_st_);
+            Utils.RegisterFunc(L, Utils.CLS_IDX, "UpdateCrossServerRedpoint", _m_UpdateCrossServerRedpoint_xlua_st_);
+            Utils.RegisterFunc(L, Utils.CLS_IDX, "IsCrossServerOneVsOne", _m_IsCrossServerOneVsOne_xlua_st_);
+            Utils.RegisterFunc(L, Utils.CLS_IDX, "IsCrossServerBoss", _m_IsCrossServerBoss_xlua_st_);
+            
+			
+            Utils.RegisterObject(L, translator, Utils.CLS_IDX, "CrossServerRedKey", CrossServerUtility.CrossServerRedKey);
+            
+			
+			
+			
+			Utils.EndClassRegister(type, L, translator);
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int __CreateInstance(RealStatePtr L)
+        {
+            
+			try {
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+				if(LuaAPI.lua_gettop(L) == 1)
+				{
+					
+					CrossServerUtility gen_ret = new CrossServerUtility();
+					translator.Push(L, gen_ret);
+                    
+					return 1;
+				}
+				
+			}
+			catch(System.Exception gen_e) {
+				return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+			}
+            return LuaAPI.luaL_error(L, "invalid arguments to CrossServerUtility constructor!");
+            
+        }
+        
+		
+        
+		
+        
+        
+        
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _m_IsCrossServer_xlua_st_(RealStatePtr L)
+        {
+		    try {
+            
+            
+            
+                
+                {
+                    
+                        bool gen_ret = CrossServerUtility.IsCrossServer(  );
+                        LuaAPI.lua_pushboolean(L, gen_ret);
+                    
+                    
+                    
+                    return 1;
+                }
+                
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _m_UpdateCrossServerRedpoint_xlua_st_(RealStatePtr L)
+        {
+		    try {
+            
+            
+            
+                
+                {
+                    
+                    CrossServerUtility.UpdateCrossServerRedpoint(  );
+                    
+                    
+                    
+                    return 0;
+                }
+                
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _m_IsCrossServerOneVsOne_xlua_st_(RealStatePtr L)
+        {
+		    try {
+            
+            
+            
+                
+                {
+                    
+                        bool gen_ret = CrossServerUtility.IsCrossServerOneVsOne(  );
+                        LuaAPI.lua_pushboolean(L, gen_ret);
+                    
+                    
+                    
+                    return 1;
+                }
+                
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _m_IsCrossServerBoss_xlua_st_(RealStatePtr L)
+        {
+		    try {
+            
+            
+            
+                
+                {
+                    
+                        bool gen_ret = CrossServerUtility.IsCrossServerBoss(  );
+                        LuaAPI.lua_pushboolean(L, gen_ret);
+                    
+                    
+                    
+                    return 1;
+                }
+                
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            
+        }
+        
+        
+        
+        
+        
+        
+		
+		
+		
+		
+    }
+}
diff --git a/Lua/Gen/CrossServerUtilityWrap.cs.meta b/Lua/Gen/CrossServerUtilityWrap.cs.meta
new file mode 100644
index 0000000..d3a5d86
--- /dev/null
+++ b/Lua/Gen/CrossServerUtilityWrap.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 41270c85efa9000488715bef573a8088
+timeCreated: 1548068355
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Lua/Gen/DelegatesGensBridge.cs b/Lua/Gen/DelegatesGensBridge.cs
index 7946344..74b234e 100644
--- a/Lua/Gen/DelegatesGensBridge.cs
+++ b/Lua/Gen/DelegatesGensBridge.cs
@@ -4099,7 +4099,238 @@
 #endif
 		}
         
-		public Snxxz.UI.KingTreasureModel __Gen_Delegate_Imp177(object p0)
+		public Snxxz.UI.JadeDynastyBossModel __Gen_Delegate_Imp177(object p0)
+		{
+#if THREAD_SAFE || HOTFIX_ENABLE
+            lock (luaEnv.luaEnvLock)
+            {
+#endif
+                RealStatePtr L = luaEnv.rawL;
+                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
+                ObjectTranslator translator = luaEnv.translator;
+                translator.PushAny(L, p0);
+                
+                PCall(L, 1, 1, errFunc);
+                
+                
+                Snxxz.UI.JadeDynastyBossModel __gen_ret = (Snxxz.UI.JadeDynastyBossModel)translator.GetObject(L, errFunc + 1, typeof(Snxxz.UI.JadeDynastyBossModel));
+                LuaAPI.lua_settop(L, errFunc - 1);
+                return  __gen_ret;
+#if THREAD_SAFE || HOTFIX_ENABLE
+            }
+#endif
+		}
+        
+		public void __Gen_Delegate_Imp178(object p0, System.DateTime p1, object p2)
+		{
+#if THREAD_SAFE || HOTFIX_ENABLE
+            lock (luaEnv.luaEnvLock)
+            {
+#endif
+                RealStatePtr L = luaEnv.rawL;
+                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
+                ObjectTranslator translator = luaEnv.translator;
+                translator.PushAny(L, p0);
+                translator.Push(L, p1);
+                translator.PushAny(L, p2);
+                
+                PCall(L, 3, 0, errFunc);
+                
+                
+                
+                LuaAPI.lua_settop(L, errFunc - 1);
+                
+#if THREAD_SAFE || HOTFIX_ENABLE
+            }
+#endif
+		}
+        
+		public ulong __Gen_Delegate_Imp179(object p0)
+		{
+#if THREAD_SAFE || HOTFIX_ENABLE
+            lock (luaEnv.luaEnvLock)
+            {
+#endif
+                RealStatePtr L = luaEnv.rawL;
+                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
+                ObjectTranslator translator = luaEnv.translator;
+                translator.PushAny(L, p0);
+                
+                PCall(L, 1, 1, errFunc);
+                
+                
+                ulong __gen_ret = LuaAPI.lua_touint64(L, errFunc + 1);
+                LuaAPI.lua_settop(L, errFunc - 1);
+                return  __gen_ret;
+#if THREAD_SAFE || HOTFIX_ENABLE
+            }
+#endif
+		}
+        
+		public Snxxz.UI.MapModel __Gen_Delegate_Imp180(object p0)
+		{
+#if THREAD_SAFE || HOTFIX_ENABLE
+            lock (luaEnv.luaEnvLock)
+            {
+#endif
+                RealStatePtr L = luaEnv.rawL;
+                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
+                ObjectTranslator translator = luaEnv.translator;
+                translator.PushAny(L, p0);
+                
+                PCall(L, 1, 1, errFunc);
+                
+                
+                Snxxz.UI.MapModel __gen_ret = (Snxxz.UI.MapModel)translator.GetObject(L, errFunc + 1, typeof(Snxxz.UI.MapModel));
+                LuaAPI.lua_settop(L, errFunc - 1);
+                return  __gen_ret;
+#if THREAD_SAFE || HOTFIX_ENABLE
+            }
+#endif
+		}
+        
+		public bool __Gen_Delegate_Imp181(object p0, int p1, out System.Collections.Generic.List<Snxxz.UI.Item> p2)
+		{
+#if THREAD_SAFE || HOTFIX_ENABLE
+            lock (luaEnv.luaEnvLock)
+            {
+#endif
+                RealStatePtr L = luaEnv.rawL;
+                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
+                ObjectTranslator translator = luaEnv.translator;
+                translator.PushAny(L, p0);
+                LuaAPI.xlua_pushinteger(L, p1);
+                
+                PCall(L, 2, 2, errFunc);
+                
+                p2 = (System.Collections.Generic.List<Snxxz.UI.Item>)translator.GetObject(L, errFunc + 2, typeof(System.Collections.Generic.List<Snxxz.UI.Item>));
+                
+                bool __gen_ret = LuaAPI.lua_toboolean(L, errFunc + 1);
+                LuaAPI.lua_settop(L, errFunc - 1);
+                return  __gen_ret;
+#if THREAD_SAFE || HOTFIX_ENABLE
+            }
+#endif
+		}
+        
+		public bool __Gen_Delegate_Imp182(object p0, int p1, out Snxxz.UI.JadeDynastyBossCondition p2)
+		{
+#if THREAD_SAFE || HOTFIX_ENABLE
+            lock (luaEnv.luaEnvLock)
+            {
+#endif
+                RealStatePtr L = luaEnv.rawL;
+                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
+                ObjectTranslator translator = luaEnv.translator;
+                translator.PushAny(L, p0);
+                LuaAPI.xlua_pushinteger(L, p1);
+                
+                PCall(L, 2, 2, errFunc);
+                
+                translator.Get(L, errFunc + 2, out p2);
+                
+                bool __gen_ret = LuaAPI.lua_toboolean(L, errFunc + 1);
+                LuaAPI.lua_settop(L, errFunc - 1);
+                return  __gen_ret;
+#if THREAD_SAFE || HOTFIX_ENABLE
+            }
+#endif
+		}
+        
+		public bool __Gen_Delegate_Imp183(object p0, int p1, out Snxxz.UI.JadeDynastyBossLine p2)
+		{
+#if THREAD_SAFE || HOTFIX_ENABLE
+            lock (luaEnv.luaEnvLock)
+            {
+#endif
+                RealStatePtr L = luaEnv.rawL;
+                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
+                ObjectTranslator translator = luaEnv.translator;
+                translator.PushAny(L, p0);
+                LuaAPI.xlua_pushinteger(L, p1);
+                
+                PCall(L, 2, 2, errFunc);
+                
+                translator.Get(L, errFunc + 2, out p2);
+                
+                bool __gen_ret = LuaAPI.lua_toboolean(L, errFunc + 1);
+                LuaAPI.lua_settop(L, errFunc - 1);
+                return  __gen_ret;
+#if THREAD_SAFE || HOTFIX_ENABLE
+            }
+#endif
+		}
+        
+		public int __Gen_Delegate_Imp184(Snxxz.UI.JadeDynastyBossData p0, Snxxz.UI.JadeDynastyBossData p1)
+		{
+#if THREAD_SAFE || HOTFIX_ENABLE
+            lock (luaEnv.luaEnvLock)
+            {
+#endif
+                RealStatePtr L = luaEnv.rawL;
+                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
+                ObjectTranslator translator = luaEnv.translator;
+                translator.Push(L, p0);
+                translator.Push(L, p1);
+                
+                PCall(L, 2, 1, errFunc);
+                
+                
+                int __gen_ret = LuaAPI.xlua_tointeger(L, errFunc + 1);
+                LuaAPI.lua_settop(L, errFunc - 1);
+                return  __gen_ret;
+#if THREAD_SAFE || HOTFIX_ENABLE
+            }
+#endif
+		}
+        
+		public System.Collections.IEnumerator __Gen_Delegate_Imp185(object p0, float p1)
+		{
+#if THREAD_SAFE || HOTFIX_ENABLE
+            lock (luaEnv.luaEnvLock)
+            {
+#endif
+                RealStatePtr L = luaEnv.rawL;
+                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
+                ObjectTranslator translator = luaEnv.translator;
+                translator.PushAny(L, p0);
+                LuaAPI.lua_pushnumber(L, p1);
+                
+                PCall(L, 2, 1, errFunc);
+                
+                
+                System.Collections.IEnumerator __gen_ret = (System.Collections.IEnumerator)translator.GetObject(L, errFunc + 1, typeof(System.Collections.IEnumerator));
+                LuaAPI.lua_settop(L, errFunc - 1);
+                return  __gen_ret;
+#if THREAD_SAFE || HOTFIX_ENABLE
+            }
+#endif
+		}
+        
+		public bool __Gen_Delegate_Imp186(object p0, Snxxz.UI.Item p1)
+		{
+#if THREAD_SAFE || HOTFIX_ENABLE
+            lock (luaEnv.luaEnvLock)
+            {
+#endif
+                RealStatePtr L = luaEnv.rawL;
+                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
+                ObjectTranslator translator = luaEnv.translator;
+                translator.PushAny(L, p0);
+                translator.Push(L, p1);
+                
+                PCall(L, 2, 1, errFunc);
+                
+                
+                bool __gen_ret = LuaAPI.lua_toboolean(L, errFunc + 1);
+                LuaAPI.lua_settop(L, errFunc - 1);
+                return  __gen_ret;
+#if THREAD_SAFE || HOTFIX_ENABLE
+            }
+#endif
+		}
+        
+		public Snxxz.UI.KingTreasureModel __Gen_Delegate_Imp187(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4121,7 +4352,7 @@
 #endif
 		}
         
-		public TableConfig.KingTreasureItemConfig __Gen_Delegate_Imp178(object p0)
+		public TableConfig.KingTreasureItemConfig __Gen_Delegate_Imp188(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4143,7 +4374,7 @@
 #endif
 		}
         
-		public string __Gen_Delegate_Imp179(object p0, object p1, int p2)
+		public string __Gen_Delegate_Imp189(object p0, object p1, int p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4167,7 +4398,7 @@
 #endif
 		}
         
-		public Snxxz.UI.KingTreasureShowModel __Gen_Delegate_Imp180(object p0)
+		public Snxxz.UI.KingTreasureShowModel __Gen_Delegate_Imp190(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4189,7 +4420,7 @@
 #endif
 		}
         
-		public Snxxz.UI.CrossServerOneVsOne __Gen_Delegate_Imp181(object p0)
+		public Snxxz.UI.CrossServerOneVsOne __Gen_Delegate_Imp191(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4211,7 +4442,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp182(object p0, Snxxz.UI.CrossServerOneVsOne p1)
+		public void __Gen_Delegate_Imp192(object p0, Snxxz.UI.CrossServerOneVsOne p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4234,7 +4465,7 @@
 #endif
 		}
         
-		public Snxxz.UI.LoginModel __Gen_Delegate_Imp183(object p0)
+		public Snxxz.UI.LoginModel __Gen_Delegate_Imp193(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4256,7 +4487,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp184(object p0, object p1, object p2, int p3, bool p4)
+		public void __Gen_Delegate_Imp194(object p0, object p1, object p2, int p3, bool p4)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4282,7 +4513,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp185(object p0, byte p1)
+		public void __Gen_Delegate_Imp195(object p0, byte p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4305,7 +4536,7 @@
 #endif
 		}
         
-		public PlayerTaskDatas __Gen_Delegate_Imp186(object p0)
+		public PlayerTaskDatas __Gen_Delegate_Imp196(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4327,7 +4558,7 @@
 #endif
 		}
         
-		public System.Collections.IEnumerator __Gen_Delegate_Imp187(object p0, int p1, int p2)
+		public System.Collections.IEnumerator __Gen_Delegate_Imp197(object p0, int p1, int p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4351,7 +4582,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp188(object p0, TreasureCategory p1)
+		public void __Gen_Delegate_Imp198(object p0, TreasureCategory p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4374,7 +4605,7 @@
 #endif
 		}
         
-		public Snxxz.UI.VipModel __Gen_Delegate_Imp189(object p0)
+		public Snxxz.UI.VipModel __Gen_Delegate_Imp199(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4396,7 +4627,7 @@
 #endif
 		}
         
-		public Snxxz.UI.MarketModel __Gen_Delegate_Imp190(object p0)
+		public Snxxz.UI.MarketModel __Gen_Delegate_Imp200(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4418,7 +4649,7 @@
 #endif
 		}
         
-		public Snxxz.UI.FlashSaleModel __Gen_Delegate_Imp191(object p0)
+		public Snxxz.UI.FlashSaleModel __Gen_Delegate_Imp201(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4440,7 +4671,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp192(object p0, Snxxz.UI.OperationFlashSale.FlashSaleGift p1)
+		public void __Gen_Delegate_Imp202(object p0, Snxxz.UI.OperationFlashSale.FlashSaleGift p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4463,7 +4694,7 @@
 #endif
 		}
         
-		public Snxxz.UI.MysticalPurchaseModel __Gen_Delegate_Imp193(object p0)
+		public Snxxz.UI.MysticalPurchaseModel __Gen_Delegate_Imp203(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4485,7 +4716,7 @@
 #endif
 		}
         
-		public Snxxz.UI.ImpactRankModel __Gen_Delegate_Imp194(object p0)
+		public Snxxz.UI.ImpactRankModel __Gen_Delegate_Imp204(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4507,7 +4738,7 @@
 #endif
 		}
         
-		public Snxxz.UI.OSRedEnvelopeModel __Gen_Delegate_Imp195(object p0)
+		public Snxxz.UI.OSRedEnvelopeModel __Gen_Delegate_Imp205(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4529,7 +4760,7 @@
 #endif
 		}
         
-		public Snxxz.UI.FairyLeagueModel __Gen_Delegate_Imp196(object p0)
+		public Snxxz.UI.FairyLeagueModel __Gen_Delegate_Imp206(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4551,7 +4782,7 @@
 #endif
 		}
         
-		public Snxxz.UI.FairyGrabBossModel __Gen_Delegate_Imp197(object p0)
+		public Snxxz.UI.FairyGrabBossModel __Gen_Delegate_Imp207(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4573,7 +4804,7 @@
 #endif
 		}
         
-		public Snxxz.UI.OSGiftModel __Gen_Delegate_Imp198(object p0)
+		public Snxxz.UI.OSGiftModel __Gen_Delegate_Imp208(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4595,7 +4826,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp199(object p0, Snxxz.UI.Operation p1)
+		public void __Gen_Delegate_Imp209(object p0, Snxxz.UI.Operation p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4618,7 +4849,7 @@
 #endif
 		}
         
-		public OpenServiceAchievementModel __Gen_Delegate_Imp200(object p0)
+		public OpenServiceAchievementModel __Gen_Delegate_Imp210(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4640,7 +4871,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp201(object p0, int p1, object p2, int p3, int p4)
+		public void __Gen_Delegate_Imp211(object p0, int p1, object p2, int p3, int p4)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4666,7 +4897,7 @@
 #endif
 		}
         
-		public Snxxz.UI.RealmModel __Gen_Delegate_Imp202(object p0)
+		public Snxxz.UI.RealmModel __Gen_Delegate_Imp212(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4688,7 +4919,7 @@
 #endif
 		}
         
-		public Snxxz.UI.MagicianModel __Gen_Delegate_Imp203()
+		public Snxxz.UI.MagicianModel __Gen_Delegate_Imp213()
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4709,7 +4940,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp204(uint p0, out System.Collections.Generic.Dictionary<int, int> p1)
+		public bool __Gen_Delegate_Imp214(uint p0, out System.Collections.Generic.Dictionary<int, int> p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4732,7 +4963,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp205(uint p0, int p1, out int p2)
+		public bool __Gen_Delegate_Imp215(uint p0, int p1, out int p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4756,7 +4987,7 @@
 #endif
 		}
         
-		public byte __Gen_Delegate_Imp206(int p0, int p1)
+		public byte __Gen_Delegate_Imp216(int p0, int p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4779,7 +5010,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp207(int p0, int p1, bool p2)
+		public void __Gen_Delegate_Imp217(int p0, int p1, bool p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4803,7 +5034,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp208(Snxxz.UI.EquipShowSwitch.EquipShowSwitchType p0, uint p1)
+		public bool __Gen_Delegate_Imp218(Snxxz.UI.EquipShowSwitch.EquipShowSwitchType p0, uint p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4826,7 +5057,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp209(uint p0)
+		public void __Gen_Delegate_Imp219(uint p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4848,7 +5079,7 @@
 #endif
 		}
         
-		public System.Collections.Generic.Dictionary<int, string> __Gen_Delegate_Imp210(object p0)
+		public System.Collections.Generic.Dictionary<int, string> __Gen_Delegate_Imp220(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4870,7 +5101,7 @@
 #endif
 		}
         
-		public int[] __Gen_Delegate_Imp211(object p0)
+		public int[] __Gen_Delegate_Imp221(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4892,7 +5123,7 @@
 #endif
 		}
         
-		public int[] __Gen_Delegate_Imp212(object p0, int p1)
+		public int[] __Gen_Delegate_Imp222(object p0, int p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4915,7 +5146,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp213(object p0, int p1, int p2, int p3, out int p4)
+		public bool __Gen_Delegate_Imp223(object p0, int p1, int p2, int p3, out int p4)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4941,7 +5172,7 @@
 #endif
 		}
         
-		public Snxxz.UI.GodWeaponInfo __Gen_Delegate_Imp214(object p0, int p1)
+		public Snxxz.UI.GodWeaponInfo __Gen_Delegate_Imp224(object p0, int p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4964,7 +5195,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp215(object p0, int p1, out System.Collections.Generic.List<Snxxz.UI.GodWeaponCondition> p2)
+		public bool __Gen_Delegate_Imp225(object p0, int p1, out System.Collections.Generic.List<Snxxz.UI.GodWeaponCondition> p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4988,7 +5219,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp216(object p0, int p1, int p2, out int p3)
+		public bool __Gen_Delegate_Imp226(object p0, int p1, int p2, out int p3)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5013,7 +5244,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp217(object p0, int p1, out Snxxz.UI.AutoHammerCost p2)
+		public bool __Gen_Delegate_Imp227(object p0, int p1, out Snxxz.UI.AutoHammerCost p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5037,7 +5268,7 @@
 #endif
 		}
         
-		public System.Collections.Generic.Dictionary<int, int> __Gen_Delegate_Imp218(object p0, int p1, int p2)
+		public System.Collections.Generic.Dictionary<int, int> __Gen_Delegate_Imp228(object p0, int p1, int p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5061,7 +5292,7 @@
 #endif
 		}
         
-		public System.Collections.Generic.List<int> __Gen_Delegate_Imp219(object p0, int p1)
+		public System.Collections.Generic.List<int> __Gen_Delegate_Imp229(object p0, int p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5084,7 +5315,7 @@
 #endif
 		}
         
-		public string __Gen_Delegate_Imp220(object p0, int p1, int p2)
+		public string __Gen_Delegate_Imp230(object p0, int p1, int p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5108,7 +5339,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp221(object p0, object p1, object p2)
+		public void __Gen_Delegate_Imp231(object p0, object p1, object p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5132,7 +5363,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp222(object p0, Snxxz.UI.ActivateShow.ActivateFunc p1)
+		public void __Gen_Delegate_Imp232(object p0, Snxxz.UI.ActivateShow.ActivateFunc p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5155,7 +5386,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp223(object p0, Snxxz.UI.ActivateShow.ActivateFunc p1, int p2)
+		public void __Gen_Delegate_Imp233(object p0, Snxxz.UI.ActivateShow.ActivateFunc p1, int p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5179,7 +5410,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp224(object p0, int p1, out int p2, out int p3)
+		public bool __Gen_Delegate_Imp234(object p0, int p1, out int p2, out int p3)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5204,7 +5435,7 @@
 #endif
 		}
         
-		public Snxxz.UI.FuncSwitchModel __Gen_Delegate_Imp225(object p0)
+		public Snxxz.UI.FuncSwitchModel __Gen_Delegate_Imp235(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5226,7 +5457,7 @@
 #endif
 		}
         
-		public System.Collections.Generic.Dictionary<int, Snxxz.UI.FuncSwitchModel.FuncSwithData> __Gen_Delegate_Imp226(object p0)
+		public System.Collections.Generic.Dictionary<int, Snxxz.UI.FuncSwitchModel.FuncSwithData> __Gen_Delegate_Imp236(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5248,7 +5479,7 @@
 #endif
 		}
         
-		public Snxxz.UI.TestModel __Gen_Delegate_Imp227(object p0)
+		public Snxxz.UI.TestModel __Gen_Delegate_Imp237(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5270,7 +5501,7 @@
 #endif
 		}
         
-		public UIEffect __Gen_Delegate_Imp228(object p0)
+		public UIEffect __Gen_Delegate_Imp238(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5292,7 +5523,7 @@
 #endif
 		}
         
-		public Treasure3DConfig __Gen_Delegate_Imp229(object p0)
+		public Treasure3DConfig __Gen_Delegate_Imp239(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5314,7 +5545,7 @@
 #endif
 		}
         
-		public Snxxz.UI.AchievementModel __Gen_Delegate_Imp230(object p0)
+		public Snxxz.UI.AchievementModel __Gen_Delegate_Imp240(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5336,7 +5567,7 @@
 #endif
 		}
         
-		public UnityEngine.Vector3 __Gen_Delegate_Imp231(object p0, int p1)
+		public UnityEngine.Vector3 __Gen_Delegate_Imp241(object p0, int p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5359,7 +5590,7 @@
 #endif
 		}
         
-		public UnityEngine.Vector3 __Gen_Delegate_Imp232(object p0, UnityEngine.Vector3 p1)
+		public UnityEngine.Vector3 __Gen_Delegate_Imp242(object p0, UnityEngine.Vector3 p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5382,30 +5613,7 @@
 #endif
 		}
         
-		public System.Collections.IEnumerator __Gen_Delegate_Imp233(object p0, float p1)
-		{
-#if THREAD_SAFE || HOTFIX_ENABLE
-            lock (luaEnv.luaEnvLock)
-            {
-#endif
-                RealStatePtr L = luaEnv.rawL;
-                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
-                ObjectTranslator translator = luaEnv.translator;
-                translator.PushAny(L, p0);
-                LuaAPI.lua_pushnumber(L, p1);
-                
-                PCall(L, 2, 1, errFunc);
-                
-                
-                System.Collections.IEnumerator __gen_ret = (System.Collections.IEnumerator)translator.GetObject(L, errFunc + 1, typeof(System.Collections.IEnumerator));
-                LuaAPI.lua_settop(L, errFunc - 1);
-                return  __gen_ret;
-#if THREAD_SAFE || HOTFIX_ENABLE
-            }
-#endif
-		}
-        
-		public void __Gen_Delegate_Imp234(object p0, bool p1, bool p2)
+		public void __Gen_Delegate_Imp243(object p0, bool p1, bool p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5429,7 +5637,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp235(object p0, Snxxz.UI.TreasureAnimation.TreasureShowStep p1)
+		public void __Gen_Delegate_Imp244(object p0, Snxxz.UI.TreasureAnimation.TreasureShowStep p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5452,7 +5660,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp236(object p0, bool p1, int p2)
+		public void __Gen_Delegate_Imp245(object p0, bool p1, int p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5476,7 +5684,7 @@
 #endif
 		}
         
-		public UnityEngine.Transform __Gen_Delegate_Imp237(object p0)
+		public UnityEngine.Transform __Gen_Delegate_Imp246(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5498,7 +5706,7 @@
 #endif
 		}
         
-		public UnityEngine.Vector3 __Gen_Delegate_Imp238(object p0)
+		public UnityEngine.Vector3 __Gen_Delegate_Imp247(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5520,7 +5728,7 @@
 #endif
 		}
         
-		public Treasure3DConfig.TreasureParam __Gen_Delegate_Imp239(object p0)
+		public Treasure3DConfig.TreasureParam __Gen_Delegate_Imp248(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5542,7 +5750,7 @@
 #endif
 		}
         
-		public Snxxz.UI.UI3DTreasureSelectStage __Gen_Delegate_Imp240()
+		public Snxxz.UI.UI3DTreasureSelectStage __Gen_Delegate_Imp249()
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5563,7 +5771,7 @@
 #endif
 		}
         
-		public TreasureCategory __Gen_Delegate_Imp241(object p0)
+		public TreasureCategory __Gen_Delegate_Imp250(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5585,7 +5793,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp242(object p0, bool p1, TreasureCategory p2)
+		public void __Gen_Delegate_Imp251(object p0, bool p1, TreasureCategory p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5609,7 +5817,7 @@
 #endif
 		}
         
-		public System.Collections.IEnumerator __Gen_Delegate_Imp243(object p0, TreasureCategory p1, object p2)
+		public System.Collections.IEnumerator __Gen_Delegate_Imp252(object p0, TreasureCategory p1, object p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5633,7 +5841,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp244(object p0, TreasureCategory p1, bool p2)
+		public void __Gen_Delegate_Imp253(object p0, TreasureCategory p1, bool p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5657,7 +5865,7 @@
 #endif
 		}
         
-		public System.Collections.IEnumerator __Gen_Delegate_Imp245(object p0, object p1, float p2)
+		public System.Collections.IEnumerator __Gen_Delegate_Imp254(object p0, object p1, float p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5681,7 +5889,7 @@
 #endif
 		}
         
-		public Snxxz.UI.SignInModel __Gen_Delegate_Imp246(object p0)
+		public Snxxz.UI.SignInModel __Gen_Delegate_Imp255(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
diff --git a/Lua/Gen/SDKUtilityWrap.cs b/Lua/Gen/SDKUtilityWrap.cs
index b8fc00b..50771bd 100644
--- a/Lua/Gen/SDKUtilityWrap.cs
+++ b/Lua/Gen/SDKUtilityWrap.cs
@@ -21,7 +21,7 @@
         {
 			ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
 			System.Type type = typeof(SDKUtility);
-			Utils.BeginObjectRegister(type, L, translator, 0, 26, 29, 20);
+			Utils.BeginObjectRegister(type, L, translator, 0, 27, 29, 20);
 			
 			Utils.RegisterFunc(L, Utils.METHOD_IDX, "Init", _m_Init);
 			Utils.RegisterFunc(L, Utils.METHOD_IDX, "InstallAPK", _m_InstallAPK);
@@ -44,6 +44,7 @@
 			Utils.RegisterFunc(L, Utils.METHOD_IDX, "FreePlatformDoIDAuthentication", _m_FreePlatformDoIDAuthentication);
 			Utils.RegisterFunc(L, Utils.METHOD_IDX, "FreePlatformCheckIDAuthentication", _m_FreePlatformCheckIDAuthentication);
 			Utils.RegisterFunc(L, Utils.METHOD_IDX, "OnServerChargeOk", _m_OnServerChargeOk);
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "SendRegistEvent", _m_SendRegistEvent);
 			Utils.RegisterFunc(L, Utils.METHOD_IDX, "CreateRoleOk", _m_CreateRoleOk);
 			Utils.RegisterFunc(L, Utils.METHOD_IDX, "RoleLogin", _m_RoleLogin);
 			Utils.RegisterFunc(L, Utils.METHOD_IDX, "RoleLevelUp", _m_RoleLevelUp);
@@ -761,6 +762,33 @@
         }
         
         [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _m_SendRegistEvent(RealStatePtr L)
+        {
+		    try {
+            
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+            
+            
+                SDKUtility gen_to_be_invoked = (SDKUtility)translator.FastGetCSObj(L, 1);
+            
+            
+                
+                {
+                    
+                    gen_to_be_invoked.SendRegistEvent(  );
+                    
+                    
+                    
+                    return 0;
+                }
+                
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
         static int _m_CreateRoleOk(RealStatePtr L)
         {
 		    try {
diff --git a/Lua/Gen/SnxxzUIJadeDynastyBossModelWrap.cs b/Lua/Gen/SnxxzUIJadeDynastyBossModelWrap.cs
new file mode 100644
index 0000000..0585b1c
--- /dev/null
+++ b/Lua/Gen/SnxxzUIJadeDynastyBossModelWrap.cs
@@ -0,0 +1,888 @@
+锘�#if USE_UNI_LUA
+using LuaAPI = UniLua.Lua;
+using RealStatePtr = UniLua.ILuaState;
+using LuaCSFunction = UniLua.CSharpFunctionDelegate;
+#else
+using LuaAPI = XLua.LuaDLL.Lua;
+using RealStatePtr = System.IntPtr;
+using LuaCSFunction = XLua.LuaDLL.lua_CSFunction;
+#endif
+
+using XLua;
+using System.Collections.Generic;
+
+
+namespace XLua.CSObjectWrap
+{
+    using Utils = XLua.Utils;
+    public class SnxxzUIJadeDynastyBossModelWrap 
+    {
+        public static void __Register(RealStatePtr L)
+        {
+			ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+			System.Type type = typeof(Snxxz.UI.JadeDynastyBossModel);
+			Utils.BeginObjectRegister(type, L, translator, 0, 20, 7, 2);
+			
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "Init", _m_Init);
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "OnBeforePlayerDataInitialize", _m_OnBeforePlayerDataInitialize);
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "OnAfterPlayerDataInitialize", _m_OnAfterPlayerDataInitialize);
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "OnPlayerLoginOk", _m_OnPlayerLoginOk);
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "UnInit", _m_UnInit);
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "IsJadeDynastyBoss", _m_IsJadeDynastyBoss);
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "IsBossUnLocked", _m_IsBossUnLocked);
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "GetJadeDynastyBosses", _m_GetJadeDynastyBosses);
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "GetParticipantCount", _m_GetParticipantCount);
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "GetLatestUnLockBoss", _m_GetLatestUnLockBoss);
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "TryGetDropItems", _m_TryGetDropItems);
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "TryGetCondition", _m_TryGetCondition);
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "TryGetBossLine", _m_TryGetBossLine);
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "TryEnterDungeon", _m_TryEnterDungeon);
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "DisplayErrorTip", _m_DisplayErrorTip);
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "OnReceivePackage", _m_OnReceivePackage);
+			
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "selectBossRefresh", _e_selectBossRefresh);
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "bossLineRefresh", _e_bossLineRefresh);
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "assistTimeRefresh", _e_assistTimeRefresh);
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "jadeDynastyScoreRefresh", _e_jadeDynastyScoreRefresh);
+			
+			Utils.RegisterFunc(L, Utils.GETTER_IDX, "jadeDynastyScore", _g_get_jadeDynastyScore);
+            Utils.RegisterFunc(L, Utils.GETTER_IDX, "challengeLimitCount", _g_get_challengeLimitCount);
+            Utils.RegisterFunc(L, Utils.GETTER_IDX, "challengeTimes", _g_get_challengeTimes);
+            Utils.RegisterFunc(L, Utils.GETTER_IDX, "assistTimes", _g_get_assistTimes);
+            Utils.RegisterFunc(L, Utils.GETTER_IDX, "selectBossId", _g_get_selectBossId);
+            Utils.RegisterFunc(L, Utils.GETTER_IDX, "assginSelectBossId", _g_get_assginSelectBossId);
+            Utils.RegisterFunc(L, Utils.GETTER_IDX, "redpoint", _g_get_redpoint);
+            
+			Utils.RegisterFunc(L, Utils.SETTER_IDX, "selectBossId", _s_set_selectBossId);
+            Utils.RegisterFunc(L, Utils.SETTER_IDX, "assginSelectBossId", _s_set_assginSelectBossId);
+            
+			
+			Utils.EndObjectRegister(type, L, translator, null, null,
+			    null, null, null);
+
+		    Utils.BeginClassRegister(type, L, __CreateInstance, 5, 0, 0);
+			Utils.RegisterFunc(L, Utils.CLS_IDX, "SortCompare", _m_SortCompare_xlua_st_);
+            
+			
+            Utils.RegisterObject(L, translator, Utils.CLS_IDX, "JADEDYNASTY_MAP", Snxxz.UI.JadeDynastyBossModel.JADEDYNASTY_MAP);
+            Utils.RegisterObject(L, translator, Utils.CLS_IDX, "FUNCTIONID", Snxxz.UI.JadeDynastyBossModel.FUNCTIONID);
+            Utils.RegisterObject(L, translator, Utils.CLS_IDX, "JADEDYNASTY_REDPOINTID", Snxxz.UI.JadeDynastyBossModel.JADEDYNASTY_REDPOINTID);
+            
+			
+			
+			
+			Utils.EndClassRegister(type, L, translator);
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int __CreateInstance(RealStatePtr L)
+        {
+            
+			try {
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+				if(LuaAPI.lua_gettop(L) == 1)
+				{
+					
+					Snxxz.UI.JadeDynastyBossModel gen_ret = new Snxxz.UI.JadeDynastyBossModel();
+					translator.Push(L, gen_ret);
+                    
+					return 1;
+				}
+				
+			}
+			catch(System.Exception gen_e) {
+				return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+			}
+            return LuaAPI.luaL_error(L, "invalid arguments to Snxxz.UI.JadeDynastyBossModel constructor!");
+            
+        }
+        
+		
+        
+		
+        
+        
+        
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _m_Init(RealStatePtr L)
+        {
+		    try {
+            
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+            
+            
+                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
+            
+            
+                
+                {
+                    
+                    gen_to_be_invoked.Init(  );
+                    
+                    
+                    
+                    return 0;
+                }
+                
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _m_OnBeforePlayerDataInitialize(RealStatePtr L)
+        {
+		    try {
+            
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+            
+            
+                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
+            
+            
+                
+                {
+                    
+                    gen_to_be_invoked.OnBeforePlayerDataInitialize(  );
+                    
+                    
+                    
+                    return 0;
+                }
+                
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _m_OnAfterPlayerDataInitialize(RealStatePtr L)
+        {
+		    try {
+            
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+            
+            
+                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
+            
+            
+                
+                {
+                    
+                    gen_to_be_invoked.OnAfterPlayerDataInitialize(  );
+                    
+                    
+                    
+                    return 0;
+                }
+                
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _m_OnPlayerLoginOk(RealStatePtr L)
+        {
+		    try {
+            
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+            
+            
+                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
+            
+            
+                
+                {
+                    
+                    gen_to_be_invoked.OnPlayerLoginOk(  );
+                    
+                    
+                    
+                    return 0;
+                }
+                
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _m_UnInit(RealStatePtr L)
+        {
+		    try {
+            
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+            
+            
+                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
+            
+            
+                
+                {
+                    
+                    gen_to_be_invoked.UnInit(  );
+                    
+                    
+                    
+                    return 0;
+                }
+                
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _m_IsJadeDynastyBoss(RealStatePtr L)
+        {
+		    try {
+            
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+            
+            
+                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
+            
+            
+                
+                {
+                    int _bossNpcId = LuaAPI.xlua_tointeger(L, 2);
+                    
+                        bool gen_ret = gen_to_be_invoked.IsJadeDynastyBoss( _bossNpcId );
+                        LuaAPI.lua_pushboolean(L, gen_ret);
+                    
+                    
+                    
+                    return 1;
+                }
+                
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _m_IsBossUnLocked(RealStatePtr L)
+        {
+		    try {
+            
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+            
+            
+                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
+            
+            
+                
+                {
+                    int _bossNpcId = LuaAPI.xlua_tointeger(L, 2);
+                    int _condition;
+                    
+                        bool gen_ret = gen_to_be_invoked.IsBossUnLocked( _bossNpcId, out _condition );
+                        LuaAPI.lua_pushboolean(L, gen_ret);
+                    LuaAPI.xlua_pushinteger(L, _condition);
+                        
+                    
+                    
+                    
+                    return 2;
+                }
+                
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _m_GetJadeDynastyBosses(RealStatePtr L)
+        {
+		    try {
+            
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+            
+            
+                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
+            
+            
+                
+                {
+                    
+                        System.Collections.Generic.List<int> gen_ret = gen_to_be_invoked.GetJadeDynastyBosses(  );
+                        translator.Push(L, gen_ret);
+                    
+                    
+                    
+                    return 1;
+                }
+                
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _m_GetParticipantCount(RealStatePtr L)
+        {
+		    try {
+            
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+            
+            
+                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
+            
+            
+                
+                {
+                    int _bossId = LuaAPI.xlua_tointeger(L, 2);
+                    
+                        int gen_ret = gen_to_be_invoked.GetParticipantCount( _bossId );
+                        LuaAPI.xlua_pushinteger(L, gen_ret);
+                    
+                    
+                    
+                    return 1;
+                }
+                
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _m_GetLatestUnLockBoss(RealStatePtr L)
+        {
+		    try {
+            
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+            
+            
+                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
+            
+            
+                
+                {
+                    
+                        int gen_ret = gen_to_be_invoked.GetLatestUnLockBoss(  );
+                        LuaAPI.xlua_pushinteger(L, gen_ret);
+                    
+                    
+                    
+                    return 1;
+                }
+                
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _m_TryGetDropItems(RealStatePtr L)
+        {
+		    try {
+            
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+            
+            
+                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
+            
+            
+                
+                {
+                    int _bossId = LuaAPI.xlua_tointeger(L, 2);
+                    System.Collections.Generic.List<Snxxz.UI.Item> _dropItems;
+                    
+                        bool gen_ret = gen_to_be_invoked.TryGetDropItems( _bossId, out _dropItems );
+                        LuaAPI.lua_pushboolean(L, gen_ret);
+                    translator.Push(L, _dropItems);
+                        
+                    
+                    
+                    
+                    return 2;
+                }
+                
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _m_TryGetCondition(RealStatePtr L)
+        {
+		    try {
+            
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+            
+            
+                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
+            
+            
+                
+                {
+                    int _bossId = LuaAPI.xlua_tointeger(L, 2);
+                    Snxxz.UI.JadeDynastyBossCondition _condition;
+                    
+                        bool gen_ret = gen_to_be_invoked.TryGetCondition( _bossId, out _condition );
+                        LuaAPI.lua_pushboolean(L, gen_ret);
+                    translator.Push(L, _condition);
+                        
+                    
+                    
+                    
+                    return 2;
+                }
+                
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _m_TryGetBossLine(RealStatePtr L)
+        {
+		    try {
+            
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+            
+            
+                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
+            
+            
+                
+                {
+                    int _bossId = LuaAPI.xlua_tointeger(L, 2);
+                    Snxxz.UI.JadeDynastyBossLine _mapLineState;
+                    
+                        bool gen_ret = gen_to_be_invoked.TryGetBossLine( _bossId, out _mapLineState );
+                        LuaAPI.lua_pushboolean(L, gen_ret);
+                    translator.Push(L, _mapLineState);
+                        
+                    
+                    
+                    
+                    return 2;
+                }
+                
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _m_TryEnterDungeon(RealStatePtr L)
+        {
+		    try {
+            
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+            
+            
+                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
+            
+            
+                
+                {
+                    int _bossId = LuaAPI.xlua_tointeger(L, 2);
+                    int _error;
+                    
+                        bool gen_ret = gen_to_be_invoked.TryEnterDungeon( _bossId, out _error );
+                        LuaAPI.lua_pushboolean(L, gen_ret);
+                    LuaAPI.xlua_pushinteger(L, _error);
+                        
+                    
+                    
+                    
+                    return 2;
+                }
+                
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _m_DisplayErrorTip(RealStatePtr L)
+        {
+		    try {
+            
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+            
+            
+                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
+            
+            
+                
+                {
+                    int _error = LuaAPI.xlua_tointeger(L, 2);
+                    
+                    gen_to_be_invoked.DisplayErrorTip( _error );
+                    
+                    
+                    
+                    return 0;
+                }
+                
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _m_OnReceivePackage(RealStatePtr L)
+        {
+		    try {
+            
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+            
+            
+                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
+            
+            
+			    int gen_param_count = LuaAPI.lua_gettop(L);
+            
+                if(gen_param_count == 2&& translator.Assignable<HA007_tagGCFBLinePlayerCnt>(L, 2)) 
+                {
+                    HA007_tagGCFBLinePlayerCnt _package = (HA007_tagGCFBLinePlayerCnt)translator.GetObject(L, 2, typeof(HA007_tagGCFBLinePlayerCnt));
+                    
+                    gen_to_be_invoked.OnReceivePackage( _package );
+                    
+                    
+                    
+                    return 0;
+                }
+                if(gen_param_count == 2&& translator.Assignable<HB212_tagMCZhuXianBossCnt>(L, 2)) 
+                {
+                    HB212_tagMCZhuXianBossCnt _package = (HB212_tagMCZhuXianBossCnt)translator.GetObject(L, 2, typeof(HB212_tagMCZhuXianBossCnt));
+                    
+                    gen_to_be_invoked.OnReceivePackage( _package );
+                    
+                    
+                    
+                    return 0;
+                }
+                
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            
+            return LuaAPI.luaL_error(L, "invalid arguments to Snxxz.UI.JadeDynastyBossModel.OnReceivePackage!");
+            
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _m_SortCompare_xlua_st_(RealStatePtr L)
+        {
+		    try {
+            
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+            
+            
+            
+                
+                {
+                    Snxxz.UI.JadeDynastyBossData _lhs;translator.Get(L, 1, out _lhs);
+                    Snxxz.UI.JadeDynastyBossData _rhs;translator.Get(L, 2, out _rhs);
+                    
+                        int gen_ret = Snxxz.UI.JadeDynastyBossModel.SortCompare( _lhs, _rhs );
+                        LuaAPI.xlua_pushinteger(L, gen_ret);
+                    
+                    
+                    
+                    return 1;
+                }
+                
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            
+        }
+        
+        
+        
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _g_get_jadeDynastyScore(RealStatePtr L)
+        {
+		    try {
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+			
+                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
+                LuaAPI.lua_pushuint64(L, gen_to_be_invoked.jadeDynastyScore);
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            return 1;
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _g_get_challengeLimitCount(RealStatePtr L)
+        {
+		    try {
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+			
+                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
+                LuaAPI.xlua_pushinteger(L, gen_to_be_invoked.challengeLimitCount);
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            return 1;
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _g_get_challengeTimes(RealStatePtr L)
+        {
+		    try {
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+			
+                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
+                LuaAPI.xlua_pushinteger(L, gen_to_be_invoked.challengeTimes);
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            return 1;
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _g_get_assistTimes(RealStatePtr L)
+        {
+		    try {
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+			
+                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
+                LuaAPI.xlua_pushinteger(L, gen_to_be_invoked.assistTimes);
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            return 1;
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _g_get_selectBossId(RealStatePtr L)
+        {
+		    try {
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+			
+                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
+                LuaAPI.xlua_pushinteger(L, gen_to_be_invoked.selectBossId);
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            return 1;
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _g_get_assginSelectBossId(RealStatePtr L)
+        {
+		    try {
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+			
+                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
+                LuaAPI.xlua_pushinteger(L, gen_to_be_invoked.assginSelectBossId);
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            return 1;
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _g_get_redpoint(RealStatePtr L)
+        {
+		    try {
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+			
+                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
+                translator.Push(L, gen_to_be_invoked.redpoint);
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            return 1;
+        }
+        
+        
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _s_set_selectBossId(RealStatePtr L)
+        {
+		    try {
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+			
+                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
+                gen_to_be_invoked.selectBossId = LuaAPI.xlua_tointeger(L, 2);
+            
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            return 0;
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _s_set_assginSelectBossId(RealStatePtr L)
+        {
+		    try {
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+			
+                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
+                gen_to_be_invoked.assginSelectBossId = LuaAPI.xlua_tointeger(L, 2);
+            
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            return 0;
+        }
+        
+		
+		
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _e_selectBossRefresh(RealStatePtr L)
+        {
+		    try {
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+			    int gen_param_count = LuaAPI.lua_gettop(L);
+			Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
+                System.Action<int> gen_delegate = translator.GetDelegate<System.Action<int>>(L, 3);
+                if (gen_delegate == null) {
+                    return LuaAPI.luaL_error(L, "#3 need System.Action<int>!");
+                }
+				
+				if (gen_param_count == 3)
+				{
+					
+					if (LuaAPI.xlua_is_eq_str(L, 2, "+")) {
+						gen_to_be_invoked.selectBossRefresh += gen_delegate;
+						return 0;
+					} 
+					
+					
+					if (LuaAPI.xlua_is_eq_str(L, 2, "-")) {
+						gen_to_be_invoked.selectBossRefresh -= gen_delegate;
+						return 0;
+					} 
+					
+				}
+			} catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+			LuaAPI.luaL_error(L, "invalid arguments to Snxxz.UI.JadeDynastyBossModel.selectBossRefresh!");
+            return 0;
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _e_bossLineRefresh(RealStatePtr L)
+        {
+		    try {
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+			    int gen_param_count = LuaAPI.lua_gettop(L);
+			Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
+                System.Action gen_delegate = translator.GetDelegate<System.Action>(L, 3);
+                if (gen_delegate == null) {
+                    return LuaAPI.luaL_error(L, "#3 need System.Action!");
+                }
+				
+				if (gen_param_count == 3)
+				{
+					
+					if (LuaAPI.xlua_is_eq_str(L, 2, "+")) {
+						gen_to_be_invoked.bossLineRefresh += gen_delegate;
+						return 0;
+					} 
+					
+					
+					if (LuaAPI.xlua_is_eq_str(L, 2, "-")) {
+						gen_to_be_invoked.bossLineRefresh -= gen_delegate;
+						return 0;
+					} 
+					
+				}
+			} catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+			LuaAPI.luaL_error(L, "invalid arguments to Snxxz.UI.JadeDynastyBossModel.bossLineRefresh!");
+            return 0;
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _e_assistTimeRefresh(RealStatePtr L)
+        {
+		    try {
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+			    int gen_param_count = LuaAPI.lua_gettop(L);
+			Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
+                System.Action gen_delegate = translator.GetDelegate<System.Action>(L, 3);
+                if (gen_delegate == null) {
+                    return LuaAPI.luaL_error(L, "#3 need System.Action!");
+                }
+				
+				if (gen_param_count == 3)
+				{
+					
+					if (LuaAPI.xlua_is_eq_str(L, 2, "+")) {
+						gen_to_be_invoked.assistTimeRefresh += gen_delegate;
+						return 0;
+					} 
+					
+					
+					if (LuaAPI.xlua_is_eq_str(L, 2, "-")) {
+						gen_to_be_invoked.assistTimeRefresh -= gen_delegate;
+						return 0;
+					} 
+					
+				}
+			} catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+			LuaAPI.luaL_error(L, "invalid arguments to Snxxz.UI.JadeDynastyBossModel.assistTimeRefresh!");
+            return 0;
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _e_jadeDynastyScoreRefresh(RealStatePtr L)
+        {
+		    try {
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+			    int gen_param_count = LuaAPI.lua_gettop(L);
+			Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
+                System.Action gen_delegate = translator.GetDelegate<System.Action>(L, 3);
+                if (gen_delegate == null) {
+                    return LuaAPI.luaL_error(L, "#3 need System.Action!");
+                }
+				
+				if (gen_param_count == 3)
+				{
+					
+					if (LuaAPI.xlua_is_eq_str(L, 2, "+")) {
+						gen_to_be_invoked.jadeDynastyScoreRefresh += gen_delegate;
+						return 0;
+					} 
+					
+					
+					if (LuaAPI.xlua_is_eq_str(L, 2, "-")) {
+						gen_to_be_invoked.jadeDynastyScoreRefresh -= gen_delegate;
+						return 0;
+					} 
+					
+				}
+			} catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+			LuaAPI.luaL_error(L, "invalid arguments to Snxxz.UI.JadeDynastyBossModel.jadeDynastyScoreRefresh!");
+            return 0;
+        }
+        
+		
+		
+    }
+}
diff --git a/Lua/Gen/SnxxzUIJadeDynastyBossModelWrap.cs.meta b/Lua/Gen/SnxxzUIJadeDynastyBossModelWrap.cs.meta
new file mode 100644
index 0000000..9acd3b3
--- /dev/null
+++ b/Lua/Gen/SnxxzUIJadeDynastyBossModelWrap.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 616fcc3468a518d44a9db93cbe4cef28
+timeCreated: 1548068355
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Lua/Gen/XLuaGenAutoRegister.cs b/Lua/Gen/XLuaGenAutoRegister.cs
index 26baf1c..3337d04 100644
--- a/Lua/Gen/XLuaGenAutoRegister.cs
+++ b/Lua/Gen/XLuaGenAutoRegister.cs
@@ -302,6 +302,9 @@
             translator.DelayWrapLoader(typeof(SelectEquipModel), SelectEquipModelWrap.__Register);
         
         
+            translator.DelayWrapLoader(typeof(CrossServerUtility), CrossServerUtilityWrap.__Register);
+        
+        
             translator.DelayWrapLoader(typeof(Snxxz.UI.CrossServerBossModel), SnxxzUICrossServerBossModelWrap.__Register);
         
         
@@ -328,13 +331,13 @@
         
             translator.DelayWrapLoader(typeof(Snxxz.UI.DogzModel), SnxxzUIDogzModelWrap.__Register);
         
-        
-            translator.DelayWrapLoader(typeof(Snxxz.UI.DogzPackModel), SnxxzUIDogzPackModelWrap.__Register);
-        
         }
         
         static void wrapInit2(LuaEnv luaenv, ObjectTranslator translator)
         {
+        
+            translator.DelayWrapLoader(typeof(Snxxz.UI.DogzPackModel), SnxxzUIDogzPackModelWrap.__Register);
+        
         
             translator.DelayWrapLoader(typeof(Snxxz.UI.DogzDungeonModel), SnxxzUIDogzDungeonModelWrap.__Register);
         
@@ -447,6 +450,9 @@
             translator.DelayWrapLoader(typeof(HttpRequest), HttpRequestWrap.__Register);
         
         
+            translator.DelayWrapLoader(typeof(Snxxz.UI.JadeDynastyBossModel), SnxxzUIJadeDynastyBossModelWrap.__Register);
+        
+        
             translator.DelayWrapLoader(typeof(Snxxz.UI.FBHelpPointExchageModel), SnxxzUIFBHelpPointExchageModelWrap.__Register);
         
         
@@ -482,16 +488,16 @@
         
             translator.DelayWrapLoader(typeof(KnapSackEventMgr), KnapSackEventMgrWrap.__Register);
         
+        }
+        
+        static void wrapInit3(LuaEnv luaenv, ObjectTranslator translator)
+        {
         
             translator.DelayWrapLoader(typeof(Snxxz.UI.LoginModel), SnxxzUILoginModelWrap.__Register);
         
         
             translator.DelayWrapLoader(typeof(ServerListCenter), ServerListCenterWrap.__Register);
         
-        }
-        
-        static void wrapInit3(LuaEnv luaenv, ObjectTranslator translator)
-        {
         
             translator.DelayWrapLoader(typeof(Snxxz.UI.LoginAdModel), SnxxzUILoginAdModelWrap.__Register);
         
@@ -639,16 +645,16 @@
         
             translator.DelayWrapLoader(typeof(Snxxz.UI.RuneTowerModel), SnxxzUIRuneTowerModelWrap.__Register);
         
+        }
+        
+        static void wrapInit4(LuaEnv luaenv, ObjectTranslator translator)
+        {
         
             translator.DelayWrapLoader(typeof(QuickSetting), QuickSettingWrap.__Register);
         
         
             translator.DelayWrapLoader(typeof(Snxxz.UI.SkillModel), SnxxzUISkillModelWrap.__Register);
         
-        }
-        
-        static void wrapInit4(LuaEnv luaenv, ObjectTranslator translator)
-        {
         
             translator.DelayWrapLoader(typeof(Snxxz.UI.TalentModel), SnxxzUITalentModelWrap.__Register);
         
@@ -796,16 +802,16 @@
         
             translator.DelayWrapLoader(typeof(Snxxz.UI.WindowCenter), SnxxzUIWindowCenterWrap.__Register);
         
+        }
+        
+        static void wrapInit5(LuaEnv luaenv, ObjectTranslator translator)
+        {
         
             translator.DelayWrapLoader(typeof(WindowJumpMgr), WindowJumpMgrWrap.__Register);
         
         
             translator.DelayWrapLoader(typeof(Snxxz.UI.MapModel), SnxxzUIMapModelWrap.__Register);
         
-        }
-        
-        static void wrapInit5(LuaEnv luaenv, ObjectTranslator translator)
-        {
         
             translator.DelayWrapLoader(typeof(WorldMapSkip), WorldMapSkipWrap.__Register);
         
diff --git a/Lua/Gen/link.xml b/Lua/Gen/link.xml
index 82e25d5..1241ca4 100644
--- a/Lua/Gen/link.xml
+++ b/Lua/Gen/link.xml
@@ -74,6 +74,7 @@
 		<type fullname="VersionUtility" preserve="all"/>
 		<type fullname="ComposeWinModel" preserve="all"/>
 		<type fullname="SelectEquipModel" preserve="all"/>
+		<type fullname="CrossServerUtility" preserve="all"/>
 		<type fullname="Snxxz.UI.CrossServerBossModel" preserve="all"/>
 		<type fullname="Snxxz.UI.CrossServerOneVsOneModel" preserve="all"/>
 		<type fullname="Item_Class" preserve="all"/>
@@ -121,6 +122,7 @@
 		<type fullname="Snxxz.UI.HeavenBattleInfo" preserve="all"/>
 		<type fullname="HeavenBattleModel" preserve="all"/>
 		<type fullname="HttpRequest" preserve="all"/>
+		<type fullname="Snxxz.UI.JadeDynastyBossModel" preserve="all"/>
 		<type fullname="Snxxz.UI.FBHelpPointExchageModel" preserve="all"/>
 		<type fullname="Snxxz.UI.KnapsackTimeCDMgr" preserve="all"/>
 		<type fullname="Snxxz.UI.BoxGetItemModel" preserve="all"/>
diff --git a/System/DailyQuest/DailyQuestWin.cs b/System/DailyQuest/DailyQuestWin.cs
index 1fd50fd..85a154c 100644
--- a/System/DailyQuest/DailyQuestWin.cs
+++ b/System/DailyQuest/DailyQuestWin.cs
@@ -315,6 +315,10 @@
                     WindowCenter.Instance.CloseImmediately<DailyQuestWin>();
                     WindowCenter.Instance.Open<CrossServerWin>();
                     break;
+                case DailyQuestType.JadeDynastyBoss:
+                    WindowCenter.Instance.CloseImmediately<DailyQuestWin>();
+                    WindowCenter.Instance.Open<LootPreciousFrameWin>(false, 3);
+                    break;
                 default:
                     CSharpCallLua.GotoLuaDailyQuest(_id);
                     break;
diff --git a/System/Dungeon/DungeonBuyTimesWin.cs b/System/Dungeon/DungeonBuyTimesWin.cs
index 08656e9..b741970 100644
--- a/System/Dungeon/DungeonBuyTimesWin.cs
+++ b/System/Dungeon/DungeonBuyTimesWin.cs
@@ -188,6 +188,24 @@
                     return false;
                 }
             }
+            else if (JadeDynastyBossModel.JADEDYNASTY_MAP == model.currentDungeon.mapId)
+            {
+                var _totalTimes = model.GetTotalTimes(JadeDynastyBossModel.JADEDYNASTY_MAP);
+                var _enterTimes = model.GetEnterTimes(JadeDynastyBossModel.JADEDYNASTY_MAP);
+                var jadeDynastyBossModel = ModelCenter.Instance.GetModel<JadeDynastyBossModel>();
+                if ((_totalTimes - _enterTimes) >= jadeDynastyBossModel.challengeLimitCount)
+                {
+                    MessageWin.Inst.ShowFixedTip(Language.Get("DemonJar18"));
+                    return false;
+                }
+                var mapId = PlayerDatas.Instance.baseData.MapID;
+                var dataMapId = model.GetDataMapIdByMapId(mapId);
+                if (dataMapId == JadeDynastyBossModel.JADEDYNASTY_MAP)
+                {
+                    SysNotifyMgr.Instance.ShowTip("JadeDynastyBossBuyTimesError");
+                    return false;
+                }
+            }
             return true;
         }
 
diff --git a/System/Dungeon/DungeonFightWin.cs b/System/Dungeon/DungeonFightWin.cs
index 9dd333d..1f26587 100644
--- a/System/Dungeon/DungeonFightWin.cs
+++ b/System/Dungeon/DungeonFightWin.cs
@@ -106,6 +106,9 @@
                 case GatherSoulDungeonModel.DUNGEON_MAPID:
                     m_GatherSoulDungeonBehaviour.Display(this);
                     break;
+                case JadeDynastyBossModel.JADEDYNASTY_MAP:
+                    m_Inspire.gameObject.SetActive(true);
+                    break;
                 default:
                     break;
             }
diff --git a/System/Dungeon/DungeonInspireBehaviour.cs b/System/Dungeon/DungeonInspireBehaviour.cs
index 72de598..33ca3b0 100644
--- a/System/Dungeon/DungeonInspireBehaviour.cs
+++ b/System/Dungeon/DungeonInspireBehaviour.cs
@@ -53,7 +53,8 @@
             }
             switch (mapId)
             {
-                case 52010:
+                case DemonJarModel.DEMONJAR_MAPID:
+                case JadeDynastyBossModel.JADEDYNASTY_MAP:
                     m_Icon.SetSprite("W_XYGuwu_a2");
                     break;
                 default:
@@ -71,7 +72,7 @@
                 && level < model.GetInspireMaxCount(mapId);
             if (m_InspireProgress != null)
             {
-                m_InspireProgress.gameObject.SetActive(PlayerDatas.Instance.baseData.MapID == DemonJarModel.DEMONJAR_MAPID);
+                m_InspireProgress.gameObject.SetActive(IsRequireDisplayProgress());
                 m_InspireProgress.text = StringUtility.Contact(level * model.GetDungeonInspireUpper(mapId), "%");
             }
             if (!m_Waggle)
@@ -103,6 +104,12 @@
             }
         }
 
+        private bool IsRequireDisplayProgress()
+        {
+            return PlayerDatas.Instance.baseData.MapID == DemonJarModel.DEMONJAR_MAPID
+                || PlayerDatas.Instance.baseData.MapID == JadeDynastyBossModel.JADEDYNASTY_MAP;
+        }
+
         private void ResetTween()
         {
             m_Time = 0;
diff --git a/System/Dungeon/DungeonModel.cs b/System/Dungeon/DungeonModel.cs
index 3adb88f..3292a63 100644
--- a/System/Dungeon/DungeonModel.cs
+++ b/System/Dungeon/DungeonModel.cs
@@ -840,6 +840,12 @@
                         WindowCenter.Instance.Open<DemonJarDamageRankWin>();
                     }
                     break;
+                case JadeDynastyBossModel.JADEDYNASTY_MAP:
+                    if (!WindowCenter.Instance.IsOpen<JadeDynastyDamageRankWin>())
+                    {
+                        WindowCenter.Instance.Open<JadeDynastyDamageRankWin>();
+                    }
+                    break;
                 case TreasureModel.TREASURE_MAPID:
                     break;
                 case HeavenBattleModel.HEAVEBATTLE_MAPID:
@@ -900,6 +906,12 @@
                     if (!WindowCenter.Instance.IsOpen<DemonJarDamageRankWin>())
                     {
                         WindowCenter.Instance.Open<DemonJarDamageRankWin>();
+                    }
+                    break;
+                case JadeDynastyBossModel.JADEDYNASTY_MAP:
+                    if (!WindowCenter.Instance.IsOpen<JadeDynastyDamageRankWin>())
+                    {
+                        WindowCenter.Instance.Open<JadeDynastyDamageRankWin>();
                     }
                     break;
             }
@@ -990,6 +1002,9 @@
                                 demonJarModel.autoChallengeBoss = 0;
                             }
                             break;
+                        case JadeDynastyBossModel.JADEDYNASTY_MAP:
+                            WindowCenter.Instance.Open<JadeDynastyBossVictoryWin>();
+                            break;
                         case FairyLeagueModel.FAIRY_LEAGUE_DUNGEON:
                         case 31160:
                             break;
diff --git a/System/Dungeon/DungeonRankBehaviour.cs b/System/Dungeon/DungeonRankBehaviour.cs
index 7194a65..e40a51b 100644
--- a/System/Dungeon/DungeonRankBehaviour.cs
+++ b/System/Dungeon/DungeonRankBehaviour.cs
@@ -40,10 +40,11 @@
             {
                 case 31170:
                 case DemonJarModel.DEMONJAR_MAPID:
+                case JadeDynastyBossModel.JADEDYNASTY_MAP:
                     {
+                        int i = 0;
                         if (model.mission.hurtInfo != null && model.mission.hurtInfo.Length > 0)
                         {
-                            int i = 0;
                             for (i = 0; i < model.mission.hurtInfo.Length; i++)
                             {
                                 var rank = model.mission.hurtInfo[i].rank;
@@ -61,12 +62,12 @@
                                     SetMineInfo(rank, model.mission.hurtInfo[i].totalHurt);
                                 }
                             }
-                            while (i < playerNameTexts.Count)
-                            {
-                                playerNameTexts[i].text = string.Empty;
-                                valueTexts[i].text = string.Empty;
-                                i++;
-                            }
+                        }
+                        while (i < playerNameTexts.Count)
+                        {
+                            playerNameTexts[i].text = string.Empty;
+                            valueTexts[i].text = string.Empty;
+                            i++;
                         }
                     }
                     break;
diff --git a/System/Dungeon/TargetBriefInfoWin.cs b/System/Dungeon/TargetBriefInfoWin.cs
index 878cb22..bb3246a 100644
--- a/System/Dungeon/TargetBriefInfoWin.cs
+++ b/System/Dungeon/TargetBriefInfoWin.cs
@@ -34,7 +34,8 @@
 
         var mapId = PlayerDatas.Instance.baseData.MapID;
         var dataMapId = ModelCenter.Instance.GetModel<DungeonModel>().GetDataMapIdByMapId(mapId);
-        if (dataMapId == DemonJarModel.DEMONJAR_MAPID)
+        if (dataMapId == DemonJarModel.DEMONJAR_MAPID
+            || dataMapId == JadeDynastyBossModel.JADEDYNASTY_MAP)
         {
             if (_show)
             {
@@ -77,7 +78,8 @@
 
         var mapId = PlayerDatas.Instance.baseData.MapID;
         var dataMapId = ModelCenter.Instance.GetModel<DungeonModel>().GetDataMapIdByMapId(mapId);
-        if (dataMapId == DemonJarModel.DEMONJAR_MAPID)
+        if (dataMapId == DemonJarModel.DEMONJAR_MAPID
+            || dataMapId == JadeDynastyBossModel.JADEDYNASTY_MAP)
         {
             DemonJarBossLifeBarWin win;
             if (!WindowCenter.Instance.IsOpen<DemonJarBossLifeBarWin>())
diff --git a/System/FindPrecious/FindPreciousBossRebornBehaviour.cs b/System/FindPrecious/FindPreciousBossRebornBehaviour.cs
index e8175de..a144adf 100644
--- a/System/FindPrecious/FindPreciousBossRebornBehaviour.cs
+++ b/System/FindPrecious/FindPreciousBossRebornBehaviour.cs
@@ -130,6 +130,9 @@
                 case FindPreciousType.CrossServerBoss:
                     GotoKillCrossServerBoss(bossId);
                     break;
+                case FindPreciousType.JadeDynastyBoss:
+                    GotoKillStrangleGodBoss(bossId);
+                    break;
             }
 
             ReportConfirmBossRebornNotify();
@@ -334,6 +337,24 @@
             }
         }
 
+        private void GotoKillStrangleGodBoss(int _bossId)
+        {
+            var mapId = PlayerDatas.Instance.baseData.MapID;
+            var mapConfig = Config.Instance.Get<MapConfig>(mapId);
+
+            if (mapConfig.MapFBType == (int)MapType.OpenCountry)
+            {
+                WindowCenter.Instance.Close<MainInterfaceWin>();
+                var jadeDynastyBossModel = ModelCenter.Instance.GetModel<JadeDynastyBossModel>();
+                jadeDynastyBossModel.assginSelectBossId = _bossId;
+                WindowCenter.Instance.Open<LootPreciousFrameWin>(false, 3);
+            }
+            else
+            {
+                SysNotifyMgr.Instance.ShowTip("InDungeon_CantGo");
+            }
+        }
+
         private void EnterBossHome(int _floor, int _bossId)
         {
             var error = 0;
diff --git a/System/FindPrecious/FindPreciousModel.cs b/System/FindPrecious/FindPreciousModel.cs
index 32673ee..7b3d22e 100644
--- a/System/FindPrecious/FindPreciousModel.cs
+++ b/System/FindPrecious/FindPreciousModel.cs
@@ -56,6 +56,7 @@
         BossHomeModel bossHomeModel { get { return ModelCenter.Instance.GetModel<BossHomeModel>(); } }
         PersonalBossModel personalBossModel { get { return ModelCenter.Instance.GetModel<PersonalBossModel>(); } }
         DogzDungeonModel dogzDungeonModel { get { return ModelCenter.Instance.GetModel<DogzDungeonModel>(); } }
+        JadeDynastyBossModel jadeDynastyBossModel { get { return ModelCenter.Instance.GetModel<JadeDynastyBossModel>(); } }
 
         public override void Init()
         {
@@ -431,11 +432,13 @@
             }
 
             if (_redpointId == DemonJarModel.DEMONJAR_REDPOINTID ||
-                _redpointId == DogzDungeonModel.DOGZDUNGEON_REDPOINT)
+                _redpointId == DogzDungeonModel.DOGZDUNGEON_REDPOINT ||
+                _redpointId == JadeDynastyBossModel.JADEDYNASTY_REDPOINTID)
             {
                 var demonJarRedpointCount = demonJarModel.redpoint.count;
                 var dogzDungeonRedpointCount = dogzDungeonModel.redpoint.count;
-                var totalCount = demonJarRedpointCount + dogzDungeonRedpointCount;
+                var jadeDynastyBossRedpointCount = jadeDynastyBossModel.redpoint.count;
+                var totalCount = demonJarRedpointCount + dogzDungeonRedpointCount + jadeDynastyBossRedpointCount;
 
                 lootPreciousRedpoint.count = totalCount;
                 lootPreciousRedpoint.state = totalCount > 0 ? RedPointState.Quantity : RedPointState.None;
@@ -472,7 +475,10 @@
             {
                 return FindPreciousType.CrossServerBoss;
             }
-
+            else if (jadeDynastyBossModel.IsJadeDynastyBoss(_bossId))
+            {
+                return FindPreciousType.JadeDynastyBoss;
+            }
             return FindPreciousType.None;
         }
 
diff --git a/System/FindPrecious/LootPreciousFrameWin.cs b/System/FindPrecious/LootPreciousFrameWin.cs
index 9da0eab..6bd5388 100644
--- a/System/FindPrecious/LootPreciousFrameWin.cs
+++ b/System/FindPrecious/LootPreciousFrameWin.cs
@@ -17,6 +17,7 @@
         [SerializeField] FunctionButton m_DemonJar;
         [SerializeField] FunctionButton m_FairyGrabBoss;
         [SerializeField] FunctionButton m_DogzDungeon;
+        [SerializeField] FunctionButton m_JadeDynastyBoss;
 
         [SerializeField] Button m_Left;
         [SerializeField] Button m_Right;
@@ -32,11 +33,12 @@
             m_DemonJar.AddListener(ShowDemonJar);
             m_DogzDungeon.AddListener(ShowDogzDungeon);
             m_FairyGrabBoss.AddListener(FairyGrabBoss);
+            m_JadeDynastyBoss.AddListener(JadeDynastyBoss);
             m_Left.AddListener(ShowLastFunction);
             m_Right.AddListener(ShowNextFunction);
             m_Close.AddListener(CloseClick);
-        }
-
+        }
+
         protected override void OnPreOpen()
         {
         }
@@ -91,6 +93,13 @@
             functionOrder = m_DogzDungeon.order;
         }
 
+        private void JadeDynastyBoss()
+        {
+            CloseSubWindows();
+            WindowCenter.Instance.Open<JadeDynastyBossWin>();
+            functionOrder = m_JadeDynastyBoss.order;
+        }
+
         private void CloseSubWindows()
         {
             var children = WindowConfig.Get().FindChildWindows("LootPreciousFrameWin");
diff --git a/System/JadeDynastyBoss.meta b/System/JadeDynastyBoss.meta
new file mode 100644
index 0000000..a484e37
--- /dev/null
+++ b/System/JadeDynastyBoss.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: be9e87f41339d644c98549ba020a54a0
+folderAsset: yes
+timeCreated: 1547717228
+licenseType: Pro
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/JadeDynastyBoss/JadeDynastyBossBehaviour.cs b/System/JadeDynastyBoss/JadeDynastyBossBehaviour.cs
new file mode 100644
index 0000000..79066e19
--- /dev/null
+++ b/System/JadeDynastyBoss/JadeDynastyBossBehaviour.cs
@@ -0,0 +1,178 @@
+锘縰sing System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+using TableConfig;
+namespace Snxxz.UI
+{
+    [XLua.Hotfix]
+    public class JadeDynastyBossBehaviour : FindPreciousBossBriefInfoBehaviour
+    {
+        [SerializeField] Transform m_ContainerChallengeable;
+        [SerializeField] Transform m_ContainerUnChanllgeable;
+        [SerializeField] Text m_ChallengeCondition;
+        [SerializeField] Transform m_ContainerAttention;
+        [SerializeField] Text m_Participant;
+
+        JadeDynastyBossModel model
+        {
+            get { return ModelCenter.Instance.GetModel<JadeDynastyBossModel>(); }
+        }
+
+        public int bossNpcId { get; private set; }
+
+        protected override int selectedBossId
+        {
+            get { return model.selectBossId; }
+            set { model.selectBossId = value; }
+        }
+
+        protected override InteractorableState interactorableState
+        {
+            get
+            {
+                var selected = selectedBossId == bossId;
+                var condition = 0;
+                var dieOrLocked = !model.IsBossUnLocked(bossId, out condition) || !findPreciousModel.IsBossAlive(bossId);
+
+                if (!dieOrLocked)
+                {
+                    return selected ? InteractorableState.NormalSelected : InteractorableState.NormalUnSelected;
+                }
+                else
+                {
+                    return selected ? InteractorableState.DieOrLockedSelected : InteractorableState.DieOrLockedUnSelected;
+                }
+            }
+            set
+            {
+                base.interactorableState = value;
+            }
+        }
+
+        protected override bool isRebornRightNow
+        {
+            get
+            {
+                var condition = 0;
+                return model.IsBossUnLocked(bossId, out condition) && base.isRebornRightNow;
+            }
+        }
+
+        protected override bool isUnLocked
+        {
+            get
+            {
+                var condition = 0;
+                return model.IsBossUnLocked(bossId, out condition);
+            }
+        }
+
+        public override void Display(object _data)
+        {
+            base.Display(_data);
+            bossNpcId = (int)_data;
+
+            DisplayBase();
+            UpdateBossRebornCoolDown(isUnLocked);
+            UpdateBossPortrait(interactorableState);
+            UpdateBossNameLevelFont(interactorableState);
+            DisplayParticipant();
+            DisplayCondition();
+            DisplaySubscrib();
+
+            model.bossLineRefresh -= DisplayParticipant;
+            model.bossLineRefresh += DisplayParticipant;
+            model.selectBossRefresh -= SelectBossRefresh;
+            model.selectBossRefresh += SelectBossRefresh;
+            model.bossLineRefresh -= BossLineRefresh;
+            model.bossLineRefresh += BossLineRefresh;
+        }
+
+        public override void Dispose()
+        {
+            base.Dispose();
+
+            model.bossLineRefresh -= DisplayParticipant;
+            model.selectBossRefresh -= SelectBossRefresh;
+            model.bossLineRefresh -= BossLineRefresh;
+        }
+
+        protected override void OnSubscribe(int _bossId)
+        {
+            base.OnSubscribe(_bossId);
+            if (bossId != _bossId)
+            {
+                return;
+            }
+
+            DisplaySubscrib();
+        }
+
+        protected override void OnBossInfoUpdate(int _bossId)
+        {
+            base.OnBossInfoUpdate(_bossId);
+            var condition = 0;
+            var unLocked = model.IsBossUnLocked(bossId, out condition);
+            m_Participant.gameObject.SetActive(unLocked && findPreciousModel.IsBossAlive(bossId));
+        }
+
+        private void BossLineRefresh()
+        {
+            DisplayParticipant();
+        }
+
+        public void DisplayBase()
+        {
+            var config = Config.Instance.Get<NPCConfig>(bossNpcId);
+            var jadeDynastyBossConfig = Config.Instance.Get<JadeDynastyBossConfig>(bossNpcId);
+            DrawBossBaseInfo(jadeDynastyBossConfig.PortraitID, config.charName, config.NPCLV, config.ClientRealm);
+        }
+
+        private void DisplaySubscrib()
+        {
+            m_ContainerAttention.gameObject.SetActive(findPreciousModel.IsBossSubscribed(bossId));
+        }
+
+        private void DisplayParticipant()
+        {
+            m_Participant.gameObject.SetActive(isUnLocked && findPreciousModel.IsBossAlive(bossId));
+
+            m_Participant.text = Language.Get("FindPrecious_8", model.GetParticipantCount(bossId));
+        }
+
+        private void DisplayCondition()
+        {
+            m_ContainerUnChanllgeable.gameObject.SetActive(!isUnLocked);
+            m_ContainerChallengeable.gameObject.SetActive(isUnLocked);
+            var conditionCode = 0;
+            JadeDynastyBossCondition condition;
+            m_ChallengeCondition.text = string.Empty;
+            if (!model.IsBossUnLocked(bossId, out conditionCode)
+                && model.TryGetCondition(bossId, out condition))
+            {
+                switch (conditionCode)
+                {
+                    case 1:
+                        m_ChallengeCondition.text = Language.Get("JadeDynastyBossCondition1", condition.level);
+                        break;
+                    case 2:
+                        m_ChallengeCondition.text = Language.Get("JadeDynastyBossCondition2",
+                            UIHelper.GetRealmName(condition.realmLevel, true));
+                        break;
+                    case 3:
+                        m_ChallengeCondition.text = Language.Get("JadeDynastyBossCondition3",
+                            UIHelper.ReplaceLargeNum(condition.score));
+                        break;
+                }
+            }
+        }
+
+        private void SelectBossRefresh(int bossId)
+        {
+            UpdateBossNameLevelFont(interactorableState);
+        }
+    }
+}
+
diff --git a/System/JadeDynastyBoss/JadeDynastyBossBehaviour.cs.meta b/System/JadeDynastyBoss/JadeDynastyBossBehaviour.cs.meta
new file mode 100644
index 0000000..4e72f91
--- /dev/null
+++ b/System/JadeDynastyBoss/JadeDynastyBossBehaviour.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 2702bea692bcf804bae79ec04595d208
+timeCreated: 1547717475
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/JadeDynastyBoss/JadeDynastyBossKillRecord.cs b/System/JadeDynastyBoss/JadeDynastyBossKillRecord.cs
new file mode 100644
index 0000000..9047e8e
--- /dev/null
+++ b/System/JadeDynastyBoss/JadeDynastyBossKillRecord.cs
@@ -0,0 +1,22 @@
+锘縰sing System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace Snxxz.UI
+{
+    [XLua.Hotfix]
+    public class JadeDynastyBossKillRecord : MonoBehaviour
+    {
+        [SerializeField] Text m_KillTime;
+        [SerializeField] Text m_PlayerName;
+
+        public void Display(DateTime time, string playerName)
+        {
+            m_KillTime.text = time.ToString("hh:mm:ss");
+            m_PlayerName.text = UIHelper.ServerStringTrim(playerName);
+        }
+    }
+}
+
diff --git a/System/JadeDynastyBoss/JadeDynastyBossKillRecord.cs.meta b/System/JadeDynastyBoss/JadeDynastyBossKillRecord.cs.meta
new file mode 100644
index 0000000..e306eb0
--- /dev/null
+++ b/System/JadeDynastyBoss/JadeDynastyBossKillRecord.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: ee1187f4529637c48840fb84410ef1f7
+timeCreated: 1547809917
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/JadeDynastyBoss/JadeDynastyBossModel.cs b/System/JadeDynastyBoss/JadeDynastyBossModel.cs
new file mode 100644
index 0000000..7f80671
--- /dev/null
+++ b/System/JadeDynastyBoss/JadeDynastyBossModel.cs
@@ -0,0 +1,460 @@
+锘縰sing System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using TableConfig;
+using System;
+
+namespace Snxxz.UI
+{
+    [XLua.Hotfix]
+    [XLua.LuaCallCSharp]
+    public class JadeDynastyBossModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk, IAfterPlayerDataInitialize
+    {
+        List<JadeDynastyBossData> jadeDynastyBosses = new List<JadeDynastyBossData>();
+        Dictionary<int, JadeDynastyBossLine> jadeDynastyBossLineDict = new Dictionary<int, JadeDynastyBossLine>();
+        Dictionary<int, List<Item>> dropItemDict = new Dictionary<int, List<Item>>();
+
+        public const int JADEDYNASTY_MAP = 31380;
+        public const int FUNCTIONID = 163;
+        public const int JADEDYNASTY_REDPOINTID = 77003;
+
+        public event Action<int> selectBossRefresh;
+        public event Action bossLineRefresh;
+        public event Action assistTimeRefresh;
+        public event Action jadeDynastyScoreRefresh;
+
+        public ulong jadeDynastyScore
+        {
+            get
+            {
+                ulong score = 0;
+                SinglePackModel singlePackModel = packModel.GetSinglePackModel(PackType.rptJadeDynastyEquip);
+                if (singlePackModel != null)
+                {
+                    Dictionary<int, ItemModel> equipBodyDict = singlePackModel.GetPackModelIndexDict();
+                    if (equipBodyDict != null && equipBodyDict.Count > 0)
+                    {
+                        foreach (var _equip in equipBodyDict.Values)
+                        {
+                            score += (ulong)_equip.equipScore;
+                        }
+                    }
+                }
+                return score;
+            }
+        }
+
+        public int challengeLimitCount { get; private set; }
+        public int challengeTimes { get; private set; }
+        public int assistTimes { get; private set; }
+
+        int m_SelectBossId = 0;
+        public int selectBossId
+        {
+            get { return m_SelectBossId; }
+            set
+            {
+                if (m_SelectBossId != value)
+                {
+                    m_SelectBossId = value;
+                    if (selectBossRefresh != null)
+                    {
+                        selectBossRefresh(value);
+                    }
+                }
+            }
+        }
+
+        public int assginSelectBossId { get; set; }
+
+        public readonly Redpoint redpoint = new Redpoint(FindPreciousModel.LOOTPRECIOUs_REDPOINTID, JADEDYNASTY_REDPOINTID);
+
+        MapModel mapModel { get { return ModelCenter.Instance.GetModel<MapModel>(); } }
+        DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
+        FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
+        PlayerPackModel packModel { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
+        public override void Init()
+        {
+            ParseConfig();
+            dungeonModel.dungeonRecordChangeEvent += OnDungeonRecordUpdate;
+            dungeonModel.updateDungeonBuyCnt += OnDungeonBuyCount;
+            FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
+            packModel.RefreshItemCountAct += RefreshItemCountAct;
+        }
+
+        public void OnBeforePlayerDataInitialize()
+        {
+            jadeDynastyBossLineDict.Clear();
+            challengeTimes = 0;
+            assistTimes = 0;
+        }
+
+        public void OnAfterPlayerDataInitialize()
+        {
+        }
+
+        public void OnPlayerLoginOk()
+        {
+            UpdateRedpoint();
+        }
+
+        public override void UnInit()
+        {
+            dungeonModel.dungeonRecordChangeEvent -= OnDungeonRecordUpdate;
+            dungeonModel.updateDungeonBuyCnt -= OnDungeonBuyCount;
+            FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
+            packModel.RefreshItemCountAct -= RefreshItemCountAct;
+        }
+
+        void ParseConfig()
+        {
+            {
+                var configs = Config.Instance.GetAllValues<JadeDynastyBossConfig>();
+                foreach (var config in configs)
+                {
+                    var dungeonId = dungeonModel.GetDungeonId(JADEDYNASTY_MAP, config.LineID);
+                    var dungeonConfig = Config.Instance.Get<DungeonConfig>(dungeonId);
+                    jadeDynastyBosses.Add(new JadeDynastyBossData()
+                    {
+                        bossNpcId = config.NPCID,
+                        lineId = config.LineID,
+                        challengeCondition = new JadeDynastyBossCondition()
+                        {
+                            level = dungeonConfig.LVLimitMin,
+                            realmLevel = config.RealmLV,
+                            score = config.ZhuXianScore,
+                        },
+                    });
+
+                    var itemArray = LitJson.JsonMapper.ToObject<int[][]>(config.dropItems);
+                    List<Item> list = new List<Item>();
+                    for (int k = 0; k < itemArray.Length; k++)
+                    {
+                        Item item = new Item()
+                        {
+                            id = itemArray[k][0],
+                            count = itemArray[k][1],
+                            bind = itemArray[k][2] == 1,
+                        };
+                        list.Add(item);
+                    }
+                    dropItemDict.Add(config.NPCID, list);
+                }
+
+                jadeDynastyBosses.Sort(SortCompare);
+            }
+
+            {
+                var config = Config.Instance.Get<FuncConfigConfig>("ZhuXianBossCntCfg");
+                challengeLimitCount = int.Parse(config.Numerical2);
+            }
+        }
+
+        public bool IsJadeDynastyBoss(int bossNpcId)
+        {
+            var index = jadeDynastyBosses.FindIndex((x) =>
+            {
+                return x.bossNpcId == bossNpcId;
+            });
+            return index >= 0;
+        }
+
+        public bool IsBossUnLocked(int bossNpcId, out int condition)
+        {
+            condition = 0;
+            var index = jadeDynastyBosses.FindIndex((x) =>
+            {
+                return x.bossNpcId == bossNpcId;
+            });
+            if (index != -1)
+            {
+                var challengeCondition = jadeDynastyBosses[index].challengeCondition;
+                if (PlayerDatas.Instance.baseData.LV < challengeCondition.level)
+                {
+                    condition = 1;
+                    return false;
+                }
+                if (PlayerDatas.Instance.baseData.realmLevel < challengeCondition.realmLevel)
+                {
+                    condition = 2;
+                    return false;
+                }
+                if (jadeDynastyScore < (ulong)challengeCondition.score)
+                {
+                    condition = 3;
+                    return false;
+                }
+            }
+            return true;
+        }
+
+        public List<int> GetJadeDynastyBosses()
+        {
+            List<int> list = new List<int>();
+            foreach (var boss in jadeDynastyBosses)
+            {
+                list.Add(boss.bossNpcId);
+            }
+            return list;
+        }
+
+        public int GetParticipantCount(int bossId)
+        {
+            var index = jadeDynastyBosses.FindIndex((x) =>
+              {
+                  return x.bossNpcId == bossId;
+              });
+            var lineId = -1;
+            if (index != -1)
+            {
+                lineId = jadeDynastyBosses[index].lineId;
+            }
+            if (jadeDynastyBossLineDict.ContainsKey(lineId))
+            {
+                return jadeDynastyBossLineDict[lineId].playerCount;
+            }
+            return 0;
+        }
+
+        public int GetLatestUnLockBoss()
+        {
+            if (FuncOpen.Instance.IsFuncOpen(FUNCTIONID))
+            {
+                var latestBossId = jadeDynastyBosses[0].bossNpcId;
+                foreach (var boss in jadeDynastyBosses)
+                {
+                    var condition = 0;
+                    if (IsBossUnLocked(boss.bossNpcId, out condition))
+                    {
+                        latestBossId = boss.bossNpcId;
+                    }
+                }
+                return latestBossId;
+            }
+            else
+            {
+                return jadeDynastyBosses[0].bossNpcId;
+            }
+        }
+
+        public bool TryGetDropItems(int bossId, out List<Item> dropItems)
+        {
+            return dropItemDict.TryGetValue(bossId, out dropItems);
+        }
+
+        public bool TryGetCondition(int bossId, out JadeDynastyBossCondition condition)
+        {
+            var index = jadeDynastyBosses.FindIndex((x) =>
+            {
+                return x.bossNpcId == bossId;
+            });
+            condition = default(JadeDynastyBossCondition);
+            if (index != -1)
+            {
+                condition = jadeDynastyBosses[index].challengeCondition;
+            }
+            return index != -1;
+        }
+
+        public bool TryGetBossLine(int bossId, out JadeDynastyBossLine mapLineState)
+        {
+            var index = jadeDynastyBosses.FindIndex((x) =>
+            {
+                return x.bossNpcId == bossId;
+            });
+            var lineId = -1;
+            if (index != -1)
+            {
+                lineId = jadeDynastyBosses[index].lineId;
+            }
+            return jadeDynastyBossLineDict.TryGetValue(lineId, out mapLineState);
+        }
+
+        public bool TryEnterDungeon(int bossId,out int error)
+        {
+            var condition = 0;
+            error = 0;
+            if (!IsBossUnLocked(bossId, out condition))
+            {
+                switch (condition)
+                {
+                    case 1:
+                        error = 1;
+                        break;
+                    case 2:
+                        error = 2;
+                        break;
+                    case 3:
+                        error = 3;
+                        break;
+                }
+                return false;
+            }
+
+            var totalTimes = dungeonModel.GetTotalTimes(JADEDYNASTY_MAP);
+            var enterTimes = dungeonModel.GetEnterTimes(JADEDYNASTY_MAP);
+            if (enterTimes >= totalTimes && assistTimes <= 0)
+            {
+                error = 4;
+                return false;
+            }
+
+            if (!findPreciousModel.IsBossAlive(bossId))
+            {
+                error = 5;
+                return false;
+            }
+
+            if (CrossServerUtility.IsCrossServer())
+            {
+                error = 6;
+                return false;
+            }
+            return true;
+        }
+
+        public void DisplayErrorTip(int error)
+        {
+            switch (error)
+            {
+                case 1:
+                    SysNotifyMgr.Instance.ShowTip("TryEnterJadeDynastyBossError_1");
+                    break;
+                case 2:
+                    SysNotifyMgr.Instance.ShowTip("TryEnterJadeDynastyBossError_2");
+                    break;
+                case 3:
+                    SysNotifyMgr.Instance.ShowTip("TryEnterJadeDynastyBossError_3");
+                    break;
+                case 4:
+                    SysNotifyMgr.Instance.ShowTip("TryEnterJadeDynastyBossError_4");
+                    break;
+                case 5:
+                    SysNotifyMgr.Instance.ShowTip("TryEnterJadeDynastyBossError_5");
+                    break;
+                case 6:
+                    SysNotifyMgr.Instance.ShowTip("CrossMap10");
+                    break;
+            }
+        }
+
+        public void OnReceivePackage(HA007_tagGCFBLinePlayerCnt package)
+        {
+            if (package.MapID != JADEDYNASTY_MAP)
+            {
+                return;
+            }
+
+            jadeDynastyBossLineDict.Clear();
+            for (int i = 0; i < package.Count; i++)
+            {
+                var mapState = package.FBLineInfoList[i];
+                jadeDynastyBossLineDict[mapState.FBLineID] = new JadeDynastyBossLine()
+                {
+                    playerCount = mapState.PlayerCnt,
+                    belongToPlayerName = mapState.ExtraStr,
+                };
+            }
+
+            if (bossLineRefresh != null)
+            {
+                bossLineRefresh();
+            }
+        }
+
+        public void OnReceivePackage(HB212_tagMCZhuXianBossCnt package)
+        {
+            assistTimes = package.Cnt;
+            if (assistTimeRefresh != null)
+            {
+                assistTimeRefresh();
+            }
+        }
+
+        public static int SortCompare(JadeDynastyBossData lhs, JadeDynastyBossData rhs)
+        {
+            if (lhs.challengeCondition.level != rhs.challengeCondition.level)
+            {
+                return lhs.challengeCondition.level.CompareTo(rhs.challengeCondition.level);
+            }
+            if (lhs.challengeCondition.realmLevel != rhs.challengeCondition.realmLevel)
+            {
+                return lhs.challengeCondition.realmLevel.CompareTo(rhs.challengeCondition.realmLevel);
+            }
+            if (lhs.challengeCondition.score != rhs.challengeCondition.score)
+            {
+                return lhs.challengeCondition.score.CompareTo(rhs.challengeCondition.score);
+            }
+            return 0;
+        }
+
+        private void OnDungeonRecordUpdate(int _dataMapId)
+        {
+            if (JADEDYNASTY_MAP == _dataMapId)
+            {
+                UpdateRedpoint();
+            }
+        }
+
+        private void OnDungeonBuyCount()
+        {
+            UpdateRedpoint();
+        }
+
+        private void OnFuncStateChangeEvent(int id)
+        {
+            if (id == FUNCTIONID)
+            {
+                UpdateRedpoint();
+            }
+        }
+
+        private void RefreshItemCountAct(PackType packType, int arg2, int arg3)
+        {
+            if (packType == PackType.rptJadeDynastyEquip)
+            {
+                UpdateRedpoint();
+                if (jadeDynastyScoreRefresh != null)
+                {
+                    jadeDynastyScoreRefresh();
+                }
+            }
+        }
+
+        void UpdateRedpoint()
+        {
+            if (FuncOpen.Instance.IsFuncOpen(FUNCTIONID))
+            {
+                var count = dungeonModel.GetTotalTimes(JADEDYNASTY_MAP) - dungeonModel.GetEnterTimes(JADEDYNASTY_MAP);
+                redpoint.count = count;
+            }
+            else
+            {
+                redpoint.count = 0;
+            }
+
+            redpoint.state = redpoint.count > 0 ? RedPointState.Quantity : RedPointState.None;
+        }
+    }
+
+    public struct JadeDynastyBossData
+    {
+        public int bossNpcId;
+        public int lineId;
+        public JadeDynastyBossCondition challengeCondition;
+    }
+
+    public struct JadeDynastyBossCondition
+    {
+        public int level;
+        public int realmLevel;
+        public int score;
+    }
+
+    public struct JadeDynastyBossLine
+    {
+        public int playerCount;
+        public string belongToPlayerName;
+    }
+}
+
diff --git a/System/JadeDynastyBoss/JadeDynastyBossModel.cs.meta b/System/JadeDynastyBoss/JadeDynastyBossModel.cs.meta
new file mode 100644
index 0000000..4866d57
--- /dev/null
+++ b/System/JadeDynastyBoss/JadeDynastyBossModel.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: d06ff7d7549599a4aa5a8a0dfc1e69f5
+timeCreated: 1547717239
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/JadeDynastyBoss/JadeDynastyBossVictoryWin.cs b/System/JadeDynastyBoss/JadeDynastyBossVictoryWin.cs
new file mode 100644
index 0000000..671233d
--- /dev/null
+++ b/System/JadeDynastyBoss/JadeDynastyBossVictoryWin.cs
@@ -0,0 +1,252 @@
+锘�//--------------------------------------------------------
+//    [Author]:           绗簩涓栫晫
+//    [  Date ]:           Saturday, January 19, 2019
+//--------------------------------------------------------
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using TableConfig;
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace Snxxz.UI
+{
+    [XLua.Hotfix]
+    public class JadeDynastyBossVictoryWin : Window
+    {
+        [SerializeField] Transform m_ContainerPoivt;
+        [SerializeField] Transform m_ContainerKill;
+        [SerializeField] Text m_Rank;
+        [SerializeField] Transform m_ContainerAssist;
+        [SerializeField] Text m_AssistRank;
+        [SerializeField] ScrollRect m_RewardsScroll;
+        [SerializeField] Text m_ExitTimer;
+        [SerializeField] HorizontalLayoutGroup m_RewardLayout;
+        [SerializeField] ButtonEx m_Exit;
+
+        float timer = 0f;
+        List<DemonJarRewardBehaviour> rewardBehaviours = new List<DemonJarRewardBehaviour>();
+        DungeonModel model { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
+        JadeDynastyBossModel jadeDynastyModel { get { return ModelCenter.Instance.GetModel<JadeDynastyBossModel>(); } }
+        #region Built-in
+        protected override void BindController()
+        {
+        }
+
+        protected override void AddListeners()
+        {
+            m_Exit.AddListener(ExitDungeon);
+        }
+
+        protected override void OnPreOpen()
+        {
+            timer = 0f;
+            m_ContainerPoivt.gameObject.SetActive(false);
+        }
+
+        protected override void OnActived()
+        {
+            base.OnActived();
+            var config = Config.Instance.Get<DungeonOpenTimeConfig>(model.dungeonResult.dataMapID);
+            StartCoroutine(Co_DelayDisplay(config.DelayTime * 0.001f));
+        }
+
+        protected override void OnAfterOpen()
+        {
+        }
+
+        protected override void OnPreClose()
+        {
+        }
+
+        protected override void OnAfterClose()
+        {
+        }
+
+        protected override void LateUpdate()
+        {
+            base.LateUpdate();
+
+            var endTime = model.GetCoolDownEndTime(DungeonCoolDownType.LeaveMap);
+            if (endTime > TimeUtility.ServerNow)
+            {
+                timer -= Time.deltaTime;
+                if (timer < 0f)
+                {
+                    timer = 1f;
+                    var seconds = (endTime - TimeUtility.ServerNow).TotalSeconds;
+                    m_ExitTimer.text = Language.Get("DungeonVictoryWin_Btn_Exit_1", Mathf.Clamp((int)seconds, 0, int.MaxValue));
+                }
+
+                if (!m_ExitTimer.gameObject.activeInHierarchy)
+                {
+                    m_ExitTimer.gameObject.SetActive(true);
+                }
+            }
+            else
+            {
+                if (m_ExitTimer.gameObject.activeInHierarchy)
+                {
+                    m_ExitTimer.gameObject.SetActive(false);
+                }
+            }
+        }
+        #endregion
+        IEnumerator Co_DelayDisplay(float _delay)
+        {
+            yield return new WaitForSeconds(_delay);
+
+            var endTime = model.GetCoolDownEndTime(DungeonCoolDownType.LeaveMap);
+            var seconds = (endTime - TimeUtility.ServerNow).TotalSeconds;
+            timer = 0f;
+            m_ExitTimer.text = Language.Get("DungeonVictoryWin_Btn_Exit_1", Mathf.Clamp((int)seconds, 0, int.MaxValue));
+            m_ExitTimer.gameObject.SetActive(true);
+            m_ContainerPoivt.gameObject.SetActive(true);
+
+            DisplayRewards();
+
+            var rank = model.dungeonResult.rank;
+            m_ContainerAssist.gameObject.SetActive(rank != 1);
+            m_ContainerKill.gameObject.SetActive(rank == 1);
+            if (rank == 1)
+            {
+                DisplayKill();
+            }
+            else
+            {
+                DisplayAssist();
+            }
+        }
+
+        private void DisplayKill()
+        {
+            m_Rank.text = Language.Get("DemonJar7", 1);
+        }
+
+        private void DisplayAssist()
+        {
+            m_AssistRank.text = Language.Get("DemonJar7", 1);
+        }
+
+        private void DisplayRewards()
+        {
+            var serverItems = model.dungeonResult.itemInfo;
+            var items = new List<Item>();
+
+            if (serverItems != null)
+            {
+                for (int i = 0; i < serverItems.Length; i++)
+                {
+                    items.Add(new Item(serverItems[i].ItemID, serverItems[i].Count));
+                }
+            }
+
+
+            items.Sort(RewardSort);
+
+            GenerateRewardBehaviour(m_RewardsScroll.content, items.Count);
+
+            if (items.Count < 6)
+            {
+                m_RewardLayout.childAlignment = TextAnchor.MiddleCenter;
+                (m_RewardLayout.transform as RectTransform).pivot = new Vector2(0.5f, 0.5f);
+            }
+            else
+            {
+                m_RewardLayout.childAlignment = TextAnchor.MiddleLeft;
+                (m_RewardLayout.transform as RectTransform).pivot = new Vector2(0, 0.5f);
+            }
+
+            for (int i = 0; i < rewardBehaviours.Count; i++)
+            {
+                var behaviour = rewardBehaviours[i];
+                if (i < items.Count)
+                {
+                    behaviour.gameObject.SetActive(true);
+                    behaviour.Display(items[i]);
+                }
+                else
+                {
+                    behaviour.gameObject.SetActive(false);
+                }
+            }
+        }
+
+        private void ExitDungeon()
+        {
+            model.ExitCurrentDungeon();
+        }
+
+        private int RewardSort(Item _lhs, Item _rhs)
+        {
+            var islhsJadeDynastyEquip = IsJadeDynastyEquip(_lhs);
+            var isrhsJadeDynastyEquip = IsJadeDynastyEquip(_rhs);
+            if (islhsJadeDynastyEquip != isrhsJadeDynastyEquip)
+            {
+                return -islhsJadeDynastyEquip.CompareTo(isrhsJadeDynastyEquip);
+            }
+            var islhsJadeDynasty126 = IsJadeDynasty126(_lhs);
+            var isrhsJadeDynasty126 = IsJadeDynasty126(_rhs);
+            if (islhsJadeDynasty126 == isrhsJadeDynasty126
+                && islhsJadeDynasty126)
+            {
+                return _lhs.id.CompareTo(_rhs.id);
+            }
+            else if (islhsJadeDynasty126 != isrhsJadeDynasty126)
+            {
+                return -islhsJadeDynasty126.CompareTo(isrhsJadeDynasty126);
+            }
+            var lhsConfig = Config.Instance.Get<ItemConfig>(_lhs.id);
+            var rhsConfig = Config.Instance.Get<ItemConfig>(_rhs.id);
+            if (lhsConfig != null && rhsConfig != null)
+            {
+                return -lhsConfig.ItemColor.CompareTo(rhsConfig.ItemColor);
+            }
+            return 0;
+        }
+
+        bool IsJadeDynastyEquip(Item item)
+        {
+            var config = Config.Instance.Get<ItemConfig>(item.id);
+            var type = 0;
+            if (config != null)
+            {
+                type = config.Type;
+            }
+            return type >= 128 && type <= 137;
+        }
+
+        bool IsJadeDynasty126(Item item)
+        {
+            var config = Config.Instance.Get<ItemConfig>(item.id);
+            var type = 0;
+            if (config != null)
+            {
+                type = config.Type;
+            }
+            return type == 126;
+        }
+
+        private void GenerateRewardBehaviour(RectTransform _parent, int _needCount)
+        {
+            var nowCount = rewardBehaviours.Count;
+            var dif = _needCount - nowCount;
+            if (dif > 0)
+            {
+                for (int i = 0; i < dif; i++)
+                {
+                    var instance = UIUtility.CreateWidget("DemonJarRewardBehaviour", "DemonJarRewardBehaviour");
+                    var behaviour = instance.GetComponent<DemonJarRewardBehaviour>();
+                    rewardBehaviours.Add(behaviour);
+                    instance.transform.SetParentEx(_parent, Vector3.zero, Vector3.zero, Vector3.one);
+                }
+            }
+        }
+    }
+
+}
+
+
+
+
diff --git a/System/JadeDynastyBoss/JadeDynastyBossVictoryWin.cs.meta b/System/JadeDynastyBoss/JadeDynastyBossVictoryWin.cs.meta
new file mode 100644
index 0000000..c710d92
--- /dev/null
+++ b/System/JadeDynastyBoss/JadeDynastyBossVictoryWin.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 89694d5b27c7f1c429cd3c2a2cd449c1
+timeCreated: 1547865026
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/JadeDynastyBoss/JadeDynastyBossWin.cs b/System/JadeDynastyBoss/JadeDynastyBossWin.cs
new file mode 100644
index 0000000..3246b40
--- /dev/null
+++ b/System/JadeDynastyBoss/JadeDynastyBossWin.cs
@@ -0,0 +1,386 @@
+锘�//--------------------------------------------------------
+//    [Author]:           绗簩涓栫晫
+//    [  Date ]:           Thursday, January 17, 2019
+//--------------------------------------------------------
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using TableConfig;
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace Snxxz.UI
+{
+    [XLua.Hotfix]
+    public class JadeDynastyBossWin : Window
+    {
+        [SerializeField] CyclicScroll m_Bosses;
+        [SerializeField] ItemCell[] m_Items;
+        [SerializeField] Text m_ChallengeTimes;
+        [SerializeField] Text m_AssistTimes;
+        [SerializeField] Text m_JadeDynastyScore;
+        [SerializeField] Button m_BuyTimes;
+        [SerializeField] Transform m_SurpassLevel;
+        [SerializeField] ToggleButton m_Subscribe;
+        [SerializeField] Button m_Goto;
+
+        [SerializeField] Transform m_ContainerKillRecord;
+        [SerializeField] Transform m_ContainerNoneRecord;
+        [SerializeField] Transform m_ContainerExistRecord;
+        [SerializeField] JadeDynastyBossKillRecord[] m_KillRecords;
+        [SerializeField] Transform m_ContainerBelongTo;
+        [SerializeField] Text m_BelongToPlayerName;
+        [SerializeField] Text m_BelongToNonePlayer;
+
+        JadeDynastyBossModel model { get { return ModelCenter.Instance.GetModel<JadeDynastyBossModel>(); } }
+        DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
+        FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
+        MapModel mapModel { get { return ModelCenter.Instance.GetModel<MapModel>(); } }
+
+
+        float refreshBossStateTime = 0f;
+        DateTime lastRequestMapStateTime = DateTime.Now;
+        #region Built-in
+        protected override void BindController()
+        {
+        }
+
+        protected override void AddListeners()
+        {
+            m_BuyTimes.AddListener(BuyTimes);
+            m_Subscribe.AddListener(SwitchSubscribeBoss);
+            m_Goto.AddListener(GotoKillBoss);
+        }
+
+        protected override void OnPreOpen()
+        {
+            SetDefaultSelectBoss();
+
+            refreshBossStateTime = -1f;
+
+            FindPreciousModel.BossInfo bossInfo;
+            if (findPreciousModel.TryGetBossInfo(model.selectBossId, out bossInfo) && !bossInfo.IsBossAlive())
+            {
+                if (TimeUtility.ServerNow <= bossInfo.refreshTime)
+                {
+                    var seconds = (int)(bossInfo.refreshTime - TimeUtility.ServerNow).TotalSeconds + 1;
+                    refreshBossStateTime = Time.realtimeSinceStartup + seconds;
+                }
+            }
+
+            lastRequestMapStateTime = DateTime.Now;
+            mapModel.RequestQueryMapLineState(JadeDynastyBossModel.JADEDYNASTY_MAP);
+
+            model.assginSelectBossId = 0;
+        }
+
+        protected override void OnActived()
+        {
+            base.OnActived();
+            Display();
+        }
+
+        protected override void OnAfterOpen()
+        {
+            model.selectBossRefresh += SelectBossRefresh;
+            dungeonModel.updateDungeonBuyCnt += ChallengeTimesRefresh;
+            dungeonModel.dungeonRecordChangeEvent += ChallengeTimesRefresh;
+            findPreciousModel.bossSubscribeChangeEvent += DisplaySubscribe;
+            findPreciousModel.bossInfoUpdateEvent += BossInfoUpdateEvent;
+            model.bossLineRefresh += BossLineRefresh;
+            model.assistTimeRefresh += AssistTimeRefresh;
+            model.jadeDynastyScoreRefresh += JadeDynastyScoreRefresh;
+        }
+
+        protected override void OnPreClose()
+        {
+            model.selectBossRefresh -= SelectBossRefresh;
+            dungeonModel.updateDungeonBuyCnt -= ChallengeTimesRefresh;
+            dungeonModel.dungeonRecordChangeEvent -= ChallengeTimesRefresh;
+            findPreciousModel.bossSubscribeChangeEvent -= DisplaySubscribe;
+            findPreciousModel.bossInfoUpdateEvent -= BossInfoUpdateEvent;
+            model.bossLineRefresh -= BossLineRefresh;
+            model.assistTimeRefresh -= AssistTimeRefresh;
+            model.jadeDynastyScoreRefresh -= JadeDynastyScoreRefresh;
+
+            refreshBossStateTime = -1f;
+        }
+
+        protected override void OnAfterClose()
+        {
+        }
+
+        protected override void LateUpdate()
+        {
+            base.LateUpdate();
+            if (refreshBossStateTime > 0)
+            {
+                if (Time.realtimeSinceStartup > refreshBossStateTime)
+                {
+                    DisplayKillRecord();
+                    DisplayBelongTo();
+                    refreshBossStateTime = -1f;
+                }
+            }
+
+            if ((DateTime.Now - lastRequestMapStateTime).TotalSeconds >= 5f)
+            {
+                lastRequestMapStateTime = DateTime.Now;
+                mapModel.RequestQueryMapLineState(JadeDynastyBossModel.JADEDYNASTY_MAP);
+            }
+        }
+        #endregion
+
+        public void SetDefaultSelectBoss()
+        {
+            if (model.assginSelectBossId != 0
+                && model.IsJadeDynastyBoss(model.assginSelectBossId))
+            {
+                model.selectBossId = model.assginSelectBossId;
+            }
+            else
+            {
+                model.selectBossId = model.GetLatestUnLockBoss();
+            }
+        }
+
+        public void Display()
+        {
+            DisplayBosses();
+            DisplayChallengeTimes();
+            DisplayDropItems();
+            DisplaySubscribe(model.selectBossId);
+            DisplayKillRecord();
+            DisplayBelongTo();
+            DisplayAssistTimes();
+            DisplayJadeDynastyScore();
+        }
+
+        public void DisplayBosses()
+        {
+            var bosses = model.GetJadeDynastyBosses();
+            m_Bosses.Init(bosses);
+            m_Bosses.MoveToCenter(bosses.IndexOf(model.selectBossId));
+        }
+
+        public void DisplayChallengeTimes()
+        {
+            var totalTimes = dungeonModel.GetTotalTimes(JadeDynastyBossModel.JADEDYNASTY_MAP);
+            var enterTimes = dungeonModel.GetEnterTimes(JadeDynastyBossModel.JADEDYNASTY_MAP);
+
+            m_ChallengeTimes.text = StringUtility.Contact(totalTimes - enterTimes, "/", model.challengeLimitCount);
+        }
+
+        public void DisplayAssistTimes()
+        {
+            m_AssistTimes.text = model.assistTimes.ToString();
+        }
+
+        void DisplayDropItems()
+        {
+            List<Item> dropItems = null;
+            model.TryGetDropItems(model.selectBossId, out dropItems);
+            for (int i = 0; i < m_Items.Length; i++)
+            {
+                m_Items[i].cellBtn.RemoveAllListeners();
+                if (dropItems != null && i < dropItems.Count)
+                {
+                    m_Items[i].gameObject.SetActive(true);
+                    var item = dropItems[i];
+                    ItemCellModel itemCellModel = new ItemCellModel(item.id, true, (ulong)item.count, item.bind ? 1 : 0);
+                    m_Items[i].Init(itemCellModel);
+                    m_Items[i].cellBtn.AddListener(() =>
+                    {
+                        ItemAttrData itemAttrData = new ItemAttrData(item.id, true, (ulong)item.count, -1, item.bind ? 1 : 0);
+                        ModelCenter.Instance.GetModel<ItemTipsModel>().SetItemTipsModel(itemAttrData);
+                    });
+                }
+                else
+                {
+                    m_Items[i].gameObject.SetActive(false);
+                }
+            }
+
+            var npcDropConfig = Config.Instance.Get<NPCDropItemConfig>(model.selectBossId);
+            var dropMaxLevel = 0;
+            if (npcDropConfig != null)
+            {
+                dropMaxLevel = npcDropConfig.MaxLV;
+            }
+            m_SurpassLevel.gameObject.SetActive(dropMaxLevel != 0
+                   && PlayerDatas.Instance.baseData.LV > dropMaxLevel);
+        }
+
+        private void DisplaySubscribe(int _bossId)
+        {
+            m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(model.selectBossId);
+        }
+
+        private void DisplayKillRecord()
+        {
+            var alive = findPreciousModel.IsBossAlive(model.selectBossId);
+            m_ContainerKillRecord.gameObject.SetActive(!alive);
+            if (!alive)
+            {
+                var killRecords = findPreciousModel.GetBossKillRecords(model.selectBossId);
+                m_ContainerExistRecord.gameObject.SetActive(killRecords != null && killRecords.Count > 0);
+                m_ContainerNoneRecord.gameObject.SetActive(killRecords == null || killRecords.Count == 0);
+                if (killRecords != null && killRecords.Count > 0)
+                {
+                    for (int i = 0; i < m_KillRecords.Length; i++)
+                    {
+                        if (killRecords != null && i < killRecords.Count)
+                        {
+                            m_KillRecords[i].gameObject.SetActive(true);
+                            m_KillRecords[i].Display(killRecords[i].killTime, killRecords[i].playerName);
+                        }
+                        else
+                        {
+                            m_KillRecords[i].gameObject.SetActive(false);
+                        }
+                    }
+                }
+            }
+        }
+
+        private void DisplayBelongTo()
+        {
+            var alive = findPreciousModel.IsBossAlive(model.selectBossId);
+            m_ContainerBelongTo.gameObject.SetActive(alive);
+            if (alive)
+            {
+                var belongToPlayer = false;
+                JadeDynastyBossLine jadeDynastyBossLine;
+                if (model.TryGetBossLine(model.selectBossId, out jadeDynastyBossLine))
+                {
+                    if (!string.IsNullOrEmpty(jadeDynastyBossLine.belongToPlayerName))
+                    {
+                        belongToPlayer = true;
+                    }
+                }
+                m_BelongToNonePlayer.gameObject.SetActive(!belongToPlayer);
+                m_BelongToPlayerName.gameObject.SetActive(belongToPlayer);
+                if (belongToPlayer)
+                {
+                    m_BelongToPlayerName.text = jadeDynastyBossLine.belongToPlayerName;
+                }
+            }
+        }
+
+        private void DisplayJadeDynastyScore()
+        {
+            m_JadeDynastyScore.text = Language.Get("JadeDynastyBossWin_Score", UIHelper.ReplaceLargeNum(model.jadeDynastyScore));
+        }
+
+        private void SelectBossRefresh(int bossId)
+        {
+            DisplayDropItems();
+            DisplaySubscribe(model.selectBossId);
+            DisplayKillRecord();
+            DisplayBelongTo();
+
+            FindPreciousModel.BossInfo bossInfo;
+            if (findPreciousModel.TryGetBossInfo(model.selectBossId, out bossInfo) && !bossInfo.IsBossAlive())
+            {
+                if (TimeUtility.ServerNow <= bossInfo.refreshTime)
+                {
+                    var seconds = (int)(bossInfo.refreshTime - TimeUtility.ServerNow).TotalSeconds + 1;
+                    refreshBossStateTime = Time.realtimeSinceStartup + seconds;
+                }
+            }
+        }
+
+        private void BossLineRefresh()
+        {
+            DisplayBelongTo();
+        }
+
+        private void AssistTimeRefresh()
+        {
+            DisplayAssistTimes();
+        }
+
+        private void ChallengeTimesRefresh()
+        {
+            DisplayChallengeTimes();
+        }
+
+        private void ChallengeTimesRefresh(int mapId)
+        {
+            if (JadeDynastyBossModel.JADEDYNASTY_MAP != mapId)
+            {
+                return;
+            }
+            DisplayChallengeTimes();
+        }
+
+        private void JadeDynastyScoreRefresh()
+        {
+            DisplayJadeDynastyScore();
+        }
+
+        private void BuyTimes()
+        {
+            var totalTimes = dungeonModel.GetTotalTimes(JadeDynastyBossModel.JADEDYNASTY_MAP);
+            var enterTimes = dungeonModel.GetEnterTimes(JadeDynastyBossModel.JADEDYNASTY_MAP);
+            if ((totalTimes - enterTimes) >= model.challengeLimitCount)
+            {
+                MessageWin.Inst.ShowFixedTip(Language.Get("DemonJar18"));
+                return;
+            }
+            var mapId = PlayerDatas.Instance.baseData.MapID;
+            var dataMapId = dungeonModel.GetDataMapIdByMapId(mapId);
+            if (dataMapId == JadeDynastyBossModel.JADEDYNASTY_MAP)
+            {
+                SysNotifyMgr.Instance.ShowTip("JadeDynastyBossBuyTimesError");
+                return;
+            }
+            else
+            {
+                dungeonModel.currentDungeon = new Dungeon(JadeDynastyBossModel.JADEDYNASTY_MAP, 0);
+                WindowCenter.Instance.Open<DungeonBuyTimesWin>();
+            }
+        }
+
+        private void SwitchSubscribeBoss()
+        {
+            if (findPreciousModel.IsBossSubscribed(model.selectBossId))
+            {
+                findPreciousModel.RequestDeSubscribeBoss(model.selectBossId);
+            }
+            else
+            {
+                findPreciousModel.RequestSubscribeBoss(model.selectBossId, false);
+            }
+        }
+
+        private void BossInfoUpdateEvent(int bossId)
+        {
+            if (bossId == model.selectBossId)
+            {
+                DisplayKillRecord();
+                DisplayBelongTo();
+            }
+        }
+
+        private void GotoKillBoss()
+        {
+            var error = 0;
+            if (model.TryEnterDungeon(model.selectBossId, out error))
+            {
+                var config = Config.Instance.Get<JadeDynastyBossConfig>(model.selectBossId);
+                dungeonModel.SingleChallenge(JadeDynastyBossModel.JADEDYNASTY_MAP, config.LineID);
+            }
+            else
+            {
+                model.DisplayErrorTip(error);
+            }
+        }
+    }
+
+}
+
+
+
+
diff --git a/System/JadeDynastyBoss/JadeDynastyBossWin.cs.meta b/System/JadeDynastyBoss/JadeDynastyBossWin.cs.meta
new file mode 100644
index 0000000..21f36c4
--- /dev/null
+++ b/System/JadeDynastyBoss/JadeDynastyBossWin.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 83c74804cfa865445b2b77e5bd090dd6
+timeCreated: 1547717380
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/JadeDynastyBoss/JadeDynastyDamageRankWin.cs b/System/JadeDynastyBoss/JadeDynastyDamageRankWin.cs
new file mode 100644
index 0000000..1cee06a
--- /dev/null
+++ b/System/JadeDynastyBoss/JadeDynastyDamageRankWin.cs
@@ -0,0 +1,53 @@
+锘�//--------------------------------------------------------
+//    [Author]:           绗簩涓栫晫
+//    [  Date ]:           Friday, January 18, 2019
+//--------------------------------------------------------
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace Snxxz.UI
+{
+    [XLua.Hotfix]
+    public class JadeDynastyDamageRankWin : Window
+    {
+        [SerializeField] DungeonRankBehaviour m_RankBehaviour;
+
+        #region Built-in
+        protected override void BindController()
+        {
+        }
+
+        protected override void AddListeners()
+        {
+        }
+
+        protected override void OnPreOpen()
+        {
+            var dungeonModel = ModelCenter.Instance.GetModel<DungeonModel>();
+            var dataMapId = dungeonModel.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID);
+            m_RankBehaviour.Init(dataMapId);
+        }
+
+        protected override void OnAfterOpen()
+        {
+        }
+
+        protected override void OnPreClose()
+        {
+        }
+
+        protected override void OnAfterClose()
+        {
+        }
+        #endregion
+    }
+
+}
+
+
+
+
diff --git a/System/JadeDynastyBoss/JadeDynastyDamageRankWin.cs.meta b/System/JadeDynastyBoss/JadeDynastyDamageRankWin.cs.meta
new file mode 100644
index 0000000..9994dbe
--- /dev/null
+++ b/System/JadeDynastyBoss/JadeDynastyDamageRankWin.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 118ee6dbac3babc488ba966899aae754
+timeCreated: 1547814117
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/JadeDynastyKnapSack.meta b/System/JadeDynastyKnapSack.meta
new file mode 100644
index 0000000..203467b
--- /dev/null
+++ b/System/JadeDynastyKnapSack.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: a3c2973f5500e1c46ab255e7d5247562
+folderAsset: yes
+timeCreated: 1547867772
+licenseType: Pro
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/JadeDynastyKnapSack/JadeDynastyDecomposeLineBeh.cs b/System/JadeDynastyKnapSack/JadeDynastyDecomposeLineBeh.cs
new file mode 100644
index 0000000..f02b91b
--- /dev/null
+++ b/System/JadeDynastyKnapSack/JadeDynastyDecomposeLineBeh.cs
@@ -0,0 +1,76 @@
+锘縰sing System;
+using UnityEngine;
+using UnityEngine.UI;
+using EnhancedUI.EnhancedScroller;
+using System.Collections.Generic;
+
+namespace Snxxz.UI
+{
+    [XLua.Hotfix]
+    public class JadeDynastyDecomposeLineBeh : ScrollerUI
+    {
+        [SerializeField] List<DecomposeItemBeh> itemBehs = new List<DecomposeItemBeh>();
+        JadeDynastyDecomposeModel decomposeModel { get { return ModelCenter.Instance.GetModel<JadeDynastyDecomposeModel>(); } }
+        PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
+
+        public override void Refresh(CellView cell)
+        {
+            var decomposeGuids = decomposeModel.allGuids;
+            int length = itemBehs.Count;
+            for(int i = 0; i < length; i++)
+            {
+                var itemBeh = itemBehs[i];
+                int index = cell.index*length + i;
+                if(decomposeGuids != null
+                    && index < decomposeGuids.Count)
+                {
+                    var guid = decomposeGuids[index];
+                    var model = playerPack.GetItemModelByGUID(guid);
+                    itemBeh.SetDisplay(model,decomposeModel.selectGuids);
+                }
+                else
+                {
+                    itemBeh.SetDisplay(null,null);
+                }
+                
+            }
+        }
+
+        [Serializable]
+        public class DecomposeItemBeh
+        {
+            [SerializeField] CommonItemBaisc itemBaisc;
+            [SerializeField] GameObject selectObj;
+
+            JadeDynastyDecomposeModel decomposeModel { get { return ModelCenter.Instance.GetModel<JadeDynastyDecomposeModel>(); } }
+
+            public void SetDisplay(ItemModel itemModel,List<string> selectGuids)
+            {
+                if (itemModel == null || selectGuids == null)
+                {
+                    itemBaisc.gameObject.SetActive(false);
+                    selectObj.SetActive(false);
+                }
+                else
+                {
+                    itemBaisc.gameObject.SetActive(true);
+                    selectObj.SetActive(selectGuids.Contains(itemModel.itemInfo.ItemGUID));
+                    itemBaisc.Init(itemModel);
+                    itemBaisc.cellBtn.RemoveAllListeners();
+                    itemBaisc.cellBtn.AddListener(()=>
+                    {
+                        if(selectObj.activeInHierarchy)
+                        {
+                            this.decomposeModel.RemoveSelectModel(itemModel.itemInfo.ItemGUID);
+                        }
+                        else
+                        {
+                            this.decomposeModel.AddSelectModel(itemModel.itemInfo.ItemGUID);
+                        }
+                        selectObj.SetActive(!selectObj.activeInHierarchy);
+                    });
+                }
+            }
+        }
+    }
+}
diff --git a/System/JadeDynastyKnapSack/JadeDynastyDecomposeLineBeh.cs.meta b/System/JadeDynastyKnapSack/JadeDynastyDecomposeLineBeh.cs.meta
new file mode 100644
index 0000000..88ea450
--- /dev/null
+++ b/System/JadeDynastyKnapSack/JadeDynastyDecomposeLineBeh.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 6b9a652b72ad50041b82658a1246c004
+timeCreated: 1548072997
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/JadeDynastyKnapSack/JadeDynastyDecomposeModel.cs b/System/JadeDynastyKnapSack/JadeDynastyDecomposeModel.cs
new file mode 100644
index 0000000..93ea6ea
--- /dev/null
+++ b/System/JadeDynastyKnapSack/JadeDynastyDecomposeModel.cs
@@ -0,0 +1,142 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace Snxxz.UI
+{
+    public class JadeDynastyDecomposeModel : Model, IBeforePlayerDataInitialize, IAfterPlayerDataInitialize, IPlayerLoginOk
+    {
+        public int selectEquipLv { get; private set; }
+        public bool isAutoDecompose { get; private set; }
+        public string LocalSaveSelectEquipLv { get; private set;}
+        public string LocalSaveAutoDecompose { get; private set;}
+        public List<string> selectGuids { get; private set; }
+        public List<string> allGuids { get; private set; }
+        public event Action UpdateSelectItemEvent;
+
+        PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
+        public override void Init()
+        {
+            selectGuids = new List<string>();
+            allGuids = new List<string>();
+        }
+
+        public void OnBeforePlayerDataInitialize()
+        {
+           
+        }
+
+        public void OnAfterPlayerDataInitialize()
+        {
+            int playerId = (int)PlayerDatas.Instance.PlayerId;
+            LocalSaveSelectEquipLv = StringUtility.Contact("JadeDynastyDecomposeSelectEquipLv",playerId);
+            LocalSaveAutoDecompose = StringUtility.Contact("JadeDynastyAutoDecompose",playerId);
+            GetSelectEquipLvByLocalSave();
+            IsAutoDecomposeByLocalSave();
+        }
+
+        public void OnPlayerLoginOk()
+        {
+            UpdateDecomposeModels();
+            UpdateSelectModels();
+        }
+
+        public override void UnInit()
+        {
+           
+        }
+
+        private int GetSelectEquipLvByLocalSave()
+        {
+            selectEquipLv = LocalSave.GetInt(LocalSaveSelectEquipLv);
+            return selectEquipLv;
+        }
+
+        private bool IsAutoDecomposeByLocalSave()
+        {
+            isAutoDecompose = LocalSave.GetBool(LocalSaveAutoDecompose);
+            return isAutoDecompose;
+        }
+
+        public void UpdateSelectEquipLv(int equipLv)
+        {
+            selectEquipLv = equipLv;
+            UpdateSelectModels();
+            LocalSave.SetInt(LocalSaveSelectEquipLv,equipLv);
+        }
+
+        public void UpdateIsAutoDecompose(bool isAuto)
+        {
+            isAutoDecompose = isAuto;
+            LocalSave.SetBool(LocalSaveAutoDecompose,isAutoDecompose);
+        }
+
+        public void UpdateDecomposeModels()
+        {
+            allGuids.Clear();
+            var singlePack = playerPack.GetSinglePackModel(PackType.rptJadeDynastyItem);
+            if (singlePack == null) return;
+
+            var itemDict = singlePack.GetPackModelIndexDict();
+            foreach(var index in itemDict.Keys)
+            {
+                var model = itemDict[index];
+                if(model.chinItemModel.EquipPlace > 0)
+                {
+                    allGuids.Add(model.itemInfo.ItemGUID);
+                }
+            }
+        }
+
+        public void UpdateSelectModels()
+        {
+            selectGuids.Clear();
+            foreach(var guid in allGuids)
+            {
+                var model = playerPack.GetItemModelByGUID(guid);
+                if(model != null)
+                {
+                    if (selectEquipLv != 0
+                   && model.chinItemModel.LV <= selectEquipLv)
+                    {
+                        selectGuids.Add(model.itemInfo.ItemGUID);
+                    }
+                }
+            }
+            if(UpdateSelectItemEvent != null)
+            {
+                UpdateSelectItemEvent();
+            }
+        }
+        
+        public void AddSelectModel(string guid)
+        {
+            if (guid == null) return;
+
+            if(!selectGuids.Contains(guid))
+            {
+                selectGuids.Add(guid);
+                if(UpdateSelectItemEvent != null)
+                {
+                    UpdateSelectItemEvent();
+                }
+            }
+        }
+
+        public void RemoveSelectModel(string guid)
+        {
+            if (guid == null) return;
+
+            if(selectGuids.Contains(guid))
+            {
+                selectGuids.Remove(guid);
+                if (UpdateSelectItemEvent != null)
+                {
+                    UpdateSelectItemEvent();
+                }
+            }
+        }
+
+    }
+}
diff --git a/System/JadeDynastyKnapSack/JadeDynastyDecomposeModel.cs.meta b/System/JadeDynastyKnapSack/JadeDynastyDecomposeModel.cs.meta
new file mode 100644
index 0000000..ff20769
--- /dev/null
+++ b/System/JadeDynastyKnapSack/JadeDynastyDecomposeModel.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: d16f0dd3ef5fc9d48a0bbb2dae96ecf4
+timeCreated: 1548069008
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/JadeDynastyKnapSack/JadeDynastyDecomposeWin.cs b/System/JadeDynastyKnapSack/JadeDynastyDecomposeWin.cs
new file mode 100644
index 0000000..e507e96
--- /dev/null
+++ b/System/JadeDynastyKnapSack/JadeDynastyDecomposeWin.cs
@@ -0,0 +1,115 @@
+锘縰sing System;
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace Snxxz.UI
+{
+    public class JadeDynastyDecomposeWin : Window
+    {
+        [SerializeField] ScrollerController decomposeCtrl;
+        [SerializeField] SortTable sortTable;
+        [SerializeField] Button closeBtn;
+        [SerializeField] Button autoDecomposeBtn;
+        [SerializeField] Button decomposeBtn;
+        [SerializeField] Button selectBtn;
+        [SerializeField] Image autoDecomposeImg;
+        [SerializeField] Transform sortArrow;
+
+        JadeDynastyDecomposeModel decomposeModel { get { return ModelCenter.Instance.GetModel<JadeDynastyDecomposeModel>(); } }
+        #region Built-in
+        protected override void BindController()
+        {
+
+        }
+        protected override void AddListeners()
+        {
+            closeBtn.AddListener(CloseClick);
+            autoDecomposeBtn.AddListener(ClickAutoDecompose);
+            decomposeBtn.AddListener(ClickDecompose);
+            selectBtn.AddListener(ClickSelect);
+        }
+
+        protected override void OnPreOpen()
+        {
+            decomposeModel.UpdateSelectItemEvent += UpdateSelectItem;
+            sortTable.onSortCloseEvent += CloseSortTable;
+            sortTable.onSelectSortEvent += UpdateSelectEquipLv;
+            sortTable.SetDefault();
+            SetDisplay();
+        }
+
+        protected override void OnAfterOpen()
+        {
+           
+        }
+
+        protected override void OnPreClose()
+        {
+            decomposeModel.UpdateSelectItemEvent -= UpdateSelectItem;
+            sortTable.onSortCloseEvent -= CloseSortTable;
+            sortTable.onSelectSortEvent -= UpdateSelectEquipLv;
+        }
+        protected override void OnAfterClose()
+        {
+
+        }
+        #endregion
+
+        private void SetDisplay()
+        {
+            CreateItemLine();
+            sortArrow.localRotation = Quaternion.Euler(0, 0, 180);
+            sortTable.gameObject.SetActive(false);
+            autoDecomposeImg.gameObject.SetActive(decomposeModel.isAutoDecompose);
+        }
+
+        private void CreateItemLine()
+        {
+            decomposeModel.UpdateDecomposeModels();
+            decomposeModel.UpdateSelectModels();
+            decomposeCtrl.Refresh();
+            for(int i = 0; i < decomposeModel.allGuids.Count; i++)
+            {
+                decomposeCtrl.AddCell(ScrollerDataType.Header,i);
+            }
+            decomposeCtrl.Restart();
+        }
+
+        private void UpdateSelectEquipLv(SortType type, int lv)
+        {
+            if (type != SortType.EquipLv) return;
+
+            decomposeModel.UpdateSelectEquipLv(lv);
+        }
+
+        private void UpdateSelectItem()
+        {
+            decomposeCtrl.m_Scorller.RefreshActiveCellViews();
+        }
+
+        private void CloseSortTable()
+        {
+            sortArrow.localRotation = Quaternion.Euler(0, 0, 180);
+        }
+
+        private void ClickSelect()
+        {
+            sortArrow.localRotation = Quaternion.Euler(0, 0, 0);
+            if (!sortTable.gameObject.activeInHierarchy)
+            {
+                sortTable.gameObject.SetActive(true);
+            }
+        }
+
+        private void ClickDecompose()
+        {
+            
+        }
+
+        private void ClickAutoDecompose()
+        {
+            autoDecomposeImg.gameObject.SetActive(!decomposeModel.isAutoDecompose);
+            decomposeModel.UpdateIsAutoDecompose(!decomposeModel.isAutoDecompose);
+        }
+    }
+}
diff --git a/System/JadeDynastyKnapSack/JadeDynastyDecomposeWin.cs.meta b/System/JadeDynastyKnapSack/JadeDynastyDecomposeWin.cs.meta
new file mode 100644
index 0000000..31f581b
--- /dev/null
+++ b/System/JadeDynastyKnapSack/JadeDynastyDecomposeWin.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 4058e063e60ae424592cd7af03ad4fc9
+timeCreated: 1548064681
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/JadeDynastyKnapSack/JadeDynastyEquipBeh.cs b/System/JadeDynastyKnapSack/JadeDynastyEquipBeh.cs
new file mode 100644
index 0000000..65aa7af
--- /dev/null
+++ b/System/JadeDynastyKnapSack/JadeDynastyEquipBeh.cs
@@ -0,0 +1,81 @@
+锘縰sing System;
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace Snxxz.UI
+{
+    public class JadeDynastyEquipBeh : MonoBehaviour
+    {
+        [SerializeField] RoleEquipType equipType = RoleEquipType.retMax;
+        [SerializeField] GameObject lockObj;
+        [SerializeField] ItemCell itemCell;
+        [SerializeField] Text lockText;
+        [SerializeField] Text nameText;
+        [SerializeField] Button equipBtn;
+
+        ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
+        PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
+
+        private void OnEnable()
+        {
+            playerPack.ItemCntAddAct += PutOnEquip;
+            playerPack.ItemCntReduceAct += PutOffEquip;
+            SetDisplay();
+        }
+
+        private void OnDisable()
+        {
+            playerPack.ItemCntAddAct -= PutOnEquip;
+            playerPack.ItemCntReduceAct -= PutOffEquip;
+        }
+
+        public void SetDisplay()
+        {
+            bool islock = false;
+            int towerLayer = 1;
+            lockObj.SetActive(islock);
+            lockText.gameObject.SetActive(islock);
+            nameText.text = string.Empty;
+            nameText.gameObject.SetActive(false);
+            equipBtn.RemoveAllListeners();
+            itemCell.cellBtn.RemoveAllListeners();
+            if(islock)
+            {
+                itemCell.gameObject.SetActive(false);
+                lockText.text = StringUtility.Contact("璇涗粰濉�/n",towerLayer,"灞傝В閿�");
+            }
+            else
+            {
+                ItemModel itemModel = playerPack.GetItemModelByIndex(PackType.rptJadeDynastyEquip,(int)equipType);
+                itemCell.gameObject.SetActive(itemModel != null);
+                if(itemModel != null)
+                {
+                    itemCell.Init(itemModel);
+                    itemCell.cellBtn.AddListener(() => { ClickItemCell(itemModel); });
+                }
+            }
+        }
+
+        private void PutOffEquip(PackType type, int index, int id)
+        {
+            if (type != PackType.rptJadeDynastyEquip || index != (int)equipType) return;
+
+            SetDisplay();
+        }
+
+        private void PutOnEquip(PackType type, int index, int id)
+        {
+            if (type != PackType.rptJadeDynastyEquip || index != (int)equipType) return;
+
+            SetDisplay();
+        }
+
+
+        private void ClickItemCell(ItemModel item)
+        {
+            if (item == null) return;
+
+            tipsModel.SetItemTipsModel(item.packType,item.itemInfo.ItemGUID);
+        }
+    }
+}
diff --git a/System/JadeDynastyKnapSack/JadeDynastyEquipBeh.cs.meta b/System/JadeDynastyKnapSack/JadeDynastyEquipBeh.cs.meta
new file mode 100644
index 0000000..6565307
--- /dev/null
+++ b/System/JadeDynastyKnapSack/JadeDynastyEquipBeh.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 932f7caddd34f5848a1b609234d55caa
+timeCreated: 1548035370
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/JadeDynastyKnapSack/JadeDynastyEquipWin.cs b/System/JadeDynastyKnapSack/JadeDynastyEquipWin.cs
new file mode 100644
index 0000000..fa02f1b
--- /dev/null
+++ b/System/JadeDynastyKnapSack/JadeDynastyEquipWin.cs
@@ -0,0 +1,97 @@
+锘縰sing System;
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace Snxxz.UI
+{
+    public class JadeDynastyEquipWin : Window
+    {
+        [SerializeField] Button decomposeBtn;
+        [Header("璇涗粰瑁呭浣�")]
+        [SerializeField] Button stoneAttrBtn;
+        [SerializeField] Button suitAttrBtn;
+        [Header("璇涗粰鑳屽寘")]
+        [SerializeField] ScrollerController itemCtrl;
+        [SerializeField] int initCount = 100;
+
+        PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
+        #region Built-in
+        protected override void BindController()
+        {
+
+        }
+        protected override void AddListeners()
+        {
+            decomposeBtn.AddListener(ClickDecompose);
+            stoneAttrBtn.AddListener(ClickStoneAttr);
+            suitAttrBtn.AddListener(ClickSuitAttr);
+        }
+
+        protected override void OnPreOpen()
+        {
+            playerPack.RefreshItemCountAct += UpdateJadeDynastyItem;
+            SetDisplay();
+        }
+
+        protected override void OnAfterOpen()
+        {
+          
+        }
+
+        protected override void OnPreClose()
+        {
+            playerPack.RefreshItemCountAct -= UpdateJadeDynastyItem;
+        }
+
+        protected override void OnAfterClose()
+        {
+
+        }
+        #endregion
+
+        private void SetDisplay()
+        {
+            CreateItemLine();
+        }
+
+        private void CreateItemLine()
+        {
+            itemCtrl.Refresh();
+            int line = initCount / 5;
+            for(int i = 0; i < line; i++)
+            {
+                itemCtrl.AddCell(ScrollerDataType.Header,i);
+            }
+            itemCtrl.Restart();
+        }
+
+        private void UpdateJadeDynastyItem(PackType type, int index, int id)
+        {
+            if (type != PackType.rptJadeDynastyItem) return;
+
+            UpdateItemLine();
+        }
+
+        private void UpdateItemLine()
+        {
+            itemCtrl.m_Scorller.RefreshActiveCellViews();
+        }
+
+        private void ClickSuitAttr()
+        {
+            WindowCenter.Instance.Open<JadeDynastySuitAttrWin>();
+        }
+
+        private void ClickStoneAttr()
+        {
+
+        }
+
+        private void ClickDecompose()
+        {
+            WindowCenter.Instance.Open<JadeDynastyDecomposeWin>();
+        }
+
+
+    }
+}
diff --git a/System/JadeDynastyKnapSack/JadeDynastyEquipWin.cs.meta b/System/JadeDynastyKnapSack/JadeDynastyEquipWin.cs.meta
new file mode 100644
index 0000000..64c200c
--- /dev/null
+++ b/System/JadeDynastyKnapSack/JadeDynastyEquipWin.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: aece173e3072f4a45ac2c3d45709d527
+timeCreated: 1547867941
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/JadeDynastyKnapSack/JadeDynastyItemBeh.cs b/System/JadeDynastyKnapSack/JadeDynastyItemBeh.cs
new file mode 100644
index 0000000..64e9357
--- /dev/null
+++ b/System/JadeDynastyKnapSack/JadeDynastyItemBeh.cs
@@ -0,0 +1,39 @@
+锘縰sing UnityEngine;
+using UnityEngine.UI;
+
+namespace Snxxz.UI
+{
+    public class JadeDynastyItemBeh : MonoBehaviour
+    {
+        [SerializeField] ItemCell itemCell;
+        [SerializeField] Button lockBtn;
+
+        ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
+        PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
+
+        public void SetDisplay(int index)
+        {
+            var singlePack = playerPack.GetSinglePackModel(PackType.rptJadeDynastyItem);
+            if (singlePack == null) return;
+
+            var itemModel = playerPack.GetItemModelByIndex(PackType.rptJadeDynastyItem, index);
+            itemCell.gameObject.SetActive(itemModel != null);
+            if(itemModel != null)
+            {
+                lockBtn.gameObject.SetActive(false);
+                itemCell.Init(itemModel,true);
+                itemCell.cellBtn.RemoveAllListeners();
+                itemCell.cellBtn.AddListener(()=>
+                {
+                    tipsModel.SetItemTipsModel(itemModel.packType,itemModel.itemInfo.ItemGUID);
+                });
+
+            }
+            else
+            {
+                bool isLock = index > (singlePack.openGridCount - 1);
+                lockBtn.gameObject.SetActive(isLock);
+            }
+        }
+    }
+}
diff --git a/System/JadeDynastyKnapSack/JadeDynastyItemBeh.cs.meta b/System/JadeDynastyKnapSack/JadeDynastyItemBeh.cs.meta
new file mode 100644
index 0000000..23bc70a
--- /dev/null
+++ b/System/JadeDynastyKnapSack/JadeDynastyItemBeh.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: e6b6e570c6125ef46842e12a39509708
+timeCreated: 1548038720
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/JadeDynastyKnapSack/JadeDynastyItemLineBeh.cs b/System/JadeDynastyKnapSack/JadeDynastyItemLineBeh.cs
new file mode 100644
index 0000000..1c38d76
--- /dev/null
+++ b/System/JadeDynastyKnapSack/JadeDynastyItemLineBeh.cs
@@ -0,0 +1,25 @@
+锘縰sing UnityEngine;
+using UnityEngine.UI;
+using EnhancedUI.EnhancedScroller;
+using System.Collections.Generic;
+
+namespace Snxxz.UI
+{
+    public class JadeDynastyItemLineBeh : ScrollerUI
+    {
+        [SerializeField] List<JadeDynastyItemBeh> itemBehs = new List<JadeDynastyItemBeh>();
+
+        PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
+
+        public override void Refresh(CellView cell)
+        {
+            int length = itemBehs.Count;
+            for(int i = 0; i < length; i++)
+            {
+                int index = cell.index * length + i;
+                var itemBeh = itemBehs[i];
+                itemBeh.SetDisplay(index);
+            }
+        }
+    }
+}
diff --git a/System/JadeDynastyKnapSack/JadeDynastyItemLineBeh.cs.meta b/System/JadeDynastyKnapSack/JadeDynastyItemLineBeh.cs.meta
new file mode 100644
index 0000000..3d7983e
--- /dev/null
+++ b/System/JadeDynastyKnapSack/JadeDynastyItemLineBeh.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 90b8c7969d616ae458ab3efef2d4880d
+timeCreated: 1548038657
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/JadeDynastyKnapSack/JadeDynastyKnapSackWin.cs b/System/JadeDynastyKnapSack/JadeDynastyKnapSackWin.cs
new file mode 100644
index 0000000..b1ad24f
--- /dev/null
+++ b/System/JadeDynastyKnapSack/JadeDynastyKnapSackWin.cs
@@ -0,0 +1,84 @@
+锘縰sing System;
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace Snxxz.UI
+{
+    public class JadeDynastyKnapSackWin : Window
+    {
+        [SerializeField] FunctionButton funcEquip;
+        [SerializeField] FunctionButtonGroup funcGroup;
+        [SerializeField] Button closeBtn;
+        [SerializeField] Button leftBtn;
+        [SerializeField] Button rightBtn;
+
+        #region Built-in
+        protected override void BindController()
+        {
+
+        }
+        protected override void AddListeners()
+        {
+            closeBtn.AddListener(CloseClick);
+            leftBtn.AddListener(ClickLeft);
+            rightBtn.AddListener(ClickRight);
+            funcEquip.AddListener(ClickFuncEquip);
+        }
+        protected override void OnPreOpen()
+        {
+
+        }
+
+        protected override void OnActived()
+        {
+            base.OnActived();
+            funcGroup.TriggerByOrder(functionOrder);
+        }
+
+        protected override void OnAfterOpen()
+        {
+          
+        }
+
+        protected override void OnPreClose()
+        {
+           
+        }
+
+        protected override void OnAfterClose()
+        {
+
+        }
+        #endregion
+
+        private void ClickRight()
+        {
+            funcGroup.TriggerNext();
+        }
+        private void ClickLeft()
+        {
+            funcGroup.TriggerLast();
+        }
+        private void ClickFuncEquip()
+        {
+            CloseSubWindows();
+            if (windowState == WindowState.Opened)
+            {
+                WindowCenter.Instance.OpenWithoutAnimation<JadeDynastyKnapSackWin>();
+            }
+            else
+            {
+                WindowCenter.Instance.Open<JadeDynastyKnapSackWin>();
+            }
+            functionOrder = funcEquip.order;
+        }
+        private void CloseSubWindows()
+        {
+            var children = WindowConfig.Get().FindChildWindows(this.GetType().Name);
+            foreach (var window in children)
+            {
+                WindowCenter.Instance.Close(window);
+            }
+        }
+    }
+}
diff --git a/System/JadeDynastyKnapSack/JadeDynastyKnapSackWin.cs.meta b/System/JadeDynastyKnapSack/JadeDynastyKnapSackWin.cs.meta
new file mode 100644
index 0000000..7977bf2
--- /dev/null
+++ b/System/JadeDynastyKnapSack/JadeDynastyKnapSackWin.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 5336f00e3c02082409234c4d9281b34a
+timeCreated: 1547867941
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/JadeDynastyKnapSack/JadeDynastySuitAttrBeh.cs b/System/JadeDynastyKnapSack/JadeDynastySuitAttrBeh.cs
new file mode 100644
index 0000000..8f9360b
--- /dev/null
+++ b/System/JadeDynastyKnapSack/JadeDynastySuitAttrBeh.cs
@@ -0,0 +1,108 @@
+锘縰sing System;
+using UnityEngine;
+using UnityEngine.UI;
+using System.Collections.Generic;
+using TableConfig;
+
+namespace Snxxz.UI
+{
+    public class JadeDynastySuitAttrBeh : MonoBehaviour
+    {
+        [SerializeField] Text titleText;
+        [SerializeField] List<SuitAttr> suitAttrs = new List<SuitAttr>();
+        [SerializeField] GameObject noneActive;
+
+        public void SetDisplay(int suitLv,bool isNext = false)
+        {
+            bool isShowNoneActive = false;
+            if (!isNext)
+            {
+                bool isActive = true;
+                isShowNoneActive = !isActive;
+                titleText.text = StringUtility.Contact("濂楄鎬诲睘鎬�");
+            }
+            else
+            {
+                bool isMaxSuitLv = false;
+                isShowNoneActive = isMaxSuitLv;
+                titleText.text = StringUtility.Contact("杩涢樁灞炴��");
+            }
+
+            if(noneActive != null)
+            {
+                noneActive.SetActive(isShowNoneActive);
+            }
+
+            for(int i = 0; i < suitAttrs.Count; i++)
+            {
+                var suitAttr = suitAttrs[i];
+                suitAttr.SetDisplay(i,1,null,null);
+            }
+        }
+
+        [Serializable]
+        public class SuitAttr
+        {
+            [SerializeField] Text suitTypeText;
+            [SerializeField] List<GameObject> attrObjlist = new List<GameObject>();
+            [SerializeField] List<Text> attrTextlist = new List<Text>();
+            [SerializeField] Text activeText;
+            [SerializeField] GameObject activeObj;
+            ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
+            public void SetDisplay(int suitType,int suitLv,List<int> ids,List<int> values)
+            {
+                if (ids == null || values == null) return;
+
+                bool isActive = true;
+                switch(suitType)
+                {
+                    case 0:
+                        suitTypeText.text = StringUtility.Contact("璇涗粰瀹堟姢LV." + suitLv);
+                        break;
+                    case 1:
+                        suitTypeText.text = StringUtility.Contact("璇涗粰涔嬪姏LV." + suitLv);
+                        break;
+                    case 2:
+                        suitTypeText.text = StringUtility.Contact("璇涗粰鍓戦樀LV." + suitLv);
+                        break;
+                }
+                activeObj.SetActive(!isActive);
+                if(!isActive)
+                {
+                    string conditionSB = StringUtility.Contact("杈惧埌8闃舵縺娲�");
+                }
+                for (int i = 0; i < attrObjlist.Count; i++)
+                {
+                    var attrObj = attrObjlist[i];
+                    attrObj.SetActive(i < ids.Count);
+                    if(i < ids.Count)
+                    {
+                        var attrId = ids[i];
+                        var attrValue = values[i];
+                        var attrText = attrTextlist[i];
+                        var attrConfig = Config.Instance.Get<PlayerPropertyConfig>(attrId);
+                        string attrSB = string.Empty;
+                        string attrValueSB = string.Empty;
+                        if (isActive)
+                        {
+                          attrValueSB = UIHelper.AppendStringColor(TextColType.Green, tipsModel.GetProValueTypeStr(attrConfig, attrValue));
+                        }
+                        else
+                        {
+                            attrValueSB = UIHelper.AppendStringColor(TextColType.Gray, tipsModel.GetProValueTypeStr(attrConfig, attrValue));
+                        }
+                        if (attrConfig.Name.Contains("%s"))
+                        {
+                            attrSB = attrConfig.Name.Replace("%s", attrValueSB);
+                        }
+                        else
+                        {
+                            attrSB = StringUtility.Contact(attrConfig.Name, "+", attrValueSB);
+                        }
+                        attrText.text = attrSB;
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/System/JadeDynastyKnapSack/JadeDynastySuitAttrBeh.cs.meta b/System/JadeDynastyKnapSack/JadeDynastySuitAttrBeh.cs.meta
new file mode 100644
index 0000000..bba1d1d
--- /dev/null
+++ b/System/JadeDynastyKnapSack/JadeDynastySuitAttrBeh.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: fd03e25d39702af45834d010b9ce3c1f
+timeCreated: 1548051833
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/JadeDynastyKnapSack/JadeDynastySuitAttrWin.cs b/System/JadeDynastyKnapSack/JadeDynastySuitAttrWin.cs
new file mode 100644
index 0000000..209c5b4
--- /dev/null
+++ b/System/JadeDynastyKnapSack/JadeDynastySuitAttrWin.cs
@@ -0,0 +1,58 @@
+锘縰sing UnityEngine;
+using UnityEngine.UI;
+
+namespace Snxxz.UI
+{
+    public class JadeDynastySuitAttrWin : Window
+    {
+        [SerializeField] JadeDynastySuitAttrBeh curSuitAttrBeh;
+        [SerializeField] JadeDynastySuitAttrBeh nextSuitAttrBeh;
+
+        #region Built-in
+        protected override void BindController()
+        {
+
+        }
+        protected override void AddListeners()
+        {
+          
+        }
+
+        protected override void OnPreOpen()
+        {
+            SetDisplay();
+        }
+        protected override void OnAfterOpen()
+        {
+          
+        }
+
+        protected override void OnPreClose()
+        {
+          
+        }
+
+        protected override void OnAfterClose()
+        {
+
+        }
+        #endregion
+
+        private void SetDisplay()
+        {
+            int curSuitLv = 0;
+            int nextSuitLv = 1;
+            bool isMaxSuitLv = false;
+            nextSuitAttrBeh.gameObject.SetActive(!isMaxSuitLv);
+            if(isMaxSuitLv)
+            {
+                curSuitAttrBeh.SetDisplay(curSuitLv);
+            }
+            else
+            {
+                curSuitAttrBeh.SetDisplay(curSuitLv);
+                nextSuitAttrBeh.SetDisplay(nextSuitLv,true);
+            }
+        }
+    }
+}
diff --git a/System/JadeDynastyKnapSack/JadeDynastySuitAttrWin.cs.meta b/System/JadeDynastyKnapSack/JadeDynastySuitAttrWin.cs.meta
new file mode 100644
index 0000000..a3adb38
--- /dev/null
+++ b/System/JadeDynastyKnapSack/JadeDynastySuitAttrWin.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 57eff5f7971a1f74da451b3bde6e9606
+timeCreated: 1548051551
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/KnapSack/Logic/EquipTip.cs b/System/KnapSack/Logic/EquipTip.cs
index f970bdf..d574063 100644
--- a/System/KnapSack/Logic/EquipTip.cs
+++ b/System/KnapSack/Logic/EquipTip.cs
@@ -94,6 +94,11 @@
         [SerializeField]
         ScrollerController suirAttrCtrl;
 
+        [Header("璇涗粰濂楄")]
+        [SerializeField] GameObject jadeDynastySuitObj;
+        [SerializeField] JadeDynastySuitAttrBeh curJadeDynastySuitAttr;
+        [SerializeField] JadeDynastySuitAttrBeh nextJadeDynastySuitAttr;
+
         [SerializeField] List<GameObject> attrCutLinelist = new List<GameObject>();
         #endregion
 
@@ -235,6 +240,7 @@
             SetWashAttrUI();
             SetGemAttrUI();
             SetSuitAttrUI();
+            SetJadeDynastySuitAttr();
             for (int i = 0; i < attrCutLinelist.Count; i++)
             {
                 if (i == curAttrTypeNum - 1)
@@ -843,6 +849,37 @@
             }
         }
 
+        private void SetJadeDynastySuitAttr()
+        {
+            if (jadeDynastySuitObj == null) return;
+
+            if(itemAttrData.itemConfig.EquipPlace >= (int)RoleEquipType.JadeDynasty_Cloak
+                && itemAttrData.itemConfig.EquipPlace <= (int)RoleEquipType.JadeDynasty_Sword4)
+            {
+                jadeDynastySuitObj.SetActive(true);
+            }
+            else
+            {
+                jadeDynastySuitObj.SetActive(false);
+                return;
+            }
+
+            bool isMaxSuitLv = false;
+            int maxSuitLv = 1;
+            int curSuitLv = itemAttrData.packType == PackType.rptJadeDynastyItem ? maxSuitLv : 0;
+            bool isShowNext = !isMaxSuitLv && itemAttrData.packType == PackType.rptJadeDynastyItem;
+            nextJadeDynastySuitAttr.gameObject.SetActive(isShowNext);
+            if(isShowNext)
+            {
+                curJadeDynastySuitAttr.SetDisplay(curSuitLv);
+                nextJadeDynastySuitAttr.SetDisplay(curSuitLv + 1);
+            }
+            else
+            {
+                curJadeDynastySuitAttr.SetDisplay(curSuitLv);
+            }
+        }
+
         private void SetMidUIHeight(float midHeight)
         {
             scrollRect.enabled = false;
diff --git a/System/MainInterfacePanel/InGamePushContainer.cs b/System/MainInterfacePanel/InGamePushContainer.cs
index 2ea3482..508f3d4 100644
--- a/System/MainInterfacePanel/InGamePushContainer.cs
+++ b/System/MainInterfacePanel/InGamePushContainer.cs
@@ -35,6 +35,7 @@
         DemonJarModel demonJarModel { get { return ModelCenter.Instance.GetModel<DemonJarModel>(); } }
         DogzDungeonModel dogzDungeonModel { get { return ModelCenter.Instance.GetModel<DogzDungeonModel>(); } }
         CrossServerBossModel crossServerBossModel { get { return ModelCenter.Instance.GetModel<CrossServerBossModel>(); } }
+        JadeDynastyBossModel jadeDynastyBossModel { get { return ModelCenter.Instance.GetModel<JadeDynastyBossModel>(); } }
 
         VipModel vipModel { get { return ModelCenter.Instance.GetModel<VipModel>(); } }
         DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
@@ -269,10 +270,12 @@
                         show = !GeneralDefine.elderGodNoRebornRemindMaps.Contains(mapId);
                         break;
                     case FindPreciousType.DemonJar:
-                        var totalTimes = dungeonModel.GetTotalTimes(DemonJarModel.DEMONJAR_MAPID);
-                        var enterTimes = dungeonModel.GetEnterTimes(DemonJarModel.DEMONJAR_MAPID);
-                        killable = totalTimes > enterTimes;
-                        show = !GeneralDefine.demonJarNoRebornRemindMaps.Contains(mapId);
+                        {
+                            var totalTimes = dungeonModel.GetTotalTimes(DemonJarModel.DEMONJAR_MAPID);
+                            var enterTimes = dungeonModel.GetEnterTimes(DemonJarModel.DEMONJAR_MAPID);
+                            killable = totalTimes > enterTimes;
+                            show = !GeneralDefine.demonJarNoRebornRemindMaps.Contains(mapId);
+                        }
                         break;
                     case FindPreciousType.DogzDungeon:
                         killable = dogzDungeonModel.wearyValue < GeneralDefine.bossWearyValues[2];
@@ -282,6 +285,14 @@
                         killable = crossServerBossModel.wearyValue < GeneralDefine.bossWearyValues[2];
                         show = !GeneralDefine.dogzNoRebornRemindMaps.Contains(mapId);
                         break;
+                    case FindPreciousType.JadeDynastyBoss:
+                        {
+                            var totalTimes = dungeonModel.GetTotalTimes(JadeDynastyBossModel.JADEDYNASTY_MAP);
+                            var enterTimes = dungeonModel.GetEnterTimes(JadeDynastyBossModel.JADEDYNASTY_MAP);
+                            killable = totalTimes > enterTimes;
+                            show = !GeneralDefine.demonJarNoRebornRemindMaps.Contains(mapId);
+                        }
+                        break;
                 }
 
                 if (!killable)
diff --git a/System/PlayerDead/ReliveWin.cs b/System/PlayerDead/ReliveWin.cs
index 3ff5da1..517a88a 100644
--- a/System/PlayerDead/ReliveWin.cs
+++ b/System/PlayerDead/ReliveWin.cs
@@ -47,8 +47,9 @@
             MapConfig mapConfig = Config.Instance.Get<MapConfig>(curMapId);
             dieDesText.gameObject.SetActive(false);
             buffText.gameObject.SetActive(curMapId == ElderBattleMapID);
-            inplaceRebornBtn.gameObject.SetActive(curMapId == UnionleagueMapID);
-            switch(curMapId)
+            inplaceRebornBtn.gameObject.SetActive(curMapId == UnionleagueMapID
+                || curMapId == JadeDynastyBossModel.JADEDYNASTY_MAP);
+            switch (curMapId)
             {
                 case ElderBattleMapID:
                     SetBuffDes();
diff --git a/System/WindowBase/ModelCenter.cs b/System/WindowBase/ModelCenter.cs
index 2a02611..a095a5d 100644
--- a/System/WindowBase/ModelCenter.cs
+++ b/System/WindowBase/ModelCenter.cs
@@ -221,6 +221,7 @@
             RegisterModel<CrossServerBossModel>();
             RegisterModel<OpenServiceAchievementModel>();
             RegisterModel<FashionDressModel>();
+            RegisterModel<JadeDynastyBossModel>();
             inited = true;
         }
 
diff --git a/UI/Common/SortTable.cs b/UI/Common/SortTable.cs
index 9e1d0cb..d3dd56f 100644
--- a/UI/Common/SortTable.cs
+++ b/UI/Common/SortTable.cs
@@ -93,6 +93,7 @@
     {
         EquipQuality,
         EquipStar,
+        EquipLv,
     }
     [Serializable]
     public struct SortElement
diff --git a/Utility/EnumHelper.cs b/Utility/EnumHelper.cs
index c0af2e8..050f4b9 100644
--- a/Utility/EnumHelper.cs
+++ b/Utility/EnumHelper.cs
@@ -326,6 +326,7 @@
     DungeonAssist = 29,
     GatherSoulDungeon = 30,
     CrossServerPk = 31,
+    JadeDynastyBoss = 32,
 }
 
 public enum ActivityPrepareType
@@ -377,6 +378,18 @@
     retFashionWeapon = 20,//鏃惰姝﹀櫒
     retFashionClothes = 21,//鏃惰琛f湇
     retFashionWeapon2 = 22,//鏃惰鍓墜
+    JadeDynasty_Cloak = 121, //璇涗粰鎶
+    JadeDynasty_FaceMask = 122, //璇涗粰闈㈢僵
+    JadeDynasty_Glove1 = 123, //璇涗粰鎵嬪
+    JadeDynasty_Glove2 = 124, //璇涗粰鎵嬪
+    JadeDynasty_Ruyi = 125, //璇涗粰濡傛剰
+    JadeDynasty_Pendant = 126, //璇涗粰鍚婂潬
+    JadeDynasty_Ring1 = 127, //璇涗粰鎴掓寚
+    JadeDynasty_Ring2 = 128, //璇涗粰鎴掓寚
+    JadeDynasty_Sword1 = 129, //璇涗粰鍓�
+    JadeDynasty_Sword2 = 130, //鎴粰鍓�
+    JadeDynasty_Sword3 = 131, //闄蜂粰鍓�
+    JadeDynasty_Sword4 = 132, //缁濅粰鍓�
     retMax,
 };
 
@@ -652,6 +665,8 @@
     rptPetPack = 31, //瀹犵墿鑳屽寘
     rptDogzItem = 32, //绁炲吔鐗╁搧鑳屽寘
     rptDogzEquip = 33, //绁炲吔瑁呭鑳屽寘锛堢鍏界┛鎴达級
+    rptJadeDynastyItem = 34, //璇涗粰鐗╁搧鑳屽寘
+    rptJadeDynastyEquip = 35,//璇涗粰瑁呭鑳屽寘锛堣瘺浠欑┛鎴达級
     rptBlastFrunacePack = 253, //鐐间腹鑳屽寘
     rptGatherSoul = 254,//鑱氶瓊
     rptRunePack = 255,//绗﹀嵃鑳屽寘
@@ -681,6 +696,16 @@
     Accessories4,// 閰嶉グ4
     Accessories5,// 閰嶉グ5
     Accessories6,// 閰嶉グ6
+    JadeDynasty_Cloak = 128, //璇涗粰鎶
+    JadeDynasty_FaceMask = 129, //璇涗粰闈㈢僵
+    JadeDynasty_Glove = 130, //璇涗粰鎵嬪
+    JadeDynasty_Ruyi = 131, //璇涗粰濡傛剰
+    JadeDynasty_Pendant = 132, //璇涗粰鍚婂潬
+    JadeDynasty_Ring = 133, //璇涗粰鎴掓寚
+    JadeDynasty_Sword1 = 134, //璇涗粰鍓�
+    JadeDynasty_Sword2 = 135, //鎴粰鍓�
+    JadeDynasty_Sword3 = 136, //闄蜂粰鍓�
+    JadeDynasty_Sword4 = 137, //缁濅粰鍓�
 }
 
 /** 鐗╁搧绫诲瀷 */
@@ -1145,6 +1170,7 @@
     DemonJarAuto = 32,
     AssistXianYuanCoinsAdd = 33,//鍔╂垬浠欑紭甯佷笂闄愬姞鎴�
     AssistXianYuanCoinsRatioAdd = 34,//鍔╂垬浠欑紭甯佽幏寰楀�嶇巼鍔犳垚锛堜竾鍒嗘瘮锛�
+    JadeDynastyBoss = 35,
 }
 
 
@@ -1178,7 +1204,8 @@
     ElderGodArea = 3,
     DemonJar = 4,
     DogzDungeon = 5,
-    CrossServerBoss=6,
+    CrossServerBoss = 6,
+    JadeDynastyBoss = 7,
     None = 99,
 }
 

--
Gitblit v1.8.0