|  | @@ -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();
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  }
 |