/* * @Author: 白哉 * @Description: * @Date: 2025年04月23日 星期三 21:04:18 * @Modify: */ using System.Collections.Generic; using RuntimeData; using System; using MemoryPack; namespace Logic.Skill { [Serializable] [MemoryPackable] public partial class LuckSkill : SkillBase { public LuckSkill() { IsPermanent = true; TurnsLimit = 0; Score = 4; } public override SkillType GetSkillType() { return SkillType.LUCK; } public override void OnTurnStart(UnitData self, MapData mapData) { if (!mapData.GetGridDataByUnitId(self.Id, out var targetGrid)) return; var roundGrid = mapData.GridMap.GetAroundGridData(1, 1, targetGrid); var hasBuffUnit = new HashSet(); foreach (var grid in roundGrid) { if (!mapData.GetUnitDataByGid(grid.Id, out var unit)) continue; hasBuffUnit.Add(unit); unit.AddSkill(SkillType.CRITICAL); } foreach (var unit in mapData.UnitMap.UnitList) { if (hasBuffUnit.Contains(unit)) continue; unit.RemoveSkill(SkillType.CRITICAL); } } } }