Рыцарь Смерти
Re: Рыцарь Смерти
Есть у кого то сборка на БДК дд спеке на 3.3.5?
Re: Рыцарь Смерти
нет ли у кого сборки фдк бдк адк для ШЛ 9.2.7?
Re: Рыцарь Смерти
В этой теме я расписывал как сделать прожим сейвов основываясь на входящем уроне в течении последних 5 секунд http://blackdps.ru/forum/viewtopic.php?f=6&t=1013
Выкладываю доработанный код для блад дк который помимо определения входящего урона в течении 5 секунд (см. ссылку выше) ещё определяет сколько будет хилить "Удар смерти" учитывая моды на дополнительный отхил и входящий урон в течении 5 секунд (моды увеличивающие отхил были написаны под патч драгонфлая, в других дополнениях возможна частично некорректная работа)
Вставляем в пользовательский код
Теперь команда пользовательского кода "DeathStrikeHeal" будет возвращать количество которое нам отхилит данный спелл.
Остаётся только вычесть это значение из максимального количества своего здоровья чтобы получить порог хп при котором данный спелл не будет оверхилить.
В блоке выглядеть это будет вот так
Выкладываю доработанный код для блад дк который помимо определения входящего урона в течении 5 секунд (см. ссылку выше) ещё определяет сколько будет хилить "Удар смерти" учитывая моды на дополнительный отхил и входящий урон в течении 5 секунд (моды увеличивающие отхил были написаны под патч драгонфлая, в других дополнениях возможна частично некорректная работа)
Вставляем в пользовательский код
Код: Выделить всё
frame = CreateFrame("FRAME")
frame:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
local damageTable = {}
local updatedamageInterval = 0.1
local eventIndex = 0
frame:SetScript("OnEvent", function(self, event, ...)
if event == "COMBAT_LOG_EVENT_UNFILTERED" then
local timestamp, cleuEvent, hideCaster, sourceGUID, sourceName, sourceFlags, sourceRaidFlags, destGUID, destName, destFlags, destRaidFlags, spellId, spellName, spellSchool, param15, param16, param17, param18, param19, param20;
eventIndex = eventIndex + 1
local t = time()
if checkVersionOld(1,3) then
timestamp, cleuEvent, sourceGUID, sourceName, sourceFlags, destGUID, destName, destFlags, spellId, spellName, spellSchool, param15, param16, param17, param18, param19, param20 = ...;
elseif checkVersionOld(4,7) then
timestamp, cleuEvent, hideCaster, sourceGUID, sourceName, sourceFlags, sourceRaidFlags, destGUID, destName, destFlags, destRaidFlags, spellId, spellName, spellSchool, param15, param16, param17, param18, param19, param20 = ...;
else
timestamp, cleuEvent, hideCaster, sourceGUID, sourceName, sourceFlags, sourceRaidFlags, destGUID, destName, destFlags, destRaidFlags, spellId, spellName, spellSchool, param15, param16, param17, param18, param19, param20 = CombatLogGetCurrentEventInfo();
end
if cleuEvent == "SWING_DAMAGE" and isPlayer(destGUID) then
local _, _, _, _, _, _, _, _, _, _, _, amount = CombatLogGetCurrentEventInfo()
damageTable[eventIndex] = {t, amount}
elseif (cleuEvent == "SPELL_DAMAGE" or cleuEvent == "SPELL_PERIODIC_DAMAGE" or cleuEvent == "RANGE_DAMAGE") and isPlayer(destGUID) then
local _, _, _, _, _, _, _, _, _, _, _, _, _, _, amount = CombatLogGetCurrentEventInfo()
damageTable[eventIndex] = {t, amount}
end
end
end)
local DeathStrikeHeal = 0
local totalTime = 0
local totalDamage = 0
local damageInLast5Seconds = 0
frame:SetScript("OnUpdate", function(self, elapsed)
totalTime = totalTime + elapsed
if totalTime >= updatedamageInterval then
local t = time() - 5
for k, v in pairs(damageTable) do
if v[1] < t then
damageTable[k] = nil
else
totalDamage = totalDamage + v[2]
end
end
damageInLast5Seconds = totalDamage
-- The death strike check has begun
local mod = 0
local DSHEAL = 0
local ModDSHEAL = 0
local BaseDSHEAL = 0
local minHealing = 0
local baseHealing = 0
local vers_bonus = 1 + (GetCombatRatingBonus(CR_VERSATILITY_DAMAGE_DONE) + GetVersatilityBonus(CR_VERSATILITY_DAMAGE_DONE))/100
minHealing = 0.07
baseHealing = 0.25
if max(GetBuffCount("player", "Окровавленная земля",0)) > 0 then
mod = mod + 0.06
end
if IsPlayerSpell(374277) then
if ((MyGetSpecializationName() == "Кровь") and 1 or 0) == 1 then
mod = mod + 0.05
else
mod = mod + 0.6
end
end
if IsPlayerSpell(273953) then
mod = mod + 0.15
end
if max(GetBuffRemainTime("player", "Кровь вампира",0)) > 0 then
if IsPlayerSpell(317133) then
mod = mod + 0.4
else
mod = mod + 0.3
end
end
if max(GetBuffCount("player", "Гемостаз",0)) > 0 then
mod = mod * (1 + (max(GetBuffCount("player", "Гемостаз",0)) * 0.08))
end
if max(GetBuffRemainTime("player", "Божественный гимн",0)) > 0 then
mod = mod + 0.04
end
if max(GetBuffRemainTime("player", "Оберегающий дух",0)) > 0 then
mod = mod + 0.60
end
baseHealing = baseHealing * (1 + mod) * vers_bonus
minHealing = minHealing * (1 + mod) * vers_bonus
BaseDSHEAL = UnitHealthMax("player") * minHealing
ModDSHEAL = damageInLast5Seconds * baseHealing
if ModDSHEAL > BaseDSHEAL then
DSHEAL = ModDSHEAL
else
DSHEAL = BaseDSHEAL
end
DeathStrikeHeal = DSHEAL
-- The death strike check is over
totalDamage = 0
totalTime = 0
end
end)
Остаётся только вычесть это значение из максимального количества своего здоровья чтобы получить порог хп при котором данный спелл не будет оверхилить.
Код: Выделить всё
UnitHealthMax("player")-DeathStrikeHeal
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость