Добавлен EviLInside
Ситуация такая, есть пассивка которая по умолчанию у юнита. (не учится)
Пассивка переодически по умолчанию раз в 5 секунд ресает герою здоровье в размере 50% от силы.
Периодичность отхила зависит от текущего здоровья. Если хп фул то таймер 5 секунд. каждые 10% потеряного хп уменьшает таймер на 0.5 сек.
Всё бы легко, но как сделать красиво это на jass я чё то запутался. Допустим если этого юнита нет на карте что бы таймер просто так не тикал. Естественно mui нужно, без всякого мусора короче. Тут кода по сути должно быть образно 10 строчек, но я реально чё то завис. Может кто накидать как правильно инициировать для каждого юнита с пассивкой на карте этот код.
Пассивка переодически по умолчанию раз в 5 секунд ресает герою здоровье в размере 50% от силы.
Периодичность отхила зависит от текущего здоровья. Если хп фул то таймер 5 секунд. каждые 10% потеряного хп уменьшает таймер на 0.5 сек.
Всё бы легко, но как сделать красиво это на jass я чё то запутался. Допустим если этого юнита нет на карте что бы таймер просто так не тикал. Естественно mui нужно, без всякого мусора короче. Тут кода по сути должно быть образно 10 строчек, но я реально чё то завис. Может кто накидать как правильно инициировать для каждого юнита с пассивкой на карте этот код.
Принятый ответ
EviLInside, ну я бы вообще мог сделать отдельный счёт периодичности для каждого юнита, и выдавать дополнительное ХП в зависимости от того, когда это необходимо.
При каждом срабатывании таймера проверить что время периодика меньше такта таймера.
И увеличивать периодик на значение из расчётов, т.е. от 0.5 до 5.0 в зависимости от % ХП.
И каждый раз при этом хилить на 50% от Силы. Вот и всё.
И увеличивать периодик на значение из расчётов, т.е. от 0.5 до 5.0 в зависимости от % ХП.
И каждый раз при этом хилить на 50% от Силы. Вот и всё.
Т.е. тут глобальная группа заменится на массив из связки юнит/время.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
При 90% ХП это 50% от Силы раз в 4,5 сек = 11,(1)% от Силы в секунду.
При 80% ХП это 50% от Силы раз в 4 сек = 12,5% от Силы в секунду.
При 70% ХП это 50% от Силы раз в 3,5 сек = 14,23% от Силы в секунду.
При 60% ХП это 50% от Силы раз в 3 сек = 16,(6)% от Силы в секунду.
При 50% ХП это 50% от Силы раз в 2,5 сек = 20% от Силы в секунду.
При 40% ХП это 50% от Силы раз в 2 сек = 25% от Силы в секунду.
При 30% ХП это 50% от Силы раз в 1,5 сек = 33,(3)% от Силы в секунду.
При 20% ХП это 50% от Силы раз в 1 сек = 50% от Силы в секунду.
При 10% ХП это 50% от Силы раз в 0,5 сек = 100% от Силы в секунду.
mH = maxHP / максимально здоровье
mT = maxTIME / максимальное время (5 секунд)
STR * 0.5 = Мощность регена от Силы героя
+ стопить таймер, если вдруг все юниты из группы будут дропнуты
+ запускать таймер, если друг в пустую группу будут добавляться ещё юниты
Отредактирован EviLInside
потом запускаем для каждого таймер №1
таймер №1 чекает хп и в зависимости от хп задаёт периодичность таймеру №2
Но типо как влезть в таймер №2 что бы его значение менялось на текущее актуальное
в этом моменте я и заступорился . Но это моё видение, может есть какие то другие решения попроще или т.п
И увеличивать периодик на значение из расчётов, т.е. от 0.5 до 5.0 в зависимости от % ХП.
И каждый раз при этом хилить на 50% от Силы. Вот и всё.
Если пассивка у нескольких героев, можно создать один таймер и группу. Периодически таймер чекает группу. В эту группу заноси своих героев, у которых есть эта пассивка. И можно включать таймер, если в группе появляется герой, и выключать.