vanilla-wow-addons – Rev 1
?pathlinks?
-- ///////////////////////////////////////////////////////////////////////////////////////////
--
-- WatchTower: Developed for use in Realm Defense. WatchTower allows you to automatically announce to the area all
-- pertinant information about the invaders. Simply click on the invader and use your hot key to Report
-- enemy. Information included in your message will be Faction, Race, Level, and Current Subzone they are in.
-- Or, you may use your multiple reporting hotkey,
-- mouseover all enemies you wish to report, and then hit the hotkey again to report multiple enemies at once.
--
-- Official Site: www.grimeygames.com/wow
--
-- Current Team Members: Clangadin, Sancho, Aragent, Nathanmx
--
-- Contributions: Rowne's Variable Saves/Loads and GUI Detection.
-- Sancho's multiple enemy reporting code.
-- Jhax's PvP enabled/disabled report fix.
-- Torgo's AlarmSystem code (and voozoodoo for helping rip some)
--
-- License: You are hereby authorized to freely modify and/or distribute all files of this add-on, in whole or in part,
-- providing that this header stays intact, and that you do not claim ownership of this Add-on.
--
-- Additionally, the original owner wishes to be notified by email if you make any improvements to this add-on.
-- Any positive alterations will be added to a future release, and any contributing authors will be
-- identified in the section above. Contact at fcarentz@grimeygames.com
--
-- Features:
-- v1.7 - Added Cosmos (Khaos) and UUI compatibility
-- Added tons of various fixes and changes
-- v1.6 - Additions by Sancho: Changed addon to use UnitLevel() appropriately (changed by blizzard
-- to return -1 when the enemy is 10 levels above you). Added Verbose and Debug Modes. Added
-- output options for single enemy reporting. Added Player Name/Guild info to output options.
-- Coordinate functionality taken from AlarmSystem, thanks to Torgo, the author, and voozoodoo
-- for ripping it.
-- 1.6 Bug Fixes (Sancho)
-- -Removed Heading functionality (UnitFacing() taken out by blizzard)
-- -Fixed typo that was messing up raid channel reporting
-- -Fix by Jhax: Now reports pvp enabled/disabled correctly
-- v1.5 - Additions by Sancho: Multiple enemy reporting, Raid channel broadcasting
-- 1.5 Bug Fixes (Sancho)
-- -Fixed faction auto-detection (hopefully) and removed from saved variable list
-- -Fixed language auto-detection (hopefully) and removed from saved variable list
-- v1.4 - Added detection for GUI to show saved settings. Added Rownes Variable saves and GUI detection.
-- 1.4 Bug Fixes
-- - Auto Language detection to determine what language the message should be sent in.
-- - Removed bug causing error on NPC Targeting. Will now display message that player can only
-- target players of the selected enemy faction.
--
-- v1.3 - Added GUI interface...and options to send message to Party, Guild and Local Def.
-- added Simple slash commands.
-- v1.2 - Corrected Autofaction code. Added Message notification of Enemy Faction, also added
-- message telling user if Target is currently PVP enabled or not.
-- v1.1 - Removed the Player Set variable of WTChannel to allow program to post to Local Defense.
-- Added autodetect for faction on load of Watch Tower. WatchTower will now automatically
-- set your enemy faction to the opposite of that which you are playing.
--
-- v1.0 - Sends message containing targets Faction, Race, Level, Subzone and Heading (Compass Style)
--
-- ///////////////////////////////////////////////////////////////////////////////////////////
-----------------------------------------------------------------------------------------------------------
--DO NOT EDIT BELOW THIS LINE UNLESS YOU KNOW WHAT YOU ARE DOING--
-----------------------------------------------------------------------------------------------------------
BINDING_HEADER_WATCHTOWER = "Watch Tower";
BINDING_NAME_WT_OPTIONS = "Options";
BINDING_NAME_WT_VERBOSE = "Toggle Verbose Mode";
BINDING_NAME_WT_DEBUG = "Toggle Debug Mode";
BINDING_NAME_WT_REPORT = "Report Enemy";
BINDING_NAME_WT_REPORT_GANK = "Report Low-Level Player Killer";
BINDING_NAME_WT_TOGGLE = "Toggle Watch Tower";
BINDING_NAME_WT_FACTION = "Switch Faction Enemy (For Testing Purposes)";
BINDING_NAME_WT_REPORT_MULTIPLE = "Report Multiple Enemies With Mouseover";
WATCHTOWERTITLE = "The Watch Tower";
WATCHTOWEROUTPUTTITLE = "Select Reporting Options";
WT_REPORT_PVP = "PvP Status";
WT_REPORT_FACTION = "Faction";
WT_REPORT_GUILD = "Guild";
WT_REPORT_NAME = "Name";
WT_REPORT_RACE = "Race";
WT_REPORT_CLASS = "Class";
WT_REPORT_LEVEL = "Level";
WT_REPORT_LOCATION = "Location";
WT_REPORT_COORDINATES = "Coordinates";
WT_CUSTOM_CHANNEL = "Custom Channel: ";
WT_PARTY = "Send To Party";
WT_RAID = "Send To Raid";
WT_GUILD = "Send To Guild";
WT_DEFENSE = "Local Defense";
FactionSetTo = "";
WT_Language= "";
local GankReport = false;
local HasCheckedFaction = false;
local PlayerCollectionEnabled = false;
local ReportOwnFaction = false;
local ReportPvPOnly = false;
local ClassOrder = {"Warrior", "Paladin", "Priest", "Hunter", "Rogue", "Shaman", "Mage", "Warlock", "Druid"};
local NumOfPlayers = 0;
local PlayerNames = { "" };
local PlayerLevels = { };
local SortedPlayerLevels = { };
local AverageLevel = 0;
local PlayerClasses = { };
local SortedPlayerClasses = { };
local PlayerRaces = { };
local SortedPlayerRaces = { };
local PlayerClassCounts = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-- support for Cosmos
function WatchTower_Register_Khaos()
local optionSet = {
id="WatchTower";
text=WatchTower_CONFIG_HEADER;
helptext=WatchTower_CONFIG_HEADER_INFO;
difficulty=1;
options={
{
id="Header";
text=WATCHTOWER_CONFIG_HEADER;
helptext=WATCHTOWER_CONFIG_HEADER_INFO;
type=K_HEADER;
difficulty=1;
};
{
id="WatchTowerEnable";
type=K_TEXT;
text=WATCHTOWER_ENABLED;
helptext=WATCHTOWER_ENABLED_INFO;
callback=function(state) if (state.checked) then WatchTower_Enabled = true; else WatchTower_Enabled = false; end end;
feedback=function(state) return WATCHTOWER_ENABLED_INFO; end;
check=true;
default={checked=true};
disabled={checked=false};
};
};
};
Khaos.registerOptionSet(
"Comm",
optionSet
);
end
function WT_OnEvent()
-- Register command handler and new commands
SlashCmdList["WatchTowerCOMMAND"] = WTStatusSlashHandler;
SLASH_WatchTowerCOMMAND1 = "/watchtower";
SLASH_WatchTowerCOMMAND2 = "/wt";
if (event == "VARIABLES_LOADED") then
if (WatchTowerEnabled == nil) then
WatchTowerEnabled = true;
end
if (WatchTower_SendParty == nil or WatchTower_SendLocal == nil or WatchTower_SendGuild == nil or WatchTower_SendRaid == nil
or WatchTower_ReportPvP == nil or WatchTower_ReportFaction == nil or WatchTower_ReportGuild == nil
or WatchTower_ReportName == nil or WatchTower_ReportRace == nil or WatchTower_ReportClass == nil
or WatchTower_ReportLevel == nil or WatchTower_ReportLocation == nil or WatchTower_ReportCoordinates == nil) then
--or WatchTower_CustomChannel == nil) then
if (WatchTower_SendParty == nil) then
WatchTower_SendParty = false;
end
if (WatchTower_SendRaid == nil) then
WatchTower_SendRaid = false;
end
if (WatchTower_SendGuild == nil) then
WatchTower_SendGuild = false;
end
if (WatchTower_SendLocal == nil) then
WatchTower_SendLocal = false;
end
if (WatchTower_ReportPvP == nil) then
WatchTower_ReportPvP = false;
end
if (WatchTower_ReportFaction == nil) then
WatchTower_ReportFaction = true;
end
if (WatchTower_ReportGuild == nil) then
WatchTower_ReportGuild = false;
end
if (WatchTower_ReportName == nil) then
WatchTower_ReportName = false;
end
if (WatchTower_ReportRace == nil) then
WatchTower_ReportRace = false;
end
if (WatchTower_ReportClass == nil) then
WatchTower_ReportClass = true;
end
if (WatchTower_ReportLevel == nil) then
WatchTower_ReportLevel = true;
end
if (WatchTower_ReportLocation == nil) then
WatchTower_ReportLocation = true;
end
if (WatchTower_ReportCoordinates == nil) then
WatchTower_ReportCoordinates = true;
end
--if (WatchTower_CustomChannel == nil) then
-- WatchTower_CustomChannel = "";
--end
--ShowUIPanel(WT_FrameTemplate);
end
if (WatchTower_Verbose == nil) then
WatchTower_Verbose = true;
end
if (WatchTower_Debug == nil) then
WatchTower_Debug = false;
end
--Let the player know that WatchTower has Loaded.
-- WatchTowerStatusChatMsg("WatchTower loaded. Type /wt to display options.");
-- WatchTowerStatusChatMsg("Remember to set up your Key Bindings.");
WT_SetCheckBox();
end
if(PlayerCollectionEnabled and WatchTowerEnabled and event == "UPDATE_MOUSEOVER_UNIT" and UnitExists("mouseover")) then
TargetUnit("mouseover");
WatchTowerDebugChatMsg("UNIT SELECTED", 0, 0, 1);
--if (UnitFactionGroup("target") == FactionSetTo and UnitPlayerControlled("target") and UnitIsPlayer("target") and (UnitIsPVP("target") or not ReportPvPOnly)) then
--------------------------------------------------------------------------------------------------------
-- Comment the above line and uncomment the 2 commented blocks below to give extra debugging |
--------------------------------------------------------------------------------------------------------
if (UnitFactionGroup("target") == FactionSetTo) then
WatchTowerDebugChatMsg("IN " .. string.upper(FactionSetTo), 0, 0, 1);
if (UnitPlayerControlled("target")) then
WatchTowerDebugChatMsg("PLAYERCONTROLLED", 0, 0, 1);
if (UnitIsPlayer("target")) then
WatchTowerDebugChatMsg("NOT A PET", 0, 0, 1);
if(UnitIsPVP("target") or not ReportPvPOnly) then
if(UnitIsPVP("target")) then
WatchTowerDebugChatMsg("IS PVP", 0, 0, 1);
end
--------------------------------------------------------------------------------------------------------
local tempname = UnitName("target");
local isNew = true;
for i=1, NumOfPlayers + 1 do
if (PlayerNames[i] == tempname) then
isNew = false;
end
end
if(isNew) then
Sancho_AddPlayer();
else
WatchTowerVerboseChatMsg("PLAYER ALREADY ADDED");
end
--------------------------------------------------------------------------------------------------------
else
WatchTowerDebugChatMsg("IS NOT PVP", 1, 0, 0);
end
else
WatchTowerDebugChatMsg("IS A PET", 1, 0, 0);
end
else
WatchTowerDebugChatMsg("NOT PLAYERCONTROLLED", 1, 0, 0);
end
else
WatchTowerDebugChatMsg("NOT IN " .. string.upper(FactionSetTo), 1, 0, 0);
--------------------------------------------------------------------------------------------------------
end
end
--if(event == "WORLD_MAP_UPDATE") then
-- WT_draw();
--end
--if(event == "CHAT_MSG") then
-- WatchTowerStatusChatMsg(message);
--end
end
function WT_OnLoad()
this:RegisterEvent("UPDATE_MOUSEOVER_UNIT");
this:RegisterEvent("VARIABLES_LOADED");
if (Khaos) then
WatchTower_Register_Khaos();
end
SLASH_WATCHTOWER1 = "/watchtower";
SLASH_WATCHTOWER2 = "/wt";
SlashCmdList["WATCHTOWER"] = WatchTower_ShowUI;
--[[
if ( UltimateUI_RegisterButton ) then
UltimateUI_RegisterButton (
"Watch Tower",
"Config",
"|cFF00CC00Watch Tower|r\nAllows you to report information \nabout enemy targets in various chat channels",
"Interface\\Icons\\Ability_Seal",
ShowUIPanel(WT_FrameTemplate),
function()
return true; -- The button is enabled
end
);
end
]]
end
--Executed by the user via a script, slash command, or bindable key
function Sancho_ReportToggle()
if(PlayerCollectionEnabled == false) then
PlayerCollectionEnabled = true;
if(HasCheckedFaction == false) then
SetFaction(UnitFactionGroup("player"));
HasCheckedFaction = true;
end
WatchTowerVerboseChatMsg("WatchTower player collection enabled");
WatchTowerDebugChatMsg("Reporting " .. FactionSetTo .. " enemies", 1, 1, 1);
if(ReportPvPOnly) then
WatchTowerVerboseChatMsg("Reporting only PvP players");
else
WatchTowerVerboseChatMsg("Reporting PvP and non-PvP players");
end
else
PlayerCollectionEnabled = false;
Sancho_PrintData();
Sancho_ClearData();
end
end
--Function assumes that an enemy unit is selected which is not already in the tables
function Sancho_AddPlayer()
NumOfPlayers = NumOfPlayers + 1;
PlayerNames[NumOfPlayers] = UnitName("target");
PlayerClasses[NumOfPlayers] = UnitClass("target");
PlayerLevels[NumOfPlayers] = UnitLevel("target");
PlayerRaces[NumOfPlayers] = UnitRace("target");
--Was for debugging, but keeping it until a better way is developed of telling the
--user which players have already been added (i.e. highlighting the added players somehow)
WatchTowerVerboseChatMsg("Added (" .. NumOfPlayers .. " Players)");
end
--Prints results, will only be done after data collection has been stopped
function Sancho_PrintData()
if(NumOfPlayers ~= 0) then
Sancho_ClassBreakdown();
Sancho_SortLevels();
end
local tMessage = "";
-- From AlarmSystem, by Torgo, ripped with permission
-- thanks voozoodoo for ripping!
xME, yME = GetPlayerMapPosition("player");
xME = math.floor(xME*100.0);
yME = math.floor(yME*100.0);
if(not ReportPvPOnly) then
tMessage = tMessage .. "WatchTower: " .. NumOfPlayers .. " " .. FactionSetTo ..
" attacking " .. GetMinimapZoneText();
else
tMessage = tMessage .. "WatchTower: " .. NumOfPlayers .. " PvP enabled " .. FactionSetTo ..
" attacking " .. GetMinimapZoneText();
end
if ((xME > 0) or (yME > 0)) then
tMessage = tMessage.." at ("..xME..","..yME..")! ";
else
tMessage = tMessage.."! ";
end
if(NumOfPlayers > 50) then
Sancho_CalculateAverage();
if(SortedPlayerLevels[NumOfPlayers] == -1) then
tMessage = tMessage .. "Lowest level: " .. SortedPlayerLevels[1] ..
" Highest level: " .. UnitLevel("player") + 10 ..
"+ Average level of known players: " .. string.format("%.1f", AverageLevel);
else
tMessage = tMessage .. "Lowest level: " .. SortedPlayerLevels[1] ..
" Highest level: " .. SortedPlayerLevels[NumOfPlayers] ..
" Average level of known players: " .. string.format("%.1f", AverageLevel);
end
elseif(NumOfPlayers > 20) then
tMessage = tMessage .. "lvls: ";
for i=1, NumOfPlayers do
if(SortedPlayerLevels[i] == -1) then
tMessage = tMessage .. UnitLevel("player") + 10 .. "+ ";
else
tMessage = tMessage .. SortedPlayerLevels[i] .. " ";
end
end
elseif(NumOfPlayers > 10) then
local temporarycounter = 0; --<<keeps track of how many players are processed,
for i=1, 9 do ----so that it knows if it should add a comma or not
if(PlayerClassCounts[i] ~= 0) then
--For the first loop, i = 1, ClassOrder[1] will be a Warrior
--If there are 2 warriors, for example, the first loop will add
--"2 Warrior" and "s" since there are more than one
--and ", " if there are more than 2 total players
tMessage = tMessage .. PlayerClassCounts[i] .. " " .. ClassOrder[i];
if(PlayerClassCounts[i] > 1) then
tMessage = tMessage .. "s";
end
temporarycounter = temporarycounter + PlayerClassCounts[i];
if(temporarycounter < NumOfPlayers) then
tMessage = tMessage .. ", ";
end
end
end
tMessage = tMessage .. " - lvls: ";
for i=1, NumOfPlayers do
if(SortedPlayerLevels[i] == -1) then
tMessage = tMessage .. UnitLevel("player") + 10 .. "+ ";
else
tMessage = tMessage .. SortedPlayerLevels[i] .. " ";
end
end
elseif(NumOfPlayers > 5) then
for i=1, NumOfPlayers do
if(SortedPlayerLevels[i] == -1) then
tMessage = tMessage .. "lvl " .. UnitLevel("player") + 10 .. "+ " .. SortedPlayerClasses[i];
else
tMessage = tMessage .. "lvl " .. SortedPlayerLevels[i] .. " " .. SortedPlayerClasses[i];
end
if(i < NumOfPlayers) then
tMessage = tMessage .. ", ";
end
end
elseif(NumOfPlayers > 0) then
for i=1, NumOfPlayers do
if(SortedPlayerLevels[i] == -1) then
tMessage = tMessage .. "Level " .. UnitLevel("player") + 10 .. "+ " .. SortedPlayerRaces[i] .. " " .. SortedPlayerClasses[i];
else
tMessage = tMessage .. "Level " .. SortedPlayerLevels[i] .. " " .. SortedPlayerRaces[i] .. " " .. SortedPlayerClasses[i];
end
if(i < NumOfPlayers) then
tMessage = tMessage .. ", ";
end
end
else
--Just in case
end
--Actually sends the data to whichever channel is wanted
if(NumOfPlayers ~= 0) then
if (UnitFactionGroup("player") == "Horde") then
WT_Language = "Orcish";
else
WT_Language = "Common";
end
if (WatchTower_SendLocal == true) then
tempArray = { GetMapZones(GetCurrentMapContinent()) };
mapZone = tempArray[GetCurrentMapZone()];
localDef = GetChannelName("LocalDefense - " ..mapZone);
SendChatMessage(tMessage ,"CHANNEL", WT_Language, localDef);
end
if WatchTower_SendGuild == true then
SendChatMessage(tMessage ,"Guild");
end
if WatchTower_SendParty == true then
SendChatMessage(tMessage ,"Party");
end
if WatchTower_SendRaid == true then
SendChatMessage(tMessage ,"Raid");
end
WatchTowerDebugChatMsg(tMessage, 1, 1, 1);
else
WatchTowerStatusChatMsg("No enemies to report. Is your faction set right? Is PvP only reporting enabled?");
end
end
--Run after the data is printed .. also sorts classes and races to match up with levels when needed
function Sancho_SortLevels()
for i=1, NumOfPlayers do
for j=1, i do
if(SortedPlayerLevels[j] == nil or (SortedPlayerLevels[j] > PlayerLevels[i] and PlayerLevels[i] ~= -1)) then
table.insert(SortedPlayerLevels, j, PlayerLevels[i]);
table.insert(SortedPlayerClasses, j, PlayerClasses[i]);
table.insert(SortedPlayerRaces, j, PlayerRaces[i]);
break;
end
end
end
end
function Sancho_CalculateAverage()
local count = 0
for i=1, NumOfPlayers do
if(PlayerLevels[i] ~= -1) then
AverageLevel = AverageLevel + PlayerLevels[i];
count = count + 1;
end
end
AverageLevel = AverageLevel / count;
end
--Will make an array with elements based on the number of each class
--For example PlayerClasses[1] would equal the number of Warriors (see ClassOrder)
function Sancho_ClassBreakdown()
for i=1, NumOfPlayers do
for j=1, 9 do
if(PlayerClasses[i] == ClassOrder[j]) then
PlayerClassCounts[j] = PlayerClassCounts[j] + 1;
end
end
end
end
function Sancho_ClearData()
NumOfPlayers = 0;
PlayerNames = { "" };
PlayerLevels = { };
SortedPlayerLevels = { };
PlayerClasses = { };
SortedPlayerClasses = { };
PlayerRaces = { };
SortedPlayerRaces = { };
PlayerClassCounts = {0, 0, 0, 0, 0, 0, 0, 0, 0}
end
function WTReportEnemy()
if(HasCheckedFaction == false) then
SetFaction(UnitFactionGroup("player"));
HasCheckedFaction = true;
end
if (WatchTowerEnabled == true) then
if (UnitFactionGroup("target") == FactionSetTo and UnitPlayerControlled("target") and UnitIsPlayer("target")) then --make sure that the unit is the correct faction
--Gather all the needed information about the target
local tClass, tLevel, tFaction, tRace, tLoc, tPvP;
tName = UnitName("target");
tGuild = GetGuildInfo("target");
if(tGuild == nil) then
tGuild = "Unguilded"
end
tClass = UnitClass("target");
tLevel = UnitLevel("target");
tFaction = UnitFactionGroup("target");
tRace = UnitRace("target");
tLoc = GetMinimapZoneText();
tSubZone = GetSubZoneText();
tMessage = "WatchTower: "
if(WatchTower_ReportName and WatchTower_ReportGuild) then
if(tGuild == "Unguilded") then
tMessage = tMessage .. tName .. " / ";
else
tMessage = tMessage .. tName .. " of the guild " .. tGuild .. " / ";
end
elseif(WatchTower_ReportName and not WatchTower_ReportGuild) then
tMessage = tMessage .. tName .. " / ";
elseif(not WatchTower_ReportName and WatchTower_ReportGuild) then
if(tGuild ~= "Unguilded") then
tMessage = tMessage .. tGuild .. " guild member / ";
end
end
if (UnitIsPVP("target")) then --fix by Jhax
tPvP = "PvP enabled"
else
tPvP = "PvP disabled"
end
if(WatchTower_ReportPvP) then
tMessage = tMessage .. tPvP .. " ";
end
if(WatchTower_ReportFaction) then
tMessage = tMessage .. tFaction .. " ";
end
if(WatchTower_ReportRace) then
tMessage = tMessage .. tRace .. " ";
end
if(WatchTower_ReportClass) then
tMessage = tMessage .. tClass .. " ";
end
if(WatchTower_ReportLevel) then
if(tLevel ~= -1) then
tMessage = tMessage .. "(lvl: " .. tLevel .. ") ";
else
tMessage = tMessage .. "(lvl: " .. UnitLevel("player") + 10 .. "+)";
end
end
if(WatchTower_ReportLocation or WatchTower_ReportCoordinates) then
tMessage = tMessage .. "last seen ";
if(WatchTower_ReportLocation) then
tMessage = tMessage .. "in " .. tLoc .. " ";
end
-- From AlarmSystem, by Torgo, ripped with permission
-- thanks voozoodoo for ripping!
xME, yME = GetPlayerMapPosition("player");
xME = math.floor(xME*100.0);
yME = math.floor(yME*100.0);
if ((xME > 0) or (yME > 0)) then
if(WatchTower_ReportCoordinates) then
tMessage = tMessage .. "at ("..xME..","..yME..") ";
end
end
end
if(GankReport == true) then
tMessage = tMessage .. "WARNING: This player is ganking low level " .. UnitFactionGroup("player") .. " members!";
end
if (UnitFactionGroup("player") == "Horde") then
WT_Language = "Orcish";
else
WT_Language = "Common";
end
if (WatchTower_SendLocal == true) then
tempArray = { GetMapZones(GetCurrentMapContinent()) };
mapZone = tempArray[GetCurrentMapZone()];
-- fix the output channel incase mapzone is nil (inside instances and whatnot) -nathanmx
if (mapZone) then
localDef = GetChannelName("LocalDefense - " .. mapZone);
else
mapZone = GetMinimapZoneText();
localDef = GetChannelName("LocalDefense - " .. mapZone);
end
SendChatMessage(tMessage ,"CHANNEL", WT_Language, localDef);
end
if WatchTower_SendGuild == true then
SendChatMessage(tMessage ,"Guild");
end
if WatchTower_SendParty == true then
SendChatMessage(tMessage ,"Party");
end
if WatchTower_SendRaid == true then
SendChatMessage(tMessage ,"Raid");
end
WatchTowerDebugChatMsg(tMessage, 1, 1, 1);
else
WatchTowerStatusChatMsg("You can only track player-controlled units of the "..FactionSetTo.." faction.");
end
end
end
function ToggleWatchTower()
if (WatchTowerEnabled == true) then
WatchTowerStatusChatMsg("WatchTower Disabled.");
else
WatchTowerStatusChatMsg("WatchTower Enabled.");
end
WatchTowerEnabled = not WatchTowerEnabled;
end
function WTStatusSlashHandler(msg)
if (msg == nil) then
msg = "";
end
msg = string.lower(msg);
local num, offset, command, args = string.find (msg, "(%w+) (%w+)");
if (msg == "verbose") then
ToggleVerboseMode();
elseif (msg == "debug") then
ToggleDebugMode();
elseif (msg == "options") then
ShowUIPanel(WT_FrameTemplate);
else
WatchTowerStatusChatMsg("/wt options - options menu for channel output and info to report");
WatchTowerStatusChatMsg("/wt verbose - toggles verbose mode");
WatchTowerStatusChatMsg("/wt debug - toggles debug mode");
end
end
function WatchTowerStatusChatMsg(msg)
if( DEFAULT_CHAT_FRAME ) then
DEFAULT_CHAT_FRAME:AddMessage(msg);
end
end
function WatchTowerVerboseChatMsg(msg)
if( DEFAULT_CHAT_FRAME ) then
if(WatchTower_Verbose) then
DEFAULT_CHAT_FRAME:AddMessage(msg);
end
end
end
function WatchTowerDebugChatMsg(msg, red, green, blue)
if( DEFAULT_CHAT_FRAME ) then
if(WatchTower_Debug) then
DEFAULT_CHAT_FRAME:AddMessage(msg, red, green, blue);
end
end
end
function ToggleVerboseMode()
if (WatchTower_Verbose == true) then
WatchTowerStatusChatMsg("Verbose Mode Disabled.");
else
WatchTowerStatusChatMsg("Verbose Mode Enabled.");
end
WatchTower_Verbose = not WatchTower_Verbose;
end
function ToggleDebugMode()
if (WatchTower_Debug == true) then
WatchTowerStatusChatMsg("Debug Mode Disabled.");
else
WatchTowerStatusChatMsg("Debug Mode Enabled.");
end
WatchTower_Debug = not WatchTower_Debug;
end
function WTGankReport()
GankReport = true;
WTReportEnemy();
GankReport = false;
end
function ToggleFaction() -- for debugging
ReportOwnFaction = not ReportOwnFaction;
SetFaction();
end
function SetFaction()
local faction;
-- Determine the Players Faction upon login and automatically set
-- them to the correct enemy type.
--if (faction==nil) then
faction= UnitFactionGroup("player");
--end
if(ReportOwnFaction) then -- for debugging
FactionSetTo = faction;
WatchTowerStatusChatMsg("Enemy set to " .. faction);
elseif (faction == "Horde") then
FactionSetTo = "Alliance";
WatchTowerStatusChatMsg("Enemy set to Alliance");
else
FactionSetTo = "Horde";
WatchTowerStatusChatMsg("Enemy set to Horde");
end
end
function WT_SetCheckBox()
--Make the GUI show if Options are selected or not
--dependant upon the variables.
if WatchTower_SendLocal == true then
WT_Checkbox3:SetChecked(1);
WatchTowerDebugChatMsg("Local True", 0, 0, 1);
else
WT_Checkbox3:SetChecked(0);
WatchTowerDebugChatMsg("Local False", 1, 0, 0);
end
if WatchTower_SendGuild == true then
WT_Checkbox2:SetChecked(1);
WatchTowerDebugChatMsg("Guild True", 0, 0, 1);
else
WT_Checkbox2:SetChecked(0);
WatchTowerDebugChatMsg("Guild False", 1, 0, 0);
end
if WatchTower_SendRaid == true then
WT_Checkbox1:SetChecked(1);
WatchTowerDebugChatMsg("Raid True", 0, 0, 1);
else
WT_Checkbox1:SetChecked(0);
WatchTowerDebugChatMsg("Raid False", 1, 0, 0);
end
if WatchTower_SendParty == true then
WT_Checkbox0:SetChecked(1);
WatchTowerDebugChatMsg("Party True", 0, 0, 1);
else
WT_Checkbox0:SetChecked(0);
WatchTowerDebugChatMsg("Party False", 1, 0, 0);
end
if WatchTower_ReportPvP == true then
WT_Checkbox10:SetChecked(1);
else
WT_Checkbox10:SetChecked(0);
end
if WatchTower_ReportFaction == true then
WT_Checkbox11:SetChecked(1);
else
WT_Checkbox11:SetChecked(0);
end
if WatchTower_ReportGuild == true then
WT_Checkbox12:SetChecked(1);
else
WT_Checkbox12:SetChecked(0);
end
if WatchTower_ReportName == true then
WT_Checkbox13:SetChecked(1);
else
WT_Checkbox13:SetChecked(0);
end
if WatchTower_ReportRace == true then
WT_Checkbox14:SetChecked(1);
else
WT_Checkbox14:SetChecked(0);
end
if WatchTower_ReportClass == true then
WT_Checkbox15:SetChecked(1);
else
WT_Checkbox15:SetChecked(0);
end
if WatchTower_ReportLevel == true then
WT_Checkbox16:SetChecked(1);
else
WT_Checkbox16:SetChecked(0);
end
if WatchTower_ReportLocation == true then
WT_Checkbox17:SetChecked(1);
else
WT_Checkbox17:SetChecked(0);
end
if WatchTower_ReportCoordinates == true then
WT_Checkbox18:SetChecked(1);
else
WT_Checkbox18:SetChecked(0);
end
--WT_Editbox0:SetText(WatchTower_CustomChannel);
end