| 
					
				 | 
			
			
				@@ -13,35 +13,35 @@ using Random = UnityEngine.Random; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public class EventSystemManager : Singleton<EventSystemManager> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     List<EventConfig> eventConfigs = new List<EventConfig>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private List<DivineSenseIntervalConfig> divineSenseIntervalConfigs = new List<DivineSenseIntervalConfig>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public void CustomInit() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         eventConfigs = ConfigComponent.Instance.GetAll<EventConfig>().ToList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        divineSenseIntervalConfigs = ConfigComponent.Instance.GetAll<DivineSenseIntervalConfig>().ToList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void DetectEvents(int bigMapId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public List<EventConfig> DetectEvents(int bigMapId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         BigMap bigMap = ConfigComponent.Instance.Get<BigMap>(bigMapId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        DivineSenseConfig divineSenseConfig = ConfigComponent.Instance.Get<DivineSenseConfig>(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        DivineSenseConfig divineSenseConfig = ConfigComponent.Instance.Get<DivineSenseConfig>(AccountFileInfo.Instance.playerData.divineSenseLevel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<int> qualitys = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //先掉落出品质 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<ItemInfo> itemInfos = DropManager.Instance.DropItem(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        int quality = UtilTools.GetRandomByWeight(qualitys, divineSenseConfig.QualityBonusChance); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 获取通用事件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<EventConfig> globalEvents = eventConfigs.Where(e => e.EventTriggerType == 3 && CanTriggerEvent(e.ID) && e.EventQuality == itemInfos[0].dropItemConfig.itemID[0]).ToList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<EventConfig> globalEvents = eventConfigs.Where(e => e.EventTriggerType == 3 && CanTriggerEvent(e.ID) && e.EventQuality == quality).ToList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //神识场景事件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<EventConfig> candidateEvents = eventConfigs.Where(e => bigMap.DivineSenseGeneralEvent.Contains(e.ID) && CanTriggerEvent(e.ID) && e.EventQuality == itemInfos[0].dropItemConfig.itemID[0]).ToList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<EventConfig> candidateEvents = eventConfigs.Where(e => bigMap.DivineSenseGeneralEvent.Contains(e.ID) && CanTriggerEvent(e.ID) && e.EventQuality == quality).ToList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (candidateEvents.Count == 0 && globalEvents.Count == 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            LogTool.Warning("没有可以刷新的任务"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            LogTool.Error("没有可以刷新的事件"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return default; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -66,30 +66,41 @@ public class EventSystemManager : Singleton<EventSystemManager> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 触发事件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        foreach (var evt in triggeredEvents) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            TriggerEvent(evt); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (triggeredEvents.Count == 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Debug.Log("没有可以触发的事件"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return default; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return triggeredEvents; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // // 触发事件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // foreach (var evt in triggeredEvents) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //     TriggerEvent(evt); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /// <summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /// 根据神识值选择通用神识区间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /// </summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private DivineSenseIntervalConfig SelectInterval(float divineSenseValue) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void DetectRandomEvents() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        var intervals = divineSenseIntervalConfigs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            .Where(i => divineSenseValue >= i.MinValue && divineSenseValue < i.MaxValue) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            .ToList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return intervals.FirstOrDefault(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 获取通用事件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<EventConfig> randomEvents = eventConfigs.Where(e => e.EventTriggerType == 2 && CanTriggerEvent(e.ID)).ToList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //神识场景事件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (randomEvents.Count == 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            LogTool.Warning("没有可以刷新的事件"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        int idex = Random.Range(1, randomEvents.Count); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        TriggerEvent(randomEvents[idex]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /// <summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /// 触发单个事件,处理对话、奖励和完成逻辑。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /// </summary> 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -98,12 +109,7 @@ public class EventSystemManager : Singleton<EventSystemManager> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Debug.Log($"触发事件: {evt.Description} (ID: {evt.ID}, 品质: {evt.EventQuality})"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (evt.DialogueID > 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            DialogueManager.Instance.StartDialogue(evt.DialogueID, evt.ID); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (evt.RewardID.Length > 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // TODO: 实现奖励逻辑 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // DialogueManager.Instance.StartDialogue(evt.DialogueID, evt.ID); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         CompleteEvent(evt.ID); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -157,5 +163,16 @@ public class EventSystemManager : Singleton<EventSystemManager> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public void CompleteEvent(int eventID) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         LogTool.Log($"完成任务{eventID}"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        AccountFileInfo.EventData eventData =  AccountFileInfo.Instance.playerData.events.FirstOrDefault((e) => e.eventID == eventID); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (eventData == null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            eventData = new AccountFileInfo.EventData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            eventData.eventID = eventID; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        eventData.completeCount++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        AccountFileInfo.Instance.playerData.events.Add(eventData); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        AccountFileInfo.Instance.SavePlayerData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |