-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
TriggerFramework.lua
96 lines (89 loc) · 2.72 KB
/
TriggerFramework.lua
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
--[[
* Copyright (c) 2012 by Adam Hellberg <[email protected]> and Bjørn Tore Håvie <[email protected]>
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR
* A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--]]
local Name, T = ...
T.TriggerFramework = {}
local F = T.TriggerFramework
local Comparison = {
ge = function(a, b) return a >= b end,
le = function(a, b) return a <= b end,
gt = function(a, b) return a > b end,
lt = function(a, b) return a < b end,
eq = function(a, b) return a == b end
}
F.Logic = {
Or = function(...)
local args = {...}
local fn = function(a, ...)
if not a then return false end
return a() or fn(...)
end
return function() return fn(unpack(args)) end
end,
And = function(...)
local args = {...}
local fn = function(a, ...)
if not a then return false end
return a() and fn(...)
end
return function() return fn(unpack(args)) end
end,
Not = function(cond)
return function() return not cond() end
end
}
F.Player = {
Class = function(arg)
local classes = type(arg) == "table" and arg or {arg}
return function()
for _,v in pairs(classes) do
if UnitClass("player") == v then return true end
end
return false
end
end,
Level = function(arg)
return function()
local pLvl = UnitLevel("player")
if type(arg) == "number" then return pLvl == arg end
for o, n in pairs(arg) do
if not Comparison[o](n, pLvl) then return false end
end
return true
end
end,
Race = function(arg)
local races = type(arg) == "table" and arg or {arg}
return function()
local race = UnitRace("player")
for _,v in pairs(races) do
if v == race then return true end
end
return false
end
end
}
F.World = {
MapID = function(id)
return function()
return id == GetCurrentMapAreaID()
end
end
}