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("accessory")] public partial class Accessory : 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 BonusAttack => Stats.BonusAttack; public override int BonusDefense => Stats.BonusDefense; public override int BonusHP => Stats.BonusHP; public override int BonusVT => Stats.BonusVT; public override ElementalResistanceSet ElementalResistance => new ElementalResistanceSet(Stats.AeolicResistance, Stats.HydricResistance, Stats.IgneousResistance, Stats.FerrumResistance, Stats.TelluricResistance, Stats.HolyResistance); [Save("accessory_tag")] public AccessoryTag AccessoryTag => Stats.AccessoryTag; public override ItemTag ItemTag => Stats.ItemTag; [Export] [Save("accessory_stats")] public AccessoryStats Stats { get; set; } = new AccessoryStats(); public override Texture2D GetTexture() => Stats.Texture; }