From 9914a39516a2479a02dd59584884e01e6d3ed7b2 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期四, 27 十一月 2025 15:43:13 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_scripts

---
 Main/System/Battle/BattleConst.cs       |    8 ++++
 Main/System/Battle/BattleManager.cs     |   16 +++++--
 Main/Config/Configs/FuncOpenLVConfig.cs |   13 ++++--
 Main/System/Battle/BaseBattleWin.cs     |   47 ++++++++++++++++++++---
 Main/Component/UI/Common/FuncOpen.cs    |   10 +++++
 5 files changed, 78 insertions(+), 16 deletions(-)

diff --git a/Main/Component/UI/Common/FuncOpen.cs b/Main/Component/UI/Common/FuncOpen.cs
index f39df6b..52491df 100644
--- a/Main/Component/UI/Common/FuncOpen.cs
+++ b/Main/Component/UI/Common/FuncOpen.cs
@@ -154,6 +154,11 @@
             errorCode = 1;
             return false;
         }
+        if (config.ManLevel > 0 && PlayerDatas.Instance.baseData.ExAttr1 < config.ManLevel)
+        {
+            errorCode = 5;
+            return false;
+        }
         return true;
         // return false;
     }
@@ -212,6 +217,9 @@
                     case 4:
                         SysNotifyMgr.Instance.ShowStringTip(Language.Get("FuncLimit_Mission", TaskManager.Instance.GetNeedFinishTaskCount(config.LimitMissionID)));
                         break;
+                    case 5:
+                        SysNotifyMgr.Instance.ShowStringTip(Language.Get("FuncLimit_ManLevel", config.ManLevel/10000, config.ManLevel/100%100, config.ManLevel%100));
+                        break;
                 }
             }
         }
@@ -252,6 +260,8 @@
                     return Language.Get("FuncLimit_Realm", RealmConfig.Get(config.LimiRealmLV).Name);
                 case 4:
                     return Language.Get("FuncLimit_Mission", TaskManager.Instance.GetNeedFinishTaskCount(config.LimitMissionID));
+                case 5:
+                    return Language.Get("FuncLimit_ManLevel", config.ManLevel/10000, config.ManLevel/100%100, config.ManLevel%100);
             }
         }
         return string.Empty;
diff --git a/Main/Config/Configs/FuncOpenLVConfig.cs b/Main/Config/Configs/FuncOpenLVConfig.cs
index 880e8a1..6c1ca9b 100644
--- a/Main/Config/Configs/FuncOpenLVConfig.cs
+++ b/Main/Config/Configs/FuncOpenLVConfig.cs
@@ -1,6 +1,6 @@
 锘�//--------------------------------------------------------
 //    [Author]:           YYL
-//    [  Date ]:           2025骞�8鏈�28鏃�
+//    [  Date ]:           Thursday, November 27, 2025
 //--------------------------------------------------------
 
 using System.Collections.Generic;
@@ -21,6 +21,7 @@
 	public int LimiRealmLV;
 	public int LimitMissionID;
 	public int OpenDay;
+	public int ManLevel;
 	public string Name;
 	public string Desc;
 	public string Icon;
@@ -46,13 +47,15 @@
 
 			int.TryParse(tables[4],out OpenDay); 
 
-			Name = tables[5];
+			int.TryParse(tables[5],out ManLevel); 
 
-			Desc = tables[6];
+			Name = tables[6];
 
-			Icon = tables[7];
+			Desc = tables[7];
 
