А нахрена так сложно? В дискордах теорикрафтеры все давно вытащили и разжевали
4 строчки типа
function()
local my_variable = select(17, UnitAura('player', 'Двойка из колоды Бессмертия'))
return my_variable
end
Совсем несложно
И если всё разжевали и всё ясно и понятно,то зачем тема,в которой мы всю эту красоту обсуждаем?
Так в том и фишка, что теперь по имени баффа просто не работает, поэтому то же самое что у тебя реализуется так:
function()
local AuraName = 'Двойка из колоды Бессмертия'
for i = 1,40 do
if UnitAura('player', i) and UnitAura('player', i)==AuraName then
return select(17,UnitAura('player', i))
end
end
end
ПС. в предыдущем сообщении в коде накосячил, сейчас поправлю.
Ну а если тебе нужен процент понижения урона от щита праведника, то это параметр напрямую зависит от уровня цели. Выше (Serafim1991) приведена формула для расчета понижения урона от брони. Предположим мы как-то получили базовое значение понижения урона (у меня на пале 77 лвл интерфейс показывает 37.4% понижения урона для цели 77 лвл, mit = 0.374, в целом без таблицы для k самостоятельно не реализуешь, по крайней мере я не нашел, как). Немного поиграемся в формулы:
mit = arm/(arm+k), отсюда k=arm*(1-mit)/mit.
Повышение брони от щита праведника up = 1.5*str, где str = сила.
Тогда новый коэффициент понижения брони newmit = (arm+up)/(arm+ap+k)=(arm+up)/(arm+up+arm*(1-mit)/mit)=(arm+up)/(arm/mit+up).
Остается вычесть из нового понижения старое, чтобы знать, насколько понижает урон именно щит праведника: mewmit-mit
Отсюда растет скрипт, в который надо просто подставить значение mit, которое ты нашел откуда-нибудь:
/run local mit = 0.374; print((select(4,UnitArmor('player'))+1.5*select(2,UnitStat('player', 1)))/(select(4,UnitArmor('player'))/mit+1.5*select(2,UnitStat('player', 1)))-mit)
Создал на бетке пробного пала 110, там при броне 947 и противнике 110 понижение 39,96, соответственно k примерно равен 1423. Подставляем в скрипт 0,3996 - получаем дополнительное снижение урона от щита - 0,214.
Если мы знаем k, скрипт выглядит чуть по-другому:
/run local k = 1423; print((select(4,UnitArmor('player'))+1.5*select(2,UnitStat('player', 1)))/(select(4,UnitArmor('player'))+1.5*select(2,UnitStat('player', 1))+k)-select(4,UnitArmor('player'))/(select(4,UnitArmor('player'))+k))