При использовании предмета он подразумевает такое действие
  1. Выжечь ману врагу и себе
  2. Сравнить ману
2.1 Если мана больше у кастера, то вешать дебаф
2.2 Если мана меньше ничего не делать.
По итогу у меня выжигается полностью мана у кастера и только половина у цели. Соответственно срабатывает 2.2 только.
function ItemsActiveTarget__BenihisagoCast takes unit c,unit tu returns nothing
local real timeDebuff=12.
local real xx=.5
local real manaCaster=GetUnitState(c,UNIT_STATE_MANA)*xx
local real manaTarget=GetUnitState(tu,UNIT_STATE_MANA)*xx
local real x=GetWidgetX(c)
local real y=GetWidgetY(c)
local real x1=GetWidgetX(tu)
local real y1=GetWidgetY(tu)
call CreateEffect(x,y,1.,"Angel Sword.mdx",.5)
call DestroyEffect(AddSpecialEffect("DarkNova.mdx",x1,y1))
call SetUnitState(tu,UNIT_STATE_MANA,GetUnitState(c,UNIT_STATE_MANA)*xx)
call SetUnitState(c,UNIT_STATE_MANA,manaCaster-manaTarget)
if manaTarget<manaCaster then
call UnitTempSpell(tu,0x41303652,0x42303655,timeDebuff,0,true)
endif
endfunction

По итогу у меня выжигается полностью мана у кастера и только половина у цели.
Если я правильно понял, то нужно установить каждому юниту половину маны от своей текущей. Половина текущей маны каждого юнита у тебя хранится в переменных manaCaster и manaTarget. Тогда тебе нужно поменять эти две строчки
call SetUnitState(tu,UNIT_STATE_MANA,GetUnitState(c,UNIT_STATE_MANA)*xx)
call SetUnitState(c,UNIT_STATE_MANA,manaCaster-manaTarget)
на вот эти
call SetUnitState(tu, UNIT_STATE_MANA, manaTarget)
call SetUnitState(c, UNIT_STATE_MANA, manaCaster)
Если же нужно, чтобы количество выжженой маны у каждого юнита равнялось половине от маны кастера, то нужно вычесть от текущей маны цели половину маны кастера, которая у тебя сохранена в переменной manaCaster:
call SetUnitState(tu, UNIT_STATE_MANA, GetUnitState(tu, UNIT_STATE_MANA) - manaCaster)
call SetUnitState(c, UNIT_STATE_MANA, manaCaster)
`
ОЖИДАНИЕ РЕКЛАМЫ...
28
call SetUnitState(tu,UNIT_STATE_MANA,GetUnitState(c,UNIT_STATE_MANA)*xx)
Зачем ты вновь запускаешь GetUnitState(c,UNIT_STATE_MANA)*xx, если это значение уже записано в manaCaster? И при этом, ты это значение даёшь цели.
Как должна выжигаться мана? Сколько у цели, сколько у кастера?

UrsaBoss, ты про что?
2
PT153:
call SetUnitState(tu,UNIT_STATE_MANA,GetUnitState(c,UNIT_STATE_MANA)*xx)
Зачем ты вновь запускаешь GetUnitState(c,UNIT_STATE_MANA)*xx, если это значение уже записано в manaCaster? И при этом, ты это значение даёшь цели.
Как должна выжигаться мана? Сколько у цели, сколько у кастера?
Должна половину выжигать и тому и другому и дальше исходя из значения решать "вешать" или не "вешать" дебафф
21
вообще "выжечь" подразумевает с дамагом, а тут я его не вижу, разумнее "отнять", извините, если придирки
2
ClotPh:
вообще "выжечь" подразумевает с дамагом, а тут я его не вижу, разумнее "отнять", извините, если придирки
да. Именно это я и имел в виду)
3
По итогу у меня выжигается полностью мана у кастера и только половина у цели.
Если я правильно понял, то нужно установить каждому юниту половину маны от своей текущей. Половина текущей маны каждого юнита у тебя хранится в переменных manaCaster и manaTarget. Тогда тебе нужно поменять эти две строчки
call SetUnitState(tu,UNIT_STATE_MANA,GetUnitState(c,UNIT_STATE_MANA)*xx)
call SetUnitState(c,UNIT_STATE_MANA,manaCaster-manaTarget)
на вот эти
call SetUnitState(tu, UNIT_STATE_MANA, manaTarget)
call SetUnitState(c, UNIT_STATE_MANA, manaCaster)
Если же нужно, чтобы количество выжженой маны у каждого юнита равнялось половине от маны кастера, то нужно вычесть от текущей маны цели половину маны кастера, которая у тебя сохранена в переменной manaCaster:
call SetUnitState(tu, UNIT_STATE_MANA, GetUnitState(tu, UNIT_STATE_MANA) - manaCaster)
call SetUnitState(c, UNIT_STATE_MANA, manaCaster)
Принятый ответ
2
Спасибо.
Если я правильно понял, то выжигание кастеру и цели половину маны цели:
call SetUnitState(tu, UNIT_STATE_MANA, manaTarget)
call SetUnitState(c, UNIT_STATE_MANA, GetUnitState(c, UNIT_STATE_MANA) - manaTarget)
3
TomHollow:
Спасибо.
Если я правильно понял, то выжигание кастеру и цели половину маны цели:
call SetUnitState(tu, UNIT_STATE_MANA, manaTarget)
call SetUnitState(c, UNIT_STATE_MANA, GetUnitState(c, UNIT_STATE_MANA) - manaTarget)
Да, всё верно, не за что
Чтобы оставить комментарий, пожалуйста, войдите на сайт.