В связи с недавними не понравившимися многим изменениями в вихре предлагаю несколько иную механику работы данного заклинания. Вихрь - при попадании на клетку, невидимый вихрь отбрасывает юнита на 1-5 клеток в случайном направлении. Сокрушительный ветер приводит к значительным потерям войск.
В таком варианте это должен быть 4-й уровень тёмной магии, соответственно манакост, распространённость и цену создания (особенно её) надо значительно увеличить.
Механика: на клетку ставится невидимый ни для кого, кроме создателя, вихрь. При попадании на него юнита происходит следующее:
1) Генерируется случайное число Х от 1 до 5. Это расстояние полета.
В: Почему просто не выбрать случайную клетку в радиусе 5?
О: Если сделать так, то вероятность полета на 4-5 клеток будет слишком высока, и мы вернемся к современному вихрю. А так 60% вероятности что вихрь телепортирует лишь на 3 клетки.
2) Выбирается случайная клетка Y, находящаяся на расстоянии Х от месторасположения вихря.
3.1) Если клетка Y и доступна для данного типа юнитов (суша для сухопутных, море для кораблей, дирижаблям неважно), то юнит оказывается на данной клетке, предварительно получив урон как от огненной стены.
3.2) Если клетка Y занята, но доступна для данного типа юнитов, то ищется ближайшая незанятая доступная для данного типа юнитов клетка Z и юнит помещается туда (если ближайших клеток более чем одна, то юнит помещается в случайную). При этом юнит получает дополнительный урон в размере (урон с огнестена)*(расстояние между клетками Y и Z).
3.3) Если юнит был кораблём и оказался на земле - он погибает вместе со всем форсом. Содержимое, не являющееся форсом, остаётся лежать в виде сундука. Если корабль - транспорт и в нём были герои, то они получают урон как от огнестена и высаживаются в соответствии с процедурами 3.1 и 3.2. При высадке герои имеют 0 ходов. Во-первых, это реалистично (деревянные корабли не держат урона от падения), во-вторых - позволяет избежать нынешних транспортных читов.
3.4) Если юнит был наземным и оказался в воде, то он выплывает на ближайшую клетку суши A, теряя по 2 хода за каждую единицу расстояния между Y и A (было бы неплохо, если бы потерянные данным способом ходы могли уходить в отрицаловку). Если данная клетка занята, то юнит, в соответствии с процедурой 3.2, переносится на ближайшую свободную сухопутную клетку. Если подобной клетки не существует (маленький остров 2 на 2 полностью забитый, например), юнит погибает.
Для тех, кто не способен осилить алгоритмизованный wall of text: В этом варианте вихрь работает с гарантией, зато может телепортировать даже на занятые клетки и в воду, при этом юнита либо несет дальше (с нанесением дополнительного урона), либо он разбивается/выплывает с потерей ходов (корабль/наземный юнит соответственно).
P. S. Забыл дописать сразу, но мне напомнили. В данном варианте при большой заполненности попадание в вихрь может означать гибель стека. Поэтому, возможно, не стоит его делать абсолютно невидимым, а дать ему видимость 1. В этом случае вихрь, стоящий на месте, можно рассматривать как интересный метод ловушки для наступающей армии (видят брешь - подходят - а там вихри, а ходов отойти не хватает).
Хотелось бы конструктивных комментариев. Урон можно корректировать, если огнестен действительно наносит слишком много. Или же можно сделать его магическим, чтобы юниты умирали примерно с одинаковой скоростью.