using UnityEngine; namespace MazeGen { /// /// Protective gear that boosts defense and can provide secondary bonuses. /// Heavier armor provides more protection but may reduce speed. /// 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)"; } }