parent
68449550d8
commit
63ad0289f2
@ -0,0 +1,554 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!DOCTYPE muclient>
|
||||
|
||||
<muclient>
|
||||
<plugin
|
||||
name="VI_Icefall"
|
||||
author="Areia"
|
||||
id="c06d140a29cc7aaf52faed9b"
|
||||
language="Lua"
|
||||
purpose="Assist screen readers in Icefall epic"
|
||||
save_state="n"
|
||||
date_written="2021-01-22 15:00:00"
|
||||
requires="5.07"
|
||||
version="1.0"
|
||||
>
|
||||
<description trim="y">
|
||||
<![CDATA[
|
||||
]]>
|
||||
</description>
|
||||
|
||||
</plugin>
|
||||
|
||||
<include name="constants.lua"/>
|
||||
|
||||
|
||||
|
||||
<aliases>
|
||||
</aliases>
|
||||
|
||||
|
||||
|
||||
<triggers>
|
||||
</triggers>
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
<![CDATA[
|
||||
require "commas"
|
||||
require "gmcphelper"
|
||||
require "tprint"
|
||||
require "var"
|
||||
require "wait"
|
||||
dofile(GetInfo(60) .. "aardwolf_colors.lua")
|
||||
|
||||
|
||||
|
||||
--------------------------------------------------
|
||||
-- Sliders
|
||||
--------------------------------------------------
|
||||
|
||||
Sliders = {}
|
||||
|
||||
function Sliders.initialize()
|
||||
AddAlias("Alias_Sliders_Get_Map",
|
||||
"^g(?:l|la|lan|lanc|lance)$", "",
|
||||
alias_flag.Enabled + alias_flag.IgnoreAliasCase + alias_flag.RegularExpression + alias_flag.Temporary,
|
||||
"Sliders.get_map"
|
||||
)
|
||||
|
||||
AddAlias("Alias_Sliders_Show_Map",
|
||||
"^showmap$", "",
|
||||
alias_flag.Enabled + alias_flag.IgnoreAliasCase + alias_flag.RegularExpression + alias_flag.Temporary,
|
||||
"Sliders.show_map"
|
||||
)
|
||||
AddAlias("Alias_Sliders_Show_Column",
|
||||
"^col\\s*(?<column>[a-z])$", "",
|
||||
alias_flag.Enabled + alias_flag.IgnoreAliasCase + alias_flag.RegularExpression + alias_flag.Temporary,
|
||||
"Sliders.show_column"
|
||||
)
|
||||
AddAlias("Alias_Sliders_Show_Row",
|
||||
"^row\\s*(?<row>[0-9])$", "",
|
||||
alias_flag.Enabled + alias_flag.IgnoreAliasCase + alias_flag.RegularExpression + alias_flag.Temporary,
|
||||
"Sliders.show_row"
|
||||
)
|
||||
AddAlias("Alias_Sliders_Show_Coord",
|
||||
"^coord\\s*(?<column>[a-z])(?<row>[0-9])$", "",
|
||||
alias_flag.Enabled + alias_flag.IgnoreAliasCase + alias_flag.RegularExpression + alias_flag.Temporary,
|
||||
"Sliders.show_coord"
|
||||
)
|
||||
|
||||
AddAlias("Alias_Sliders_Rotate_Column",
|
||||
"^(?<column>a|b|c|d|e|f)(?<direction>c(?:w|cw))$", "",
|
||||
alias_flag.Enabled + alias_flag.IgnoreAliasCase + alias_flag.RegularExpression + alias_flag.Temporary,
|
||||
"Sliders.rotate_column"
|
||||
)
|
||||
AddAlias("Alias_Sliders_Rotate_Row",
|
||||
"^(?<row>1|2|3|4|5|6)(?<direction>c(?:w|cw))$", "",
|
||||
alias_flag.Enabled + alias_flag.IgnoreAliasCase + alias_flag.RegularExpression + alias_flag.Temporary,
|
||||
"Sliders.rotate_row"
|
||||
)
|
||||
|
||||
AddAlias("Alias_Sliders_Check_Path",
|
||||
"^check\\s+(?<startDirs>[nesw](?: [nesw])*)$", "",
|
||||
alias_flag.Enabled + alias_flag.IgnoreAliasCase + alias_flag.RegularExpression + alias_flag.Temporary,
|
||||
"Sliders.check_path"
|
||||
)
|
||||
|
||||
AddTriggerEx("Trigger_Sliders_Entrance",
|
||||
"^This mysterious figure is shrouded in robes, anticipating your arrival\\.$", "",
|
||||
trigger_flag.Enabled + trigger_flag.RegularExpression + trigger_flag.Temporary, custom_colour.NoChange, 0,
|
||||
"", "Sliders.enter", sendto.script, 100
|
||||
)
|
||||
|
||||
AddTriggerEx("Trigger_Sliders_Map_Start",
|
||||
"^\\{Sliders\\}$", "",
|
||||
trigger_flag.OmitFromOutput + trigger_flag.RegularExpression + trigger_flag.Temporary, custom_colour.NoChange, 0,
|
||||
"", "Sliders.map_start", sendto.script, 100
|
||||
)
|
||||
|
||||
AddTriggerEx("Trigger_Sliders_Map_End",
|
||||
"^\\{/Sliders\\}$", "",
|
||||
trigger_flag.OmitFromOutput + trigger_flag.RegularExpression + trigger_flag.Temporary, custom_colour.NoChange, 0,
|
||||
"", "Sliders.map_end", sendto.script, 100
|
||||
)
|
||||
SetTriggerOption("Trigger_Sliders_Map_End", "group", "Trigger_Group_Sliders_Map")
|
||||
|
||||
-- Uninteresting gag triggers
|
||||
AddTriggerEx("Trigger_Sliders_Map1",
|
||||
"^[\\s-]+$", "",
|
||||
trigger_flag.OmitFromOutput + trigger_flag.RegularExpression + trigger_flag.Temporary, custom_colour.NoChange, 0,
|
||||
"", "", sendto.world, 100
|
||||
)
|
||||
AddTriggerEx("Trigger_Sliders_Map2",
|
||||
"^\\s+\\|\\[\\?\\]\\|$", "",
|
||||
trigger_flag.OmitFromOutput + trigger_flag.RegularExpression + trigger_flag.Temporary, custom_colour.NoChange, 0,
|
||||
"", "", sendto.world, 100
|
||||
)
|
||||
AddTriggerEx("Trigger_Sliders_Map3",
|
||||
"^\\s+(?:-+)?\\|[\\s-]+\\|(?:-+)?$", "",
|
||||
trigger_flag.OmitFromOutput + trigger_flag.RegularExpression + trigger_flag.Temporary, custom_colour.NoChange, 0,
|
||||
"", "", sendto.world, 100
|
||||
)
|
||||
AddTriggerEx("Trigger_Sliders_Map4",
|
||||
"^\\s+A\\s+B\\s+C\\s+D\\s+E\\s+F$", "",
|
||||
trigger_flag.OmitFromOutput + trigger_flag.RegularExpression + trigger_flag.Temporary, custom_colour.NoChange, 0,
|
||||
"", "", sendto.world, 100
|
||||
)
|
||||
AddTriggerEx("Trigger_Sliders_Map5",
|
||||
"^# - YOU ARE HERE \\? - SLICK'S LOCATION\\?$", "",
|
||||
trigger_flag.OmitFromOutput + trigger_flag.RegularExpression + trigger_flag.Temporary, custom_colour.NoChange, 0,
|
||||
"", "", sendto.world, 100
|
||||
)
|
||||
AddTriggerEx("Trigger_Sliders_Map6",
|
||||
"^v,\\<,\\^,\\> - GUST STATUES FACING SOUTH, WEST, NORTH, EAST$", "",
|
||||
trigger_flag.OmitFromOutput + trigger_flag.RegularExpression + trigger_flag.Temporary, custom_colour.NoChange, 0,
|
||||
"", "", sendto.world, 100
|
||||
)
|
||||
-- This one is the only one we really care about. Record each row of rooms.
|
||||
AddTriggerEx("Trigger_Sliders_Map7",
|
||||
"^(?:\\s+|\\|\\[\\?\\])\\|(?<A>.{3}) (?<B>.{3}) (?<C>.{3}) (?<D>.{3}) (?<E>.{3}) (?<F>.{3})\\|(?:\\s+|\\[\\?\\]\\| )(?<row>\\d)$", "",
|
||||
trigger_flag.OmitFromOutput + trigger_flag.RegularExpression + trigger_flag.Temporary, custom_colour.NoChange, 0,
|
||||
"", "Sliders.map_parse", sendto.script, 100
|
||||
)
|
||||
for i = 1, 7 do
|
||||
SetTriggerOption("Trigger_Sliders_Map" .. i, "group", "Trigger_Group_Sliders_Map")
|
||||
end
|
||||
|
||||
Sliders.map = {}
|
||||
Sliders.crankStations = {
|
||||
["38862"] = {dir="SW", coord="A1"}, ["38867"] = {dir="SE", coord="F1"},
|
||||
["38892"] = {dir="NW", coord="A6"}, ["38897"] = {dir="NE", coord="F6"}
|
||||
}
|
||||
Sliders.legend = {
|
||||
DIR_NORTH = "~^~", DIR_EAST = "~>~",
|
||||
DIR_SOUTH = "~v~", DIR_WEST = "~<~",
|
||||
ICE = "~ ~", ROCK = "^ ^",
|
||||
CURRENT_LOCATION = "^#^"
|
||||
}
|
||||
end
|
||||
|
||||
function Sliders.enter(trigger, line, wc)
|
||||
end
|
||||
|
||||
function Sliders.get_map(alias, line, wc)
|
||||
if (not Sliders.in_crank_station()) then
|
||||
Send("glance")
|
||||
return
|
||||
end
|
||||
EnableTrigger("Trigger_Sliders_Map_Start", true)
|
||||
SendNoEcho("echo {Sliders}")
|
||||
Send("glance")
|
||||
SendNoEcho("echo {/Sliders}")
|
||||
end
|
||||
|
||||
function Sliders.map_start(trigger, line, wc)
|
||||
EnableTrigger("Trigger_Sliders_Map_Start", false)
|
||||
EnableTriggerGroup("Trigger_Group_Sliders_Map", true)
|
||||
Sliders.map = {A={}, B={}, C={}, D={}, E={}, F={}}
|
||||
end
|
||||
|
||||
function Sliders.map_parse(trigger, line, wc)
|
||||
for column in string.gmatch("ABCDEF", "%a") do
|
||||
Sliders.map[column][tonumber(wc.row)] = wc[column]
|
||||
end
|
||||
end
|
||||
|
||||
function Sliders.map_end(trigger, line, wc)
|
||||
EnableTriggerGroup("Trigger_Group_Sliders_Map", false)
|
||||
Sliders.show_map()
|
||||
end
|
||||
|
||||
function Sliders.show_map()
|
||||
local station = Sliders.in_crank_station()
|
||||
if (not Sliders.in_crank_station()) then
|
||||
Utility.print("You must be in a crank station to use this command.")
|
||||
return
|
||||
end
|
||||
if (not next(Sliders.map)) then
|
||||
Utility.print("Map not initialized. Type '@Yglance@w' to view it.")
|
||||
return
|
||||
end
|
||||
Utility.print(string.format("Current location: %s (%s)", station.coord, station.dir))
|
||||
for row = 6, 1, -1 do
|
||||
for column in string.gmatch("ABCDEF", "%a") do
|
||||
local coord = column .. row -- eg, A1, A2, etc.
|
||||
local room = Sliders.convert_legend(Sliders.map[column][row]) -- eg, ice/rock/etc.
|
||||
Tell(string.format("%s: %-7s ", coord, room))
|
||||
end
|
||||
Note("")
|
||||
end
|
||||
end
|
||||
|
||||
function Sliders.show_column(alias, line, wc)
|
||||
if (not Sliders.in_crank_station()) then
|
||||
Utility.print("You must be in a crank station to use this command.")
|
||||
return
|
||||
end
|
||||
if (not next(Sliders.map)) then
|
||||
Utility.print("The map is not yet initialized. Type '@Yglance@w' to view it.")
|
||||
return
|
||||
end
|
||||
local column = wc.column:upper()
|
||||
if (not Sliders.map[column]) then
|
||||
Utility.print("That column does not exist.")
|
||||
return
|
||||
end
|
||||
local list = {}
|
||||
for row = 1, 6 do
|
||||
local coord = column .. row -- eg, A1, B1
|
||||
table.insert(list, string.format("%s: %s", coord, Sliders.convert_legend(Sliders.map[column][row])))
|
||||
end
|
||||
Utility.print(table.concat(list, ". "))
|
||||
end
|
||||
|
||||
function Sliders.show_row(alias, line, wc)
|
||||
if (not Sliders.in_crank_station()) then
|
||||
Utility.print("You must be in a crank station to use this command.")
|
||||
return
|
||||
end
|
||||
if (not next(Sliders.map)) then
|
||||
Utility.print("The map is not yet initialized. Type '@Yglance@w' to view it.")
|
||||
return
|
||||
end
|
||||
local row = tonumber(wc.row)
|
||||
for column in string.gmatch("ABCDEF", "%a") do
|
||||
if not (Sliders.map[column] and Sliders.map[column][row]) then
|
||||
Utility.print("That row does not exist.")
|
||||
return
|
||||
end
|
||||
end
|
||||
local list = {}
|
||||
for column in string.gmatch("ABCDEF", "%a") do
|
||||
local coord = column .. row -- eg, A1, B1
|
||||
table.insert(list, string.format("%s: %s", coord, Sliders.convert_legend(Sliders.map[column][row])))
|
||||
end
|
||||
Utility.print(table.concat(list, ". "))
|
||||
end
|
||||
|
||||
function Sliders.show_coord(alias, line, wc)
|
||||
if (not Sliders.in_crank_station()) then
|
||||
Utility.print("You must be in a crank station to use this command.")
|
||||
return
|
||||
end
|
||||
if (not next(Sliders.map)) then
|
||||
Utility.print("The map is not yet initialized. Type '@Yglance@w' to view it.")
|
||||
return
|
||||
end
|
||||
local column = wc.column:upper()
|
||||
local row = tonumber(wc.row)
|
||||
if not (Sliders.map[column] and Sliders.map[column][row]) then
|
||||
Utility.print("That coordinate does not exist.")
|
||||
return
|
||||
end
|
||||
Utility.print(string.format("%s%d: %s", column, row, Sliders.convert_legend(Sliders.map[column][row])))
|
||||
end
|
||||
|
||||
function Sliders.convert_legend(symbol)
|
||||
local conversions = {
|
||||
[Sliders.legend.DIR_NORTH] = "North", [Sliders.legend.DIR_EAST] = "East",
|
||||
[Sliders.legend.DIR_SOUTH] = "South", [Sliders.legend.DIR_WEST] = "West",
|
||||
[Sliders.legend.ICE] = "Ice", [Sliders.legend.ROCK] = "Rock",
|
||||
[Sliders.legend.CURRENT_LOCATION] = "Current",
|
||||
}
|
||||
return conversions[symbol] or symbol
|
||||
end
|
||||
|
||||
function Sliders.rotate_column(alias, line, wc)
|
||||
if (not Sliders.in_crank_station()) then
|
||||
Utility.print("You must be in a crank station to use this command.")
|
||||
return
|
||||
end
|
||||
if (not next(Sliders.map)) then
|
||||
Utility.print("The map is not yet initialized. Type '@Yglance@w' to view it.")
|
||||
return
|
||||
end
|
||||
local column = wc.column:upper()
|
||||
local direction = wc.direction:lower()
|
||||
Send(line)
|
||||
for row = 1, 6 do
|
||||
if (Sliders.map[column][row] == "~^~") then
|
||||
Sliders.map[column][row] = direction == "cw" and "~>~" or "~<~"
|
||||
elseif (Sliders.map[column][row] == "~>~") then
|
||||
Sliders.map[column][row] = direction == "cw" and "~v~" or "~^~"
|
||||
elseif (Sliders.map[column][row] == "~v~") then
|
||||
Sliders.map[column][row] = direction == "cw" and "~<~" or "~>~"
|
||||
elseif (Sliders.map[column][row] == "~<~") then
|
||||
Sliders.map[column][row] = direction == "cw" and "~^~" or "~v~"
|
||||
end
|
||||
end
|
||||
wait.make(Sliders.turn_crank_CR)
|
||||
end
|
||||
|
||||
function Sliders.rotate_row(alias, line, wc)
|
||||
if (not Sliders.in_crank_station()) then
|
||||
Utility.print("You must be in a crank station to use this command.")
|
||||
return
|
||||
end
|
||||
if (not next(Sliders.map)) then
|
||||
Utility.print("The map is not yet initialized. Type '@Yglance@w' to view it.")
|
||||
return
|
||||
end
|
||||
local row = tonumber(wc.row)
|
||||
local direction = wc.direction:lower()
|
||||
Send(line)
|
||||
for column in string.gmatch("ABCDEF", "%a") do
|
||||
if (Sliders.map[column][row] == "~^~") then
|
||||
Sliders.map[column][row] = direction == "cw" and "~>~" or "~<~"
|
||||
elseif (Sliders.map[column][row] == "~>~") then
|
||||
Sliders.map[column][row] = direction == "cw" and "~v~" or "~^~"
|
||||
elseif (Sliders.map[column][row] == "~v~") then
|
||||
Sliders.map[column][row] = direction == "cw" and "~<~" or "~>~"
|
||||
elseif (Sliders.map[column][row] == "~<~") then
|
||||
Sliders.map[column][row] = direction == "cw" and "~^~" or "~v~"
|
||||
end
|
||||
end
|
||||
wait.make(Sliders.turn_crank_CR)
|
||||
end
|
||||
|
||||
function Sliders.turn_crank_CR()
|
||||
local line = wait.regexp("^You turn Crank [A-F1-6], rotating some of the statues (?:counter)?clockwise\\.$", 3)
|
||||
if (line) then
|
||||
Sliders.show_map()
|
||||
end
|
||||
end
|
||||
|
||||
function Sliders.check_path(alias, line, wc)
|
||||
local station = Sliders.in_crank_station()
|
||||
-- Dirty debug hack follows. Uncomment, change any entry to make the map appear as needed,
|
||||
-- and reinstall the plugin. Allows testing without having to actually run sliders. Pretty?
|
||||
-- No. But functional.
|
||||
--[[ station = {dir="se", coord="F1"}
|
||||
Sliders.map = {
|
||||
A={Sliders.legend.ROCK, Sliders.legend.DIR_NORTH, Sliders.legend.DIR_EAST, Sliders.legend.ICE, Sliders.legend.ROCK, Sliders.legend.ROCK},
|
||||
B={Sliders.legend.ROCK, Sliders.legend.DIR_NORTH, Sliders.legend.DIR_NORTH, Sliders.legend.ICE, Sliders.legend.ICE, Sliders.legend.DIR_EAST},
|
||||
C={Sliders.legend.ICE, Sliders.legend.ICE, Sliders.legend.DIR_NORTH, Sliders.legend.DIR_WEST, Sliders.legend.ICE, Sliders.legend.DIR_SOUTH},
|
||||
D={Sliders.legend.ICE, Sliders.legend.ICE, Sliders.legend.ICE, Sliders.legend.DIR_NORTH, Sliders.legend.ICE, Sliders.legend.ICE},
|
||||
E={Sliders.legend.ROCK, Sliders.legend.DIR_WEST, Sliders.legend.ICE, Sliders.legend.DIR_WEST, Sliders.legend.ICE, Sliders.legend.DIR_EAST},
|
||||
F={Sliders.legend.CURRENT_LOCATION, Sliders.legend.ICE, Sliders.legend.ICE, Sliders.legend.ROCK, Sliders.legend.ROCK, Sliders.legend.ROCK}
|
||||
}]]
|
||||
-- Now back to our regularly scheduled programming
|
||||
if (not station) then
|
||||
Utility.print("You must be in a crank station to use this command.")
|
||||
return
|
||||
end
|
||||
if (not next(Sliders.map)) then
|
||||
Utility.print("The map is not yet initialized. Type '@Yglance@w' to view it.")
|
||||
return
|
||||
end
|
||||
local startDirs = utils.split(wc.startDirs:lower(), " ")
|
||||
if (#startDirs > 3) then
|
||||
Note(string.format("3 is maximum starting directions. %d given.", #startDirs))
|
||||
return
|
||||
end
|
||||
local convertDirs = {n=Sliders.legend.DIR_NORTH, e=Sliders.legend.DIR_EAST, s=Sliders.legend.DIR_SOUTH, w=Sliders.legend.DIR_WEST}
|
||||
for i, dir in ipairs(startDirs) do
|
||||
startDirs[i] = convertDirs[startDirs[i]]
|
||||
end
|
||||
local marker = {
|
||||
x=station.coord:sub(1, 1), y=tonumber(station.coord:sub(2, 2)),
|
||||
dir=table.remove(startDirs, 1), steps=0, sliding=false
|
||||
}
|
||||
function marker:move(dir)
|
||||
self.dir = dir or self.dir
|
||||
if (self.dir == Sliders.legend.DIR_NORTH) then
|
||||
if ((self.y == 6 and self.x ~= "D") -- On top row outside column D
|
||||
or (self.x == "C" and self.y == 3)) then -- On C3
|
||||
return false
|
||||
end
|
||||
self.y = self.y + 1
|
||||
elseif (self.dir == Sliders.legend.DIR_EAST) then
|
||||
if (self.x == "F" and self.y ~= 3) then -- On last column outside row 3
|
||||
return false
|
||||
end
|
||||
-- This turns 'A' into 'B', 'B' into 'C', etc.
|
||||
self.x = string.char(string.byte(self.x) + 1)
|
||||
elseif (self.dir == Sliders.legend.DIR_SOUTH) then
|
||||
if ((self.y == 1 and self.x ~= "C") -- On bottom row outside column C
|
||||
or (self.x == "C" and self.y == 4)) then -- On C4
|
||||
return false
|
||||
end
|
||||
self.y = self.y - 1
|
||||
elseif (self.dir == Sliders.legend.DIR_WEST) then
|
||||
if (self.x == "A" and self.y ~= 4) then -- On first column outside row 4
|
||||
return false
|
||||
end
|
||||
-- This turns 'F' into 'E', 'E' into 'D', etc. If x is 'A', it will become '@'.
|
||||
self.x = string.char(string.byte(self.x) - 1)
|
||||
end -- dir
|
||||
self.steps = self.steps + 1
|
||||
return true
|
||||
end
|
||||
local MSG_SUCCESS = "@GSuccess@w. Current path will lead to %sern solid ground in %d steps."
|
||||
local MSG_FAILURE = "@RFailure@w. Current path will end at %s%d in %d steps."
|
||||
while (marker.steps < 50) do
|
||||
if (not marker:move()) then
|
||||
Utility.print(MSG_FAILURE:format(marker.x, marker.y, marker.steps))
|
||||
return false
|
||||
end
|
||||
-- Check for success via 'fake' coords
|
||||
if (marker.x == "@") then
|
||||
Utility.print(MSG_SUCCESS:format("west", marker.steps))
|
||||
return true
|
||||
elseif (marker.x == "G") then
|
||||
Utility.print(MSG_SUCCESS:format("east", marker.steps))
|
||||
return true
|
||||
elseif (marker.y == 7) then
|
||||
Utility.print(MSG_SUCCESS:format("north", marker.steps))
|
||||
return true
|
||||
elseif (marker.y == 0) then
|
||||
Utility.print(MSG_SUCCESS:format("south", marker.steps))
|
||||
return true
|
||||
end -- success
|
||||
local newRoom = Sliders.map[marker.x][marker.y]
|
||||
if (newRoom == Sliders.legend.ROCK) then
|
||||
if (marker.sliding) then
|
||||
-- Slid into rock, which is bad.
|
||||
Utility.print(MSG_FAILURE:format(marker.x, marker.y, marker.steps))
|
||||
return false
|
||||
else
|
||||
-- We haven't actually started sliding yet, so check for next start dir.
|
||||
if (#startDirs > 0) then
|
||||
marker.dir = table.remove(startDirs, 1)
|
||||
else
|
||||
Utility.print("Insufficient start directions given to begin sliding.")
|
||||
return false
|
||||
end
|
||||
end
|
||||
elseif (newRoom == Sliders.legend.ICE) then
|
||||
marker.sliding = true
|
||||
else
|
||||
-- Otherwise, new room is a statue room. Update dir.
|
||||
marker.sliding = true
|
||||
marker.dir = newRoom
|
||||
end
|
||||
end -- while
|
||||
-- If we make it here, the path is too long.
|
||||
Utility.print("The current path is too long (over 50 steps).")
|
||||
return false
|
||||
end
|
||||
|
||||
function Sliders.in_crank_station()
|
||||
return Sliders.crankStations[gmcp("room.info.num")]
|
||||
end
|
||||
|
||||
|
||||
|
||||
--------------------------------------------------
|
||||
-- Utility
|
||||
--------------------------------------------------
|
||||
|
||||
Utility = {}
|
||||
|
||||
function Utility.initialize()
|
||||
-- General aliases
|
||||
|
||||
local initializers = {
|
||||
Sliders.initialize,
|
||||
}
|
||||
for _, initializer in ipairs(initializers) do
|
||||
initializer()
|
||||
end
|
||||
end
|
||||
|
||||
function Utility.deinitialize()
|
||||
local aliases = GetAliasList()
|
||||
if (aliases) then
|
||||
for i = 1, #aliases do
|
||||
EnableAlias(aliases[i], false)
|
||||
DeleteAlias(aliases[i])
|
||||
end
|
||||
end
|
||||
local triggers = GetTriggerList()
|
||||
if (triggers) then
|
||||
for i = 1, #triggers do
|
||||
EnableTrigger(triggers[i], false)
|
||||
DeleteTrigger(triggers[i])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function Utility.print(str)
|
||||
-- Lets us use Aard color codes in our ColourNotes
|
||||
AnsiNote(stylesToANSI(ColoursToStyles("@w" .. str .. "@w")))
|
||||
end
|
||||
|
||||
|
||||
|
||||
--------------------------------------------------
|
||||
-- Plugin Callbacks
|
||||
--------------------------------------------------
|
||||
|
||||
function OnPluginInstall()
|
||||
Utility.initialize()
|
||||
end
|
||||
|
||||
function OnPluginConnect()
|
||||
Send_GMCP_Packet("request char")
|
||||
end
|
||||
|
||||
function OnPluginEnable()
|
||||
OnPluginInstall()
|
||||
if (IsConnected()) then
|
||||
OnPluginConnect()
|
||||
end
|
||||
end
|
||||
|
||||
function OnPluginClose()
|
||||
Utility.deinitialize()
|
||||
end
|
||||
|
||||
function OnPluginDisable()
|
||||
OnPluginClose()
|
||||
end
|
||||
|
||||
function OnPluginBroadcast(msg, id, name, text)
|
||||
if (id == "3e7dedbe37e44942dd46d264") then -- GMCP handler
|
||||
end
|
||||
end
|
||||
]]>
|
||||
</script>
|
||||
|
||||
|
||||
</muclient>
|
Loading…
Reference in new issue