From 2b479845e946d7b7590687ba91437b18a9c829b7 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期六, 07 二月 2026 20:43:44 +0800
Subject: [PATCH] 0312 隐藏灵兽,皇宫,府邸标签;内政中功能未开启时对应的npc也不显示

---
 Main/System/InternalAffairs/AffairBaseWin.cs  |   27 +++++++++++++++++++++++++--
 Main/System/InternalAffairs/FuncNPCManager.cs |   30 +++++++++++++++++++++++++-----
 2 files changed, 50 insertions(+), 7 deletions(-)

diff --git a/Main/System/InternalAffairs/AffairBaseWin.cs b/Main/System/InternalAffairs/AffairBaseWin.cs
index e9d19ed..67b686d 100644
--- a/Main/System/InternalAffairs/AffairBaseWin.cs
+++ b/Main/System/InternalAffairs/AffairBaseWin.cs
@@ -119,6 +119,20 @@
             autoBtn.SetActive(false);
             goldRushItemBtn.SetActive(false);
         }
+
+
+        foreach (var npc in funcNPCs)
+        {
+            var key = npc.heroSkinID;
+            if (!FuncOpen.Instance.IsFuncOpen(FuncNPCManager.Instance.funcNPCToFuncID[key]))
+            {
+                npc.SetActive(false);
+            }
+            else
+            {
+                npc.SetActive(true);
+            }
+        }
     }
 
 
@@ -172,8 +186,17 @@
 
     void OnFiveSecondEvent()
     {
-        var index = FuncNPCManager.Instance.GetRandomAffairNpcTalk();
-        var talk = FuncNPCManager.Instance.GetAffairTalk(funcNPCs[index].heroSkinID);
+        var skinID = FuncNPCManager.Instance.GetRandomAffairNpcTalk();
+        var talk = FuncNPCManager.Instance.GetAffairTalk(skinID);
+        var index = 0;
+        for (int i = 0; i < funcNPCs.Length; i++)
+        {
+            if (funcNPCs[i].heroSkinID == skinID)
+            {
+                index = i;
+                break;
+            }
+        }
         if (talk != null)
         {
             talkTexts[index].text = Language.Get(talk);
diff --git a/Main/System/InternalAffairs/FuncNPCManager.cs b/Main/System/InternalAffairs/FuncNPCManager.cs
index 6d482f2..6308d2d 100644
--- a/Main/System/InternalAffairs/FuncNPCManager.cs
+++ b/Main/System/InternalAffairs/FuncNPCManager.cs
@@ -8,6 +8,7 @@
     //鍐呮斂NPC
     Dictionary<int, string[]> affairNpcTalkDic = new Dictionary<int, string[]>();
     public List<int> affairTalkIndexList = new List<int>();
+    public Dictionary<int, int> funcNPCToFuncID = new Dictionary<int, int>();
     public float lastAffairTalkTime;
     public int lastAffiarRandomIndex;
 
@@ -38,10 +39,7 @@
             affairNpcTalkDic.Add(npcID, talkList);
         }
 
-        for (int i = 0; i < affairNpcTalkDic.Count; i++)
-        {
-            affairTalkIndexList.Add(i);
-        }
+
 
         json = JsonMapper.ToObject(config.Numerical2);
         keys = json.Keys.ToList();
@@ -56,19 +54,41 @@
             guildTalkIndexList.Add(i);
         }
 
+        funcNPCToFuncID = ConfigParse.ParseIntDict(config.Numerical3);
+    }
+
+
+    void RefreshAffairTalkIndexList()
+    {
+        affairTalkIndexList.Clear();
+        foreach (var key in affairNpcTalkDic.Keys)
+        {
+            if (!FuncOpen.Instance.IsFuncOpen(funcNPCToFuncID[key]))
+            {
+                continue;
+            }
+            if (funcNPCToFuncID[key] == 54 && MinggeManager.Instance.isStartAuto)
+            {
+                //绠楀懡涓笉鍙備笌鍠婅瘽
+                continue;
+            }
+            affairTalkIndexList.Add(key);
+        }
     }
 
 
     //闅忔満鏌愪釜NPC瀵硅瘽锛屼笌涓婁竴娆¢殢鏈虹殑NPC绱㈠紩涓嶉噸澶�
+    //杩斿洖NPCID
     public int GetRandomAffairNpcTalk()
     {
+        RefreshAffairTalkIndexList();
         int index = Random.Range(0, affairTalkIndexList.Count);
         if (index == lastAffiarRandomIndex)
         {
             index = (index + 1) % affairTalkIndexList.Count;
         }
         lastAffiarRandomIndex = index;
-        return index;
+        return affairTalkIndexList[index];
     }
 
     public int GetRandomGuildNpcTalk()

--
Gitblit v1.8.0