public void ApplyBacklashVariantSuffixes(BatchSubtracter leftLifeSubstracter, BatchSubtracter rightLifeSubstracter, BatchSubtracter leftPillzSubstracter, BatchSubtracter rightPillzSubstracter, Poison poisonToLeft, Poison poisonToRight, CanceledModifiers leftCanceledModifiers, CanceledModifiers rightCanceledModifiers) { for (int i = 0; i < 4; i++) { bool isLeft = IsLeft(i); // Backlash has some distinctions so we treat it in an individual loop if (skills[i].Prefix == SkillPrefix.Backlash) { switch (skills[i].Suffix) { case SkillSuffix.DecreaseLifeXMinY: if (isLeft) { if (!leftCanceledModifiers.Life()) { leftLifeSubstracter.InsertSubstraction(skills[i].X, skills[i].Y); } } else { if (!rightCanceledModifiers.Life()) { rightLifeSubstracter.InsertSubstraction(skills[i].X, skills[i].Y); } } break; case SkillSuffix.DecreasePillzXMinY: if (isLeft) { if (!leftCanceledModifiers.Pillz()) { leftPillzSubstracter.InsertSubstraction(skills[i].X, skills[i].Y); } } else { if (!rightCanceledModifiers.Pillz()) { rightPillzSubstracter.InsertSubstraction(skills[i].X, skills[i].Y); } } break; case SkillSuffix.PoisonXMinY: if (isLeft) { if (!leftCanceledModifiers.Life()) { poisonToLeft = new Poison(skills[i]); } } else { if (!rightCanceledModifiers.Life()) { poisonToRight = new Poison(skills[i]); } } break; } } } }