public int RemovePassiveEffects(PassiveEffect pe) { for (int i = 0; i < ElementRates.Length; i++) { ElementRates[i] -= pe.ElementRates[i]; } for (int i = 0; i < StateRates.Length; i++) { StateRates[i] -= pe.StateRates[i]; } if (pe.StatModifiers != null) { StatModifiers.Subtract(pe.StatModifiers); } SPConsumeRate -= pe.SPConsumeRate; ComboDifficulty -= pe.ComboDifficulty; Counter -= pe.Counter; Reflect -= pe.Reflect; ExtraTurns -= pe.ExtraTurns; bool d1 = false; bool d2 = false; for (int i = 0; i < DisabledToolTypes.Count; i += 2) { if (pe.DisabledToolType1 == DisabledToolTypes[i] && !d1) { DisabledToolTypes.RemoveAt(i); d1 = true; } if (pe.DisabledToolType2 == DisabledToolTypes[i] && !d2) { DisabledToolTypes.RemoveAt(i); d2 = true; } } List <int> rbh = RemoveByHit; for (int i = 0; i < rbh.Count; i += 2) { if (pe.Id == rbh[i] && pe.RemoveByHit == rbh[i + 1]) { rbh.RemoveRange(i, 2); } } return(pe.Id); }