Берсерк, или подробнее о расстояниях
Юнит под "Берсерком" всегда атакует ближайший к нему отряд. Только слово "ближайший" в данном случае не всегда соответствует нашим понятиям о расстояниях на поле боя. Условно клетки поля можно разделить на непересекающиеся классы относительно гекса, на котором стоит отряд под "Берсерком". Атаке будет подвергнут случайный юнит из класса с более высоким приоритетом.
На скриншоте №1 показан класс A
На скриншоте №2 показан класс B
На скриншоте №3 показан класс C
1. Классы A и B имеют ОДИНАКОВЫЕ приоритеты (имеет смысл говорить об объединении классов A+B);
2. Приоритет класса C ниже приоритета класса A+B: P(C) < P(A+B).
Эти простые правила позволяют предсказывать, какие из отрядов могут быть атакованы юнитом под "Берсерком".
Например, на скриншоте №4 только две горгульи могут быть атакованы джиннами, т.к. эти горгульи стоят на клетках, принадлежащих классу B, в то время как остальные входят в класс C.
Конечно, на практике думать ни о каких классах нет нужды: правило интуитивно понятно из-за симметрии. Можно также построить класс D, E и т.д. (все они будет симметричными, некоторые, возможно, с одинаковыми приоритетами).
Прибавьте к вышенаписанному предыдущий пост, а также правила построения маршрутов на поле боя (см. ветку с ФизМиГ'ом) и получится вполне непротиворечивая картина "Берсерка".
Кстати, летающие юниты действительно не видят препятствий: будь то бревно или первый гекс двухклеточного отряда. На скриншоте №5 джинны пропустят ход из-за бревна. Если джиннов поменять, например, на гоблинов, то атака произойдёт (пешие юниты под "Берсерком" соображают гораздо лучше).
Да, а причём здесь маршруты? Сначала не понятно, почему джинны пропускают ход на скриншоте №6. Всё становится на свои места, если учесть, что атаке мешает препятствие (озеро), а атаковать по-другому нельзя из-за требования уникальности маршрута.
P.S. Случай, который описал Dirty_Player, может быть обобщён (см. скриншот №7, не стал заполнять все клетки класса A+B, чтобы не загружать скрин).