public virtual void DeactivateEquipStatusEffectsForEquipment(Equipment equipment)
    {
        List <EquipStatusEffect> currentEquipStatusEffects = this.gameObject.GetComponents <EquipStatusEffect>().ToList();

        foreach (AggregateStatusEffectMetaData metaData in equipment.statusEffectMetaData)
        {
            if (metaData.statusEffect.activateOnEquip == true)
            {
                EquipStatusEffect currentStatusEffect = currentEquipStatusEffects.Find(x => x.statusEffectName == metaData.statusEffect.statusEffectName);
                if (currentStatusEffect == null)
                {
                    Debug.LogError("Creature.DeactivateEquipStatusEffectsForEquipment: Attempting to deactivate Status Effect " + metaData.statusEffect.statusEffectName + " but it is not currently active on the creature");
                    return;
                }
                currentStatusEffect.level -= metaData.aggregateLevel;
                if (currentStatusEffect.level <= 0)
                {
                    currentStatusEffect.StopStatusEffect();
                    Destroy(currentStatusEffect);
                }
                else
                {
                    currentStatusEffect.UpdateStatusEffect();
                }
            }
        }
    }
    public virtual void ActivateEquipStatusEffectsForEquipment(Equipment equipment)
    {
        foreach (AggregateStatusEffectMetaData metaData in equipment.statusEffectMetaData)
        {
            if (metaData.statusEffect.activateOnEquip == true)
            {
                List <EquipStatusEffect> currentEquipStatusEffects = this.gameObject.GetComponents <EquipStatusEffect>().ToList();
                EquipStatusEffect        currentStatusEffect       = currentEquipStatusEffects.Find(x => x.statusEffectName == metaData.statusEffect.statusEffectName);

                if (currentStatusEffect != null)
                {
                    currentStatusEffect.level += metaData.aggregateLevel;
                    currentStatusEffect.UpdateStatusEffect();
                }
                else
                {
                    currentStatusEffect = this.gameObject.AddComponent(Type.GetType(metaData.statusEffect.statusEffectName)) as EquipStatusEffect;
                    currentStatusEffect.equipmentType    = equipment.equipmentType;
                    currentStatusEffect.level            = metaData.aggregateLevel;
                    currentStatusEffect.statusEffectName = metaData.statusEffect.statusEffectName;
                    currentStatusEffect.ApplyStatusEffect(this);
                }
            }
        }
    }