using System; using Cielonos.MainGame.Buffs.Character; using SLSUtilities.General; using UnityEngine; namespace Cielonos.MainGame.Inventory.Collections { /// /// 聚变催化器 / Fusion Catalyst (Passive, Moser) /// 降低 Fusion 引爆所需的最低层数阈值。 /// 订阅 onApplyBuffToOther,在 Fusion Buff 施加前修改 minimumStackToExplode。 /// public class FusionCatalyst : PassiveEquipmentBase { private const string EventKey = nameof(FusionCatalyst); public override void OnObtained() { base.OnObtained(); Action onApplyBuff = OnApplyBuffToOther; player.eventSm.onApplyBuffToTarget.Add(EventKey, onApplyBuff.ToPrioritized()); } public override void OnDiscarded() { player.eventSm.onApplyBuffToTarget.Remove(EventKey); base.OnDiscarded(); } /// /// 在 Buff 施加到目标前拦截,若为 Fusion 则降低其引爆阈值。 /// private void OnApplyBuffToOther(CharacterBuffBase buff) { if (buff is not Fusion fusion) return; int reduction = Mathf.RoundToInt(passiveAttributeSm.GetItemAttribute("FusionExplosionThresholdReduction")); fusion.minimumStackToExplode -= reduction; } } }