|  | @@ -6,6 +6,7 @@ using Fort23.Core;
 | 
	
		
			
				|  |  |  using Fort23.UTool;
 | 
	
		
			
				|  |  |  using GameLogic.Combat;
 | 
	
		
			
				|  |  |  using GameLogic.Combat.CombatTool;
 | 
	
		
			
				|  |  | +using Unity.Plastic.Newtonsoft.Json.Serialization;
 | 
	
		
			
				|  |  |  using UnityEngine;
 | 
	
		
			
				|  |  |  using Utility;
 | 
	
		
			
				|  |  |  using Random = UnityEngine.Random;
 | 
	
	
		
			
				|  | @@ -22,9 +23,14 @@ public class EventSystemManager : Singleton<EventSystemManager>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public bool isTriggerEvent;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    List<DivineSenseConfig> divineSenseConfigs = new List<DivineSenseConfig>();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    List<int> qualitys = new List<int>() { 1, 2, 3, 4, 5, 6 };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      public void CustomInit(IDialogueMono dialogueMono)
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  |          eventConfigs = ConfigComponent.Instance.GetAll<EventConfig>().ToList();
 | 
	
		
			
				|  |  | +        divineSenseConfigs = ConfigComponent.Instance.GetAll<DivineSenseConfig>().ToList();
 | 
	
		
			
				|  |  |          this.dialogueMono = dialogueMono;
 | 
	
		
			
				|  |  |          StaticUpdater.Instance.AddRenderUpdateCallBack(Update);
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -56,8 +62,9 @@ public class EventSystemManager : Singleton<EventSystemManager>
 | 
	
		
			
				|  |  |          AccountFileInfo.Instance.playerData.divineSenseexp += AccountFileInfo.Instance.playerData.divineSensePoint;
 | 
	
		
			
				|  |  |          AccountFileInfo.Instance.playerData.divineSensePoint = 0;
 | 
	
		
			
				|  |  |          EventManager.Instance.Dispatch(CustomEventType.DivineSensePointChange, null);
 | 
	
		
			
				|  |  | -        //todo 神识升级逻辑
 | 
	
		
			
				|  |  | -        AccountFileInfo.Instance.SavePlayerData();
 | 
	
		
			
				|  |  | +        // 神识升级逻辑
 | 
	
		
			
				|  |  | +        UpDivinesense();
 | 
	
		
			
				|  |  | +        // AccountFileInfo.Instance.SavePlayerData();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          var eventConfigs = DetectEvents(bigMapId, count);
 | 
	
		
			
				|  |  |          if (eventConfigs == null || eventConfigs.Count == 0)
 | 
	
	
		
			
				|  | @@ -74,37 +81,50 @@ public class EventSystemManager : Singleton<EventSystemManager>
 | 
	
		
			
				|  |  |          return eventLists;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    private void UpDivinesense()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        for (var i = AccountFileInfo.Instance.playerData.divineSenseLevel - 1; i < divineSenseConfigs.Count; i++)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            if (AccountFileInfo.Instance.playerData.divineSenseexp >= divineSenseConfigs[i].exp)
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                AccountFileInfo.Instance.playerData.divineSenseexp -= divineSenseConfigs[i].exp;
 | 
	
		
			
				|  |  | +                AccountFileInfo.Instance.playerData.divineSenseLevel = divineSenseConfigs[i].ID;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        AccountFileInfo.Instance.SavePlayerData();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      private List<EventConfig> DetectEvents(int bigMapId, int eventCount)
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  | -        if (isTriggerEvent)
 | 
	
		
			
				|  |  | -            return default;
 | 
	
		
			
				|  |  |          BigMap bigMap = ConfigComponent.Instance.Get<BigMap>(bigMapId);
 | 
	
		
			
				|  |  |          DivineSenseConfig divineSenseConfig = ConfigComponent.Instance.Get<DivineSenseConfig>(AccountFileInfo.Instance.playerData.divineSenseLevel);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        List<int> qualitys = new List<int>() { 1, 2, 3, 4, 5, 6 };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        //先掉落出品质
 | 
	
		
			
				|  |  | -        int quality = UtilTools.GetRandomByWeight(qualitys, divineSenseConfig.QualityBonusChance);
 | 
	
		
			
				|  |  | +        LogTool.Log($"使用神识,神识等级:{AccountFileInfo.Instance.playerData.divineSenseLevel}");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        // 获取通用事件
 | 
	
		
			
				|  |  | -        List<EventConfig> globalEvents = eventConfigs.Where(e => e.EventTriggerType == 1 && CanTriggerEvent(e.ID) && e.EventQuality == quality).ToList();
 | 
	
		
			
				|  |  | +        var triggeredEvents = new List<EventConfig>();
 | 
	
		
			
				|  |  | +        for (int i = 0; i < eventCount; i++)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            //先掉落出品质
 | 
	
		
			
				|  |  | +            int quality = UtilTools.GetRandomByWeight(qualitys, divineSenseConfig.QualityBonusChance);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        //神识场景事件
 | 
	
		
			
				|  |  | -        List<EventConfig> candidateEvents = eventConfigs.Where(e => bigMap.DivineSenseGeneralEvent.Contains(e.ID) && CanTriggerEvent(e.ID) && e.EventQuality == quality).ToList();
 | 
	
		
			
				|  |  | +            // 获取通用事件
 | 
	
		
			
				|  |  | +            List<EventConfig> globalEvents = eventConfigs.Where(e => e.EventTriggerType == 1 && CanTriggerEvent(e.ID) && e.EventQuality == quality).ToList();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        if (candidateEvents.Count == 0 && globalEvents.Count == 0)
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | -            LogTool.Error("没有可以刷新的事件");
 | 
	
		
			
				|  |  | -            return default;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            //神识场景事件
 | 
	
		
			
				|  |  | +            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)
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                continue;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        var triggeredEvents = new List<EventConfig>();
 | 
	
		
			
				|  |  | -        for (int i = 0; i < eventCount; i++)
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  |              int randomValue1 = Random.Range(0, 101);
 | 
	
		
			
				|  |  |              //刷场景事件
 | 
	
		
			
				|  |  |              if (randomValue1 >= bigMap.DivineSenseGeneralProbability && candidateEvents.Count > 0)
 |