- Баг: В событии "боевая единица получает урон" (EVENT_UNIT_DAMAGED) не работает действие Wait (TriggerSleepAction).
Решение: Похоже, что только таймерами или помещением действия Wait в отдельную функцию и вызовом её через ExecuteFunc. Они там работают нормально.
- Баг: После первой реакции на событие "боевая единица получает урон" (EVENT_UNIT_DAMAGED) даже если захотеть компенсировать урон, это не будет сделано (жизни первый раз не восполнятся).
Решение: Нужно создать таймер, который запускается одноразово на 0.001 сек., затем уже менять жизни боевой единицы. Сработает на ура. Даже если у юнита одна единица здоровья, он не умрёт, останется в живых.
- Баг: Почти все стандартные способности WarCraft 3 регистрируют двойное, тройное и даже учетверённое событие получения урона. Из-за этого авторы некоторых карт могут рвать на себе волосы, не понимая, откуда взялся вылет в карте из-за зацикливания урона. С обычной атакой такого не происходит.
Решение: Во всех триггерах карты с подобным событием нужно всегда ставить условие, которое будет проверять, что полученный урон больше нуля (либо не равен нулю, если вы используете отрицательный урон). В Jass оно выглядит как GetEventDamage() > 0. Не пренебрегайте этим.
[DUОS]
#901 | Тема: Баги в триггерах и JassОзнакомлю вас с небольшим списком моих "находок" в языке Jass. Находки очень любопытные.
Школа - это место, где шлифуют булыжники и портят алмазы. © Роберт Ингерсолл