using UnityEngine; namespace Kryz.CharacterStats.Examples { public enum EquipmentType { Helmet, Chest, Gloves, Boots, MainWeapon, OffWeapon, Accessory, Amulet, } [CreateAssetMenu] public class EquippableItem : Item { public int StrengthBonus; public int AgilityBonus; public int IntelligenceBonus; public int SpiritBonus; public int VitalityBonus; [Space] public float StrengthPercentBonus; public float AgilityPercentBonus; public float IntelligencePercentBonus; public float SpiritPercentBonus; public float VitalityPercentBonus; [Space] public int AttackDamageBonus; public int SpellDamageBonus; public int CritChanceBonus; public int CritDamageBonus; public int MaxHealthBonus; public int ArmorBonus; public int MagicResistanceBonus; [Space] public int AttackDamagePercentBonus; public int SpellDamagePercentBonus; public int CritChancePercentBonus; public int CritDamagePercentBonus; public int MaxHealthPercentBonus; public int ArmorPercentBonus; public int MagicResistancePercentBonus; public EquipmentType EquipmentType; public void Equip(PlayerCharacterStats c) { if (StrengthBonus != 0) c.Strength.AddModifier(new StatModifier(StrengthBonus, StatModType.Flat, this)); if (AgilityBonus != 0) c.Agility.AddModifier(new StatModifier(AgilityBonus, StatModType.Flat, this)); if (IntelligenceBonus != 0) c.Intelligence.AddModifier(new StatModifier(IntelligenceBonus, StatModType.Flat, this)); if (SpiritBonus != 0) c.Spirit.AddModifier(new StatModifier(SpiritBonus, StatModType.Flat, this)); if (VitalityBonus != 0) c.Vitality.AddModifier(new StatModifier(VitalityBonus, StatModType.Flat, this)); if (StrengthPercentBonus != 0) c.Strength.AddModifier(new StatModifier(StrengthPercentBonus, StatModType.PercentMult, this)); if (AgilityPercentBonus != 0) c.Agility.AddModifier(new StatModifier(AgilityPercentBonus, StatModType.PercentMult, this)); if (IntelligencePercentBonus != 0) c.Intelligence.AddModifier(new StatModifier(IntelligencePercentBonus, StatModType.PercentMult, this)); if (SpiritPercentBonus != 0) c.Spirit.AddModifier(new StatModifier(SpiritPercentBonus, StatModType.PercentMult, this)); if (VitalityPercentBonus != 0) c.Vitality.AddModifier(new StatModifier(VitalityPercentBonus, StatModType.PercentMult, this)); if (AttackDamageBonus != 0) c.AttackDamage.AddModifier(new StatModifier(AttackDamageBonus, StatModType.Flat, this)); if (SpellDamageBonus != 0) c.SpellDamage.AddModifier(new StatModifier(SpellDamageBonus, StatModType.Flat, this)); if (CritChanceBonus != 0) c.CritChance.AddModifier(new StatModifier(CritChanceBonus, StatModType.Flat, this)); if (CritDamageBonus != 0) c.CritDamage.AddModifier(new StatModifier(CritDamageBonus, StatModType.Flat, this)); if (MaxHealthBonus != 0) c.MaxHealth.AddModifier(new StatModifier(MaxHealthBonus, StatModType.Flat, this)); if (ArmorBonus != 0) c.Armor.AddModifier(new StatModifier(ArmorBonus, StatModType.Flat, this)); if (MagicResistanceBonus != 0) c.MagicResistance.AddModifier(new StatModifier(MagicResistanceBonus, StatModType.Flat, this)); if (AttackDamagePercentBonus != 0) c.AttackDamage.AddModifier(new StatModifier(AttackDamagePercentBonus, StatModType.PercentAdd, this)); if (SpellDamagePercentBonus != 0) c.SpellDamage.AddModifier(new StatModifier(SpellDamagePercentBonus, StatModType.PercentAdd, this)); if (CritChancePercentBonus != 0) c.CritChance.AddModifier(new StatModifier(CritChancePercentBonus, StatModType.PercentAdd, this)); if (CritDamagePercentBonus != 0) c.CritDamage.AddModifier(new StatModifier(CritDamagePercentBonus, StatModType.PercentAdd, this)); if (MaxHealthPercentBonus != 0) c.MaxHealth.AddModifier(new StatModifier(MaxHealthPercentBonus, StatModType.PercentAdd, this)); if (ArmorPercentBonus != 0) c.Armor.AddModifier(new StatModifier(ArmorPercentBonus, StatModType.PercentAdd, this)); if (MagicResistancePercentBonus != 0) c.MagicResistance.AddModifier(new StatModifier(MagicResistancePercentBonus, StatModType.PercentAdd, this)); } public void Unequip(PlayerCharacterStats c) { c.Strength.RemoveAllModifiersFromSource(this); c.Agility.RemoveAllModifiersFromSource(this); c.Intelligence.RemoveAllModifiersFromSource(this); c.Spirit.RemoveAllModifiersFromSource(this); c.Vitality.RemoveAllModifiersFromSource(this); c.AttackDamage.RemoveAllModifiersFromSource(this); c.SpellDamage.RemoveAllModifiersFromSource(this); c.CritChance.RemoveAllModifiersFromSource(this); c.CritDamage.RemoveAllModifiersFromSource(this); c.MaxHealth.RemoveAllModifiersFromSource(this); c.Armor.RemoveAllModifiersFromSource(this); c.MagicResistance.RemoveAllModifiersFromSource(this); } } }