-			Award = ConfigParse.ParseIntArray2Dict(tables[8]); 
+			Icon = tables[8];
+
+			Award = ConfigParse.ParseIntArray2Dict(tables[9].Replace("(", "[").Replace(")", "]")); 
         }
         catch (Exception exception)
         {
diff --git a/Main/System/Battle/BaseBattleWin.cs b/Main/System/Battle/BaseBattleWin.cs
index 1880e9e..604ec76 100644
--- a/Main/System/Battle/BaseBattleWin.cs
+++ b/Main/System/Battle/BaseBattleWin.cs
@@ -194,17 +194,49 @@
         if (!FuncOpen.Instance.IsFuncOpen(BattleManager.Instance.passFuncId, true))
             return;
 
-        //涓荤嚎Boss涔嬪鐨勬垬鏂楁敮鎸佹案涔呯壒鏉冭烦杩�
+        int passRound = BattleManager.Instance.defaultPassRound;
         var name = battleField.ToString();
-        bool isStoryBossBattleField = name == "StoryBossBattleField";
+        
+        // 妫�鏌ユ槸鍚︿负姘镐箙鐗规潈鍗$帺瀹�
         bool hasForeverPrivilege = InvestModel.Instance.IsInvested(InvestModel.foreverCardType);
-        if (hasForeverPrivilege && !isStoryBossBattleField)
+
+        if (hasForeverPrivilege)
         {
-            battleField.ForceFinish();
-            return;
+            // 姘镐箙鐗规潈鍗$帺瀹堕�昏緫
+            if (BattleConst.FieldNameToIndex.ContainsKey(name))
+            {
+                int index = BattleConst.FieldNameToIndex[name];
+                if (BattleManager.Instance.foreverPrivilegePassDict.ContainsKey(index))
+                {
+                    passRound = BattleManager.Instance.foreverPrivilegePassDict[index];
+                }
+                else
+                {
+                    // 鏈厤缃殑鎴樺満绫诲瀷锛屼娇鐢ㄦ櫘閫氱帺瀹惰鍒�
+                    if (BattleManager.Instance.passDict.ContainsKey(index))
+                    {
+                        passRound = BattleManager.Instance.passDict[index];
+                    }
+                    // 鍚﹀垯浣跨敤榛樿閰嶇疆
+                }
+            }
+            // 濡傛灉鎴樺満绫诲瀷涓嶅湪 FieldNameToIndex 涓紝浣跨敤榛樿閰嶇疆
+        }
+        else
+        {
+            // 鏅�氱帺瀹堕�昏緫
+            if (BattleConst.FieldNameToIndex.ContainsKey(name))
+            {
+                int index = BattleConst.FieldNameToIndex[name];
+                if (BattleManager.Instance.passDict.ContainsKey(index))
+                {
+                    passRound = BattleManager.Instance.passDict[index];
+                }
+                // 鍚﹀垯浣跨敤榛樿閰嶇疆
+            }
+            // 濡傛灉鎴樺満绫诲瀷涓嶅湪 FieldNameToIndex 涓紝浣跨敤榛樿閰嶇疆
         }
 
-        int passRound = BattleManager.Instance.passRound;
         int nowRound = battleField.round;
         if (nowRound < passRound)
         {
@@ -214,6 +246,9 @@
         battleField.ForceFinish();
     }
 
+
+
+
     /// <summary>
     /// 鏀瑰彉閫熷害
     /// </summary>
diff --git a/Main/System/Battle/BattleConst.cs b/Main/System/Battle/BattleConst.cs
index daf90bc..93e01e6 100644
--- a/Main/System/Battle/BattleConst.cs
+++ b/Main/System/Battle/BattleConst.cs
@@ -22,6 +22,14 @@
         { "TianziBillboradBattleField", "TianziBillboradBattleWin" },
     };
 
+    public static Dictionary<string, int> FieldNameToIndex = new Dictionary<string, int>()
+    {
+        { "StoryBossBattleField", 1 },
+        { "ArenaBattleField", 2 },
+        { "BoneBattleField", 3},
+        { "TianziBillboradBattleField", 4 },
+    };
+
     public const int BattleStartEffectID = 1001; // Example effect ID for battle start
 
     public const int skillMotionFps = 30;
diff --git a/Main/System/Battle/BattleManager.cs b/Main/System/Battle/BattleManager.cs
index 2d4093e..6257ef5 100644
--- a/Main/System/Battle/BattleManager.cs
+++ b/Main/System/Battle/BattleManager.cs
@@ -26,7 +26,11 @@
     }
     public readonly int[] speedIndexfuncIdArr = new int[] { 34, 35, 36 };  // 鎴樻枟鍊嶆暟瀵瑰簲鐨勫姛鑳絀D
     public readonly int passFuncId = 33;    // 璺宠繃鎴樻枟瀵瑰簲鐨勫姛鑳絀D
-    public int passRound;   // 瓒呰繃X鍥炲悎鍙烦杩�
+
+    public int defaultPassRound;   
+    public Dictionary<int, int> passDict = new Dictionary<int, int>(); 
+    public Dictionary<int, int> foreverPrivilegePassDict = new Dictionary<int, int>();
+
     public int fightGuideID;
     public int fightGuideMainLevelLimit;
     public int fightGuideNoClickSeconds;
@@ -46,7 +50,7 @@
         DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk;
         DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += BeforePlayerInit;
         ParseConfig();
-        
+
     }
 
     void ParseConfig()
@@ -61,7 +65,9 @@
         challengeBossGuides = JsonMapper.ToObject<int[]>(config.Numerical4);
 
         config = FuncConfigConfig.Get("BattleButton");
-        passRound= int.Parse(config.Numerical1);
+        defaultPassRound = int.Parse(config.Numerical1);
+        passDict = ConfigParse.ParseIntDict(config.Numerical2);
+        foreverPrivilegePassDict = ConfigParse.ParseIntDict(config.Numerical3);
     }
 
 
@@ -269,9 +275,9 @@
             packQueue.Enqueue(pack);
         }
 
-    
 
-            // packQueue = new Queue<GameNetPackBasic>(newPackList);
+
+        // packQueue = new Queue<GameNetPackBasic>(newPackList);
 
         DistributeNextPackage();
     }

--
Gitblit v1.8.0