Nenue@16
|
1 -- SkeletonKey
|
Nenue@16
|
2 -- ActionTypes.lua
|
Nenue@16
|
3 -- Created: 7/29/2016 9:14 PM
|
Nenue@16
|
4 -- %file-revision%
|
Nenue@16
|
5 --
|
Nenue@16
|
6 local kb, print, wrap = LibStub('LibKraken').register(KeyBinder)
|
Nenue@16
|
7
|
Nenue@16
|
8 local SUMMON_RANDOM_FAVORITE_MOUNT_SPELL = 150544
|
Nenue@16
|
9
|
Nenue@16
|
10 local PETACTION_SCRIPT = {
|
Nenue@16
|
11 [PET_ACTION_MOVE_TO] = {SLASH_PET_MOVE_TO1, 'pet_move_to'},
|
Nenue@16
|
12 [PET_ACTION_ATTACK] = {SLASH_PET_ATTACK1, 'pet_attack'},
|
Nenue@16
|
13 [PET_ACTION_FOLLOW] = {SLASH_PET_FOLLOW1, 'pet_follow'},
|
Nenue@16
|
14 [PET_ACTION_WAIT] = {SLASH_PET_STAY1, 'pet_stay'},
|
Nenue@16
|
15 [PET_MODE_AGGRESSIVE] = {SLASH_PET_AGGRESSIVE1, 'pet_aggressive'},
|
Nenue@16
|
16 [PET_MODE_DEFENSIVE] = {SLASH_PET_DEFENSIVE1, 'pet_defensive'},
|
Nenue@16
|
17 [PET_MODE_PASSIVE] = {SLASH_PET_PASSIVE1, 'pet_passive'},
|
Nenue@16
|
18 [PET_MODE_ASSIST] = {SLASH_PET_ASSIST1, 'pet_assist'},
|
Nenue@16
|
19 }
|
Nenue@16
|
20
|
Nenue@16
|
21 --- Caps Lock derivatives
|
Nenue@16
|
22 local ACTION_HANDLERS = {}
|
Nenue@16
|
23 ACTION_HANDLERS['mount'] = function(id, name)
|
Nenue@16
|
24 return "/script C_MountJournal.SummonByID("..id..")"
|
Nenue@16
|
25 end
|
Nenue@16
|
26 ACTION_HANDLERS['macro'] = "%s"
|
Nenue@16
|
27 ACTION_HANDLERS['equipset'] = "/script UseEquipmentSet(%d)"
|
Nenue@16
|
28 ACTION_HANDLERS['spell'] = "/cast %s"
|
Nenue@16
|
29 ACTION_HANDLERS['petaction'] = function(id, name)
|
Nenue@16
|
30 return PETACTION_SCRIPT[name] or "/cast ".. name
|
Nenue@16
|
31 end
|
Nenue@16
|
32
|
Nenue@16
|
33 ACTION_HANDLERS['battlepet'] = SLASH_SUMMON_BATTLE_PET1 .. " %s"
|
Nenue@16
|
34 ACTION_HANDLERS['item'] = "/use %s"
|
Nenue@16
|
35 local professionMappings = {
|
Nenue@16
|
36 [5] = 3,
|
Nenue@16
|
37 [7] = 4,
|
Nenue@16
|
38 [9] = 5,
|
Nenue@16
|
39 [10] = 6
|
Nenue@16
|
40 }
|
Nenue@16
|
41
|
Nenue@16
|
42
|
Nenue@16
|
43 --- Generates the command strings needed to assign different abilities
|
Nenue@16
|
44 kb.RegisterAction = function(actionType, id, name)
|
Nenue@16
|
45 local macroText, macroName, command = '', '', ''
|
Nenue@16
|
46
|
Nenue@16
|
47 if actionType == 'spell' then
|
Nenue@16
|
48 if kb.ProfessionCache[id] then
|
Nenue@16
|
49 command = CLICK_KEYBINDER_KEY .. "profession_".. kb.ProfessionCache[id].profOffset .. '_' .. kb.ProfessionCache[id].spellNum
|
Nenue@16
|
50 else
|
Nenue@16
|
51 command = CLICK_KEYBINDER_KEY ..name
|
Nenue@16
|
52 end
|
Nenue@16
|
53 else
|
Nenue@16
|
54
|
Nenue@16
|
55 if type(ACTION_SCRIPT[actionType]) == 'function' then
|
Nenue@16
|
56 macroName, macroText = ACTION_SCRIPT[actionType](id, name)
|
Nenue@16
|
57 else
|
Nenue@16
|
58 macroName = actionType .. ' ' .. name
|
Nenue@16
|
59 macroText = ACTION_SCRIPT[actionType]:format(name)
|
Nenue@16
|
60 end
|
Nenue@16
|
61
|
Nenue@16
|
62 local baseName, iterative = macroName, 1
|
Nenue@16
|
63 while (macros[macroName] and macros[macroName][1] ~= macroText) do
|
Nenue@16
|
64 print(' * cannot use|cFF00FF00', macroName, '|r"'.. (macros[macroName][1] or '') .. '"')
|
Nenue@16
|
65 macroName = baseName .. '_' .. iterative
|
Nenue@16
|
66 iterative = iterative + 1
|
Nenue@16
|
67 end
|
Nenue@16
|
68 if macroName ~= baseName then
|
Nenue@16
|
69 print(' * Creating|cFF00FF00', macroName)
|
Nenue@16
|
70 else
|
Nenue@16
|
71 print(' * Re-using|cFF00FF00', macroName)
|
Nenue@16
|
72 end
|
Nenue@16
|
73 command = 'CLICK KeyBinderMacro:'.. macroName
|
Nenue@16
|
74 macros[macroName] = {macroText, command }
|
Nenue@16
|
75 end
|
Nenue@16
|
76
|
Nenue@16
|
77 print('RegisterAction', actionType, id, '->', command , macroText)
|
Nenue@16
|
78 return macroName, macroText, command
|
Nenue@16
|
79 end |