Mercurial > wow > skeletonkey
comparison SkeletonKey/ActionTemplates.lua @ 54:a545933ddf3d
- pet ability binding macro now contains a /cast line for all known abilities with the same subtext, fixing an issue where swapping pets during combat breaks the key binding
author | Nenue |
---|---|
date | Sun, 21 Aug 2016 03:13:32 -0400 |
parents | 1aba8a6fd4a9 |
children | 2a95f4010c5a |
comparison
equal
deleted
inserted
replaced
53:29c89dbe07ac | 54:a545933ddf3d |
---|---|
34 [5] = 3, | 34 [5] = 3, |
35 [7] = 4, | 35 [7] = 4, |
36 [9] = 5, | 36 [9] = 5, |
37 [10] = 6 | 37 [10] = 6 |
38 } | 38 } |
39 local petSpellCache,petSubtextCache | |
39 local SUMMON_RANDOM_FAVORITE_MOUNT_SPELL = 150544 | 40 local SUMMON_RANDOM_FAVORITE_MOUNT_SPELL = 150544 |
40 | 41 |
41 --kb.ChangedBindings = {} | 42 --kb.ChangedBindings = {} |
42 --kb.ActionTypes = {} | 43 --kb.ActionTypes = {} |
43 | 44 |
69 end | 70 end |
70 | 71 |
71 atype['petaction'] = function(_, name) | 72 atype['petaction'] = function(_, name) |
72 -- ID doesn't exist for basic commands, even though they can be picked up | 73 -- ID doesn't exist for basic commands, even though they can be picked up |
73 local attributeName, attributeValue = "petaction_" .. tostring(name), "/cast "..tostring(name) | 74 local attributeName, attributeValue = "petaction_" .. tostring(name), "/cast "..tostring(name) |
75 | |
76 if not petSpellCache then | |
77 kb.UpdatePetInfo() | |
78 end | |
79 -- Compose a multi-macro for subtext abilities | |
80 if petSpellCache[name] then | |
81 attributeValue = "" | |
82 for spellName, enabled in pairs(petSubtextCache[petSpellCache[name]]) do | |
83 attributeValue = attributeValue .. "/cast " .. spellName .. "\n" | |
84 end | |
85 end | |
86 | |
74 if PETACTION_SCRIPT[name] then | 87 if PETACTION_SCRIPT[name] then |
75 attributeName, attributeValue = unpack(PETACTION_SCRIPT[name]) | 88 attributeName, attributeValue = unpack(PETACTION_SCRIPT[name]) |
76 elseif kb.PetCache.special[name] then | 89 elseif kb.PetCache.special[name] then |
77 attributeName = "petaction_"..kb.PetCache.special[name][3].."_" .. tonumber(kb.PetCache.special[name][6]) | 90 attributeName = "petaction_"..kb.PetCache.special[name][3].."_" .. tonumber(kb.PetCache.special[name][6]) |
78 end | 91 end |
303 local hasPetSpells, petType = HasPetSpells() | 316 local hasPetSpells, petType = HasPetSpells() |
304 | 317 |
305 --kb.PetCache.specNum = GetSpecialization(nil, true) | 318 --kb.PetCache.specNum = GetSpecialization(nil, true) |
306 --kb.PetCache.specID, kb.PetCache.specName = GetSpecializationInfo(petSpec, nil, true) | 319 --kb.PetCache.specID, kb.PetCache.specName = GetSpecializationInfo(petSpec, nil, true) |
307 | 320 |
321 kb.db.petSpellsDB = kb.db.petSpellsDB or {} | |
322 kb.db.petSpellsDB.subtext = kb.db.petSpellsDB.subtext or {} | |
323 kb.db.petSpellsDB.spell = kb.db.petSpellsDB.spell or {} | |
324 petSpellCache = kb.db.petSpellsDB.spell | |
325 petSubtextCache = kb.db.petSpellsDB.subtext | |
326 | |
327 | |
328 | |
308 if PetHasSpellbook() then | 329 if PetHasSpellbook() then |
309 print('PET SPELLBOOK') | 330 print('PET SPELLBOOK') |
310 local i = 1 | 331 local i = 1 |
311 local specialNum = {} | 332 local specialNum = {} |
312 repeat | 333 repeat |
323 if subText then | 344 if subText then |
324 -- make sure that pet specialization subtext maps correctly | 345 -- make sure that pet specialization subtext maps correctly |
325 --if match(subText, kb.PetCache.specName) then | 346 --if match(subText, kb.PetCache.specName) then |
326 -- subText = 'specialization' | 347 -- subText = 'specialization' |
327 --end | 348 --end |
328 | |
329 kb.PetCache.subtext[subText] = kb.PetCache.subtext[subText] or {} | 349 kb.PetCache.subtext[subText] = kb.PetCache.subtext[subText] or {} |
330 specialNum[subText] = (specialNum[subText] or 0) + 1 | 350 specialNum[subText] = (specialNum[subText] or 0) + 1 |
331 | 351 |
352 petSpellCache[spellName] = subText | |
353 petSubtextCache[subText] = petSubtextCache[subText] or {} | |
354 | |
355 -- add to the list | |
356 if not petSubtextCache[subText][spellName] then | |
357 petSubtextCache[subText][spellName] = true | |
358 | |
359 local macrotext = "" | |
360 for spellName, enabled in pairs(petSubtextCache[subText]) do | |
361 macrotext = macrotext .. "/cast " .. spellName .. "\n" | |
362 end | |
363 kb.SecureAttribute(KeyBinderMacro, "*macrotext-petaction_"..subText.."_"..specialNum[subText], macrotext) | |
364 print('|cFF00FFFFspecial['..spellName..']|r', '\n','|cFF00FFFFsubtext['..subText..']['..specialNum[subText]..']|r', '=>', i, spellName, subText, spellID, texture, specialNum[subText]) | |
365 end | |
366 | |
367 | |
368 | |
332 local entry = {i, spellName, subText, spellID, texture, specialNum[subText]} | 369 local entry = {i, spellName, subText, spellID, texture, specialNum[subText]} |
333 | 370 |
334 kb.PetCache.special[spellName] = entry | 371 kb.PetCache.special[spellName] = entry |
335 kb.PetCache.subtext[subText][specialNum[subText]] = entry | 372 kb.PetCache.subtext[subText][specialNum[subText]] = entry |
336 kb.SecureAttribute(KeyBinderMacro, "*macrotext-petaction_"..subText.."_"..specialNum[subText], "/cast "..spellName) | |
337 | |
338 print('|cFF00FFFFspecial['..spellName..']|r', '\n','|cFF00FFFFsubtext['..subText..']['..specialNum[subText]..']|r', '=>', i, spellName, subText, spellID, texture, specialNum[subText]) | |
339 end | 373 end |
340 | 374 |
341 if spellID then | 375 if spellID then |
342 kb.PetCache.spell[i] = {spellID, spellName, subText} | 376 kb.PetCache.spell[i] = {spellID, spellName, subText} |
343 print('|cFF0088FFspell['..i..']|r', '=>', spellID, spellName, subText) | 377 print('|cFF0088FFspell['..i..']|r', '=>', spellID, spellName, subText) |