public int GetBestTarget(int monsterIndex) { Monster mon = (Monster)User.Field.Monsters[monsterIndex]; int targetIndex = -1; int strongest = 0; foreach (int i in GetViableTargets(monsterIndex)) { Monster target = (Monster)Opponent.Field.Monsters[i]; if (target.Attack > strongest || MonsterTypes.GetWeakness(target.Type) == mon.Type) { strongest = target.Attack; targetIndex = i; } } return(targetIndex); }
public List <int> GetViableTargets(int monsterIndex) { List <int> targets = new List <int>(); Monster mon = (Monster)User.Field.Monsters[monsterIndex]; if (mon != null) { for (int i = 0; i < Opponent.Field.Length; i++) { if (Opponent.Field.Monsters[i] != null) { Monster target = (Monster)Opponent.Field.Monsters[i]; if (target.Defense < mon.Attack || MonsterTypes.GetWeakness(target.Type) == mon.Type) { targets.Add(i); } } } } return(targets); }