changeset 142:375059a11c1d 2.21.0

Updates for WoD. - Basic WoD changes (TOC bump, LE_* constants, etc) - The instance_abbrev table is now indexed by InstanceMapID values; the old method is still supported for transition. - Some initial placeholder values for WoD until we actually start seeing them.
author Farmbuyer of US-Kilrogg <farmbuyer@gmail.com>
date Thu, 13 Nov 2014 22:12:33 -0500
parents 13d81d7faa0a
children ce9fccd93428
files Ouro_Loot.toc abbreviations.lua core.lua gui.lua text_tabs.lua verbage.lua
diffstat 6 files changed, 221 insertions(+), 194 deletions(-) [+]
line wrap: on
line diff
--- a/Ouro_Loot.toc	Wed Mar 20 20:49:11 2013 -0400
+++ b/Ouro_Loot.toc	Thu Nov 13 22:12:33 2014 -0500
@@ -1,4 +1,4 @@
-## Interface: 50200
+## Interface: 60000
 ## Title: Ouro Loot
 ## Version: @project-version@
 ## Notes: Raid loot tracking and text generation
--- a/abbreviations.lua	Wed Mar 20 20:49:11 2013 -0400
+++ b/abbreviations.lua	Thu Nov 13 22:12:33 2014 -0500
@@ -3,7 +3,7 @@
 write a small addon like this.  Lines with * are crucial and should not be
 changed from how they're shown here.
 
-        Interface/AddOns/YourMod/YourMod.toc:
+      Interface/AddOns/YourMod/YourMod.toc:
         =================================
         ## Interface: xxxxx
         ## Title: Ouro Loot For My Guild
@@ -16,7 +16,7 @@
 
 Then replace specific entries like this:
 
-        Interface/AddOns/YourMod/main.lua:
+      Interface/AddOns/YourMod/main.lua:
         =================================
       * local ouroloot = LibStub("AceAddon-3.0"):GetAddon("Ouro Loot")
     
@@ -29,38 +29,52 @@
         ouroloot:Print [[Tweaked stuff for mah guildies!]]
         =================================
 
-This lets you update Ouro Loot with a new version (overwriting this file)
-without losing any of your changes.
+This lets you update Ouro Loot with a new version (which would overwrite
+this file) without losing any of your changes.
 ]==]
 
 local addon = select(2,...)
 if addon.NOLOAD then return end
 
--- Currently indexed by GetInstanceInfo() values.
+--[==[
+The index is the universal InstanceMapID value, which can be looked up here:
+   http://wowpedia.org/InstanceMapID
+You can also use the official English localized name, which was the only
+available method in the past.  Note that these names are case-sensistive.
+]==]
 addon.instance_abbrev = {
+	-------- WoD
+	--[] = "", -- Highmaul
+	--[] = "BRF", -- Blackrock Foundry
+
 	-------- MoP
-	["Mogu'shan Vaults"] = "MV",
-	["Heart of Fear"] = "HoF",
-	["Terrace of Endless Spring"] = "ToES",
+	[1008] = "MV", -- Mogu'shan Vaults
+	[1009] = "HoF", -- Heart of Fear
+	[996] = "ToES", -- Terrace of Endless Spring
+	[1098] = "ToT", -- Throne of Thunder
+	[1136] = "SoO", -- Siege of Orgrimmar
 
 	-------- Cata
-	["Baradin Hold"] = "BH",
-	["The Bastion of Twilight"] = "BoT",
-	["Blackwing Descent"] = "BWD",
-	["Throne of the Four Winds"] = "To4W",
-	--["Firelands"] = "Firelands",
+	[757] = "BH", -- Baradin Hold
+	[671] = "BoT", -- The Bastion of Twilight
+	[669] = "BWD", -- Blackwing Descent
+	[754] = "To4W", -- Throne of the Four Winds
+	-- surely these names are short enough already...?
+	--[720] = "F", -- Firelands
+	--[967] = "DS", -- Dragon Soul
 
 	-------- WotLK
-	["Icecrown Citadel"] = "ICC",
-	["Trial of the Champion"] = "ToC",
-	["Trial of the Crusader"] = "ToC",
-	["Trial of the Grand Crusader"] = "ToGC",  -- does not actually trigger, need to test heroic
-	["Vault of Archavon"] = "VoA",
+	[631] = "ICC", -- Icecrown Citadel
+	[650] = "ToC", -- Trial of the Champion (dungeon)
+	[649] = "ToC", -- Trial of the Crusader (raid)
+	[624] = "VoA", -- Vault of Archavon
 }
 
 -- Currently indexed by "boss name" values, as generated by whatever boss mod
 -- is in use; see specific boss mod handling code to see how they get it.
 addon.boss_abbrev = {
+	-------- WoD
+
 	-------- MoP
 	-- MV
 	["Will of the Emperor"] = "Talk to the Open Hand",
--- a/core.lua	Wed Mar 20 20:49:11 2013 -0400
+++ b/core.lua	Thu Nov 13 22:12:33 2014 -0500
@@ -57,7 +57,7 @@
 - id            itemID as number
 - itemlink      full clickable link
 - itexture      icon path (e.g., Interface\Icons\INV_Misc_Rune_01)
-- quality       ITEM_QUALITY_* number
+- quality       [LE_]ITEM_QUALITY_* number
 - unique        an almost-certainly-unique string, content meaningless
 - disposition   offspec/gvault/shard; missing otherwise; can be set from
                 the extratext field
@@ -294,7 +294,7 @@
 	-- heirlooms to show up
 	thresholds		= {}
 	for i = 0,6 do
-		thresholds[i] = _G.ITEM_QUALITY_COLORS[i].hex .. _G["ITEM_QUALITY"..i.."_DESC"] .. "|r"
+		thresholds[i] = _G.ITEM_QUALITY_COLORS[i].hex .. _G['ITEM_QUALITY'..i..'_DESC'] .. '|r'
 	end
 
 	_G.setfenv (1, _G)
@@ -440,7 +440,7 @@
 	--@end-debug@
 
 	-- TEXT will automatically be surrounded by brackets
-	-- COLOR can be ITEM_QUALITY_* or a formatting string ("|cff...")
+	-- COLOR can be LE_ITEM_QUALITY_* or a formatting string ("|cff...")
 	-- FUNC can be "MethodName", "tab_title", or a function
 	--
 	-- Returns an opaque token and a matching number.  Calling tostring() on
@@ -530,9 +530,9 @@
 	function instance_tag()
 		-- Return values of GetInstanceInfo changed considerably, now much
 		-- more useful and consistent.
-		local name, typeof, diffcode, _, raidsize = GetInstanceInfo()
+		local name, typeof, diffcode, _, raidsize, _, _, mapid, currsize = GetInstanceInfo()
 		local t
-		name = addon.instance_abbrev[name] or name
+		name = addon.instance_abbrev[mapid] or addon.instance_abbrev[name] or name
 		if typeof == nil or typeof == "none" or diffcode == 0 or diffcode == nil then
 			-- either outdoors or in a scenario (revisit those maybe)
 			return name, MAX_RAID_MEMBERS
@@ -651,6 +651,7 @@
 end
 ]]
 do
