using SLSUtilities.General; using UnityEngine; namespace Cielonos.MainGame.Inventory.Collections { public class AutomaticShield : ConsumableBase { public override void OnObtained() { base.OnObtained(); player.eventSm.onBeforeGetAttacked.Add("AutomaticShield", new PrioritizedAction(CheckAndEffect)); } public override void OnDiscarded() { base.OnDiscarded(); player.eventSm.onBeforeGetAttacked.Remove("AutomaticShield"); } void CheckAndEffect(AttackAreaBase attackArea, Attack.Context attackContext) { if (attackContext.value.damage > 1f) { if (Use(1)) { // 使用 Context 的前置否决标记使其伤害彻底作废: attackContext.isImmune = true; attackContext.value.damageMultiplier = 0f; CameraEffectManager.Instance.vignetteEffects["Shield"].mainEffect.Play(); } } } } }