Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using Assets.Scripts.Stats;
- /* An Item that can be equipped. */
- public enum EquipmentType { Helmet, Chest, Gloves, Boots, Weapon1, Weapon2, Accessory1, Accessory2, Belt }
- public enum EquipmentMeshRegion { Head, Torso, Arms, Legs, Feet }; // Coresponds to body blendshapes.
- [CreateAssetMenu(fileName = "New Equipment", menuName = "Inventory/Equipment")]
- public class EquippableItem : Item
- {
- public SkinnedMeshRenderer mesh;
- public EquipmentMeshRegion[] coveredMeshRegions;
- public int Damage;
- public int Defense;
- [Space]
- [Tooltip("Flat strength value")]
- public int StrengthBonus;
- public int AgilityBonus;
- public int IntelligenceBonus;
- public int VitalityBonus;
- [Space]
- public float StrengthPercentBonus;
- public float AgilityPercentBonus;
- public float IntelligencePercentBonus;
- public float VitalityPercentBonus;
- [Space]
- public EquipmentType EquipmentType;
- public override Item GetCopy()
- {
- return Instantiate(this);
- }
- public override void Destroy()
- {
- Destroy(this);
- }
- public void Equip(Character c)
- {
- if (Damage != 0)
- c.Damage.AddModifier(new Modifier(Damage, StatModType.Flat, this));
- if (Defense != 0)
- c.Defense.AddModifier(new Modifier(Defense, StatModType.Flat, this));
- if (StrengthBonus != 0)
- c.Strength.AddModifier(new Modifier(StrengthBonus, StatModType.Flat, this));
- if (AgilityBonus != 0)
- c.Agility.AddModifier(new Modifier(AgilityBonus, StatModType.Flat, this));
- if (IntelligenceBonus != 0)
- c.Intelligence.AddModifier(new Modifier(IntelligenceBonus, StatModType.Flat, this));
- if (VitalityBonus != 0)
- c.Vitality.AddModifier(new Modifier(VitalityBonus, StatModType.Flat, this));
- if (StrengthPercentBonus != 0)
- c.Strength.AddModifier(new Modifier(StrengthPercentBonus, StatModType.PercentMult, this));
- if (AgilityPercentBonus != 0)
- c.Agility.AddModifier(new Modifier(AgilityPercentBonus, StatModType.PercentMult, this));
- if (IntelligencePercentBonus != 0)
- c.Intelligence.AddModifier(new Modifier(IntelligencePercentBonus, StatModType.PercentMult, this));
- if (VitalityPercentBonus != 0)
- c.Vitality.AddModifier(new Modifier(VitalityPercentBonus, StatModType.PercentMult, this));
- }
- public void Unequip(Character c)
- {
- c.Strength.RemoveAllModifiersFromSource(this);
- c.Agility.RemoveAllModifiersFromSource(this);
- c.Intelligence.RemoveAllModifiersFromSource(this);
- c.Vitality.RemoveAllModifiersFromSource(this);
- c.Damage.RemoveAllModifiersFromSource(this);
- c.Defense.RemoveAllModifiersFromSource(this);
- }
- public override string GetItemType()
- {
- return EquipmentType.ToString();
- }
- public override string GetItemDescription()
- {
- sb.Length = 0;
- AddStat(StrengthBonus, "Strength");
- AddStat(AgilityBonus, "Agility");
- AddStat(IntelligenceBonus, "Intelligence");
- AddStat(VitalityBonus, "Vitality");
- AddStat(StrengthPercentBonus, "Strength", isPercent: true);
- AddStat(AgilityPercentBonus, "Agility", isPercent: true);
- AddStat(IntelligencePercentBonus, "Intelligence", isPercent: true);
- AddStat(VitalityPercentBonus, "Vitality", isPercent: true);
- return sb.ToString();
- }
- private void AddStat(float value, string statName, bool isPercent = false)
- {
- if (value != 0)
- {
- if (sb.Length > 0)
- sb.AppendLine();
- if (value > 0)
- sb.Append("+");
- if (isPercent)
- {
- sb.Append(value * 100);
- sb.Append("% ");
- }
- else
- {
- sb.Append(value);
- sb.Append(" ");
- }
- sb.Append(statName);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement