Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --------------------------------------------------------------------------------
- --------------------------------- PRIEST ---------------------------------------
- --------------------------------------------------------------------------------
- Zylla.Voidform_Summary = true
- Zylla.S2M_Summary = true
- --Zylla.Voidform_Drain_Stacks = 0
- --Zylla.Voidform_Current_Drain_Rate = 0
- --Zylla.SA_TOTAL = 0
- function Zylla.SA_Cleanup(guid)
- if Zylla.SA_STATS[guid] then
- Zylla.SA_TOTAL = Zylla.SA_TOTAL - Zylla.SA_STATS[guid].Count
- if Zylla.SA_TOTAL < 0 then
- Zylla.SA_TOTAL = 0
- end
- Zylla.SA_STATS[guid].Count = nil
- Zylla.SA_STATS[guid].LastUpdate = nil
- Zylla.SA_STATS[guid] = nil
- Zylla.SA_NUM_UNITS = Zylla.SA_NUM_UNITS - 1
- if Zylla.SA_NUM_UNITS < 0 then
- Zylla.SA_NUM_UNITS = 0
- end
- end
- end
- NeP.Listener:Add('Zylla.SA', 'COMBAT_LOG_EVENT_UNFILTERED', function(timestamp,combatevent,_,sourceGUID,sourcename,_,_,destGUID,destname,_,_,spellid,spellname,_,_,_,_,_,_,_,spellcritical,_,_,_,spellmultistrike)
- if Zylla.class == 5 then
- local CurrentTime = GetTime()
- Zylla.SA_NUM_UNITS = Zylla.SA_NUM_UNITS or 0
- Zylla.SA_TOTAL = Zylla.SA_TOTAL or 0
- -- Stats buffer
- Zylla.SA_STATS = Zylla.SA_STATS or {}
- Zylla.SA_DEAD = Zylla.SA_DEAD or {}
- Zylla.LAST_CONTINUITY_CHECK = Zylla.LAST_CONTINUITY_CHECK or GetTime()
- if sourceGUID == UnitGUID("player") then
- if spellid == 147193 and combatevent == "SPELL_CAST_SUCCESS" then -- Shadowy Apparition Spawned
- if not Zylla.SA_STATS[destGUID] or Zylla.SA_STATS[destGUID] == nil then
- Zylla.SA_STATS[destGUID] = {}
- Zylla.SA_STATS[destGUID].Count = 0
- Zylla.SA_NUM_UNITS = Zylla.SA_NUM_UNITS + 1
- end
- Zylla.SA_TOTAL = Zylla.SA_TOTAL + 1
- --print('SA spawn :'..Zylla.SA_TOTAL..' remaining SA')
- Zylla.SA_STATS[destGUID].Count = Zylla.SA_STATS[destGUID].Count + 1
- Zylla.SA_STATS[destGUID].LastUpdate = CurrentTime
- elseif spellid == 148859 and combatevent == "SPELL_DAMAGE" then --Auspicious Spirit Hit
- if Zylla.SA_TOTAL < 0 then
- Zylla.SA_TOTAL = 0
- else
- Zylla.SA_TOTAL = Zylla.SA_TOTAL - 1
- end
- --print('SA hit :'..Zylla.SA_TOTAL..' remaining SA')
- if Zylla.SA_STATS[destGUID] and Zylla.SA_STATS[destGUID].Count > 0 then
- Zylla.SA_STATS[destGUID].Count = Zylla.SA_STATS[destGUID].Count - 1
- Zylla.SA_STATS[destGUID].LastUpdate = CurrentTime
- if Zylla.SA_STATS[destGUID].Count <= 0 then
- Zylla.SA_Cleanup(destGUID)
- end
- end
- end
- end
- if Zylla.SA_TOTAL < 0 then
- Zylla.SA_TOTAL = 0
- end
- for guid,count in pairs(Zylla.SA_STATS) do
- if (CurrentTime - Zylla.SA_STATS[guid].LastUpdate) > 10 then
- --If we haven't had a new SA spawn in 10sec, that means all SAs that are out have hit the target (usually), or, the target disappeared.
- Zylla.SA_Cleanup(guid)
- end
- end
- if (combatevent == "UNIT_DIED" or combatevent == "UNIT_DESTROYED" or combatevent == "SPELL_INSTAKILL") then -- Unit Died, remove them from the target list.
- Zylla.SA_Cleanup(destGUID)
- end
- if UnitIsDeadOrGhost("player") or not UnitAffectingCombat("player") or not InCombatLockdown() then -- We died, or, exited combat, go ahead and purge the list
- for guid,count in pairs(Zylla.SA_STATS) do
- Zylla.SA_Cleanup(guid)
- end
- Zylla.SA_STATS = {}
- Zylla.SA_NUM_UNITS = 0
- Zylla.SA_TOTAL = 0
- end
- if CurrentTime - Zylla.LAST_CONTINUITY_CHECK > 10 then --Force check of unit count every 10sec
- local newUnits = 0
- for guid,count in pairs(Zylla.SA_STATS) do
- newUnits = newUnits + 1
- end
- Zylla.SA_NUM_UNITS = newUnits
- Zylla.LAST_CONTINUITY_CHECK = CurrentTime
- end
- if Zylla.SA_NUM_UNITS > 0 then
- local totalSAs = 0
- for guid,count in pairs(Zylla.SA_STATS) do
- if Zylla.SA_STATS[guid].Count <= 0 or (UnitIsDeadOrGhost(guid)) then
- Zylla.SA_DEAD[guid] = true
- else
- totalSAs = totalSAs + Zylla.SA_STATS[guid].Count
- end
- end
- if totalSAs > 0 and Zylla.SA_TOTAL > 0 then
- return true
- end
- end
- return false
- end
- end)
- NeP.Listener:Add('Zylla_VF_S2M', 'COMBAT_LOG_EVENT_UNFILTERED', function(timestamp,combatevent,_,sourceGUID,sourcename,_,_,destGUID,destname,_,_,spellid,spellname,_,_,_,_,_,_,_,spellcritical,_,_,_,spellmultistrike)
- if Zylla.class == 5 then
- local CurrentTime = GetTime()
- Zylla.Voidform_Total_Stacks = Zylla.Voidform_Total_Stacks or 0
- Zylla.Voidform_Previous_Stack_Time = Zylla.Voidform_Previous_Stack_Time or 0
- Zylla.Voidform_Drain_Stacks = Zylla.Voidform_Drain_Stacks or 0
- Zylla.Voidform_VoidTorrent_Stacks = Zylla.Voidform_VoidTorrent_Stacks or 0
- Zylla.Voidform_Dispersion_Stacks = Zylla.Voidform_Dispersion_Stacks or 0
- Zylla.Voidform_Current_Drain_Rate = Zylla.Voidform_Current_Drain_Rate or 0
- if Zylla.Voidform_Total_Stacks >= 100 then
- if (CurrentTime - Zylla.Voidform_Previous_Stack_Time) >= 1 then
- Zylla.Voidform_Previous_Stack_Time = CurrentTime
- Zylla.Voidform_Total_Stacks = Zylla.Voidform_Total_Stacks + 1
- if Zylla.Voidform_VoidTorrent_Start == nil and Zylla.Voidform_Dispersion_Start == nil then
- Zylla.Voidform_Drain_Stacks = Zylla.Voidform_Drain_Stacks + 1
- -- print('Zylla.Voidform_Drain_Stacks1: '..Zylla.Voidform_Drain_Stacks)
- Zylla.Voidform_Current_Drain_Rate = (9.0 + ((Zylla.Voidform_Drain_Stacks - 1) / 2))
- -- print('Zylla.Voidform_Current_Drain_Rate1: '..Zylla.Voidform_Current_Drain_Rate)
- elseif Zylla.Voidform_VoidTorrent_Start ~= nil then
- Zylla.Voidform_VoidTorrent_Stacks = Zylla.Voidform_VoidTorrent_Stacks + 1
- else
- Zylla.Voidform_Dispersion_Stacks = Zylla.Voidform_Dispersion_Stacks + 1
- end
- end
- end
- if sourceGUID == UnitGUID("player") then
- if spellid == 194249 then
- if combatevent == "SPELL_AURA_APPLIED" then -- Entered Voidform
- Zylla.Voidform_Previous_Stack_Time = CurrentTime
- Zylla.Voidform_VoidTorrent_Start = nil
- Zylla.Voidform_Dispersion_Start = nil
- Zylla.Voidform_Drain_Stacks = 1
- Zylla.Voidform_Start_Time = CurrentTime
- Zylla.Voidform_Total_Stacks = 1
- Zylla.Voidform_VoidTorrent_Stacks = 0
- Zylla.Voidform_Dispersion_Stacks = 0
- elseif combatevent == "SPELL_AURA_APPLIED_DOSE" then -- New Voidform Stack
- Zylla.Voidform_Previous_Stack_Time = CurrentTime
- Zylla.Voidform_Total_Stacks = Zylla.Voidform_Total_Stacks + 1
- if Zylla.Voidform_VoidTorrent_Start == nil and Zylla.Voidform_Dispersion_Start == nil then
- Zylla.Voidform_Drain_Stacks = Zylla.Voidform_Drain_Stacks + 1
- -- print('Zylla.Voidform_Drain_Stacks2: '..Zylla.Voidform_Drain_Stacks)
- Zylla.Voidform_Current_Drain_Rate = (9.0 + ((Zylla.Voidform_Drain_Stacks - 1) / 2))
- -- print('Zylla.Voidform_Current_Drain_Rate2: '..Zylla.Voidform_Current_Drain_Rate)
- elseif Zylla.Voidform_VoidTorrent_Start ~= nil then
- Zylla.Voidform_VoidTorrent_Stacks = Zylla.Voidform_VoidTorrent_Stacks + 1
- else
- Zylla.Voidform_Dispersion_Stacks = Zylla.Voidform_Dispersion_Stacks + 1
- end
- elseif combatevent == "SPELL_AURA_REMOVED" then -- Exited Voidform
- if Zylla.Voidform_Summary == true then
- print("Voidform Info:")
- print("--------------------------")
- print(string.format("Voidform Duration: %.2f seconds", (CurrentTime-Zylla.Voidform_Start_Time)))
- if Zylla.Voidform_Total_Stacks > 100 then
- print(string.format("Voidform Stacks: 100 (+%.0f)", (Zylla.Voidform_Total_Stacks - 100)))
- else
- print(string.format("Voidform Stacks: %.0f", Zylla.Voidform_Total_Stacks))
- end
- print(string.format("Dispersion Stacks: %.0f", Zylla.Voidform_Dispersion_Stacks))
- print(string.format("Void Torrent Stacks: %.0f", Zylla.Voidform_VoidTorrent_Stacks))
- print("Final Drain: "..Zylla.Voidform_Drain_Stacks.." stacks, "..Zylla.Voidform_Current_Drain_Rate.." / sec")
- end
- Zylla.Voidform_VoidTorrent_Start = nil
- Zylla.Voidform_Dispersion_Start = nil
- Zylla.Voidform_Drain_Stacks = 0
- Zylla.Voidform_Current_Drain_Rate = 0
- Zylla.Voidform_Start_Time = nil
- Zylla.Voidform_Total_Stacks = 0
- Zylla.Voidform_VoidTorrent_Stacks = 0
- Zylla.Voidform_Dispersion_Stacks = 0
- end
- elseif spellid == 205065 then
- if combatevent == "SPELL_AURA_APPLIED" then -- Started channeling Void Torrent
- Zylla.Voidform_VoidTorrent_Start = CurrentTime
- elseif combatevent == "SPELL_AURA_REMOVED" and Zylla.Voidform_VoidTorrent_Start ~= nil then -- Stopped channeling Void Torrent
- Zylla.Voidform_VoidTorrent_Start = nil
- end
- elseif spellid == 47585 then
- if combatevent == "SPELL_AURA_APPLIED" then -- Started channeling Dispersion
- Zylla.Voidform_Dispersion_Start = CurrentTime
- elseif combatevent == "SPELL_AURA_REMOVED" and Zylla.Voidform_Dispersion_Start ~= nil then -- Stopped channeling Dispersion
- Zylla.Voidform_Dispersion_Start = nil
- end
- elseif spellid == 212570 then
- if combatevent == "SPELL_AURA_APPLIED" then -- Gain Surrender to Madness
- Zylla.Voidform_S2M_Activated = true
- Zylla.Voidform_S2M_Start = CurrentTime
- elseif combatevent == "SPELL_AURA_REMOVED" then -- Lose Surrender to Madness
- Zylla.Voidform_S2M_Activated = false
- end
- end
- elseif destGUID == UnitGUID("player") and (combatevent == "UNIT_DIED" or combatevent == "UNIT_DESTROYED" or combatevent == "SPELL_INSTAKILL") and Zylla.Voidform_S2M_Activated == true then
- Zylla.Voidform_S2M_Activated = false
- if Zylla.S2M_Summary == true then
- print("Surrender to Madness Info:")
- print("--------------------------")
- print(string.format("S2M Duration: %.2f seconds", (CurrentTime-Zylla.Voidform_S2M_Start)))
- print(string.format("Voidform Duration: %.2f seconds", (CurrentTime-Zylla.Voidform_Start_Time)))
- if Zylla.Voidform_Total_Stacks > 100 then
- print(string.format("Voidform Stacks: 100 (+%.0f)", (Zylla.Voidform_Total_Stacks - 100)))
- else
- print(string.format("Voidform Stacks: %.0f", Zylla.Voidform_Total_Stacks))
- end
- print(string.format("Dispersion Stacks: %.0f", Zylla.Voidform_Dispersion_Stacks))
- print(string.format("Void Torrent Stacks: %.0f", Zylla.Voidform_VoidTorrent_Stacks))
- print("Final Drain: "..Zylla.Voidform_Drain_Stacks.." stacks, "..Zylla.Voidform_Current_Drain_Rate.." / sec")
- end
- Zylla.Voidform_S2M_Start = nil
- Zylla.Voidform_VoidTorrent_Start = nil
- Zylla.Voidform_Dispersion_Start = nil
- Zylla.Voidform_Drain_Stacks = 0
- Zylla.Voidform_Current_Drain_Rate = 0
- Zylla.Voidform_Start_Time = nil
- Zylla.Voidform_Total_Stacks = 0
- Zylla.Voidform_VoidTorrent_Stacks = 0
- Zylla.Voidform_Dispersion_Stacks = 0
- end
- end
- end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement