using UnityEngine; namespace MazeGen { /// /// A consumable item that can be used by the player to provide temporary bonuses or effects. /// public class Consumable : Item { [SerializeField] private float _defenseBonus = 0f; [SerializeField] private float _healthBonus = 0f; // Some armors grant extra durability [SerializeField] private float _speedBonus = 0f; // Heavy armor slows movement [SerializeField] private float _magicResistance = 0f; // Some armor resists magic damage public float DefenseBonus => _defenseBonus; public float HealthBonus => _healthBonus; public float SpeedBonus => _speedBonus; public float MagicResistance => _magicResistance; public override bool OnEquip(CharacterSheet character) { if (!base.OnEquip(character)) return false; if (_defenseBonus != 0) character.ApplyTemporaryBonus("consumable_defense", _defenseBonus, "defense"); if (_healthBonus != 0) character.ApplyTemporaryBonus("consumable_health", _healthBonus, "health"); if (_speedBonus != 0) character.ApplyTemporaryBonus("consumable_speed", _speedBonus, "speed"); if (_magicResistance != 0) character.ApplyTemporaryBonus("consumable_magic", _magicResistance, "magic"); return true; } public override void OnUnequip(CharacterSheet character) { character.RemoveTemporaryBonus("consumable_defense"); character.RemoveTemporaryBonus("consumable_health"); character.RemoveTemporaryBonus("consumable_speed"); character.RemoveTemporaryBonus("consumable_magic"); base.OnUnequip(character); } public override string GetLabel() => $"{ItemName} (Consumable)"; } }