From 5a4e34c8a85737c0fa5b5775122da31155cbaef3 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期一, 09 二月 2026 14:46:01 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_scripts

---
 Main/System/InternalAffairs/FuncNPCManager.cs |   30 +++++++++++++++++++++++++-----
 1 files changed, 25 insertions(+), 5 deletions(-)

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