Немного потестил "Цепь молний". Для определения отряда, который получит очередной разряд "Цепи молний", поочерёдно перебираются расстояния в пикселях между центром последнего поражённого молнией отряда и центрами всех остальных отрядов. Отряды перебираются следующим образом: сначала идут отряды нападающей стороны (в порядке их следования на экране героя, т.е. слева направо), а затем - обороняющейся. Первый найденный отряд, расстояние до которого оказывается минимальным, становится новой целью "Цепи молний". При переборе отрядов, разумеется, пропускаются отряды, ранее получившие разряд "Цепи молний", а также отряды, имеющие иммунитет к этому заклинанию (например, "цветные" драконы) или отразившие его (гномы).
Расстояние между отрядами измеряется в целых числах (пикселях): [sqrt((x1 - x2)^2 + (y1 - y2)^2)], поэтому при совпадении расстояний решает порядок обхода, что, скорее всего, имеет место быть в приведённом мной примере с "Крестоносцами - Копейщиками - Крестьянами". Если расставить войска так, как описано в примере, и направить "Цепь молний" на отряд Копейщиков, то следующий разряд "Цепи молний" необязательно пройдёт через Крестоносцев. Если Крестьяне в начальной расстановке будут стоять выше Крестоносцев, разряд молнии достанется отряду Крестьян, а не отряду Крестоносцев! Видимо, расстояния до обоих отрядов равны, поэтому выбирается тот отряд, который при переборе расстояний встречается раньше.
Пример. Координаты "центральных точек" отрядов обороняющейся стороны (широкие ряды, начало боя) будут следующими:
1. Peasants: (551; 73)
2. Archers: (551; 156)
3. Rangers: (551; 239)
4. Pikemen: (551; 320)
5. Veteran Pikemen: (551; 404)
Как видно, горизонтальные координаты у всех отрядов равны (551). Значит, при определении минимального расстояния решать будет разность между вертикальными координатами отрядов. Пусть мы направляем "Цепь молний" на второй отряд (Archers). Какой из отрядов получит следующий разряд? Нам достаточно рассмотреть два ближайших отряда: первый и третий, т.к. расстояния до остальных отрядов будут заведомо больше (пусть союзные отряды расположены на другом конце арены):
Archers - Peasants: |156 - 73| = 83
Archers - Rangers: |156 - 239| = 83
При равенстве расстояний урон достаётся отряду, идущему раньше при переборе, т.е. разряд получит первый отряд (Peasants). Как нетрудно догадаться, если переставить местами первый и третий отряды, в данном случае ничего не изменится: "Цепь молний" всё равно "пойдёт" вверх.
Пусть теперь мы направляем цепь молний на третий отряд:
Rangers - Archers: |239 - 156| = 83
Rangers - Pikemen: |239 - 320| = 81
Как видно, расстояние до Копейщиков меньше (т.к. они немного выше ростом), поэтому следующий разряд достанется именно им.