using Chickensoft.AutoInject; using Chickensoft.Introspection; using Chickensoft.Serialization; using Godot; using Zennysoft.Ma.Adapter; using Zennysoft.Ma.Adapter.Entity; namespace Zennysoft.Game.Ma; [Meta(typeof(IAutoNode)), Id("armor")] public partial class Armor : EquipableItem { public override void _Notification(int what) => this.Notify(what); [Node] private Sprite3D _sprite { get; set; } = default!; public override void _Ready() { _sprite.Texture = Stats.Texture; } public override string ItemName => Stats.Name; public override string Description => Stats.Description; public override float SpawnRate => Stats.SpawnRate; public override int ThrowDamage => Stats.ThrowDamage; public override float ThrowSpeed => Stats.ThrowSpeed; public override int BonusDefense => Stats.BonusDefense + _bonusDefense; [Save("bonus_defense")] private int _bonusDefense { get; set; } = 0; public override ElementalResistanceSet ElementalResistance => new ElementalResistanceSet(Stats.AeolicResistance, Stats.HydricResistance, Stats.IgneousResistance, Stats.FerrumResistance, Stats.TelluricResistance, Stats.HolyResistance); public void IncreaseArmorDefense(int bonus) => _bonusDefense += bonus; public override ItemTag ItemTag => Stats.ItemTag; [Save("armor_stats")] [Export] public ArmorStats Stats { get; set; } = new ArmorStats(); public override Texture2D GetTexture() => Stats.Texture; }