2026-04-18 13:57:19 -04:00
|
|
|
|
using System;
|
|
|
|
|
|
using Cielonos.MainGame.Characters;
|
|
|
|
|
|
using SLSUtilities.General;
|
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
2026-05-23 08:27:50 -04:00
|
|
|
|
namespace Cielonos.MainGame.Inventory.Collections
|
2026-04-18 13:57:19 -04:00
|
|
|
|
{
|
2026-05-23 08:27:50 -04:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 过载电池 / Overload Battery
|
|
|
|
|
|
/// 过载完成时,下一次【突破等级:重】攻击造成的伤害增加 50%。
|
|
|
|
|
|
/// </summary>
|
2026-04-18 13:57:19 -04:00
|
|
|
|
public class OverloadBattery : PassiveEquipmentBase
|
|
|
|
|
|
{
|
|
|
|
|
|
private bool _isBuffActive = false;
|
|
|
|
|
|
|
|
|
|
|
|
public override void OnObtained()
|
|
|
|
|
|
{
|
|
|
|
|
|
// 直接订阅由 OverloadSubmodule 抛出的满溢满充爆气事件
|
|
|
|
|
|
if (overloadSm != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
overloadSm.OnTriggered += TriggerOverloadEffect;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void TriggerOverloadEffect()
|
|
|
|
|
|
{
|
|
|
|
|
|
// 挂载增伤 Buff
|
|
|
|
|
|
_isBuffActive = true;
|
|
|
|
|
|
|
|
|
|
|
|
// 为下一次攻击进行截流修饰(利用上一个阶段优化提升完毕的 EventSubmodule 架构)
|
2026-05-23 08:27:50 -04:00
|
|
|
|
Action<AttackAreaBase, CharacterBase, Attack.Context> onStartAttack = OnStartAttack;
|
2026-04-18 13:57:19 -04:00
|
|
|
|
|
2026-05-23 08:27:50 -04:00
|
|
|
|
if (!player.eventSm.onStartAttack.ContainsKey("OverloadBattery"))
|
2026-04-18 13:57:19 -04:00
|
|
|
|
{
|
2026-05-23 08:27:50 -04:00
|
|
|
|
player.eventSm.onStartAttack.Add("OverloadBattery", onStartAttack.ToPrioritized());
|
2026-06-05 04:21:00 -04:00
|
|
|
|
MainGameManager.BaseCollection.InfoText().Spawn(player.CenterPosition, "Overload Battery Boost").SetScale(0.5f);
|
2026-04-18 13:57:19 -04:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-05-23 08:27:50 -04:00
|
|
|
|
private void OnStartAttack(AttackAreaBase attackArea, CharacterBase target, Attack.Context attackContext)
|
2026-04-18 13:57:19 -04:00
|
|
|
|
{
|
|
|
|
|
|
if (!_isBuffActive) return;
|
|
|
|
|
|
|
|
|
|
|
|
// 拦截检查:必须是重突破等级(BreakthroughType.Heavy)
|
|
|
|
|
|
// 如果不是重攻击,我们就避让不进行任何修饰,且不消耗掉 Buff 的开启状态
|
2026-05-23 08:27:50 -04:00
|
|
|
|
if (attackContext.value.breakthroughType != Breakthrough.Type.Heavy) return;
|
2026-04-18 13:57:19 -04:00
|
|
|
|
|
|
|
|
|
|
// 最终伤害提升 50%。上个方案中我们留下了 damageMultiplier,天然完美支持翻倍操作。
|
2026-05-23 08:27:50 -04:00
|
|
|
|
attackContext.value.damageMultiplier += 0.5f;
|
2026-04-18 13:57:19 -04:00
|
|
|
|
_isBuffActive = false;
|
2026-05-23 08:27:50 -04:00
|
|
|
|
// "一次性"触发,修饰完毕后从玩家的攻击起手事件池里销毁自身,不沾染下一次无关的攻击。
|
|
|
|
|
|
player.eventSm.onStartAttack.Remove("OverloadBattery");
|
2026-04-18 13:57:19 -04:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override void OnDiscarded()
|
|
|
|
|
|
{
|
|
|
|
|
|
base.OnDiscarded();
|
|
|
|
|
|
|
2026-05-23 08:27:50 -04:00
|
|
|
|
player.eventSm.onStartAttack.Remove("OverloadBattery");
|
2026-04-18 13:57:19 -04:00
|
|
|
|
|
|
|
|
|
|
if (overloadSm != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
overloadSm.OnTriggered -= TriggerOverloadEffect;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|