Изменить максимальные HP юниту

Добавлен , опубликован

function SetUnitMaxLife takes unit u, real life returns nothing
  local real r = life - GetUnitState(u, UNIT_STATE_MAX_LIFE)
  if r > 0. then
    if r > 1000. then
      loop
        call UnitAddAbility(u, 'A005')
        call SetUnitAbilityLevel(u, 'A005', 0x05)
        call UnitRemoveAbility(u, 'A005')
        set r = r - 1000.
        exitwhen r < 1000.
      endloop
    endif
    if r > 100. then
      loop
        call UnitAddAbility(u, 'A005')
        call SetUnitAbilityLevel(u, 'A005', 0x04)
        call UnitRemoveAbility(u, 'A005')
        set r = r - 100.
        exitwhen r < 100.
      endloop
    endif
    if r > 10. then
      loop
        call UnitAddAbility(u, 'A005')
        call SetUnitAbilityLevel(u, 'A005', 0x03)
        call UnitRemoveAbility(u, 'A005')
        set r = r - 10.
        exitwhen r < 10.
      endloop
    endif
    if r > 1. then
      loop
        call UnitAddAbility(u, 'A005')
        call SetUnitAbilityLevel(u, 'A005', 0x02)
        call UnitRemoveAbility(u, 'A005')
        set r = r - 1.
        exitwhen r < 1.
      endloop
    endif
  else
    if r < -1000. then
      loop
        call UnitAddAbility(u, 'A005')
        call SetUnitAbilityLevel(u, 'A005', 0x09)
        call UnitRemoveAbility(u, 'A005')
        set r = r + 1000.
        exitwhen r > -1000.
      endloop
    endif
    if r < -100. then
      loop
        call UnitAddAbility(u, 'A005')
        call SetUnitAbilityLevel(u, 'A005', 0x08)
        call UnitRemoveAbility(u, 'A005')
        set r = r + 100.
        exitwhen r > -100.
      endloop
    endif
    if r < -10. then
      loop
        call UnitAddAbility(u, 'A005')
        call SetUnitAbilityLevel(u, 'A005', 0x07)
        call UnitRemoveAbility(u, 'A005')
        set r = r + 10.
        exitwhen r > -10.
      endloop
    endif
    if r < -1. then
      loop
        call UnitAddAbility(u, 'A005')
        call SetUnitAbilityLevel(u, 'A005', 0x06)
        call UnitRemoveAbility(u, 'A005')
        set r = r + 1.
        exitwhen r > -1.
      endloop
    endif
  endif
endfunction
Где 'A005' ид спела на основе "Предмет: увеличение запаса здоровья" с уровнями:
1: +0 здоровья
2: -1
3: -10
4: -100
5: -1000
6: +1
7: +10
8: +100
9: +1000
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
32
Куда такая туча циклов и проверок, можно было покороче сделать и без циклов...
1
Давно искал эту статью, но из бошки вылетело про медецинский трактат. Спасибо за напоминание. Сделаю за 34 секунды на GUI))
2
а можно как то без способностей обойтись ? только триггеры
Этот комментарий удален
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.