В варике есть баг, судя по выданным страницам гугла, он очень давно был найден. Баг заключается в том, что когда у феникса остается 1 хп, он бессмертен. Ничто его не убивает, сколько не пытайся. Вопрос - реально ли как-нибудь это исправить, не прибегая каким-то кастомным решениям?
И вообще, вы как-нибудь исправляли сей баг? Интересно было бы так же услышать, при каком условии фениксы становятся бессмертны. Потому что посмотрев реплей свыше пяти раз, я ничего не обнаружил.

Принятый ответ

EnergyFrost:
quq_CCCP, а для багнутого юнита будет работать GetUnitState хп? Просто тогда будет достаточно 2 проверки, при этом не запоминая хп всех юнитов в группе фениксов.
Если у юнита щас 1 хп. и через 5 секунд снова 1 хп - багнутый (ну либо очень невероятное совпадение для динамического хп феникса)
Работает, 0 хп...
`
ОЖИДАНИЕ РЕКЛАМЫ...
2
32
8 лет назад
Отредактирован quq_CCCP
2
Да удалять, это баг морфа феникса...
Суть бага, у юнита изначально меньше 1 хп.
Дело в том что юниту нельзя установить меньше чем 1 хп, хоть ты за нажимайся shift+enter, при подгрузки и проверки данных, когда карта уже загружается в игру - движек строго проверяет значения хп у юнитов и ставит им 1 хп, если хп меньше 1 или больше максимума....
Но вот незадача, морфы могут ставить бонус хп юнитам, вспомните Охотника на Демонов - он получает дополнительное хп, когда превращается в демона, и теряет его при обратном морфе.
Значит при морфе юнита, движок меняет данные в структуре юнита, патчит участок памяти где хранятся все данные юнита, пересчитывая кол-во хп, но тут нету никаких проверок, внутри движка можно ставить юниту сколько влезет хп, даже отрецательное.
Вот вам и баг, если у юнита макс хп меньше 1 то он не умрет от любого урона, даже функция KillUnit несможет его убить, при этом события получения урона привязанные к юниту будут работать исправно...
Выход -удаление юнита, либо полноценный морф в другого юнита.
У феникса происходит этот баг если в момент превращения, когда происходит перерасчет хп феникса его оглушить.
0
15
8 лет назад
0
quq_CCCP, а для багнутого юнита будет работать GetUnitState хп? Просто тогда будет достаточно 2 проверки, при этом не запоминая хп всех юнитов в группе фениксов.
Если у юнита щас 1 хп. и через 5 секунд снова 1 хп - багнутый (ну либо очень невероятное совпадение для динамического хп феникса)
0
32
8 лет назад
0
EnergyFrost:
quq_CCCP, а для багнутого юнита будет работать GetUnitState хп? Просто тогда будет достаточно 2 проверки, при этом не запоминая хп всех юнитов в группе фениксов.
Если у юнита щас 1 хп. и через 5 секунд снова 1 хп - багнутый (ну либо очень невероятное совпадение для динамического хп феникса)
Работает, 0 хп...
Принятый ответ
0
15
8 лет назад
0
quq_CCCP, ок. Спасибо. Вопрос закрыт
Чтобы оставить комментарий, пожалуйста, войдите на сайт.