Mercurial > wow > ouroloot
view verbage.lua @ 156:1e2ee3f52bc8 beta-l10n-2
Stub files to test server-side localization generator. These are NOT LOADED YET.
author | Farmbuyer of US-Kilrogg <farmbuyer@gmail.com> |
---|---|
date | Sat, 21 Feb 2015 17:04:00 -0500 |
parents | 63bda09d88fe |
children |
line wrap: on
line source
local addon = select(2,...) if addon.NOLOAD then return end local todo = [[ - Right-clicking the [ouroloot] chat link could do something different than the current left-clicking. Popup small menu in place? - A fight duration of (0:00) happens when DBM gets confused. If it happens "near" another boss entry with nonzero duration, can we just safely assume that's the real entry and delete the zero entry altogether? - Loading enough plugin tabs to grow a second tab row causes the ST frames to be too large. - Rework candidate groups into the expiring caches. - Break more methods out into private routines. - implement ack, then fallback to recording if not ack'd - Being able to drag rows up and down the main loot grid would be awesome. Coding that would be likely to drive me batshiat insane. - Something to NOT do: sort cross-realm recipients into history realms based on the realm of the recipient instead of the realm of the player. While this would be useful for building up a history across realms... why would you want to do that? Massive data piling up that wouldn't be noticed unless the user makes a habit of clicking the realm dropdown menu and looking around history. ]] local helptree = { { value = "about", text = "About", }, { value = "basic", text = "Basics", children = { { value = "loot", text = "Loot Entries", }, { value = "boss", text = "Boss Entries", }, }, }, { value = "tracking", text = "Tracking Loot", children = { { value = "enabled", text = "Full Tracking", }, { value = "bcast", text = "Rebroadcasting", }, }, }, { value = "texts", text = "Generated Texts", children = { { value = "forum", text = "Forum Markup", }, { value = "other", text = "Other Texts", }, { value = "saved", text = "Saved Texts", }, }, }, { value = "history", text = "History Tab", }, { value = "tips", text = "Handy Tips", children = { { value = "slashies", text = "Slash Commands", }, { value = "prescan", text = "Prescanning", }, }, }, { value = "todo", text = "TODOs, Bugs, etc", children = { { value = "gotchas", text = "Gotchas", }, { value = "todolist", text = "TODO/knownbugs", }, }, }, } -- Help text. Formatting doesn't matter, but use a blank line to split -- paragraphs. This file needs to be edited with a text editor that doesn't -- do anything stupid by placing extra spaces at the end of lines. local helptext do local replacement_colors = { ["+"]="|cff30adff", -- blue: right-click options, control panel names ["<"]="|cff00ff00", -- light green, tab titles and generic highlighting [">"]="|r" } local T={} T.about = [[ Ouro Loot is the fault of Farmbuyer of Ouroboros on US-Kilrogg. Bug reports, comments, and suggestions are welcome at the project page: <www.curse.com/addons/wow/ouroloot> 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! ]] 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. 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. |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. <Mouse Hover> Hovering the mouse over the first column will display the item tooltip. 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. <Right-Click> Right-clicking a loot row shows a dropdown menu. Right-clicking in the first or third columns will display options for special treatment of that loot entry (e.g., marking as offspec). Using any of those options will change the text in the third column, which will then affect the 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. See the help screen on "Boss Entries" for the +Insert new boss kill event> option. <Double-Click> Double-clicking a loot row in the third ("Notes") column allows you to edit that field directly. The color of the text will still depend on any +Mark as ___> actions done to that loot row, whether automatically or by hand. ]] 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: 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). 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 insert bosses named "trash" to break up the display and correct the forum markup listing. ]] 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. 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 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. ]] T.tracking_enabled = [[ Full tracking records all loot events that fulfill these criteria: 1) The loot quality is equal to or better than what you have selected in the +Threshold> drop-down. 2) The loot is not in the list of items to filter out (see the <Options> tab). 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. 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 smaller. If your raid does not use master looting then you merely need to be close enough to the boss corpse, presuming that the winners will need to walk 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. 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 see will be communicated to you. Then it only becomes necessary for at least 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. ]] 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. 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. ]] 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. 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. 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 whatever. If you're on a Mac, you probably already know the equivalent keys. ]] T.texts_forum = [[ The <Forum Markup> tab creates text as used by the guild forums for Ouroboros of US-Kilrogg. By default this is fairly standard BBcode. The format of the individual loot items can be adjusted via the dropdown menu on the lower right of the tab. The [url] choice defaults to using Wowhead. If you have the [item] extension for your BBcode installed, you can use either of those choices too. The "by ID" 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: +$N>: item name|r +$I>: (capital "eye", not "ell") numeric item ID|r +$T>: loot recipient and any additional notes|r +$X>: if more than one of the item was looted, this is the "x2", "x3", etc Pro tip #1: if something has happened on the main <Loot> tab which cannot be changed directly but would generate incorrect text, you can click this tab to generate the text right away. Then edit/move the text as needed. When you close the display or click back on the <Loot> tab, your edited text will be preserved for later. Pro tip #2: Barring situations like pro tip #1, this addon author typically does not generate any text until the end of the raid, simplifying things considerably. ]] 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. 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 example, a spreadsheet or DKP tracker), then this may be of use to you. Ideas for more tabs? Tell me! ]] 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. 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. 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. ]] 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. 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. 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. 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. +Clear Older> deletes history information older than a certain threshold (by default, 5 loot events). It is another good periodic maintenance step, but does not discard as much data as the other actions. From the right-click menu on the main tab, using +Reassign to...> will also move the item between player histories. The timestamp will not be changed; it will "always have been" received by the new recipient. Using +Mark as disenchanted> or +Mark as guild vault> will remove the item from history altogether. Remarking such an item as +normal> or +offspec> will 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. ]] T.tips = [[ The |cffff8000[Ouro Loot]|r "legendary item" displayed at the start of all chat messages is a clickable link. Clicking opens the main display, and if possible will jump to and/or highlight the relevent data which caused the associated chat message to be printed in the first place. 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. 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. Shift-clicking an item in the <Loot> or <History> display will paste it into an open chat editbox. ]] T.tips_slashies = [[ A text field in the <Options> tab lets you use additional slash commands as a 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 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 way to see it. Only enough text to be unambiguous is required, and all of it is case-insensitive. Some tabs will accept additional text after the tab title, and try to Do The Right Thing. For example, <"/ol history blah"> will search for a player named "blah", and if found, will act as if you had clicked on that row, switching the display to every loot received by that player. The same unambiguous prefix searching is used for names as for tab titles, so <"/ol hi farm"> is enough to trigger Farmbuyer's history display (as long as nobody named Farmville joins 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: +help>: opens the UI to the help tab|r +broadcast>/+bcast>: turns on rebroadcasting|r +on [T]>: turns on full tracking, optionally setting threshold to T|r +on5 [T]>: same, but also toggles "notraid" (see Tips for this)|r +off>: turns off everything|r +thre[shold] T>: sets tracking threshold to T|r +ping>: same as clicking "Ping!" on the Options tab|r +list>: prints saved text names and numbers|r +save *(your set name)*>: saves texts as "your set name"|r +restore *(N)*>: restores set number N|r +delete *(N)*>: deletes set number N|r +toggle>: opens or closes the UI (used mostly in automated wrappers)|r +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. ]] T.tips_prescan = [[ When loot is manipulated, the history of previous loot entries must be scanned to determine whether you already have any information for that loot. In this case, "loot manipulation" includes things like receiving loot broadcasts from other players, marking older loot as being disenchanted, and so on. You can speed up these actions by turning on the +Prescan for faster handling> toggle on the <Options> tab. This is a tradeoff: loot manipulation will go faster, but data from the prescan will use up more memory. (If you end up doing things to every single piece of loot, you would use up all that memory eventually. But if you don't, then that memory is essentially wasted.) This prescanning is only done for the specific realm on which you're playing. Much depends on how far back you preserve history. The more history you keep for a given realm, then... [option on] ...the more memory this option uses... [option off] ...the longer loot work takes... ...while manipulating loot for that realm. See the tradeoff? The prescan is only done once, during login. It will print out how much additional memory is used, so you can better decide whether this option is worth turning on. This also means that you need to relog or /reload to have the option take effect once you enable it. ]] 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. Click the "About" line on the left for contact information. ]] T.todo_gotchas = [[ <Things Which Might Surprise You> (and things I'm not sure I like in the current design): Manipulating existing information while logged into a realm other than the realm represented by that same information can yield strange results, including outright breakage. 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 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 previously had in the various generated text tabs. The generated forum text tries to only list the name of the instance if it has not already been listed, or if it is different than the instance of the previous boss. If you relog, the "last printed instance name" will be forgotten, and you'll see redundant raid instance names appearing in the text. After a boss wipe, multiple broadcasting players releasing spirit more than several seconds apart can cause spurious "wipe" entries (of zero duration) on the loot grid. The surefire way to avoid this is to not release spirit until DBM announces the wipe, but the problem isn't serious enough to really worry about. (Right-click the spurious entries and delete them.) When a boss is killed, ALL previous wipes for that boss are removed and collapsed... even if they're on other days with other raids. If you only raid with one guild, this can result in some amusing statistics ("kill on 27th attempt" would actually mean something), but if there are multiple raid configurations without clearing loot in between, then this number is simply garbage. ]] T.todo_todolist = todo -- Fill out the table that will actually be used. Join adjacent lines here so -- that they'll wrap properly. helptext = {} for k,text in pairs(T) do local funkykey = k:gsub('_','\001') -- this is how TreeGroup makes unique keys local wrapped = text wrapped = wrapped:gsub ("[%+<>]", replacement_colors) wrapped = wrapped:gsub ("([^\n])\n([^\n])", "%1 %2") --safeprint(wrapped) wrapped = wrapped:gsub ("|r\n\n", "|r\n") wrapped = wrapped:gsub ("Ouroboros", "|cffa335ee<Ouroboros>|r") --safeprint(wrapped) wrapped = wrapped:gsub ("%*%(", "<") :gsub("%)%*", ">") :gsub(":PLUS:", "+") helptext[funkykey] = wrapped end end -- do scope todo = nil -- Tab 5: Help do local mkbutton = addon.gui_state_pointer.mkbutton local gui = addon.gui_state_pointer local AceGUI = LibStub("AceGUI-3.0") -- widget container status tables (will have things magically appear -- inside them that we wish to preserve) local status_for_scroll = {} local status_for_select = { treewidth = 145 } -- Clicking an entry on the left tree column. local help_OnGroupSelected_func = function (treeg,event,category) -- Some way of just reusing the same Label widget when clicking -- different topics? treeg:ReleaseChildren() local txt = AceGUI:Create("Label") txt:SetFullWidth(true) txt:SetFontObject(GameFontNormal) txt:SetText(helptext[category]) local sf = AceGUI:Create("ScrollFrame") sf:SetStatusTable(status_for_scroll) sf:SetLayout("Fill") -- This forces the scrolling area to be bigger than the visible area; else -- some of the text gets cut off without ever triggering the scrollbar. sf.content:SetHeight(700) sf:AddChild(txt) treeg:AddChild(sf) if treeg:GetUserData("help restore scroll") then if status_for_scroll.scrollvalue then sf:SetScroll(status_for_scroll.scrollvalue) end treeg:SetUserData("help restore scroll", false) else sf:SetScroll(0) end end -- Clicking the Help tab as a whole (tabs_OnGroupSelected["help"]). local tabs_OGS = function(container,specials) container:SetLayout("Fill") local left = AceGUI:Create("TreeGroup") left:SetStatusTable(status_for_select) left:SetLayout("Fill") left:SetFullWidth(true) left:SetFullHeight(true) left:EnableButtonTooltips(false) left:SetTree(helptree) left:SetCallback("OnGroupSelected", help_OnGroupSelected_func) container:AddChild(left) if status_for_select.selected then left:SetUserData("help restore scroll", true) left:SelectByValue(status_for_select.selected) else left:SelectByValue("basic") end local b = mkbutton("Force Loot Refresh", [[Force the Loot tab display to update from stored data. Shouldn't be needed.]]) b:SetFullWidth(true) b:SetCallback("OnClick", function () addon.loot_clean = nil addon:gui_init() addon:Print[[Loot tab display re-initialized.]] end) specials:AddChild(b) end addon:register_tab_control_AT_END ("help", [[Help]], [[Instructions, reminders, and tips for non-obvious features]], tabs_OGS, [[ Every tab across the top also gets its own special buttons here in the lower right, under the same name as the tab. Some controls do not become visible until that tab has data to work with.]]) end addon.FILES_LOADED = addon.FILES_LOADED + 1 -- vim:noet