using Cielonos.MainGame.Characters; using UnityEngine; namespace Cielonos.MainGame.Inventory.Collections { /// /// 量子护盾发生器 / Quantum Shield Generator /// 每次首次进入新区域时,将护盾补至 ShieldRecover 下限。 /// Shield 可超量累积,无上限。 /// public class QuantumShieldGenerator : PassiveEquipmentBase { private const string ItemAttrShieldRecover = "ShieldRecover"; public override void OnObtained() { base.OnObtained(); RunManager.Instance.OnZoneEntered += OnZoneEntered; } public override void OnDiscarded() { RunManager.Instance.OnZoneEntered -= OnZoneEntered; base.OnDiscarded(); } /// /// 玩家进入区域时触发。 /// 仅首次进入该区域时将护盾补至 ShieldRecover 下限。 /// private void OnZoneEntered(ZoneEntryContext context) { if (!context.isFirstVisit) return; float shieldRecover = passiveAttributeSm.GetItemAttribute(ItemAttrShieldRecover); if (shieldRecover <= 0f) return; float currentShield = player.attributeSm[CharacterAttribute.Shield]; if (currentShield < shieldRecover) { int addValue = Mathf.RoundToInt(shieldRecover - currentShield); player.attributeSm[CharacterAttribute.Shield] = shieldRecover; MainGameBaseCollection.Instance.InfoText()?.Spawn(player.centerPosition, "+" + addValue); } } } }