static IList <int> GetPlayCardTargets(bool friendlyTurn, NetSkill ns, NetCard nc, NetBattlefield bf) { Subskill ss = ns.GetSubSkill(); if (ss.trigger.triggerGroup == ETriggerGroupType.DoAttack || ss.trigger.triggerGroup == ETriggerGroupType.DoAlternateAttack) { if (ss.trigger.requiredToBeInFrontline) { if (friendlyTurn) { return(bf.GetFreeFriendlyMeleeSlots(false)); } else { return(bf.GetFreeEnemyMeleeSlots(false)); } } else if (ss.trigger.requiredToBeInBackline) { if (friendlyTurn) { return(bf.GetFreeFriendlyRangedSlots(false)); } else { return(bf.GetFreeEnemyRangedSlots(false)); } } else { List <int> both; if (friendlyTurn) { IList <int> a = bf.GetFreeFriendlyMeleeSlots(false); IList <int> b = bf.GetFreeFriendlyRangedSlots(false); both = new List <int>(a.Count + b.Count); both.AddRange(a); both.AddRange(b); return(both); } else { IList <int> a = bf.GetFreeEnemyMeleeSlots(false); IList <int> b = bf.GetFreeEnemyRangedSlots(false); both = new List <int>(a.Count + b.Count); both.AddRange(a); both.AddRange(b); return(both); } } } else { return(ns.FindValidTargets(bf, -1)); } }