|
•(Протестировано) Баги отхода инфильтраторов (невидимок) - Hruks, 15.12.2010 2:39:19 |
|
|
Отход сделан криво. Неверно определется запас хода, в результате, если филя ходил по диагонали, либо решил отойти по диагонали и у него оставался недостаточный запас, то всё встаёт колом - филя не движется и юнит, готовый его задавить (обнаружить) тупит. Кроме того, явно видно, что юнит, наезжающий на невидимку тупит - ждёт пока дорогу освободят. Невидимки при таком раскладе вычисляются внимательным игроком на раз.
1. В функции set_move_away проверяется флаг юнита is_moving. Этот флаг не сбрамывается, если у юнита задан маршрут, но не хватает запаса хода для совершения отхода. Нужно заменить на какой-то более подходящий (я сам в них путаюсь, тысячи их!)
2. Запас хода сравнивается с 0. cur.speed сравнивается с нулём, а путь pval:=10*(1+0.42*ord((u.x<>u.xt)and(u.y<>u.yt)))). Нужно тогда проверку после вычисления пути сделать. Также непонятно, почему путь состоит из 2х значений (второе вроде бы лишь для поворота используется) и у каждого заполнен pval. Что-то тут не верно.
3. Почему для задания пути не воспользоваться функцией set_move_unit(n,u.x+ao,u.y+bo)? Путь при этом автоматически выставится.
4. Чтобы юниты не тупили и не выдавали инфильтраторов, предлогаю не двигать невидимок, а телепортировать их мгновенно. Конечно, проверки запаса пути и проходимость в точку долны выполняться. Просто перемещение должно быть не своим ходом, а этаким резким отпрыгиванием :) Юнит всё равно невидим - никто даже не заметит такого манёвра :) |
|
| |