public void AddStatusEffect(GameInfo.StatusEffect effectName, int duration, int magnitude, int addMagnitude, int removeMagnitude) { bool hasDuplicate = false; GameObject duplicate = null; StatusEffect duplicateEffect = null; for (int i = 0; i < statusEffectList.Count; i++) { if (statusEffectList[i].GetComponent <StatusEffect>().GetEffectName() == effectName) { hasDuplicate = true; duplicate = statusEffectList[i]; duplicateEffect = duplicate.GetComponent <StatusEffect>(); break; } } if (hasDuplicate && duplicateEffect.maxStacks > 0 && (duplicateEffect.GetNumberOfStacks() < duplicateEffect.GetMaxStacks())) { duplicateEffect.AddStack(duration, magnitude); } else { GameObject newEffect = (GameObject)Instantiate(gameInfo.statusEffectList[(int)effectName], transform.position, Quaternion.identity); newEffect.GetComponent <StatusEffect>().Initialize(duration, magnitude, addMagnitude, removeMagnitude); newEffect.transform.parent = transform; statusEffectList.Add(newEffect); newEffect.GetComponent <StatusEffect>().AddStatusEffect(); } }