| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- using UnityEngine;
- namespace MazeGen
- {
- /// <summary>
- /// A consumable item that can be used by the player to provide temporary bonuses or effects.
- /// </summary>
- 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)";
- }
- }
|