+	local AnimTimerFrame = CreateFrame('Frame',nil,nil) -- FIXME transition hack
 	local caches = {}
 	local cleanup_group = AnimTimerFrame:CreateAnimationGroup()
 	local time, next = time, next
@@ -760,7 +761,7 @@
 	--function self.callbacks:OnUnused (target_aka_self, eventname)  end
 
 	if _G.OuroLootOptsDB == nil then
-		local vclick = self.format_hypertext ([[click here]], ITEM_QUALITY_UNCOMMON, 'help')
+		local vclick = self.format_hypertext ([[click here]], LE_ITEM_QUALITY_UNCOMMON, 'help')
 		self:ScheduleTimer(function(s)
 			for id in pairs(self.default_itemfilter) do
 				opts.itemfilter[id] = true
@@ -879,8 +880,6 @@
 	--
 	-- CFPrint added instead of the usual Print testing of the first arg for
 	-- frame-ness, which would slow down all printing and only rarely be useful.
-	--
-	-- There is no ITEM_QUALITY_LEGENDARY constant.  Sigh.
 	do
 		local AC = LibStub("AceConsole-3.0")
 		function addon.chatprefix (code, arg)
@@ -889,7 +888,8 @@
 				f = code
 			--elseif .....
 			end
-			local ret, num = self.format_hypertext ("Ouro Loot", --[[legendary]]5, f)
+			local ret, num = self.format_hypertext ("Ouro Loot",
+				LE_ITEM_QUALITY_LEGENDARY, f)
 			if code == "GoToLootLine" then
 				self.lootjumps[num] = arg
 			end
@@ -933,7 +933,7 @@
 	while opts.keybinding do
 		if InCombatLockdown() then
 			local reload = self.format_hypertext ([[the options tab]],
-				ITEM_QUALITY_UNCOMMON, 'opt')
+				LE_ITEM_QUALITY_UNCOMMON, 'opt')
 			self:Print("Cannot create '%s' as a keybinding while in combat!",
 				opts.keybinding_text)
 			self:Print("The rest of the addon will continue to work, but you will need to reload out of combat to get the keybinding.  Either type /reload or use the button on %s in the lower right.",
@@ -1197,7 +1197,7 @@
 
 'Activate', enabled_p, rebroadcast_p, threshold
     The two boolean predicates are self-explanatory.  The threshold is an
-    ITEM_QUALITY_* constant integer.
+    LE_ITEM_QUALITY_* constant integer.
 
 'Deactivate', raiderdata
     After all system events have been unregistered.  Argument is a holder of
@@ -1625,7 +1625,7 @@
 		if (not iname) or (not itexture) then
 			cache_miss = true
 			iname, ilink, iquality, itexture = 
-				UNKNOWN..': '..itemid, 'item:6948', ITEM_QUALITY_COMMON, [[Interface\ICONS\INV_Misc_QuestionMark]]
+				UNKNOWN..': '..itemid, 'item:6948', LE_ITEM_QUALITY_COMMON, [[Interface\ICONS\INV_Misc_QuestionMark]]
 		end
 		self.dprint('loot',">>"..prefix, "R:", recipient, "U:", unique, "I:",
 			itemid, "C:", count, "frm:", from, "ex:", extratext, "q:", iquality)
@@ -1834,7 +1834,7 @@
 -- that GUI is in place.)
 do
 	local green_help_link = addon.format_hypertext ([[Click here]],
-		ITEM_QUALITY_UNCOMMON, 'help')
+		LE_ITEM_QUALITY_UNCOMMON, 'help')
 	function addon:OnSlash (txt) --, editbox)
 		txt = strtrim(txt:lower())
 		local cmd, arg = ""
