| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- using UnityEngine;
- namespace MazeGen
- {
- /// <summary>
- /// Protective gear that boosts defense and can provide secondary bonuses.
- /// Heavier armor provides more protection but may reduce speed.
- /// </summary>
- public class Armor : Item
- {
- [SerializeField] private float _defenseBonus = 5f;
- [SerializeField] private float _healthBonus = 0f; // Some armors grant extra durability
- [SerializeField] private float _speedPenalty = 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 SpeedPenalty => _speedPenalty;
- public float MagicResistance => _magicResistance;
- public override bool OnEquip(CharacterSheet character)
- {
- if (!base.OnEquip(character)) return false;
- character.ApplyTemporaryBonus("armor_defense", _defenseBonus, "defense");
- if (_healthBonus != 0) character.ApplyTemporaryBonus("armor_health", _healthBonus, "health");
- if (_speedPenalty != 0) character.ApplyTemporaryBonus("armor_speed", -_speedPenalty, "speed");
- if (_magicResistance != 0) character.ApplyTemporaryBonus("armor_magic", _magicResistance, "magic");
- return true;
- }
- public override void OnUnequip(CharacterSheet character)
- {
- character.RemoveTemporaryBonus("armor_defense");
- character.RemoveTemporaryBonus("armor_health");
- character.RemoveTemporaryBonus("armor_speed");
- character.RemoveTemporaryBonus("armor_magic");
- base.OnUnequip(character);
- }
- public override string GetLabel() => $"{ItemName} (+{_defenseBonus} DEF)";
- }
- }
|