Nenue@16: -- SkeletonKey Nenue@16: -- ActionTypes.lua Nenue@16: -- Created: 7/29/2016 9:14 PM Nenue@16: -- %file-revision% Nenue@16: -- Nenue@16: local kb, print, wrap = LibStub('LibKraken').register(KeyBinder) Nenue@16: Nenue@16: local SUMMON_RANDOM_FAVORITE_MOUNT_SPELL = 150544 Nenue@16: Nenue@16: local PETACTION_SCRIPT = { Nenue@16: [PET_ACTION_MOVE_TO] = {SLASH_PET_MOVE_TO1, 'pet_move_to'}, Nenue@16: [PET_ACTION_ATTACK] = {SLASH_PET_ATTACK1, 'pet_attack'}, Nenue@16: [PET_ACTION_FOLLOW] = {SLASH_PET_FOLLOW1, 'pet_follow'}, Nenue@16: [PET_ACTION_WAIT] = {SLASH_PET_STAY1, 'pet_stay'}, Nenue@16: [PET_MODE_AGGRESSIVE] = {SLASH_PET_AGGRESSIVE1, 'pet_aggressive'}, Nenue@16: [PET_MODE_DEFENSIVE] = {SLASH_PET_DEFENSIVE1, 'pet_defensive'}, Nenue@16: [PET_MODE_PASSIVE] = {SLASH_PET_PASSIVE1, 'pet_passive'}, Nenue@16: [PET_MODE_ASSIST] = {SLASH_PET_ASSIST1, 'pet_assist'}, Nenue@16: } Nenue@16: Nenue@16: --- Caps Lock derivatives Nenue@16: local ACTION_HANDLERS = {} Nenue@16: ACTION_HANDLERS['mount'] = function(id, name) Nenue@16: return "/script C_MountJournal.SummonByID("..id..")" Nenue@16: end Nenue@16: ACTION_HANDLERS['macro'] = "%s" Nenue@16: ACTION_HANDLERS['equipset'] = "/script UseEquipmentSet(%d)" Nenue@16: ACTION_HANDLERS['spell'] = "/cast %s" Nenue@16: ACTION_HANDLERS['petaction'] = function(id, name) Nenue@16: return PETACTION_SCRIPT[name] or "/cast ".. name Nenue@16: end Nenue@16: Nenue@16: ACTION_HANDLERS['battlepet'] = SLASH_SUMMON_BATTLE_PET1 .. " %s" Nenue@16: ACTION_HANDLERS['item'] = "/use %s" Nenue@16: local professionMappings = { Nenue@16: [5] = 3, Nenue@16: [7] = 4, Nenue@16: [9] = 5, Nenue@16: [10] = 6 Nenue@16: } Nenue@16: Nenue@16: Nenue@16: --- Generates the command strings needed to assign different abilities Nenue@16: kb.RegisterAction = function(actionType, id, name) Nenue@16: local macroText, macroName, command = '', '', '' Nenue@16: Nenue@16: if actionType == 'spell' then Nenue@16: if kb.ProfessionCache[id] then Nenue@16: command = CLICK_KEYBINDER_KEY .. "profession_".. kb.ProfessionCache[id].profOffset .. '_' .. kb.ProfessionCache[id].spellNum Nenue@16: else Nenue@16: command = CLICK_KEYBINDER_KEY ..name Nenue@16: end Nenue@16: else Nenue@16: Nenue@16: if type(ACTION_SCRIPT[actionType]) == 'function' then Nenue@16: macroName, macroText = ACTION_SCRIPT[actionType](id, name) Nenue@16: else Nenue@16: macroName = actionType .. ' ' .. name Nenue@16: macroText = ACTION_SCRIPT[actionType]:format(name) Nenue@16: end Nenue@16: Nenue@16: local baseName, iterative = macroName, 1 Nenue@16: while (macros[macroName] and macros[macroName][1] ~= macroText) do Nenue@16: print(' * cannot use|cFF00FF00', macroName, '|r"'.. (macros[macroName][1] or '') .. '"') Nenue@16: macroName = baseName .. '_' .. iterative Nenue@16: iterative = iterative + 1 Nenue@16: end Nenue@16: if macroName ~= baseName then Nenue@16: print(' * Creating|cFF00FF00', macroName) Nenue@16: else Nenue@16: print(' * Re-using|cFF00FF00', macroName) Nenue@16: end Nenue@16: command = 'CLICK KeyBinderMacro:'.. macroName Nenue@16: macros[macroName] = {macroText, command } Nenue@16: end Nenue@16: Nenue@16: print('RegisterAction', actionType, id, '->', command , macroText) Nenue@16: return macroName, macroText, command Nenue@16: end