@@ -2197,7 +2197,7 @@
 	else
 		self.dprint('comm', "ours is older, (possibly) yammering")
 		if newer_warning then
-			local pop = addon.format_hypertext ([[click here]], ITEM_QUALITY_UNCOMMON,
+			local pop = addon.format_hypertext ([[click here]], LE_ITEM_QUALITY_UNCOMMON,
 				function()
 					-- Sadly, this is not generated by the packager, so hardcode it
 					-- for now.  The 'data' field is handled differently for onshow
@@ -2206,7 +2206,7 @@
 						--[[text_arg1=]]nil, --[[text_arg2=]]nil,
 						--[[data=]][[http://www.curse.com/addons/wow/ouroloot]])
 				end)
-			local ping = addon.format_hypertext ([[click here]], ITEM_QUALITY_UNCOMMON, 'DoPing')
+			local ping = addon.format_hypertext ([[click here]], LE_ITEM_QUALITY_UNCOMMON, 'DoPing')
 			self:Print(newer_warning, tostring(pop), tostring(ping))
 			newer_warning = nil
 		end
--- a/gui.lua	Wed Mar 20 20:49:11 2013 -0400
+++ b/gui.lua	Thu Nov 13 22:12:33 2014 -0500
@@ -523,7 +523,7 @@
 						ITEM_QUALITY_COLORS[iquality].hex, iname, player.count[unique] or "")
 				else
 					textured = eoi_st_textured_item_format:format ([[Interface\ICONS\INV_Misc_QuestionMark]],
-						ITEM_QUALITY_COLORS[ITEM_QUALITY_COMMON].hex, 'UNKNOWN - REDISPLAY LATER', "")
+						ITEM_QUALITY_COLORS[LE_ITEM_QUALITY_COMMON].hex, 'UNKNOWN - REDISPLAY LATER', "")
 					cache_okay = false
 				end
 				col2.value = textured
@@ -2455,8 +2455,8 @@
 }
 
 StaticPopupDialogs["OUROL_HIST_REGEN"] = flib.StaticPopup{
-	-- Concatenate this once at load time.  There is no ITEM_QUALITY_LEGENDARY constant.
-	text = "Erase all history entries from " .. ITEM_QUALITY_COLORS[5].hex
+	-- Concatenate this once at load time.
+	text = "Erase all history entries from " .. ITEM_QUALITY_COLORS[LE_ITEM_QUALITY_LEGENDARY].hex
 		.. "%s|r, and generate it anew from current loot?|n|nNote this obeys the current setting of the 'Suppress history for cross-realm players' option.",
 	button1 = YES,
 	button2 = NO,
@@ -2468,8 +2468,8 @@
 }
 
 StaticPopupDialogs["OUROL_HIST_CLEAR"] = flib.StaticPopup{
-	-- Concatenate this once at load time.  There is no ITEM_QUALITY_LEGENDARY constant.
-	text = "Erase all history entries from " .. ITEM_QUALITY_COLORS[5].hex .. "%s|r?",
+	-- Concatenate this once at load time.
+	text = "Erase all history entries from " .. ITEM_QUALITY_COLORS[LE_ITEM_QUALITY_LEGENDARY].hex .. "%s|r?",
 	button1 = YES,
 	button2 = NO,
 	OnAccept = function (dialog, addon, data2)
@@ -2480,11 +2480,12 @@
 }
 
 StaticPopupDialogs["OUROL_HIST_PREEN"] = flib.StaticPopup{
-	-- Concatenate this once at load time.  There is no ITEM_QUALITY_LEGENDARY constant.
+	-- Concatenate this once at load time.
 	text = "This will erase all but the latest "
-		.. ITEM_QUALITY_COLORS[ITEM_QUALITY_UNCOMMON].hex
+		.. ITEM_QUALITY_COLORS[LE_ITEM_QUALITY_UNCOMMON].hex
 		.. "%s|r for each player on "
-		.. ITEM_QUALITY_COLORS[5].hex .. "%s|r.  " .. CONTINUE .. "?",
+		.. ITEM_QUALITY_COLORS[LE_ITEM_QUALITY_LEGENDARY].hex
+		.. "%s|r.  " .. CONTINUE .. "?",
 	button1 = YES,
 	button2 = NO,
 	OnShow = function (dialog, addon)
@@ -2753,8 +2754,8 @@
 	end)
 
 	t = flib.StaticPopup{
-	-- Concatenate this once at load time.  There is no ITEM_QUALITY_LEGENDARY constant.
-		text = "Include a snapshot of the " .. ITEM_QUALITY_COLORS[5].hex
+	-- Concatenate this once at load time.
+		text = "Include a snapshot of the " .. ITEM_QUALITY_COLORS[LE_ITEM_QUALITY_LEGENDARY].hex
 			.. "CURRENT|r raid?|n|nClicking '" .. YES .. "' will allow this entry to "
 			.. "appear in attendance lists, but with the roster as it is NOW, not as it "
 			.. "was THEN.  Clicking '" .. NO .."' means this kill cannot be included in "
--- a/text_tabs.lua	Wed Mar 20 20:49:11 2013 -0400
+++ b/text_tabs.lua	Thu Nov 13 22:12:33 2014 -0500
@@ -46,7 +46,7 @@
 local warning_text
 do
 	local red = '|cffff0505'
-	local green = ITEM_QUALITY_COLORS[ITEM_QUALITY_UNCOMMON].hex
+	local green = ITEM_QUALITY_COLORS[LE_ITEM_QUALITY_UNCOMMON].hex
 	warning_text = ([[%sWARNING:|r  Heroic (and Raid Finder) items sharing the same name as normal items often display incorrectly on forums that use the item name as the identifier.  Recommend you change the %sItem markup|r dropdown in the right-hand side to %s"[item] by ID"|r (or some other format that uses $I) and regenerate this loot.]]):format(red, green, green)
 end
 
--- a/verbage.lua	Wed Mar 20 20:49:11 2013 -0400
+++ b/verbage.lua	Thu Nov 13 22:12:33 2014 -0500
@@ -132,31 +132,34 @@
 
 or send them to <farmbuyer@gmail.com> in non-HTML format.
 
-If you have downloaded this addon from anywhere other than Curse or WoWInterface,
-then it is probably outdated at best or stuffed full of |cffff335dmalware and
-viruses|r at worst.  Get your addons from reputable safe sites!
+If you have downloaded this addon from anywhere other than Curse or
+WoWInterface, then it is probably outdated at best or stuffed full
+of |cffff335dmalware and viruses|r at worst.  Get your addons from reputable
+safe sites!
 ]]
 
 T.basic = [[
 The </ouroloot> command opens this display.  The buttons
-on the right side control operation and are mostly self-explanatory.  Hovering over
-things will usually display some additional text in the gray line at the bottom.
+on the right side control operation and are mostly self-explanatory.  Hovering
+over things will usually display some additional text in the gray line at the
+bottom.
 
-Each tab on the left side can additionally create extra contols in the lower right
-section (with the same name as the tab).
+Each tab on the left side can additionally create extra contols in the lower
+right section (with the same name as the tab).
 
 The first tab on the left side, <Loot>, is where everything goes to and comes
-from.  Looting events and Deadly Boss Mods notifications go to the <Loot> tab; the
-other tabs are all generated from the information in the <Loot> tab.
+from.  Looting events and Deadly Boss Mods notifications go to the <Loot> tab;
+the other tabs are all generated from the information in the <Loot> tab.
 
-|cffff335dNote about these Help pages:|r  The category "titles" on the left side
-have their own help text, in addition to the more specific entries in the expanded
-list.  Read those first before expanding the categories or you'll miss stuff.
+|cffff335dNote about these Help pages:|r  The category "titles" on the left
+side have their own help text, in addition to the more specific entries in the
+expanded list.  Read those first before expanding the categories or you'll
+miss stuff.
 ]]
 
 T.basic_loot = [[
-A "loot row" in the first tab has three columns:  the item, the recipient, and any
-extra notes.
+A "loot row" in the first tab has three columns:  the item, the recipient, and
+any extra notes.
 
 <Mouse Hover>
 
@@ -164,8 +167,8 @@
 
 Hovering over the second column will display a tooltip with the loot that person
 has received.  If they've won more than 10 items, the list is cut off with '...'
-at the end; to see the full list, use the right-click +Show only this player> option
-instead.
+at the end; to see the full list, use the right-click +Show only this player>
+option instead.
 
 <Right-Click>
 
@@ -177,15 +180,16 @@
 text in the generated tabs, such as forum markup.
 
 Right-clicking in the second column allows you to temporarily remove all other
-players from the loot display.  Use the reset button in the lower-right corner to
-restore the display to normal.  The menu also allows you to +reassign> loot from
-one player to another; if the new recipient is not in the raid group at the time,
-use the +Enter name...> option at the bottom of the list of names to type the
-name into a text box.  If your raid takes advantage of the ability to trade
-soulbound items, you will need to reassign the item here for the generated text
-to be factually correct.
+players from the loot display.  Use the reset button in the lower-right corner
+to restore the display to normal.  The menu also allows you to +reassign> loot
+from one player to another; if the new recipient is not in the raid group at
+the time, use the +Enter name...> option at the bottom of the list of names to
+type the name into a text box.  If your raid takes advantage of the ability to
+trade soulbound items, you will need to reassign the item here for the
+generated text to be factually correct.
 
-See the help screen on "Boss Entries" for the +Insert new boss kill event> option.
+See the help screen on "Boss Entries" for the +Insert new boss kill event>
+option.
 
 <Double-Click>
 
@@ -195,26 +199,28 @@
 ]]
 
 T.basic_boss = [[
-Boss wipe/kill entries are entirely dependant on Deadly Boss Mods being enabled and
-up-to-date.  The typical sequence of events for our usual raids goes like this:
+Boss wipe/kill entries are entirely dependant on Deadly Boss Mods being enabled
+and up-to-date.  The typical sequence of events for our usual raids goes like
+this:
 
-We make four or five attempts on Baron Steamroller.  As DBM registers that combat
-ends, a <wipe> event is entered on the loot display along with the duration of the
-fight.  If the loot display is opened, the wipes will be visible with a light gray
-background.
+We make four or five attempts on Baron Steamroller.  As DBM registers that
+combat ends, a <wipe> event is entered on the loot display along with the
+duration of the fight.  If the loot display is opened, the wipes will be
+visible with a light gray background.
 
 After reminding the melee dps to move out of fire, we manage to kill
-Steamroller.  When DBM registers the win, a <kill> event is entered on the display
-with a dark gray background.
-All previous <wipe>s are removed and collapsed into the <kill> event.  The final
-<kill> event shows the duration of the successful fight and the number of attempts
-needed (or "one-shot" if we're competent).
+Steamroller.  When DBM registers the win, a <kill> event is entered on the
+display with a dark gray background.  All previous <wipe>s are removed and
+collapsed into the <kill> event.  The final <kill> event shows the duration
+of the successful fight and the number of attempts needed (or "one-shot" if
+we're competent).
 
-Sometimes this goes wrong, when DBM misses its own triggers.  If DBM does not catch
-the start of the boss fight, it can't register the end, so nothing at all is
-recorded.  If the fight was a win but DBM does not catch the victory conditions,
-then DBM will (after several seconds) decide that it was a wipe instead.  And
-sometimes useful loot will drop from trash mobs, which DBM knows nothing about.
+Sometimes this goes wrong, when DBM misses its own triggers.  If DBM does not
+catch the start of the boss fight, it can't register the end, so nothing at
+all is recorded.  If the fight was a win but DBM does not catch the victory
+conditions, then DBM will (after several seconds) decide that it was a wipe
+instead.  And sometimes useful loot will drop from trash mobs, which DBM knows
+nothing about.
 
 For all those reasons, right-clicking on a "boss row" will display options for
 +Insert new boss kill event>, and for toggling a <wipe> into a <kill>.  We often
@@ -225,27 +231,26 @@
 T.tracking = [[
 The first button underneath +Main> in the right-hand column displays the current
 status of the addon.  If it is disabled, then no recording, rebroadcasting, or
-listening for rebroadcasts is performed.  Any loot already recorded will be restored
-across login sessions no matter the status.
+listening for rebroadcasts is performed.  Any loot already recorded will be
+restored across login sessions no matter the status.
 
 You can turn on tracking/broadcasting before joining a raid.  If you join a raid
 and the addon has not been turned on, then a popup dialog will ask for
 instructions.  (This can be turned off in the advanced <Options>.)
 
-The addon tries to be smart about logging on during a raid (due to a disconnect or
-relog).  If you log in, are already in a raid group, and loot has already been
-stored from tracking, it will re-enable itself automatically.
+The addon tries to be smart about logging on during a raid (due to a disconnect
+or relog).  If you log in, are already in a raid group, and loot has already
+been stored from tracking, it will re-enable itself automatically.
 
-The intent of the addon design is that, after the end of a raid, all the generated
-markup text is done, optionally saved (see "Generated Texts - Saved Texts"), and
-then cleared from
-storage altogether.  As a result, if you login with restored loot information but
-are not in a raid, the addon will do nothing on its own -- but will assume that
-you've forgotten to finish those steps and will yammer about it in the chat window
-as a reminder.
+The intent of the addon design is that, after the end of a raid, all the
+generated markup text is done, optionally saved (see "Generated Texts - Saved Texts"),
+and then cleared from storage altogether.  As a result, if you login with
+restored loot information but are not in a raid, the addon will do nothing on
+its own -- but will assume that you've forgotten to finish those steps and will
+yammer about it in the chat window as a reminder.
 
-The +Threshold> drop-down has no connection at all with any current loot threshold
-set by you or a master looter.
+The +Threshold> drop-down has no connection at all with any current loot
+threshold set by you or a master looter.
 ]]
 
 T.tracking_enabled = [[
@@ -258,8 +263,9 @@
 These are things like shards from disenchanting and Darkmoon Faire quest items.
 
 3)  <You can see the loot event.>  More precisely, you need to be close enough
-to the recipient of the loot to be able to see "So-And-So receives loot: [Stuff]"
-in your chat window, even if you have those actual loot messages turned off.
+to the recipient of the loot to be able to see "So-And-So receives loot:
+[Stuff]" in your chat window, even if you have those actual loot messages
+turned off.
 
 It is (3) that causes complications.  A master looter can assign loot to anybody
 anywhere in a raid instance, but the range on detecting loot events is much
@@ -268,11 +274,10 @@
 over to get their phat epix.
 
 If you do use master looter, then you have two options:  first, you can
-require players
-who might get loot to stay near the boss.  You would then also need to stay near
-the boss to detect the loot event.  (This can be less hassle if you are also
-the loot master.)  The downside is that other players moving on to fight to the
-next boss are doing so without the help of their teammates.
+require players who might get loot to stay near the boss.  You would then also
+need to stay near the boss to detect the loot event.  (This can be less hassle
+if you are also the loot master.)  The downside is that other players moving
+on to fight to the next boss are doing so without the help of their teammates.
 
 The other option is to ask other players to also install Ouro Loot, and for
 them to turn on the "Rebroadcasting" feature.  Any loot events which they can
@@ -280,17 +285,18 @@
 one person to be close enough to the loot recipient to see the item awarded,
 and you will record it no matter how far away you are -- even back in Orgrimmar.
 
-If you have Full Tracking enabled, then you are also automatically rebroadcasting.
-Having more than one player with Full Tracking turned on is probably a good
-idea, in case one of the trackers experiences a game crash or is suddenly kidnapped
-by robot ninja monkeys.
+If you have Full Tracking enabled, then you are also automatically
+rebroadcasting.  Having more than one player with Full Tracking turned on is
+probably a good idea, in case one of the trackers experiences a game crash or
+is suddenly kidnapped by robot ninja monkeys.
 ]]
 
 T.tracking_bcast = [[
-The simplest method of operation is only rebroadcasting the loot events that you
-see, as you see them.  Nothing is recorded in your local copy of the addon.
+The simplest method of operation is only rebroadcasting the loot events that
+you see, as you see them.  Nothing is recorded in your local copy of the addon.
 
-If you logout for any reason, the addon will not reactivate when you log back in.
+If you logout for any reason, the addon will not reactivate when you log back
+in.
 
 You can use </ouroloot bcast> or </ouroloot broadcast> to turn on rebroadcasting
 without opening the GUI.
@@ -298,20 +304,18 @@
 
 T.texts = [[
 The middle tabs are simply large editable text boxes.  Their text is initially
-generated from
-the information stored on the main <Loot> tab, at the time you click on the tab.
-Not every bit of information that
-we want in the generated text is always available, or depends on things that the
-game itself can't know.  So you can edit the text in the tabs and your edits will
-be preserved.
+generated from the information stored on the main <Loot> tab, at the time you
+click on the tab.  Not every bit of information that we want in the generated
+text is always available, or depends on things that the game itself can't know.
+So you can edit the text in the tabs and your edits will be preserved.
 
 Each time you click one of the text tabs, every new entry on the <Loot> tab
 since the last time this tab was shown will be turned into text.
 
-Clicking the +Regenerate> button will throw away all the text on that tab, including
-any edits you've made, and recreate all of it from scratch.  If you've accidentally
-deleted the text from the editbox, or you've made manual changes to the <Loot> tab,
-you can use this button to start over.
+Clicking the +Regenerate> button will throw away all the text on that tab,
+including any edits you've made, and recreate all of it from scratch.  If
+you've accidentally deleted the text from the editbox, or you've made manual
+changes to the <Loot> tab, you can use this button to start over.
 
 You can click in an editbox and use Control-A to select all text, then Control-C
 to copy it to the system clipboard for subsequent pasting into a web browser or
@@ -329,7 +333,8 @@
 variant is good for heroic raid items that share names with nonheroic items,
 but the raw output is harder to read in the text tab.
 
-You can also specify a custom string.  Formatting is done with these replacements:
+You can also specify a custom string.  Formatting is done with these
+replacements:
 
 +$N>:  item name|r
 
@@ -352,11 +357,11 @@
 ]]
 
 T.texts_other = [[
-So far the only other generated text is the <Attendance> tab, an alphabetized list
-on a per-boss basis.  Players who are probably inside the raid are grouped
-under [:PLUS:], and the remaining players are under [-].  "Probably inside" is an
-assumption that groups 1 and 2 are raiding in a 10-player instance, groups 1-5
-are raiding in a 25-player instance, and so forth.
+So far the only other generated text is the <Attendance> tab, an alphabetized
+list on a per-boss basis.  Players who are probably inside the raid are grouped
+under [:PLUS:], and the remaining players are under [-].  "Probably inside" is
+an assumption that groups 1 and 2 are raiding in a 10-player instance,
+groups 1-5 are raiding in a 25-player instance, and so forth.
 
 Other addons can register their own text tabs and corresponding generation
 functions.  If you want to be able to feed text into an offline program (for
@@ -366,50 +371,52 @@
 ]]
 
 T.texts_saved = [[
-The contents of the <Forum Markup>, <Attendance>, and other such tabs can be saved,
-so that they will not be lost when you use the +Clear> button.
+The contents of the <Forum Markup>, <Attendance>, and other such tabs can be
+saved, so that they will not be lost when you use the +Clear> button.
 
 Do any edits you want to the generated text tabs, then click the +Save Current As...>
-button on the right-hand side.  Enter a short descriptive reminder (for example,
-"thursday hardmodes") in the popup dialog.  The texts will remain in their tabs,
-but clearing loot information will not lose them now.
+button on the right-hand side.  Enter a short descriptive reminder (for
+example, "thursday hardmodes") in the popup dialog.  The texts will remain in
+their tabs, but clearing loot information will not lose them now.
 
 All saved texts are listed on the right-hand side.  Clicking a saved text name
-lets you +Load> or +Delete> that saved set.  The primary <Loot> tab is not saved
-and restored by this process, only the generated texts.  This also means you cannot
-+Regenerate> the texts.
+lets you +Load> or +Delete> that saved set.  The primary <Loot> tab is not
+saved and restored by this process, only the generated texts.  This also means
+you cannot +Regenerate> the texts.
 ]]
 
 T.history = [[
 The <History> tab maintains a list of all loot.  It is intended to help answer
-questions such as "When was the last time PlayerX won something?" and "How much stuff
-has PlayerY gotten lately?"  The history tab is, by design, not as configurable
-as the main <Loot> tab; entries cannot be manually edited and so forth.
+questions such as "When was the last time PlayerX won something?" and "How
+much stuff has PlayerY gotten lately?"  The history tab is, by design, not as
+configurable as the main <Loot> tab; entries cannot be manually edited and so
+forth.
 
-This loot history is the only "live" data tab which persists across the +Clear Loot> command.
-For this reason, very little information is stored:  only the recipient, the item,
-and a textual timestamp.  Boss names, offspecs, and other notes are not preserved.
+This loot history is the only "live" data tab which persists across the
++Clear Loot> command.  For this reason, very little information is stored: 
+only the recipient, the item, and a textual timestamp.  Boss names, offspecs,
+and other notes are not preserved.
 
-The default history window shows the most recent item received by each person.  It
-is sorted with the most recent loot at the top, towards older loot at the bottom.
-You can click the column headers to rearrange the rows, but doing so repeatedly can
-lead to odd display issues.
+The default history window shows the most recent item received by each person.
+It is sorted with the most recent loot at the top, towards older loot at the
+bottom.  You can click the column headers to rearrange the rows, but doing so
+repeatedly can lead to odd display issues.
 
-Left-clicking a row will change the window to display all recorded loot for that
-player.  While on that display, right-clicking any row will return to showing the
-most recent single item for all players.
+Left-clicking a row will change the window to display all recorded loot for
+that player.  While on that display, right-clicking any row will return to
+showing the most recent single item for all players.
 
-Histories are maintained per-realm.  This refers to the realm you are on when the
-loot drops, not the realm of the player receiving it (in the case of cross-realm
-groups).  If you play multiple characters on the same realm, history will accumulate
-across all your raids.  To change the displayed realm, use the dropdown menu in
-the lower right corner.
+Histories are maintained per-realm.  This refers to the realm you are on when
+the loot drops, not the realm of the player receiving it (in the case of
+cross-realm groups).  If you play multiple characters on the same realm,
+history will accumulate across all your raids.  To change the displayed realm,
+use the dropdown menu in the lower right corner.
 
-The +Regenerate> button permanently erases the history of the displayed realm, and
-creates fresh entries using whatever loot information is currently on the <Loot> tab.
-Be aware that the <Loot> tab does not track realms, so if you have gathered data
-for players on realm A, but are displaying realm B when you click the Regenerate button,
-then your history for realm B will be... very odd.
+The +Regenerate> button permanently erases the history of the displayed realm,
+and creates fresh entries using whatever loot information is currently on the
+<Loot> tab.  Be aware that the <Loot> tab does not track realms, so if you have
+gathered data for players on realm A, but are displaying realm B when you click
+the Regenerate button, then your history for realm B will be... very odd.
 
 +Clear Realm History> and +Clear ALL History> are used to periodically wipe the
 slate clean.  They do not generate any new entries from existing loot.
@@ -426,11 +433,12 @@
 replace the item back into the player's history.
 
 Note:  the first time you display the histories during a game session, you will
-likely see several items listed as +UNKNOWN>.  This is not a bug; these items are
-simply not in your local game cache.  WoW will automatically retrieve the missing
-data after several seconds, but the display will not update until the next time
-the History tab is shown.  Starting in WoW 4.0, the local game cache is not preserved
-across play sessions, so the +UNKNOWN> entries will pop up from time to time.
+likely see several items listed as +UNKNOWN>.  This is not a bug; these items
+are simply not in your local game cache.  WoW will automatically retrieve the
+missing data after several seconds, but the display will not update until the
+next time the History tab is shown.  Starting in WoW 4.0, the local game cache
+is not preserved across play sessions, so the +UNKNOWN> entries will pop up
+from time to time.
 ]]
 
 T.tips = [[
@@ -441,19 +449,19 @@
 The "Be chatty" options on the <Options> tab will cause a chat message to be
 printed after various events, thus providing a way to quickly view them.
 
-If you are broadcasting to somebody else who is tracking, you should probably be
-using the same threshold.  If yours is lower, then some of the loot you broadcast
-to him will be ignored.  If yours is higher, then you will not be sending information
-that he would have recorded.  The "correct" setting depends on what your guild wants
-to track.
+If you are broadcasting to somebody else who is tracking, you should probably
+be using the same threshold.  If yours is lower, then some of the loot you
+broadcast to him will be ignored.  If yours is higher, then you will not be
+sending information that he would have recorded.  The "correct" setting depends
+on what your guild wants to track.
 
-Ticking the "notraid" box in advanced debugging <Options>, before enabling tracking,
-will make the tracking work outside of a raid group.  Communication functions
-will behave a little strangely when doing this.  Be sure to check the threshold!
-You can also use <"/ouroloot debug notraid"> instead.
+Ticking the "notraid" box in advanced debugging <Options>, before enabling
+tracking, will make the tracking work outside of a raid group.  Communication
+functions will behave a little strangely when doing this.  Be sure to check
+the threshold!  You can also use <"/ouroloot debug notraid"> instead.
 
-Using the "Saved Texts" feature plus the +Clear> button is a great way of putting
-off pasting loot into your guild's website until a more convenient time.
+Using the "Saved Texts" feature plus the +Clear> button is a great way of
+putting off pasting loot into your guild's website until a more convenient time.
 
 Shift-clicking an item in the <Loot> or <History> display will paste it into an
 open chat editbox.
@@ -464,8 +472,8 @@
 shortcut for </ouroloot>.  The author prefers </ol>, as an example.  The
 default used to be </loot> until that became a builtin command in MoP.
 
-If you give an unrecognized argument to a slash command, it will
-search the tab titles left to right for a title beginning with the same letters as
+If you give an unrecognized argument to a slash command, it will search the
+tab titles left to right for a title beginning with the same letters as
 the argument, and open the display to that tab.  For example, <"/ol a"> would
 open the <Attendance> tab, and <"/ol o"> would open the <Options> tab.  If
 you had added a theoretical <EQDKP> tab, then <"/ol eq"> would be the fastest
@@ -481,8 +489,8 @@
 the raid), and so forth. 
 
 The </ouroloot> command can take arguments to do things without going through
-the UI.  Parts given in *(angle brackets)* are required, parts in [square brackets]
-are optional:
+the UI.  Parts given in *(angle brackets)* are required, parts
+in [square brackets] are optional:
 
 +help>:  opens the UI to the help tab|r
 
@@ -509,9 +517,10 @@
 +fix ?>:  lists the available automated data integrity fixes|r
 
 
-If you use the slash commands to enable tracking or set loot thresholds, you can
-give numbers or common names for the threshold.  For example, "0", "poor", "trash",
-"gray"/"grey" are all the same, "4", "epic", "purple" are the same, and so on.
+If you use the slash commands to enable tracking or set loot thresholds, you
+can give numbers or common names for the threshold.  For example, "0", "poor",
+"trash", "gray"/"grey" are all the same, "4", "epic", "purple" are the same,
+and so on.
 ]]
 
 T.tips_prescan = [[
@@ -543,13 +552,14 @@
 ]]
 
 T.todo = [[
-If you have ideas or complaints or bug reports, first check the Bugs subcategories
-to see if they're already being worked on.  Bug reports are especially helpful
-if you can include a screenshot (in whatever image format you find convenient),
-and a copy of your SavedVariables file.  This is found in your World of Warcraft
-installation folder, named "WTF/Account/you/SavedVariables/Ouro_Loot.lua"
-(where "you" is your account name).  You may need to compress this file
-before the ticket system will accept it.
+If you have ideas or complaints or bug reports, first check the Bugs
+subcategories to see if they're already being worked on.  Bug reports are
+especially helpful if you can include a screenshot (in whatever image format
+you find convenient), and a copy of your SavedVariables file.  This is found
+in your World of Warcraft installation folder, named
+"WTF/Account/you/SavedVariables/Ouro_Loot.lua" (where "you" is your account
+name).  You may need to compress this file before the ticket system will
+accept it.
 
 Click the "About" line on the left for contact information.
 ]]
@@ -564,11 +574,12 @@
 
 If you relog (or get disconnected) while in a raid group, behavior when you log
 back in can be surprising.  If you have already recorded loot (and therefore
-the loot list is restored), then OL assumes it's from the current raid and should
-reactivate automatically in full tracking mode.  If you were tracking but no
-loot had dropped yet (and therefore there was nothing *to* restore), then OL
-will pop up its reminder and ask again.  Either way, if you were only broadcasting
-then OL will *not* go back to only broadcasting.  This is probably a bug.
+the loot list is restored), then OL assumes it's from the current raid and
+should reactivate automatically in full tracking mode.  If you were tracking
+but no loot had dropped yet (and therefore there was nothing *to* restore),
+then OL will pop up its reminder and ask again.  Either way, if you were only
+broadcasting then OL will *not* go back to only broadcasting.  This is
+probably a bug.
 
 The saved texts feature does exactly that: only saves the generated texts, not
 the full loot list.  Restoring will get you a blank first tab and whatever you