| Nenue@6 | 1 local ADDON, Tk = ... | 
| Nenue@6 | 2 local T = Tk.Addon | 
| Nenue@6 | 3 local mod, tinsert, ipairs, pairs = T.modules.TimerControl, tinsert, ipairs, pairs | 
| Nenue@6 | 4 local print = function(...) print('TimerPresets', ...) end | 
| Nenue@6 | 5 | 
| Nenue@6 | 6 | 
| Nenue@6 | 7 | 
| Nenue@6 | 8 --- Timer config presets | 
| Nenue@6 | 9 mod.AddTimer = function(batch, container) | 
| Nenue@6 | 10   if container then | 
| Nenue@6 | 11     Turok.defaults.spirit.containers[container] = {} | 
| Nenue@6 | 12   end | 
| Nenue@6 | 13 | 
| Nenue@6 | 14   for i, entry in ipairs(batch) do | 
| Nenue@6 | 15     print(cPink('AddTimer(#=')..cWord(#batch)..cPink(', ')..cWord(container)..cPink(')')) | 
| Nenue@6 | 16     if container then | 
| Nenue@6 | 17       entry.container = container | 
| Nenue@6 | 18       print('  container set to', container) | 
| Nenue@6 | 19     end | 
| Nenue@6 | 20     print('  unpacking', entry.name) | 
| Nenue@6 | 21     tinsert(Turok.defaults.spirit.timers, entry) | 
| Nenue@6 | 22   end | 
| Nenue@6 | 23 end | 
| Nenue@6 | 24 local tp = mod.index.preset | 
| Nenue@6 | 25 | 
| Nenue@6 | 26 mod.LoadPresets = function() | 
| Nenue@6 | 27   for setName, setFunc in pairs(tp) do | 
| Nenue@6 | 28     setFunc() | 
| Nenue@6 | 29   end | 
| Nenue@6 | 30 end | 
| Nenue@6 | 31 | 
| Nenue@6 | 32 tp.Containers = function() | 
| Nenue@6 | 33   local defs = { | 
| Nenue@6 | 34     anchor = 'TOPLEFT', parent = 'TekplayerCastBar', anchorTo = 'BOTTOMLEFT', x = 0, y = -3, width = 700, | 
| Nenue@6 | 35     height = 200, | 
| Nenue@6 | 36     spacing = 3, | 
| Nenue@6 | 37     padding = 0, | 
| Nenue@6 | 38     ["default"] = { | 
| Nenue@6 | 39       name = "Default", | 
| Nenue@6 | 40       childAnchor = 'TOPLEFT', | 
| Nenue@6 | 41       childAnchorTo = 'TOPLEFT', | 
| Nenue@6 | 42     }, | 
| Nenue@6 | 43     ["DoTs"] = { | 
| Nenue@6 | 44       anchor ='BOTTOM', anchorTo='TOP', | 
| Nenue@6 | 45       parent='TekplayerCastBar', | 
| Nenue@6 | 46       display = 'icon', | 
| Nenue@6 | 47       size = 48, | 
| Nenue@6 | 48       height = 48, width = 48, | 
| Nenue@6 | 49       x = 0, y = 16, | 
| Nenue@6 | 50       padding = 0, | 
| Nenue@6 | 51       spacing = 0, | 
| Nenue@6 | 52       childAnchor = 'BOTTOMLEFT', | 
| Nenue@6 | 53       childAnchorTo = 'BOTTOMLEFT', | 
| Nenue@6 | 54     } | 
| Nenue@6 | 55   } | 
| Nenue@6 | 56   for k,v in pairs(defs) do | 
| Nenue@6 | 57     TurokData.spirit.containers[k] = v | 
| Nenue@6 | 58   end | 
| Nenue@6 | 59 end | 
| Nenue@6 | 60 | 
| Nenue@6 | 61 tp.Rogue = function() | 
| Nenue@6 | 62   mod.AddTimer( | 
| Nenue@6 | 63     { | 
| Nenue@6 | 64       { | 
| Nenue@6 | 65         name = "Vendetta", | 
| Nenue@6 | 66         type = 'cooldown', | 
| Nenue@6 | 67         display = 'icon', | 
| Nenue@6 | 68         unit = 'player', | 
| Nenue@6 | 69         spellID = 79140, | 
| Nenue@6 | 70         playerClass = 'ROGUE', | 
| Nenue@6 | 71         specPage = 1, | 
| Nenue@6 | 72       }, | 
| Nenue@6 | 73       { | 
| Nenue@6 | 74         name = "Burst of Speed", | 
| Nenue@6 | 75         type = 'cooldown', | 
| Nenue@6 | 76         display = 'icon', | 
| Nenue@6 | 77         unit = 'player', | 
| Nenue@6 | 78         spellID = 108212, | 
| Nenue@6 | 79         playerClass = 'ROGUE' | 
| Nenue@6 | 80       }, | 
| Nenue@6 | 81       { | 
| Nenue@6 | 82         name = "Rupture", | 
| Nenue@6 | 83         type = 'aura', | 
| Nenue@6 | 84         display = 'icon', | 
| Nenue@6 | 85         unit = 'target', | 
| Nenue@6 | 86         spellID = 1943, | 
| Nenue@6 | 87         filters = 'PLAYER|HARMFUL', | 
| Nenue@6 | 88         playerClass = 'ROGUE', | 
| Nenue@6 | 89         specPage = {1,3}, | 
| Nenue@6 | 90       }, | 
| Nenue@6 | 91       { | 
| Nenue@6 | 92         name = "Slice and Dice", | 
| Nenue@6 | 93         type = 'aura', | 
| Nenue@6 | 94         display = 'icon', | 
| Nenue@6 | 95         spellID = 5171, | 
| Nenue@6 | 96         unit = 'player', | 
| Nenue@6 | 97         filters = 'PLAYER|HELPFUL', | 
| Nenue@6 | 98         playerClass = 'ROGUE', | 
| Nenue@6 | 99         specPage = {2,3}, | 
| Nenue@6 | 100       }, | 
| Nenue@6 | 101       { | 
| Nenue@6 | 102         name = "Deadly Missing", | 
| Nenue@6 | 103         type = 'aura', | 
| Nenue@6 | 104         spellID = 2823, | 
| Nenue@6 | 105         display = 'icon', | 
| Nenue@6 | 106         unit = 'player', | 
| Nenue@6 | 107         playerClass = 'ROGUE', | 
| Nenue@6 | 108         specPage = {1,3}, | 
| Nenue@6 | 109         inverse = true, | 
| Nenue@6 | 110       }, | 
| Nenue@6 | 111       { | 
| Nenue@6 | 112         name = "Stealth", | 
| Nenue@6 | 113         type ='aura', | 
| Nenue@6 | 114         spellID = 1784, | 
| Nenue@6 | 115         display = 'icon', | 
| Nenue@6 | 116         unit = 'player', | 
| Nenue@6 | 117         playerClass = 'ROGUE', | 
| Nenue@6 | 118       }, | 
| Nenue@6 | 119       { | 
| Nenue@6 | 120         name = "Recuperate", | 
| Nenue@6 | 121         type ='aura', | 
| Nenue@6 | 122         spellID = 73651, | 
| Nenue@6 | 123         display = 'icon', | 
| Nenue@6 | 124         unit = 'player', | 
| Nenue@6 | 125         playerClass = 'ROGUE', | 
| Nenue@6 | 126       }, | 
| Nenue@6 | 127     }) | 
| Nenue@6 | 128 end | 
| Nenue@6 | 129 tp.Mage = function() | 
| Nenue@6 | 130   mod.AddTimer({ | 
| Nenue@6 | 131     { | 
| Nenue@6 | 132       name = "Rune of Power", | 
| Nenue@6 | 133       type = 'aura', | 
| Nenue@6 | 134       spellID = 116014, | 
| Nenue@6 | 135       unit = 'player', | 
| Nenue@6 | 136       display = 'icon', | 
| Nenue@6 | 137       playerClass = 'MAGE', | 
| Nenue@6 | 138       talentID = 16032, | 
| Nenue@6 | 139     }, | 
| Nenue@6 | 140     { | 
| Nenue@6 | 141       name = "Mage Nova", | 
| Nenue@6 | 142       spellID = {157980, 157981, 157997}, | 
| Nenue@6 | 143       talentOffset = {5, 3}, | 
| Nenue@6 | 144       unit = 'player', | 
| Nenue@6 | 145       type='cooldown', | 
| Nenue@6 | 146       display='icon', | 
| Nenue@6 | 147       playerClass='MAGE', | 
| Nenue@6 | 148       persist = true, | 
| Nenue@6 | 149     }, | 
| Nenue@6 | 150     { | 
| Nenue@6 | 151       name = "Mage Bomb", | 
| Nenue@6 | 152       talentOffset = {5, 1}, | 
| Nenue@6 | 153       unit = 'target', | 
| Nenue@6 | 154       type= 'aura', | 
| Nenue@6 | 155       display='icon', | 
| Nenue@6 | 156       filters = 'HARMFUL|PLAYER', | 
| Nenue@6 | 157       playerClass='MAGE', | 
| Nenue@6 | 158       persist = true, | 
| Nenue@6 | 159     }, | 
| Nenue@6 | 160     { | 
| Nenue@6 | 161       name = "Frozen Orb", | 
| Nenue@6 | 162       spellID = 84714, | 
| Nenue@6 | 163       threschold = 2, | 
| Nenue@6 | 164       unit = 'player', | 
| Nenue@6 | 165       type='cooldown', | 
| Nenue@6 | 166       display='icon', | 
| Nenue@6 | 167       playerClass='MAGE', | 
| Nenue@6 | 168       specPage=3, | 
| Nenue@6 | 169     }, | 
| Nenue@6 | 170     { | 
| Nenue@6 | 171       name = 'Arcane Power', | 
| Nenue@6 | 172       type = 'cooldown', | 
| Nenue@6 | 173       display = 'icon', | 
| Nenue@6 | 174       unit = 'player', | 
| Nenue@6 | 175       spellID = 12042, | 
| Nenue@6 | 176       playerClass = 'MAGE', | 
| Nenue@6 | 177       specPage = 1, | 
| Nenue@6 | 178     } | 
| Nenue@6 | 179   }) | 
| Nenue@6 | 180 end | 
| Nenue@6 | 181 tp.UseEffects = function() | 
| Nenue@6 | 182   mod.AddTimer({ | 
| Nenue@6 | 183 | 
| Nenue@6 | 184     { | 
| Nenue@6 | 185       name = "Trinket 1", | 
| Nenue@6 | 186       type ='cooldown', display = 'icon', | 
| Nenue@6 | 187       unit = 'player', | 
| Nenue@6 | 188       persist = true, | 
| Nenue@6 | 189       inventoryID = 13, | 
| Nenue@6 | 190     }, | 
| Nenue@6 | 191     { | 
| Nenue@6 | 192       name = "Maalus Effect", -- Maalus | 
| Nenue@6 | 193       playerClass = {'HUNTER', 'ROGUE'}, | 
| Nenue@6 | 194       type = 'aura', display = 'progressbar', | 
| Nenue@6 | 195       unit = 'player', filters = 'HELPFUL', | 
| Nenue@6 | 196       leftText = "%c", rightText=  "%p", | 
| Nenue@6 | 197       duration = 15, | 
| Nenue@6 | 198       spellID = 187615, itemID  = 124636, hideIcon = true, | 
| Nenue@6 | 199 | 
| Nenue@6 | 200       sound_active = [[Interface\Addons\Turok\Media\sound\FLASH.mp3]], | 
| Nenue@6 | 201 | 
| Nenue@6 | 202       absolute = true, x = 0, y = -10, width = 300, height = 10, | 
| Nenue@6 | 203       anchor = 'BOTTOMLEFT', anchorTo = 'BOTTOMLEFT', | 
| Nenue@6 | 204       parent = 'TekplayerCastBar', padding = 0, spacing = 0, | 
| Nenue@6 | 205 | 
| Nenue@6 | 206       foreground_inset = 0, foreground_color = {1,1,1,1}, foreground_blend = 'ADD', | 
| Nenue@6 | 207       background_color = {0,0,0,0}, | 
| Nenue@6 | 208       icon = false, | 
| Nenue@6 | 209     }, | 
| Nenue@6 | 210 | 
| Nenue@6 | 211     { | 
| Nenue@6 | 212       name = "Maalus CD", | 
| Nenue@6 | 213       type = 'cooldown', display = 'icon', | 
| Nenue@6 | 214       unit = 'player', | 
| Nenue@6 | 215       spellID = 187615, itemID  = 124636, | 
| Nenue@6 | 216       playerClass = 'HUNTER', | 
| Nenue@6 | 217     }, | 
| Nenue@6 | 218   }) | 
| Nenue@6 | 219 end | 
| Nenue@6 | 220 | 
| Nenue@6 | 221 tp.Hunter = function() | 
| Nenue@6 | 222   mod.AddTimer({ | 
| Nenue@6 | 223     ---- Icon templates | 
| Nenue@6 | 224     { virtual = true, name = "Hunter", | 
| Nenue@6 | 225       playerClass = 'HUNTER', unit = 'player', container = 'default', display= 'icon', }, | 
| Nenue@6 | 226     { virtual = true, name = "HunterSticky", inherits = "Hunter", | 
| Nenue@6 | 227       showAura = true, persist = true, }, | 
| Nenue@6 | 228     { virtual = true, name = "HunterBar", | 
| Nenue@6 | 229       playerClass = 'HUNTER', unit = 'player', }, | 
| Nenue@6 | 230     ---- Talents | 
| Nenue@6 | 231     { | 
| Nenue@6 | 232       inherits= "HunterSticky", | 
| Nenue@6 | 233       name = "Heavy Artillery", type = 'cooldown', | 
| Nenue@6 | 234       talentRow = 6, | 
| Nenue@6 | 235       trace = true}, | 
| Nenue@6 | 236     { | 
| Nenue@6 | 237       inherits= "HunterSticky", | 
| Nenue@6 | 238       name = "Animal Power", type = 'cooldown', | 
| Nenue@6 | 239       talentRow = 5, | 
| Nenue@6 | 240       trace = true}, | 
| Nenue@6 | 241     --- Spells | 
| Nenue@6 | 242     { | 
| Nenue@6 | 243       inherits = 'Hunter', name = "Camouflage", | 
| Nenue@6 | 244       type = 'cooldown', display = 'icon', | 
| Nenue@6 | 245       spellID = 51753, }, | 
| Nenue@6 | 246     { | 
| Nenue@6 | 247       inherits = 'Hunter', name = "Ice Trap", | 
| Nenue@6 | 248       type = 'cooldown', display = 'icon', | 
| Nenue@6 | 249       spellID = 13809, }, | 
| Nenue@6 | 250     { | 
| Nenue@6 | 251       inherits = 'Hunter', name = "Concussive Shot", | 
| Nenue@6 | 252       type = 'cooldown', display = 'icon', | 
| Nenue@6 | 253       spellID = 5116, }, | 
| Nenue@6 | 254     { | 
| Nenue@6 | 255       inherits = 'Hunter', name = "Flare", | 
| Nenue@6 | 256       type = 'cooldown', display = 'icon', | 
| Nenue@6 | 257       spellID = 1543, }, | 
| Nenue@6 | 258     { | 
| Nenue@6 | 259       inherits = 'Hunter', name = "Disengage", | 
| Nenue@6 | 260       type = 'cooldown', display = 'icon', | 
| Nenue@6 | 261       spellID = 781, }, | 
| Nenue@6 | 262     { | 
| Nenue@6 | 263       inherits = "HunterSticky", name = "Rapid Fire", | 
| Nenue@6 | 264       type = 'cooldown', display = 'icon', | 
| Nenue@6 | 265       spellID = 3045, specPage = 2, }, | 
| Nenue@6 | 266     { | 
| Nenue@6 | 267       inherits = 'HunterSticky', name = "Bestial Wrath", | 
| Nenue@6 | 268       type = 'cooldown', display = 'icon', | 
| Nenue@6 | 269       spellID = 19574, specPage = 1, | 
| Nenue@6 | 270       trace = true | 
| Nenue@6 | 271     }, | 
| Nenue@6 | 272 | 
| Nenue@6 | 273     --- Progress Bars | 
| Nenue@6 | 274     { | 
| Nenue@6 | 275       inherits = 'HunterBar', name = "Chimaera Shot", | 
| Nenue@6 | 276       type = 'cooldown', display = 'progressbar', | 
| Nenue@6 | 277       spellID = 53209, specPage = 2, persist = true, | 
| Nenue@6 | 278 | 
| Nenue@6 | 279       hideIcon = true, | 
| Nenue@6 | 280       leftText = "", rightText = "%p", | 
| Nenue@6 | 281       width = 300, height = 8,padding = 0, spacing = 0, | 
| Nenue@6 | 282       absolute = true, x = 0, y = 0, anchor = 'TOPLEFT', anchorTo = 'TOPLEFT', parent = 'TekplayerCastBar', strata='MEDIUM', | 
| Nenue@6 | 283       foreground_color = {1,.125,0.43,1}, foreground_blend = 'ADD', foreground_inset = 0, | 
| Nenue@6 | 284       background_color = {.5,.5,.5,0}, background_blend = 'BLEND', | 
| Nenue@6 | 285     }, | 
| Nenue@6 | 286     { | 
| Nenue@6 | 287       inherits = 'HunterBar', name = "Sniper Training (duration)", | 
| Nenue@6 | 288       type = 'aura', display = 'progressbar', | 
| Nenue@6 | 289       spellID = 168811, specPage = 2, | 
| Nenue@6 | 290 | 
| Nenue@6 | 291       hideIcon = true, | 
| Nenue@6 | 292       leftText = "", rightText=  "", | 
| Nenue@6 | 293       width= 330, height = 12, padding = 0, | 
| Nenue@6 | 294       absolute = true, x = 0, y = 0, anchor = 'BOTTOMLEFT', anchorTo = 'BOTTOMLEFT', parent = 'TekplayerCastBar', level = 1, | 
| Nenue@6 | 295       foreground_color = {1,0,0,1}, foreground_blend = 'BLEND', | 
| Nenue@6 | 296       sound_active = '', sound_hidden = '', sound_passive = '', | 
| Nenue@6 | 297     }, | 
| Nenue@6 | 298     { | 
| Nenue@6 | 299       inherits = 'HunterBar', name = "Sniper Training: Recently Moved", | 
| Nenue@6 | 300       type = 'aura', display = 'progressbar', | 
| Nenue@6 | 301       spellID = 168809, specPage = 2, | 
| Nenue@6 | 302 | 
| Nenue@6 | 303       hideIcon = true, | 
| Nenue@6 | 304       leftText = "", rightText=  "", | 
| Nenue@6 | 305       height = 12, width= 160, padding = 0, | 
| Nenue@6 | 306       absolute = true, x = 0, y = 0, anchor = 'BOTTOMLEFT', anchorTo = 'BOTTOMLEFT', parent = 'TekplayerCastBar', level = 2, | 
| Nenue@6 | 307       foreground_color = {1,1,0,1}, foreground_blend = 'BLEND', | 
| Nenue@6 | 308       sound_active = '', sound_hidden = '', sound_passive = '', | 
| Nenue@6 | 309     }, | 
| Nenue@6 | 310 | 
| Nenue@6 | 311     --- Static Warnings | 
| Nenue@6 | 312     { | 
| Nenue@6 | 313       inherits='Hunter', name = "Aspect of the Pack", | 
| Nenue@6 | 314       type = 'aura', display = 'icon', | 
| Nenue@6 | 315       spellID = 13159 | 
| Nenue@6 | 316     }, | 
| Nenue@6 | 317     { | 
| Nenue@6 | 318       inherits = 'Hunter', name = "Trap Launcher", | 
| Nenue@6 | 319       type = 'aura', display = 'icon', | 
| Nenue@6 | 320       spellID = 77769, inverse = true, | 
| Nenue@6 | 321 | 
| Nenue@6 | 322       absolute = true, x = 0, y = 200, | 
| Nenue@6 | 323       width = 100, height = 100, | 
| Nenue@6 | 324       foreground_color = {1,1,1, 0.5}, foreground_blend = 'BLEND', | 
| Nenue@6 | 325     }, | 
| Nenue@6 | 326   }) | 
| Nenue@6 | 327 end | 
| Nenue@6 | 328 tp.SPriest = function() | 
| Nenue@6 | 329   mod.AddTimer( { | 
| Nenue@6 | 330     { | 
| Nenue@6 | 331       virtual = true, name = "Caster Icon", container = 'DoTs', | 
| Nenue@6 | 332       playerClass = 'PRIEST', | 
| Nenue@6 | 333 | 
| Nenue@6 | 334       combatFade = true, | 
| Nenue@6 | 335       height = 48, width = 48, | 
| Nenue@6 | 336       icon = { size = 48, }, | 
| Nenue@6 | 337       persist = true, | 
| Nenue@6 | 338     }, | 
| Nenue@6 | 339     { | 
| Nenue@6 | 340       inherits = "Caster Icon", name = "Shadowfiend", | 
| Nenue@6 | 341       unit = "player", spellID = 132603, | 
| Nenue@6 | 342       type = 'cooldown', display = 'icon', | 
| Nenue@6 | 343       container ='DoTs', | 
| Nenue@6 | 344     }, | 
| Nenue@6 | 345     { | 
| Nenue@6 | 346       inherits = "Caster Icon", name = "Insanity", | 
| Nenue@6 | 347       type = 'aura', display = 'icon', | 
| Nenue@6 | 348       unit = 'player', filters = 'PLAYER|HELPFUL', | 
| Nenue@6 | 349       spellID = 132573, playerClass = 'PRIEST', | 
| Nenue@6 | 350       order = 3, | 
| Nenue@6 | 351     }, | 
| Nenue@6 | 352     { | 
| Nenue@6 | 353       name = "Shadow Word: Pain", | 
| Nenue@6 | 354       type = 'aura', display = 'icon', | 
| Nenue@6 | 355       unit = 'target', filters = 'PLAYER|HARMFUL', | 
| Nenue@6 | 356       spellID = 589, playerClass = 'PRIEST', specPage = 3, | 
| Nenue@6 | 357 | 
| Nenue@6 | 358       container = 'DoTs', | 
| Nenue@6 | 359       order = 1, | 
| Nenue@6 | 360       sound_active = '', | 
| Nenue@6 | 361     }, | 
| Nenue@6 | 362     { | 
| Nenue@6 | 363       name = "Mental Fatigue", | 
| Nenue@6 | 364       type = 'aura', display = 'icon', | 
| Nenue@6 | 365       unit = 'target', filters = 'PLAYER|HARMFUL', | 
| Nenue@6 | 366       spellID = 184915, playerClass = 'PRIEST', specPage = 3, | 
| Nenue@6 | 367 | 
| Nenue@6 | 368       parent = 'TekplayerCastBar', | 
| Nenue@6 | 369       container = 'DoTs', | 
| Nenue@6 | 370       order = 1, | 
| Nenue@6 | 371       sound_active = '', | 
| Nenue@6 | 372     }, | 
| Nenue@6 | 373     { | 
| Nenue@6 | 374       name = "Vampiric Touch", | 
| Nenue@6 | 375       container = 'DoTs', | 
| Nenue@6 | 376       type = 'aura', display = 'icon', | 
| Nenue@6 | 377       unit = 'target', filters = 'PLAYER|HARMFUL', | 
| Nenue@6 | 378       spellID = 34914, playerClass = 'PRIEST', specPage = 3, | 
| Nenue@6 | 379       order =2, | 
| Nenue@6 | 380     }, | 
| Nenue@6 | 381     { | 
| Nenue@6 | 382       name = "PW:Shield", | 
| Nenue@6 | 383       type = 'cooldown', display = 'icon', | 
| Nenue@6 | 384       unit = 'player', | 
| Nenue@6 | 385       spellID = 17, playerClass = 'PRIEST', | 
| Nenue@6 | 386     }, | 
| Nenue@6 | 387     { | 
| Nenue@6 | 388       name = "Cascade", | 
| Nenue@6 | 389       type = 'cooldown', display = 'icon', | 
| Nenue@6 | 390       unit = 'player', | 
| Nenue@6 | 391       spellID = 127632, talentID = 21718, playerClass = 'PRIEST', | 
| Nenue@6 | 392     }, | 
| Nenue@6 | 393   }) | 
| Nenue@6 | 394 end |