Files
Cielonos/Assets/Scripts/MainGame/Items/PassiveEquipments/QuantumShieldGenerator.cs
SoulliesOfficial 649b7a5ddc 更新
2026-05-23 08:27:50 -04:00

48 lines
1.6 KiB
C#

using Cielonos.MainGame.Characters;
using UnityEngine;
namespace Cielonos.MainGame.Inventory.Collections
{
/// <summary>
/// 量子护盾发生器 / Quantum Shield Generator
/// 每次首次进入新区域时,将护盾补至 ShieldRecover 下限。
/// Shield 可超量累积,无上限。
/// </summary>
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();
}
/// <summary>
/// 玩家进入区域时触发。
/// 仅首次进入该区域时将护盾补至 ShieldRecover 下限。
/// </summary>
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);
}
}
}
}