TH1/Unity/Assets/Scripts/TH1_Logic/Skill/AllSkill/SatoriAttackBoomSkill.cs

74 lines
2.4 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* @Author: Claude
* @Description: 觉的爆裂攻击技能 - 攻击/反击时给目标附加SkillBanBoom debuff
* @Date: 2026年03月17日
* @Modify: 视觉更新改为走PendingAnimScope在攻击Fragment命中后播放
*/
using RuntimeData;
using MemoryPack;
using TH1_Anim.Fragments;
using TH1_Core.Managers;
using TH1_Logic.Core;
using TH1Renderer;
namespace Logic.Skill
{
public partial class SatoriAttackBoomSkill : SkillBase
{
public SatoriAttackBoomSkill()
{
IsPermanent = true;
TurnsLimit = 0;
Score = 4;
}
public override SkillType GetSkillType()
{
return SkillType.SatoriAttackBoom;
}
/// <summary>
/// 在造成伤害后触发给目标附加SkillBanBoom
/// </summary>
public override void OnDamageOther(MapData mapData, SettlementInfo info)
{
if (info.DamageTarget == null || info.DamageOrigin == null) return;
if (info.DamageType != DamageType.ActiveAttack && info.DamageType != DamageType.CounterAttack) return;
info.DamageTarget.AddOrOverrideSkill(SkillType.SkillBanBoom, mapData, info.DamageOrigin.Id);
// 视觉更新刷新目标单位显示显示debuff图标
if (mapData != Main.MapData) return;
if (!info.DamageTarget.IsAlive()) return;
int phase = info.DamageType == DamageType.ActiveAttack
? AnimPhase.AttackImpact + 50
: AnimPhase.CounterImpact + 50;
var scope = PresentationManager.CurrentScope;
if (scope != null)
{
if (MapRenderer.Instance != null &&
MapRenderer.Instance.ROUnitMap.TryGetValue(info.DamageTarget.Id, out var unitRenderer))
{
scope.Add(new FragmentStep
{
Phase = phase,
Duration = 0.1f,
Execute = () => { unitRenderer.InstantUpdateUnit(false); }
});
}
}
else
{
if (MapRenderer.Instance != null &&
MapRenderer.Instance.ROUnitMap.TryGetValue(info.DamageTarget.Id, out var unitRenderer))
{
unitRenderer.RenderUpdateUnitImage();
}
}
}
}
}