修复技能封印失效问题

This commit is contained in:
wuwenbo 2026-06-12 11:37:49 +08:00
parent 5a5b58a37d
commit 9125c44c99
2 changed files with 37 additions and 7 deletions

View File

@ -2207,7 +2207,12 @@ namespace RuntimeData
//避免在遍历的时候直接改到了skillsList
using var skillHandle = THCollectionPool.GetListHandle<SkillBase>(out var copy);
copy.AddRange(unit.Skills);
foreach (var skill in copy) skill.BeforeUnitDamaged(unit, this, info);
var isFrozen = unit.IsFrozen();
foreach (var skill in copy)
{
if (isFrozen && unit.IsSkillFrozenFilter(skill)) continue;
skill.BeforeUnitDamaged(unit, this, info);
}
}
}
@ -2221,7 +2226,12 @@ namespace RuntimeData
//避免在遍历的时候直接改到了skillsList
using var skillHandle = THCollectionPool.GetListHandle<SkillBase>(out var copy);
copy.AddRange(unit.Skills);
foreach (var skill in copy) skill.OnUnitDamaged(unit, this, info);
var isFrozen = unit.IsFrozen();
foreach (var skill in copy)
{
if (isFrozen && unit.IsSkillFrozenFilter(skill)) continue;
skill.OnUnitDamaged(unit, this, info);
}
}
}
@ -2234,7 +2244,12 @@ namespace RuntimeData
{
using var skillHandle = THCollectionPool.GetListHandle<SkillBase>(out var copy);
copy.AddRange(unit.Skills);
foreach (var skill in copy) skill.OnAnyUnitMove(map, unit, moveUnit, target, moveType);
var isFrozen = unit.IsFrozen();
foreach (var skill in copy)
{
if (isFrozen && unit.IsSkillFrozenFilter(skill)) continue;
skill.OnAnyUnitMove(map, unit, moveUnit, target, moveType);
}
}
if (target?.Skills == null) return;
using var gridSkillHandle = THCollectionPool.GetListHandle<SkillBase>(out var gridCopy);
@ -2251,7 +2266,12 @@ namespace RuntimeData
{
using var skillHandle = THCollectionPool.GetListHandle<SkillBase>(out var copy);
copy.AddRange(unit.Skills);
foreach (var skill in copy) skill.OnActionExecuted(logic, param, unit);
var isFrozen = unit.IsFrozen();
foreach (var skill in copy)
{
if (isFrozen && unit.IsSkillFrozenFilter(skill)) continue;
skill.OnActionExecuted(logic, param, unit);
}
}
}
@ -2265,7 +2285,12 @@ namespace RuntimeData
//避免在遍历的时候直接改到了skillsList
using var skillHandle = THCollectionPool.GetListHandle<SkillBase>(out var copy);
copy.AddRange(unit.Skills);
foreach (var skill in copy) skill.OnAnyUnitDie(map, unit, dieUnit);
var isFrozen = unit.IsFrozen();
foreach (var skill in copy)
{
if (isFrozen && unit.IsSkillFrozenFilter(skill)) continue;
skill.OnAnyUnitDie(map, unit, dieUnit);
}
}
}
@ -2279,7 +2304,12 @@ namespace RuntimeData
//避免在遍历的时候直接改到了skillsList
using var skillHandle = THCollectionPool.GetListHandle<SkillBase>(out var copy);
copy.AddRange(unit.Skills);
foreach (var skill in copy) skill.OnAnyUnitCreate(map, unit, newUnit);
var isFrozen = unit.IsFrozen();
foreach (var skill in copy)
{
if (isFrozen && unit.IsSkillFrozenFilter(skill)) continue;
skill.OnAnyUnitCreate(map, unit, newUnit);
}
}
}

View File

@ -713,7 +713,7 @@ namespace Logic.Action
{
//将unitActionType转化为skillType
if (!Enum.TryParse(_actionId.UnitActionType.ToString(), out SkillType skillType)) return false;
if (actionParam.UnitData == null || !actionParam.UnitData.GetSkill(skillType, out var _)) return false;
if (actionParam.UnitData == null || !actionParam.UnitData.HasEffectiveSkill(skillType, out var _)) return false;
return true;
}