public virtual void Effect(ISkillArgs args) { ISkillEffect newE = SelectHighest(); if (current == null) { if (newE != null) { current = newE; current.Effect(args); } } else { if (newE == null) { current.Resume(args); current = newE; } else { if (newE.GetLevel() != current.GetLevel()) { current.Resume(args); current = newE; current.Effect(args); } } } }