-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmacros.js
99 lines (90 loc) · 2.52 KB
/
macros.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
var Macros = function(send, killificator) {
var exports = {};
// We need backup because the presence of doors overrides directions
var macros_backup = {
"Numpad0": "numpad0",
"Numpad1": "sw",
"Numpad2": "s",
"Numpad3": "se",
"Numpad4": "w",
"Numpad5": killificator.go,
"Numpad6": "e",
"Numpad7": "nw",
"Numpad8": "n",
"Numpad9": "ne",
"NumpadMultiply": "numpadMultiply",
"NumpadAdd": "d",
"NumpadSubtract": "u",
"NumpadDecimal": "numpadDecimal",
"NumpadDivide": "numpadDivide",
"F1": "macroF1",
"F2": "macroF2",
"F3": "macroF3",
"F4": "macroF4",
"F5": "macroF5",
"F6": "macroF6",
"F7": "macroF7",
"F8": "macroF8",
"F9": "macroF9",
"F10": "macroF10",
"F11": "macroF11",
"F12": "macroF12"
}
var macros = {};
// to make taps on direction pad and numpad keys behave the same, we
// consolidate the command (walk or door+walk) in one place
var reverse_mapping = {
'sw': "Numpad1",
's': "Numpad2",
'se': "Numpad3",
'w': "Numpad4",
'e': "Numpad6",
'nw': "Numpad7",
'n': "Numpad8",
'ne': "Numpad9",
'd': 107,
'u': 109
}
for (var k in macros_backup)
macros[k] = macros_backup[k];
function openDoorAndGo(dir) {
return macros[reverse_mapping[dir]];
}
gmcp.handle("room.info", function(ri) {
var present = {
'nw': false,
'ne': false,
'se': false,
'sw': false,
'n': false,
'e': false,
's': false,
'w': false,
'u': false,
'd': false
}
for (var e in ri['exit_kw'])
present[e] = true;
for (var e in present) {
if (present[e])
macros[reverse_mapping[e]] = 'open ' + ri['exit_kw'][e] + ' ' + e + ';' + e;
else
macros[reverse_mapping[e]] = macros_backup[reverse_mapping[e]];
}
});
function run(code) {
if (code in macros) {
if (macros[code] instanceof Function)
macros[code]();
else
send(macros[code]);
return true;
}
return false;
}
exports.run = run;
exports.macros = macros;
exports.reverse_mapping = reverse_mapping
exports.openDoorAndGo = openDoorAndGo
return exports;
}