Consumable.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. using UnityEngine;
  2. namespace MazeGen
  3. {
  4. /// <summary>
  5. /// A consumable item that can be used by the player to provide temporary bonuses or effects.
  6. /// </summary>
  7. public class Consumable : Item
  8. {
  9. [SerializeField] private float _defenseBonus = 0f;
  10. [SerializeField] private float _healthBonus = 0f; // Some armors grant extra durability
  11. [SerializeField] private float _speedBonus = 0f; // Heavy armor slows movement
  12. [SerializeField] private float _magicResistance = 0f; // Some armor resists magic damage
  13. public float DefenseBonus => _defenseBonus;
  14. public float HealthBonus => _healthBonus;
  15. public float SpeedBonus => _speedBonus;
  16. public float MagicResistance => _magicResistance;
  17. public override bool OnEquip(CharacterSheet character)
  18. {
  19. if (!base.OnEquip(character)) return false;
  20. if (_defenseBonus != 0) character.ApplyTemporaryBonus("consumable_defense", _defenseBonus, "defense");
  21. if (_healthBonus != 0) character.ApplyTemporaryBonus("consumable_health", _healthBonus, "health");
  22. if (_speedBonus != 0) character.ApplyTemporaryBonus("consumable_speed", _speedBonus, "speed");
  23. if (_magicResistance != 0) character.ApplyTemporaryBonus("consumable_magic", _magicResistance, "magic");
  24. return true;
  25. }
  26. public override void OnUnequip(CharacterSheet character)
  27. {
  28. character.RemoveTemporaryBonus("consumable_defense");
  29. character.RemoveTemporaryBonus("consumable_health");
  30. character.RemoveTemporaryBonus("consumable_speed");
  31. character.RemoveTemporaryBonus("consumable_magic");
  32. base.OnUnequip(character);
  33. }
  34. public override string GetLabel() => $"{ItemName} (Consumable)";
  35. }
  36. }