Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local now = GetTime()
- local current = 30
- local state = Hekili.s
- state.reset()
- state.applyBuff( "breath_of_sindragosa" )
- local rpEvents = {
- mainhand = {
- last = now - 1,
- interval = 2.6,
- delta = function () return state.talent.runic_attenuation.enabled and 1 or 0 end,
- },
- offhand = {
- last = now - 2,
- interval = 2.6,
- delta = function () return state.talent.runic_attenuation.enabled and 1 or 0 end,
- },
- breath = {
- aura = 'breath_of_sindragosa',
- last = function () return state.query_time + floor( state.query_time - state.buff.breath_of_sindragosa.applied ) end,
- interval = 1,
- delta = function () return state.buff.breath_of_sindragosa.up and -15 or 0 end,
- stop = function ( amt ) return amt < 15 end,
- }
- }
- local events = {}
- local function esort( a, b )
- return a.next < b.next
- end
- local function timeToResource( amt )
- if current > amt then return 0 end
- -- Wipe old information from our working table.
- for i, event in ipairs( events ) do
- table.wipe( event )
- end
- local count = 0
- -- Load current values
- for k, v in pairs( rpEvents ) do
- local delta = v.delta()
- if delta ~= 0 and ( not v.aura or state.aura[ v.aura ].up ) then
- print(k)
- count = count + 1
- events[ count ] = events[ count ] or {}
- events[ count ].last = type( v.last ) == 'function' and v.last() or v.last
- events[ count ].interval = type( v.interval ) == 'function' and v.interval() or v.interval
- events[ count ].next = events[ count ].last + events[ count ].interval
- events[ count ].delta = delta
- events[ count ].type = k
- events[ count ].stop = v.stop
- end
- end
- if #events == 0 then print( "e0" );return 3600 end
- table.sort( events, esort )
- local max_iter = 60
- local max_time = 60
- local iter = 0
- local time = 0
- while( iter < max_iter and time - state.query_time < max_time ) do
- local e = events[1]
- if e.next - state.query_time > max_time then
- return 3600
- end
- if e.stop and e.stop( current ) then
- table.remove( events, 1 )
- else
- time = e.next
- iter = iter + 1
- current = current + e.delta
- print( iter, e.type, e.next, current )
- if current >= amt then
- return time - state.query_time
- end
- e.next = e.next + e.interval
- end
- table.sort( events, esort )
- end
- return 3600
- end
- print( timeToResource( 40 ) )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement