vanilla-wow-addons – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1  
2 --[[ Miscellaneous variables and localization strings for Recap 3.3 ]]
3  
4 recap_temp = {}; -- global values that don't go to savedvariables
5  
6 --[[ Filter method ]]
7  
8 -- filter method largely taken from Telo's MobHealth. source=6 when it's the player
9 -- effect=7 when it's Melee, effect=8 when it's a damage shield
10 -- crit identifies which events can crit. crit=1 is a crit, crit=0 not a crit
11 -- miss: 9=miss/deflect/resist, 10=dodge, 11=parry, 12=block
12 -- 13 = 0 (for damage)
13 recap_temp.Filter = {
14 { source=6, dest=2, damage=3, effect=1, crit=0, pattern=SPELLLOGSELFOTHER }, -- Your (.+) hits (.+) for (%d+)
15 { source=6, dest=2, damage=3, effect=1, crit=1, pattern=SPELLLOGCRITSELFOTHER }, -- Your (.+) crits (.+) for (%d+)
16 { source=6, dest=2, damage=3, effect=1, pattern=SPELLSPLITDAMAGESELFOTHER }, -- Your (.+) causes (.+) (%d+) damage
17 { source=3, dest=6, damage=1, effect=4, pattern=PERIODICAURADAMAGEOTHERSELF }, -- You suffer (%d+) (.+) damage from (.+)'s (.+)
18 { source=6, dest=1, damage=2, effect=4, pattern=PERIODICAURADAMAGESELFOTHER }, -- (.+) suffers (%d+) (.+) damage from your (.+)
19 { source=6, dest=3, damage=1, effect=8, pattern=DAMAGESHIELDSELFOTHER }, -- You reflect (%d+) (.+) damage to (.+)
20 { source=6, dest=1, damage=2, effect=7, crit=0, pattern=COMBATHITSELFOTHER }, -- You hit (.+) for (%d+)
21 { source=6, dest=1, damage=2, effect=7, crit=1, pattern=COMBATHITCRITSELFOTHER }, -- You crit (.+) for (%d+)
22 { source=1, dest=3, damage=4, effect=2, crit=0, pattern=SPELLLOGOTHEROTHER }, -- (.+)'s (.+) hits (.+) for (%d+)
23 { source=1, dest=3, damage=4, effect=2, crit=1, pattern=SPELLLOGCRITOTHEROTHER }, -- (.+)'s (.+) crits (.+) for (%d+)
24 { source=1, dest=3, damage=4, effect=2, pattern=SPELLSPLITDAMAGEOTHEROTHER }, -- (.+)'s (.+) causes (.+) (%d+) damage
25 { source=1, dest=4, damage=2, effect=8, pattern=DAMAGESHIELDOTHEROTHER }, -- (.+) reflects (%d+) (.+) damage to (.+)
26 { source=4, dest=1, damage=2, effect=5, pattern=PERIODICAURADAMAGEOTHEROTHER }, -- (.+) suffers (%d+) (.+) damage from (.+)'s (.+)
27 { source=1, dest=2, damage=3, effect=7, crit=0, pattern=COMBATHITOTHEROTHER }, -- (.+) hits (.+) for (%d+)
28 { source=1, dest=2, damage=3, effect=7, crit=1, pattern=COMBATHITCRITOTHEROTHER }, -- (.+) crits (.+) for (%d+)
29  
30 { source=1, dest=3, effect=2, miss=9, pattern=SPELLMISSOTHEROTHER }, -- (.+)'s (.+) missed (.+)
31 { source=1, dest=6, effect=2, miss=9, pattern=SPELLMISSOTHERSELF }, -- (.+)'s (.+) misses you
32 { source=6, dest=2, effect=1, miss=9, pattern=SPELLMISSSELFOTHER }, -- Your (.+) missed (.+)
33 { source=1, dest=6, effect=7, miss=9, pattern=MISSEDOTHERSELF }, -- (.+) misses you
34 { source=1, dest=2, effect=7, miss=9, pattern=MISSEDOTHEROTHER }, -- (.+) misses (.+)
35 { source=6, dest=1, effect=7, miss=9, pattern=MISSEDSELFOTHER }, -- You miss (.+)
36 { source=1, dest=3, effect=2, miss=9, pattern=SPELLRESISTOTHEROTHER }, -- (.+)'s (.+) was resisted by (.+)
37 { source=1, dest=6, effect=2, miss=9, pattern=SPELLRESISTOTHERSELF }, -- (.+)'s (.+) was resisted
38 { source=6, dest=2, effect=1, miss=9, pattern=SPELLRESISTSELFOTHER }, -- Your (.+) was resisted by (.+)
39 { source=1, dest=3, effect=2, miss=9, pattern=SPELLDEFLECTEDOTHEROTHER }, -- (.+)'s (.+) was deflected by (.+)
40 { source=1, dest=6, effect=2, miss=9, pattern=SPELLDEFLECTEDOTHERSELF }, -- (.+)'s (.+) was deflected
41 { source=6, dest=2, effect=1, miss=9, pattern=SPELLDEFLECTEDSELFOTHER }, -- Your (.+) was deflected by (.+)
42 { source=1, dest=6, effect=7, miss=10, pattern=VSDODGEOTHERSELF }, -- (.+) attacks. You dodge
43 { source=1, dest=2, effect=7, miss=10, pattern=VSDODGEOTHEROTHER }, -- (.+) attacks. (.+) dodges
44 { source=6, dest=1, effect=7, miss=10, pattern=VSDODGESELFOTHER }, -- You attack. (.+) dodges
45 { source=1, dest=6, effect=7, miss=11, pattern=VSPARRYOTHERSELF }, -- (.+) attacks. You parry
46 { source=1, dest=2, effect=7, miss=11, pattern=VSPARRYOTHEROTHER }, -- (.+) attacks. (.+) parries
47 { source=6, dest=1, effect=7, miss=11, pattern=VSPARRYSELFOTHER }, -- You attack. (.+) parries
48 { source=6, dest=1, effect=7, miss=12, pattern=VSBLOCKSELFOTHER }, -- You attack. (.+) blocks
49 { source=1, dest=6, effect=7, miss=12, pattern=VSBLOCKOTHERSELF }, -- (.+) attacks. You block
50 { source=1, dest=2, effect=7, miss=12, pattern=VSBLOCKOTHEROTHER }, -- (.+) attacks. (.+) blocks
51  
52 { source=1, dest=6, damage=13, effect=2, pattern=SPELLCASTOTHERSTART } -- (.+) begins to cast (.+)
53 }
54 recap_temp.FilterSize = 37; -- number of filters, change to recap_temp.Filter size
55  
56 -- separate filter for heals, processed apart from damage hits from above
57 -- but same rules: source=6 is player, effect=7 is melee, effect=8 is damage shield, crit=0/1 for crits
58 recap_temp.HealFilter = {
59 { source=2, dest=6, heal=1, effect=3, pattern=PERIODICAURAHEALOTHERSELF }, -- You gain (%d+) health from (.+)'s (.+)
60 { source=6, dest=6, heal=1, effect=2, pattern=PERIODICAURAHEALSELFSELF }, -- You gain (%d+) health from (.+)
61 { source=6, dest=1, heal=2, effect=3, pattern=PERIODICAURAHEALSELFOTHER }, -- (.+) gains (%d+) health from your (.+)
62 { source=3, dest=1, heal=2, effect=4, pattern=PERIODICAURAHEALOTHEROTHER }, -- (.+) gains (%d+) health from (.+)'s (.+)
63 { source=6, dest=2, heal=3, effect=1, crit=1, pattern=HEALEDCRITSELFOTHER }, -- Your (.+) critically heals (.+) for (%d+)
64 { source=6, dest=2, heal=3, effect=1, crit=0, pattern=HEALEDSELFOTHER }, -- Your (.+) heals (.+) for (%d+)
65 { source=1, dest=3, heal=4, effect=2, crit=1, pattern=HEALEDCRITOTHEROTHER }, -- (.+)'s (.+) critically heals (.+) for (%d+)
66 { source=1, dest=3, heal=4, effect=2, crit=0, pattern=HEALEDOTHEROTHER } }; -- (.+)'s (.+) heals (.+) for (%d+)
67 recap_temp.HealFilterSize = 8;
68  
69 recap_temp.DeathFilter = {
70 { victim=6, pattern=UNITDIESSELF }, -- You die
71 { victim=1, pattern=ERR_PLAYER_DIED_S }, -- (.+) has died
72 { victim=1, pattern=UNITDIESOTHER } }; -- (.+) dies
73 recap_temp.DeathFilterSize = 3;
74  
75 --[[ Tooltips, option indexes ]]
76  
77 -- First field each line MUST NOT CHANGE (they are option id's)
78 -- the order MUST NOT CHANGE until HeaderTime. They are in the order of GetID values
79 recap_temp.OptList = {
80 { "UseColor", "Use Color", "When checked, friendly combatants and damage dealt to others are colored green, incoming damage is colored red." },
81 { "GrowUpwards", "Expand Window Up", "When checked, the window's bottom edge will remain anchored while the top edge resizes." },
82 { "GrowLeftwards", "Expand Window Left", "When checked, the window's right edge will remain anchored while the left edge resizes." },
83 { "ShowTooltips", "Show Tooltips", "When checked, tooltips like the one you're reading will be shown." },
84 { "AutoHide", "Auto Hide Entering Combat", "When checked, and the window isn't minimized, it will hide when a fight begins and reappear when the fight ends." },
85 { "AutoFade", "Auto Fade Window", "When checked, and the window isn't minimized, the window will fade after your mouse leaves the window." },
86 { "LimitFights", "Limit Fights to Combat", "When checked, fight logging will not begin until you enter combat mode. Recommended Off unless you don't want to log fights around you." },
87 { "HideZero", "Show Only Fights With Duration", "When checked, fights without a duration will not be shown. Use this to hide damage done to totems, critters, etc." },
88 { "HideFoe", "Show Only Friendly Combatants", "When checked, only fight information from friendly combatants will be shown. Right-click a name to toggle its friend/foe status." },
89 { "IdleFight", "End Fight If Idle", "When checked, fights will end if no hits happen for a length of time." },
90 { "Time", "Display Time", "When checked, each combatants' time fighting will be displayed in the list." },
91 { "MaxHit", "Display Max Hit", "When checked, each combatants' max hit will be displayed in the list." },
92 { "DmgIn", "Display Damage In", "When checked, each combatants' total damage received will be displayed in the list." },
93 { "DmgOut", "Display Damage Out", "When checked, each combatants' total damage dealt to others will be displayed in the list." },
94 { "DPS", "Display DPS", "When checked, each combatants' damage per second dealt to others will be displayed in the list." },
95 { "DPSIn", "Display Total DPS In", "When checked, the total damage per second friendly combatants received will be displayed in totals." },
96 { "MinStatus", "Display Status While Minimized", "When checked, the status light will remain visible while minimized." },
97 { "MinView", "Display Last/All While Minimized", "When checked, a small label indicating if you are watching the Last Fight or All Fights will be visible while minimized." },
98 { "MinYourDPS", "Display Your DPS While Minimized", "When checked, your DPS will be displayed in minimized view." },
99 { "MinDPSIn", "Display Total DPS In While Minimized", "When checked, the total damage per second friendly combatants received will be displayed in minimized view." },
100 { "MinDPSOut", "Display Total DPS Out While Minimized", "When checked, the total damage per second friendly combatants dealt to others will be displayed in minimized view." },
101 { "MinButtons", "Display Buttons While Minimized", "When checked, the buttons along the top-right edge (Close, Pin, Pause, Options, Last/All) will remain visible in minimized view." },
102 { "TooltipFollow", "Tooltips At Pointer", "When checked, tooltips will follow the pointer instead of using the default tooltip placement. Note: Many mods override default tooltip behavior." },
103 { "SaveFriends", "Only Save Friends", "When checked, only combatants currently marked as a friend will be saved to fight data sets. To change the friend status of a combatant, right-click their name." },
104 { "ReplaceSet", "Replace Existing Data", "When checked, sets saved and loaded will replace existing data. Otherwise the data will merge." },
105 { "Heal", "Display Heals", "When checked, each combatants' heals will be displayed in the list." },
106 { "Kills", "Display Deaths", "When checked, the number of deaths for each combatant will be displayed in the list." },
107 { "HideYardTrash", "Show Only Unique Combatants", "When checked, non-friendly combatants that have died more than once will be hidden. Useful in single instance runs to hide yard trash or common mobs." },
108 { "SpamRows", "Report Rankings in Rows", "When checked, shift+click on a header with the chat bar up will post the top ten ranking in rows instead of one line, for readability at the expense of spam." },
109 { "Faction", "Display Level/Faction", "When checked, if a combatant's faction and level are known it will be displayed by their name." },
110 { "Class", "Display Class", "When checked, if a combatant's class is known its icon will be displayed by their name." },
111 { "HealP", "Display Heals %", "When checked, a percentage of total friendly heals will be displayed for each friendly combatant." },
112 { "DmgInP", "Display Damage In %", "When checked, a percentage of total friendly damage received will be displayed for each friendly combatant." },
113 { "DmgOutP", "Display Damage Out %", "When checked, a percentage of total friendly damage dealt to others will be displayed for each friendly combatant." },
114 { "AutoPost", "Auto Post Results", "When checked, a summary will be reported at the end of each fight to the channel selected below." },
115 { "MinBack", "Display Back While Minimized", "When checked, the background will remain opaque in minimized view." },
116 { "MergePets", "Merge Pets With Owners", "When checked, from that point on, all friendly pet damage will be credited to its owner. When unchecked, from that point on, all friendly pet damage will be credited to the pet." },
117 { "AutoMinimize", "Auto Minimize", "When checked, the window will minimize automically when the pointer leaves the window, and expand when the pointer enters the window. Holding the Shift key or selecting a combatant will override this behavior." },
118 { "ShowPanel", "Show Details", "When checked, a side panel showing more detailed information will be shown as you move the pointer over combatants. Select a combatant to lock the panel. In Light Data Mode, only the Summary details will be available." },
119 { "LightData", "Light Data Mode", "When checked, extra information such as misses and damage breakdowns will not be collected or stored.\n\nWhen unchecked, misses and damage details will accumulate into the Details panel.\n\nNote: For now, Personal Details will not accumulate while in Light Data Mode." },
120 { "ShowGauges", "Show Gauges", "When checked, gauges will appear behind friendly combatants for a visual indicator of damage or healing.\n\nCurrently gauges only work for damage in, damage out and healing. To choose which gauges to use, sort by one of those three methods.\n\nYou can sort by clicking on the header above the column, ie Heal, In, Out or %." },
121 { "AutoLeader", "Auto Post New Leaders", "When checked, changes in leadership of the stat chosen below will be automatically posted to the selected channel." },
122 { "Ranks", "Numbered List", "When checked, the list will be numbered." },
123 { "DPSvsAll", "Display DPS vs All", "When checked, a DPS value will be displayed reflecting each individual's damage over the total time everyone was fighting." },
124 { "Over", "Overhealing", "When checked, an estimated overhealing percentage will be displayed per friendly combatant for All Fights.\n\nRemember: Mana-efficient healers use the slow beefy heals. Paladins and other healers snipering small fast heals while the better heals are incoming are going to unfairly make the mana-efficient healer look worse than the mana-inefficient snipers.\n\nDo not use this as a gauge of healer capability or contribution." },
125 { "HTML", "Format in HTML", "When checked, logs written to WOWChatLog.txt or the clipboard will be formatted into a simple HTML table. When HTML is written to WOWChatLog.txt, only up to 15 combatants are written instead of 30 due to the extra tags." },
126 { "WriteFriends", "Write Only Friends", "When checked, logs will only be written for friendly combatants." },
127 { "ETotal", "Display Totals", "When checked, the total damage or healing for each effect will be shown in personal details." },
128 { "ETotalP", "Display Total Contribution", "When checked, the contribution of this effect to the whole will be shown in personal details." },
129 { "EHits", "Display Hits", "When checked, the number of non-crit hits will be shown in personal details." },
130 { "EHitsAvg", "Display Average Hit", "When checked, the average non-crit hit will be shown in personal details." },
131 { "EHitsMax", "Display Max Hit", "When checked, the maximum non-crit hit will be shown in personal details." },
132 { "ETicks", "Display Ticks", "When checked, the number of ticks will be shown in personal details." },
133 { "ETicksAvg", "Display Average Tick", "When checked, the average tick amount will be shown in personal details." },
134 { "ETicksMax", "Display Max Tick", "When checked, the maximum tick amount will be shown in personal details." },
135 { "ECrits", "Display Crits", "When checked, the number of crits will be shown in personal details." },
136 { "ECritsAvg", "Display Average Crit", "When checked, the average crit will be shown in personal details." },
137 { "ECritsMax", "Display Max Crit", "When checked, the maximum crit will be shown in personal details." },
138 { "ECritsP", "Display Crit Rate", "When checked, the crit rate for each effect will be shown in personal details." },
139 { "EMiss", "Display Misses", "When checked, the number of misses for each effect will be shown in personal details. For non-melee this is miss, deflects and resists. For melee this includes block, parry and dodge." },
140 { "EMissP", "Display Miss Rate", "When checked, the miss rate for each effect will be shown in personal details." },
141 { "EMaxAll", "Display Maximum Damage", "When checked, the maximum damage from a single hit, tick or crit for each effect will be shown in personal details." },
142 { "WarnData", "Warn When Data Grows Too Large", "When checked, a message will remind you on login when your live data contains more than 500 combatants.\n\nRecap can function perfectly fine with over 500 combatants, but some users may not be aware that they are accumulating a lot of data they may not be interested in." },
143  
144 -- tooltips that don't change can go below in any order. ensure future options go above these
145 { "HeaderTime", "Fight Time", "This is the time each combatant fought from their first point of damage to their last." },
146 { "HeaderMaxHit", "Max Hit", "This is the maximum damage each combatant dealt to others in a single hit or spell." },
147 { "HeaderDmgIn", "Damage In", "This is the damage received (tanked) by each combatant." },
148 { "HeaderDmgOut", "Damage Out", "This is the damage dealt to others by each combatant." },
149 { "HeaderDPS", "Individual DPS", "This is the personal Damage Per Second dealt to others by each combatant, based on the duration from their first to last attempted point of damage." },
150 { "HeaderHeal", "Heals Out", "This is the hit points healed by this combatant." },
151 { "HeaderKills", "Death Count", "This is the number of times this combatant died within logging distance." },
152 { "Options", "Open Options", "Summon or dismiss the options window to change settings or manage fight data sets." },
153 { "TooltipMinYourDPS", "Your DPS", "This is your personal DPS, including pet." },
154 { "TooltipMinDPSIn", "DPS In", "This is the total damage received by friendly combatants." },
155 { "TooltipMinDPSOut", "DPS Out", "This is the total damage dealt to others from friendly combatants." },
156 { "AutoFadeSlider", "Auto Fade Timer", "This is the time before the window fades after you leave it if Auto Fade Window is checked." },
157 { "IdleFightSlider", "Fight Idle Timer", "This is the idle time before a fight will end if End Fight If Idle is checked." },
158 { "MinPinned", "Window Pinned", "This window is now locked to this position. Right-click again to make it movable." },
159 { "MinUnpinned", "Window Unpinned", "This window is now unlocked and movable. Right-click again to lock it in position." },
160 { "ExitRecap", "Exit Recap", "Fight monitoring is suspended. Click here to shut down Recap completely." },
161 { "HideWindow", "Hide Window", "Continue monitoring fights, but hide this window." },
162 { "ExpandWindow", "Expand Window", "Expand window to show fight details." },
163 { "MinimizeWindow", "Minimize Window", "Minimize window and hide fight details." },
164 { "UnPinWindow", "Unpin Window", "Allow window to be moved." },
165 { "PinWindow", "Pin Window", "Prevent window from being moved." },
166 { "Resume", "Resume Monitoring", "Fight logging is currently suspended. Click here to start watching fights." },
167 { "PauseMonitoring", "Pause Monitoring", "Click here to stop watching fights. If you dismiss Recap while paused, it will not attempt to log any fights until you summon it." },
168 { "ShowAllFights", "Show All Fights", "Currently the window is displaying the result of the last fight. Click here to show all fights since last reset." },
169 { "ShowLastFight", "Show Last Fight", "Currently the window is displaying all fights since the last reset. Click here to show only the last fight." },
170 { "CombatLast", "Combatants for Last Fight", "This is a list of all combatants that did damage in the last fight. To change a friend status, right-click the name." },
171 { "CombatAll", "Combatants for All Fights", "This is a list of all combatants that did damage since your last reset. The change a friend status, right-click the name." },
172 { "ResetLastFight", "Reset Last Fight", "This will wipe the fight data for just the last fight. Note: Max hits and Overheals can only be reset by resetting All Fights." },
173 { "ResetAllTotals", "Reset All Totals", "This will wipe all active fight data for all combatants, except for those stored in Fight Data Sets and Personal Details. Fight Data Sets can only be deleted from within options. Personal Details can only be reset while they are visible." },
174 { "SaveSet", "Save Fight Data Set", "Click here to save the current fight data." },
175 { "LoadSet", "Load Fight Data Set", "Click here to load the selected fight data." },
176 { "DeleteSet", "Delete Fight Data Set", "Click here to delete the selected fight data set." },
177 { "DataSetEdit", "Fight Data Set Name", "Select a data set listed above or enter a new name here to create a new data set." },
178 { "OptExit", "Exit Recap", "Suspend fight monitoring and exit Recap completely."},
179 { "HeaderHealP", "% Heals", "This is the percent of total heals for each friendly combatant." },
180 { "HeaderDmgInP", "% Damage In", "This is the percent of total for each friendly combatants' damage received." },
181 { "HeaderDmgOutP", "% Damage Out", "This is the percent of total for each friendly combatants' damage dealt to others." },
182 { "OptTab1", "Display Options", "These options define what elements of the window to display in its various forms.\n\nNote: None of the display settings affect data. You can turn off everything for normal use, and later reveal elements you want to see." },
183 { "OptTab2", "General Settings", "These options define window behavior, limits to data and miscellaneous options." },
184 { "OptTab3", "Fight Data Sets", "Here you can manage Fight Data Sets. Fight Data Sets are compact archives of the 'All Fights' view." },
185 { "MaxRowsSlider", "Maximum Rows", "Adjust this to change the maximum rows the window can grow." },
186 { "MaxRankSlider", "Maximum Rank", "This adjusts a limit on how many combatants to report to chat." },
187 { "PanelClose", "Close Panel", "Hide this details panel. Information will still be accumulated while this is hidden. To stop accumulating detailed information, check 'Light Data Mode' in options." },
188 { "PanelEntry1", "Incoming Melee Damage", "This is the melee damage others dealt to this combatant." },
189 { "PanelEntry2", "Incoming Melee Rate", "This is the relative amount of melee taken compared to non-melee." },
190 { "PanelEntry3", "Incoming Melee Hits", "This is the number of non-crit hit received by others' melee." },
191 { "PanelEntry4", "Incoming Melee Hits Rate", "This is the relative amount of non-crit hits received by others' melee." },
192 { "PanelEntry5", "Incoming Melee Missed", "This is the number of times this combatant was missed from others' melee, including dodge, block and parry." },
193 { "PanelEntry6", "Incoming Melee Missed Rate", "This is the relative amount of times this combatant was missed from others' melee, include dodge, block and parry." },
194 { "PanelEntry7", "Incoming Melee Crits", "This is the number of crits received by others' melee." },
195 { "PanelEntry8", "Incoming Melee Crits Rate", "This is the relative amount of crits received by others' melee." },
196 { "PanelEntry9", "Incoming Non-Melee Damage", "This is the non-melee damage others dealt to this combatant, including physical non-melee." },
197 { "PanelEntry10", "Incoming Non-Melee Damage Rate", "This is the relative amount of non-melee damage taken compared to melee." },
198 { "PanelEntry11", "Incoming Non-Melee Hits", "This is the number of non-crit hits received by others' non-melee." },
199 { "PanelEntry12", "Incoming Non-Melee Hits Rate", "This is the relative amount of non-crit hits received by others' non-melee." },
200 { "PanelEntry13", "Incoming Non-Melee Missed", "This is the number of times this combatant resisted, deflected or was missed from others' non-melee attacks. (dodge, block, parry not included)" },
201 { "PanelEntry14", "Incoming Non-Melee Missed Rate", "This is the relative amount of times this combatant resisted, deflected or was missed from others' non-melee attacks. (dodge, block, parry not included)" },
202 { "PanelEntry15", "Incoming Non-Melee Crits", "This is the number of crits received by others' non-melee." },
203 { "PanelEntry16", "Incoming Non-Melee Crits Rate", "This is the relative amount of crits received by others' non-melee." },
204 { "PanelEntry17", "Incoming Melee Average", "This is the average melee damage received in one attack." },
205 { "PanelEntry18", "Incoming Non-Melee Average", "This is the average non-melee damage received in one attack." },
206 { "PanelEntry19", "Incoming Melee Max", "This is the maximum melee damage received in one attack." },
207 { "PanelEntry20", "Incoming Non-Melee Max", "This is the maximum non-melee damage received in one attack." },
208 { "PanelEntry21", "Incoming Melee Missed", "This is the pure melee misses from others' melee attempts." },
209 { "PanelEntry22", "Incoming Melee Dodged", "This is the pure melee dodged from others' melee attempts." },
210 { "PanelEntry23", "Incoming Melee Parried", "This is the pure melee parried from others' melee attempts." },
211 { "PanelEntry24", "Incoming Melee Blocked", "This is the pure melee blocked from others' melee attempts." },
212 { "PanelTab1", "Incoming Details: Tanking", "This panel will show information on incoming damage and misses to this combatant." },
213 { "PanelTab2", "Outgoing Details: Damage", "This panel will show information on outgoing damage and heals from this combatant." },
214 { "PanelTab3", "All Details: Summary", "This panel will show a summary of information about this combatant." },
215 { "PanelTabDisabled1", "Incoming Details: Tanking (Disabled)", "You are currently in Light Data Mode. Tanking details are not collected. Uncheck Light Data Mode in options to collect incoming damage and misses to each combatant." },
216 { "PanelTabDisabled2", "Incoming Details: Damage (Disabled)", "You are currently in Light Data Mode. Damage details are not collected. Uncheck Light Data Mode in options to collect outgoing damage details for each combatant." },
217 { "PanelEntry25", "Time (Last Fight)", "Time fighting in last fight." },
218 { "PanelEntry26", "Max Hit (Last Fight)", "Maximum hit dealt in last fight." },
219 { "PanelEntry27", "Deaths (Last Fight)", "Number of times died in last fight." },
220 { "PanelEntry28", "Heals (Last Fight)", "Total healed others in last fight." },
221 { "PanelEntry29", "Damage In (Last Fight)", "Total damage received in last fight." },
222 { "PanelEntry30", "Damage Out (Last Fight)", "Total damage dealt to others in last fight." },
223 { "PanelEntry31", "DPS (Last Fight)", "DPS for last fight." },
224 { "PanelEntry35", "Time (All Fights)", "Time fighting in all fights." },
225 { "PanelEntry36", "Max Hit (All Fights)", "Maximum hit dealt in all fights." },
226 { "PanelEntry37", "Deaths (All Fights)", "Number of times died in all fights." },
227 { "PanelEntry38", "Heals (All Fights)", "Total healed others in all fights." },
228 { "PanelEntry39", "Damage In (All Fights)", "Total damage received in all fights." },
229 { "PanelEntry40", "Damage Out (All Fights)", "Total damage dealt to others in all fights." },
230 { "PanelEntry41", "DPS (All Fights)", "DPS for all fights." },
231 { "PanelEntry45", "Total Damage", "Total damage dealt by this effect." },
232 { "PanelEntry46", "Number of Hits", "Number of times this effect landed without a crit." },
233 { "PanelEntry47", "Number of Crits", "Number of times this effect landed with a crit." },
234 { "PanelEntry48", "Average Hit", "The average non-crit damage from this effect in one attack." },
235 { "PanelEntry49", "Average Crit", "The average crit damage from this effect in one attack." },
236 { "PanelEntry50", "Max Hit", "The maximum non-crit damage from this effect in one attack." },
237 { "PanelEntry51", "Max Crit", "The maximum crit damage from this effect in one attack." },
238 { "PanelEntry52", "Misses", "The amount and percent of hits attempts that missed. For melee this is miss, block, parry and dodge. For non-melee this is miss, resist and deflect." },
239 { "PanelEntry53", "Crit Rate", "The relative amount of crits per hits." },
240 { "PanelEntry54", "Number of Ticks", "Number of times someone suffered damage or gained health as a result of this effect." },
241 { "PanelEntry55", "Average Tick", "The average damage or healing this effect applied per tick." },
242 { "PanelEntry56", "Max Tick", "The maximum damage or healing this effect applied per tick." },
243 { "PanelEntryOverheal", "Overhealing", "This is an estimated total of hp that landed but didn't heal. ie, a warrior at 4750/5000 life receives a heal for 1000, bringing them to 5000/5000. 750hp were overhealed: 1000hp heal minus 250hp hp applied." },
244 { "WriteLog", "Write to Log", "This will save the current combatants to a file named WOWChatLog.txt in WoW's Logs folder. It has some limitations imposed by the game:\n- Only up to 30 combatants are written.\n- Clicking this many times in a short period will disconnect you due to spam.\n-The results will only be available at the end of a session when you log out. (UI Reloads won't force a write).\n- You can write several logs and they will append to the end.\n\nFor raid results or large lists, use Write to Clipboard instead." },
245 { "UseOneSettings", "Use Global Settings", "By default, settings and combatants are saved per character. Checking this will use the current settings and combatants across all characters.\n\nNote: Settings and combatants currently stored on other characters will be deleted.\n\nThis option has no effect on the personal effect details. Those are always player-specific." },
246 { "MenuAdd", "Add Friend", "Add this combatant to the list of friendly combatants." },
247 { "MenuDrop", "Drop Friend", "Remove this combatant from the list of friendly combatants." },
248 { "MenuReset", "Reset Combatant", "Reset this combatant. In All Fights view this will reset their totals and details. In Last Fight view it will just remove the last fight from totals." },
249 { "MenuIgnore", "Ignore Combatant", "Remove this combatant and ignore future occurances until reset." },
250 { "RecapAnchorTopLeft", "Anchor Top Left", "Anchor the window to grow from the top left." },
251 { "RecapAnchorTopRight", "Anchor Top Right", "Anchor the window to grow from the top right." },
252 { "RecapAnchorBottomLeft", "Anchor Bottom Left", "Anchor the window to grow from the bottom left." },
253 { "RecapAnchorBottomRight", "Anchor Bottom Right", "Anchor the window to grow from the bottom right." },
254 { "Total", "Effects", "This is the total damage or healing this effect accumulated since last reset." },
255 { "Max", "Max Hit", "This is the maximum damage or healing this effect dealt in one attack since last reset." },
256 { "Avg", "Average Hit", "This is the average damage or healing this effect dealt in one attack since last reset." },
257 { "Crits", "Crit Rate", "This is the average crit rate of this effect since last reset." },
258 { "Miss", "Miss Rate/Overhealing", "For damage effects, this is the miss rate of the effect. For heals, this is the overheal rate of the effect." },
259 { "Contribution", "Contribution", "This is the relative amount each effect contributed to the combatant's damage or healing." },
260 { "HeaderDPSvsAll", "DPS vs All", "This is the Damage Per Second each combatant dealt over the total duration of everyone fighting." },
261 { "HeaderOver", "Overhealing", "This is an estimated overhealing percentage per friendly combatant for All Fights.\n\nRemember: Mana-efficient healers use the slow beefy heals. Other healers snipering small fast heals while the better heals are incoming are going to unfairly make the mana-efficient healer look worse than the mana-inefficient snipers.\n\nDo not use this as a gauge of healer capability or contribution." },
262 { "WriteClip", "Write to Clipboard", "This will copy the current combatants to a window from which you can copy to other programs like Notepad or web forums." },
263 { "ShowSelfView", "Show Personal Details", "This will display your damage and healing details in the main window." },
264 { "HideSelfView", "Hide Personal Details", "This will dismiss your personal damage and healing details and return to all combatants in the main window." },
265 { "ResetSelfView", "Reset Personal Details", "This will wipe all personal damage and healing details accumulated in this window. Your information in the detail panel will not be affected." },
266 { "ResetEffect", "Reset Effect", "This will reset this effect only from personal details." },
267 { "HeaderEName", "Spell or Ability", "These are the effects you've used since you last reset. Damaging effects are green, heals are blue." },
268 { "HeaderETotal", "Effect Totals", "This is the total amount of each effects' damage or heals since you last reset." },
269 { "HeaderETotalP", "Effect Contributions", "This is the contribution of each effect to the total damage or heals since you last reset." },
270 { "HeaderEMaxAll", "Max Damage or Heals", "This is the maximum damage or healing done by each effect in one hit, tick or crit." },
271 { "HeaderEHits", "Number of Hits", "This is the number of times each effect hit without a crit." },
272 { "HeaderEHitsAvg", "Average Hits", "This is the average damage or healing per non-crit hit of each effect." },
273 { "HeaderEHitsMax", "Max Hits", "This is the maximum damage or healing in a single non-crit hit of each effect." },
274 { "HeaderETicks", "Number of Ticks", "This is the number of times each effect ticked for damage or healing." },
275 { "HeaderETicksAvg", "Average Ticks", "This is the average damage or healing per tick of each effect." },
276 { "HeaderETicksMax", "Max Ticks", "This is the maximum damage or healing from a single tick of each effect." },
277 { "HeaderECrits", "Number of Crits", "This is the number of times each effect crit." },
278 { "HeaderECritsAvg", "Average Crits", "This is the average damage or healing per crit of each effect." },
279 { "HeaderECritsMax", "Max Crits", "This is the maximum damage or healing from a single crit of each effect." },
280 { "HeaderECritsP", "Crit Rates", "This is the crit rate of each effect, a percentage to crittable hits. Ticks cannot crit and are not included." },
281 { "HeaderEMiss", "Misses", "This is the number of times each effect missed. This includes miss, resist and deflect for non-melee, and also dodge, parry and block for melee." },
282 { "HeaderEMissP", "Miss Rates", "This is the percentage of attempted hits that missed for each effect." }
283 };
284  
285 -- misc localization strings
286 recap_temp.Local = {
287 VerboseLinkStart = "%s took %s damage and dealt %s damage over %s for %s DPS (max hit %d)",
288 Pronoun = "you", -- Used when player is the recipient of damage "An orc hits you for 5"
289 LastAll = { Last="Last Fight", All="All Fights" },
290 LinkRank = { Time="Time Fighting", MaxHit="Max Hit", DmgIn="Damage Tanked", DmgOut="Damage Dealt", DPS="DPS", Heal="Healing", Kills="Deaths", HealP="Healing", DmgInP="Damage Tanked", DmgOutP="Damage Dealt", DPSvsAll="DPS vs All", Over="Estimated Overhealing" },
291 StatusTooltip = "When this light is red, fight monitoring is suspended.\n\nWhen this light is green, a fight is currently being monitored.\n\nWhen this light is off, Recap is idle and waiting for a fight to begin.\n",
292 RankUsage = "To copy a recap to chat, begin a chat and then shift+click. ie:\n|cFFAAAAFF/p (shift+click on Time)|cFFFFFFFF <- sends a ranking of times to /p\n|cFFFF8000/ra (shift+click on DPS)|cFFFFFFFF <- sends a ranking of DPS to /ra",
293 ListMenu = { Add = { "Add Friend", "Add %s", "Add %s to the list of friends." },
294 Drop = { "Drop Friend", "Drop %s", "Remove %s from the list of friends."},
295 Reset = { "Reset", "Reset %s", "Reset stats for %s." },
296 Ignore = { "Ignore", "Ignore %s", "Ignore %s from now until next reset." } },
297 SkipChannels = { "General", "Trade", "WorldDefense", "LocalDefense", "LookingForGroup" },
298 Possessive = "'s ",
299 HealDetailLink = "%s's %s healed %s hp (%s of their heals)",
300 DamageDetailLink = "%s's %s did %s damage (%s of their damage)",
301 ConfirmLightData = "You've chosen to enable Light Data Mode.\n\nIf you accept, the UI will be reloaded to purge extraneous detail.",
302 ConfirmHeavyData = "You've chosen to disable Light Data Mode.\n\nIf you accept, the UI will be reloaded to initialize detail logging.",
303 LogHeader = "__ Recap generated by %s for %s on %s in %s __",
304 LogFormat = "%25s ! %2s %3s !%8s !%8s %4s !%8s %4s !%8s %4s !%5s !%6s",
305 Log = { "Name", "Lv","Cls", "Time", "Healing", "%%", "Tanking", "%%", "Damage", "%%", "Max", "DPS" },
306 HTMLHeader = "<tr><td colspan=\"12\">Recap generated by %s for %s on %s in %s</td></tr>",
307 HTMLFormat = "<tr align=\"right\"><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s<td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>",
308 HTMLPrefix = "<table CELLPADDING=\"2\">",
309 HTMLSuffix = "</table>",
310 FailedChannel = "Failed to join channel %s. No log created. The most likely cause is server lag. You can manually join %s and try again.",
311 NoFreeChannels = "There are no channels free to create a log. Leave a channel and try again.",
312 LogWritten = "Recap written to WOWChatLog.txt",
313 ConfirmGlobalSettings = "You've chosen to enable global settings.\n\nIf you accept, the UI will be reloaded and information specific to other characters will be lost.",
314 ConfirmSeparateSettings = "You've chosen to disable global settings.\n\nIf you accept, the UI will be reloaded and other characters will store data separately.",
315 SelfPronouns = { ["you"]=1, ["Euc"]=1, ["Euch"]=1, ["vous"]=1 },
316 DataConvert = "|cFFFF44FFRecap: Successfuly converted data sets to 3.2. Before:%d After:%d Change:-%d (%.1f%%)",
317 MyGodStop = "WARNING: Recap is not localized.\nExpect many errors. These are not bugs. They are proof of lack of localization.\nRemove the folder Interface\\AddOns\\Recap to uninstall.",
318 LotsOfDataWarning = "Recap has %d combatants in the \"live\" data. This is a lot.\n\nThis message doesn't mean you are out of memory. It's just for your information. You can turn this warning off in Options->Settings->Data Options in Recap.\n\nTo summon Recap if you don't see it: /recap then click the Options button along the top.\n\nIf you don't want Recap to always be on and accumulate data, Pause it when not in use.\n\nFrequent use of the Reset button, Fight Data Sets and Pause will keep memory use to a minimum."
319 };
320  
321 BINDING_HEADER_RECAP = "Recap";
322  
323 -- add local "You" and "you" if not explicitly declared
324 recap_temp.Local.SelfPronouns[YOU] = 1
325 recap_temp.Local.SelfPronouns[string.lower(YOU)] = 1
326  
327 --[[ localized strings for the xml labels ]]
328  
329 -- Recap.xml
330 RECAP_RECAP = "Recap"
331 RECAP_RESET = "Reset"
332 RECAP_COMBATANTS = "Combatants"
333 RECAP_DIED = "Died"
334 RECAP_TIME = "Time"
335 RECAP_HEAL = "Heal"
336 RECAP_IN = "In"
337 RECAP_OUT = "Out"
338 RECAP_MAX = "Max"
339 RECAP_DPS = "DPS"
340 RECAP_DPS_ALL = "DPS+"
341 RECAP_MISS = "Miss"
342  
343  
344 -- RecapOptions.xml : Display
345 RECAP_SET_NAME = "Set Name"
346 RECAP_SAVED = "Saved"
347 RECAP_RECAP_OPTIONS = "Recap Options"
348 RECAP_DISPLAY = "Display"
349 RECAP_SETTINGS = "Settings"
350 RECAP_DATA_SETS = "Data Sets"
351 RECAP_REPORTS = "Reports"
352 RECAP_OK = "Ok"
353 RECAP_EXIT = "Exit"
354 RECAP_DISPLAY_IN_LIST = "Display In List"
355 RECAP_NUMBERED_LIST = "Numbered List"
356 RECAP_LEVEL_FACTION = "Level/Faction"
357 RECAP_CLASS = "Class"
358 RECAP_DEATHS = "Deaths"
359 RECAP_HEALS = "Heals"
360 RECAP_HEALS_P = "Heals %"
361 RECAP_DAMAGE_IN = "Damage In"
362 RECAP_DAMAGE_IN_P = "Damage In %"
363 RECAP_DAMAGE_OUT = "Damage Out"
364 RECAP_DAMAGE_OUT_P = "Damage Out %"
365 RECAP_MAX_HIT = "Max Hit"
366 RECAP_TOTAL_DPS_IN = "Total DPS In"
367 RECAP_DPS_VS_ALL = "DPS vs All"
368 RECAP_OVERHEALING = "Overhealing"
369 RECAP_DISPLAY_MINIMIZED = "Display Minimized"
370 RECAP_STATUS_LIGHT = "Status Light"
371 RECAP_LAST_ALL = "Last/All"
372 RECAP_YOUR_DPS = "Your DPS"
373 RECAP_TOTAL_DPS_IN = "Total DPS In"
374 RECAP_TOTAL_DPS_OUT = "Total DPS Out"
375 RECAP_BUTTONS = "Buttons"
376 RECAP_BACKGROUND = "Background"
377 RECAP_MAXIMUM_ROWS = "Maximum Rows"
378 RECAP_SHOW_GAUGES = "Show Gauges"
379 RECAP_ANCHOR = "Anchor"
380 RECAP_DISPLAY_PERSONAL_DETAILS = "Personal Details"
381 RECAP_SELF_ETOTAL = "Total"
382 RECAP_SELF_ETOTALP = "Total %"
383 RECAP_SELF_EHITS = "Hits"
384 RECAP_SELF_EHITSAVG = "Avg Hit"
385 RECAP_SELF_EHITSMAX = "Max Hit"
386 RECAP_SELF_ETICKS = "Ticks"
387 RECAP_SELF_ETICKSAVG = "Avg Tick"
388 RECAP_SELF_ETICKSMAX = "Max Tick"
389 RECAP_SELF_ECRITS = "Crits"
390 RECAP_SELF_ECRITSAVG = "Avg Crit"
391 RECAP_SELF_ECRITSMAX = "Max Crit"
392 RECAP_SELF_ECRITSP = "Crit %"
393 RECAP_SELF_EMISS = "Misses"
394 RECAP_SELF_EMISSP = "Miss %"
395 RECAP_SELF_EMAXALL = "Max Damage"
396 -- RecapOptions.xml : Settings
397 RECAP_WINDOW_OPTIONS = "Window Options"
398 RECAP_USE_COLOR = "Use Color"
399 RECAP_SHOW_TOOLTIPS = "Show Tooltips"
400 RECAP_TOOLTIPS_AT_POINTER = "Tooltips at Pointer"
401 RECAP_SHOW_DETAILS = "Show Details"
402 RECAP_AUTO_HIDE_IN_COMBAT = "Auto Hide In Combat"
403 RECAP_AUTO_MINIMIZE = "Auto Minimize"
404 RECAP_AUTO_FADE_WINDOW = "Auto Fade Window"
405 RECAP_FIGHT_OPTIONS = "Fight Options"
406 RECAP_LIMIT_FIGHTS_TO_COMBAT = "Limit Fights to Combat"
407 RECAP_ONLY_FIGHTS_WITH_DURATION = "Only Fights With Duration"
408 RECAP_ONLY_FRIENDLY_COMBATANTS = "Only Friendly Combatants"
409 RECAP_ONLY_UNIQUE_COMBATANTS = "Only Unique Combatants"
410 RECAP_MERGE_PETS_WITH_OWNERS = "Merge Pets With Owners"
411 RECAP_END_FIGHT_IF_IDLE = "End Fight If Idle"
412 RECAP_DATA_OPTIONS = "Data Options"
413 RECAP_LIGHT_DATA_MODE = "Light Data Mode"
414 RECAP_USE_GLOBAL_SETTINGS = "Use Global Settings"
415 RECAP_WARN_DATA = "Warn On Data Growing Too Large"
416 -- RecapOptions.xml : Data Sets
417 RECAP_FIGHT_DATA_SETS = "Fight Data Sets"
418 RECAP_ONLY_SAVE_FRIENDLY_COMBATANTS = "Only Save Friendly Combatants"
419 RECAP_REPLACE_ANY_EXISTING_DATA = "Replace Any Existing Data"
420 RECAP_SAVE = "Save"
421 RECAP_LOAD = "Load"
422 RECAP_DELETE = "Delete"
423 -- RecapOptions.xml : Reports
424 RECAP_FIGHT_REPORTING = "Fight Reporting"
425 RECAP_REPORT_RANKS_IN_MULTIPLE_ROWS = "Report in Multiple Rows (Shift+Click and Autopost)"
426 RECAP_AUTOMATICALLY_POST_RANKS_AFTER_EACH_FIGHT = "Automatically Post Ranks After Each Fight"
427 RECAP_REPORT = "Report:"
428 RECAP_TO = "To:"
429 RECAP_AUTOMATICALLY_POST_CHANGES_IN_LEADERSHIP = "Automatically Post Changes in Leadership"
430 RECAP_SAVE_TO_WOWCHATLOG_TXT = "Write to WOWChatLog.txt"
431 -- RecapOptions.xml : Clipboard
432 RECAP_CLIP_EXPLANATION = "Press CTRL+C to copy the selected text to the clipboard.\nThen go to another window like Notepad or a web forum and CTRL+V to paste it there. Hit ESC or click Ok when done."
433 RECAP_CHANNEL_JOINED_WRITING = "Channel joined. Writing..."
434 RECAP_ACQUIRING_CHANNEL = "Acquiring channel..."
435 RECAP_SAVE_TO_CLIPBOARD_TXT = "Write to Clipboard"
436 RECAP_FORMAT_IN_HTML = "Format in HTML"
437 RECAP_WRITE_ONLY_FRIENDLY = "Write Only Friendly Combatants"
438  
439 -- RecapPanel.xml
440 RECAP_INCOMING = "Incoming"
441 RECAP_DAMAGE = "Damage"
442 RECAP_HITS = "Hits"
443 RECAP_MISSED = "Missed"
444 RECAP_CRITS = "Crits"
445 RECAP_AVERAGE = "Average"
446 RECAP_MELEE = "Melee"
447 RECAP_NON_MELEE = "Non-Melee"
448 RECAP_INCOMING_MELEE_MISSED_DETAIL = "Incoming Melee Missed Detail"
449 RECAP_MISSED = "Missed"
450 RECAP_DODGED = "Dodged"
451 RECAP_PARRIED = "Parried"
452 RECAP_BLOCKED = "Blocked"
453 RECAP_SPELL_OR_ABILITY = "Spell or Ability"
454 RECAP_TOTAL = "Total"
455 RECAP_MISSES = "Misses"
456 RECAP_AVG = "Avg"
457 RECAP_CRIT_P = "Crit%"
458 RECAP_SUMMARY = "Summary"
459 RECAP_LAST_FIGHT = "Last Fight"
460 RECAP_ALL_FIGHTS = "All Fights"
461 RECAP_DMG_IN = "Dmg In"
462 RECAP_DMG_OUT = "Dmg Out"
463 RECAP_TICKS = "Ticks"
464  
465 --[[ -------- DO NOT LOCALIZE THE FOLLOWING SECTION --------- ]]
466  
467 --[[ Defaults ]]
468  
469 recap_temp.DefaultOpt = {
470 -- window state settings
471 ["View"] = { type="Button", value="All" },
472 ["SelfView"] = { type="Flag", value=false },
473 ["SortBy"] = { type="Flag", value="Name" },
474 ["SortDir"] = { type="Flag", value=true },
475 ["State"] = { type="Flag", value="Idle" },
476 ["Visible"] = { type="Flag", value=true },
477 ["Minimized"] = { type="Button", value=false },
478 ["Pinned"] = { type="Button", value=false },
479 ["Paused"] = { type="Button", value=false },
480 ["PanelView"] = { type="Flag", value=1 }, -- current panel tab
481 ["PanelDetail"] = { type="Flag", value="Total" }, -- chosen detail stat column
482 ["PanelAnchor"] = { type="Flag", value=false, Main="TOPLEFT", Panel="TOPRIGHT" };
483 ["GrowUpwards"] = { type="Flag", value=false },
484 ["GrowLeftwards"] = { type="Flag", value=true },
485 -- user settings options
486 ["UseColor"] = { type="Check", value=true },
487 ["ShowTooltips"]= { type="Check", value=true },
488 ["TooltipFollow"] = { type="Check", value=false },
489 ["AutoHide"] = { type="Check", value=false },
490 ["AutoFade"] = { type="Check", value=false },
491 ["AutoFadeTimer"] = { type="Slider", value=5 },
492 ["LimitFights"] = { type="Check", value=false },
493 ["HideZero"] = { type="Check", value=false },
494 ["HideFoe"] = { type="Check", value=false },
495 ["HideYardTrash"] = { type="Check", value=false },
496 ["MergePets"] = { type="Check", value=false },
497 ["IdleFight"] = { type="Check", value=true },
498 ["IdleFightTimer"] = { type="Slider", value=15 },
499 ["MaxRows"] = { type="Slider", value=10 },
500 ["AutoMinimize"] = { type="Check", value=false },
501 ["ShowPanel"] = { type="Check", value=true },
502 ["ShowGauges"] = { type="Check", value=true },
503 ["LightData"] = { type="Check", value=false },
504 ["AutoLeader"] = { type="Check", value=false },
505 ["HTML"] = { type="Check", value=false },
506 ["WriteFriends"] = { type="Check", value=false },
507 ["WarnData"] = { type="Check", value=true },
508 -- fight reporting
509 ["SpamRows"] = { type="Check", value=false },
510 ["MaxRank"] = { type="Slider", value=5 },
511 ["AutoPost"] = { type="Check", value=false, Channel="Self", Stat="DPS" },
512 -- fight data sets
513 ["SaveFriends"] = { type="Check", value=false },
514 ["ReplaceSet"] = { type="Check", value=true },
515 -- list elements
516 ["Ranks"] = { type="Check", value=false, width=20 },
517 ["Faction"] = { type="Check", value=false, width=14 },
518 ["Class"] = { type="Check", value=true, width=14 },
519 ["Kills"] = { type="Check", value=false, width=28 },
520 ["Time"] = { type="Check", value=true, width=45 },
521 ["Heal"] = { type="Check", value=false, width=62 },
522 ["HealP"] = { type="Check", value=false, width=32 },
523 ["Over"] = { type="Check", value=false, width=32 },
524 ["DmgIn"] = { type="Check", value=true, width=62 },
525 ["DmgInP"] = { type="Check", value=false, width=32 },
526 ["DmgOut"] = { type="Check", value=true, width=62 },
527 ["DmgOutP"] = { type="Check", value=false, width=32 },
528 ["MaxHit"] = { type="Check", value=true, width=34 },
529 ["DPS"] = { type="Check", value=true, width=45 },
530 ["DPSIn"] = { type="Check", value=true },
531 ["DPSvsAll"] = { type="Check", value=false, width=45 },
532 -- minimized elements
533 ["MinStatus"] = { type="Check", value=true, minwidth=16 },
534 ["MinView"] = { type="Check", value=false, minwidth=35 },
535 ["MinYourDPS"] = { type="Check", value=true, minwidth=45 },
536 ["MinDPSIn"] = { type="Check", value=false, minwidth=45 },
537 ["MinDPSOut"] = { type="Check", value=false, minwidth=45 },
538 ["MinButtons"] = { type="Check", value=false },
539 ["MinBack"] = { type="Check", value=true },
540 -- person details elements
541 ["ETotal"] = { type="Check", value=true, ewidth=62 },
542 ["ETotalP"] = { type="Check", value=true, ewidth=32 },
543 ["EMaxAll"] = { type="Check", value=true, ewidth=35 },
544 ["EHits"] = { type="Check", value=false, ewidth=45 },
545 ["EHitsAvg"] = { type="Check", value=false, ewidth=35 },
546 ["EHitsMax"] = { type="Check", value=false, ewidth=35 },
547 ["ETicks"] = { type="Check", value=false, ewidth=45 },
548 ["ETicksAvg"] = { type="Check", value=false, ewidth=35 },
549 ["ETicksMax"] = { type="Check", value=false, ewidth=35 },
550 ["ECrits"] = { type="Check", value=false, ewidth=45 },
551 ["ECritsAvg"] = { type="Check", value=false, ewidth=35 },
552 ["ECritsMax"] = { type="Check", value=false, ewidth=35 },
553 ["ECritsP"] = { type="Check", value=true, ewidth=40 },
554 ["EMiss"] = { type="Check", value=false, ewidth=45 },
555 ["EMissP"] = { type="Check", value=true, ewidth=40 }
556 };
557  
558 recap_temp.DefaultDetails = {
559 Hits = 0,
560 HitsDmg = 0,
561 HitsMax = 0,
562 Crits = 0,
563 CritsEvents = 0, -- crit candidates
564 CritDmg = 0,
565 CritsMax = 0,
566 Mitigated = 0,
567 Missed = 0,
568 Immune = 0
569 }
570  
571 --[[ Misc variables ]]
572  
573 recap_temp.Loaded = false;
574 recap_temp.Player = nil;
575 recap_temp.Server = nil;
576 recap_temp.p = nil;
577 recap_temp.Last = {}; -- last fight indexed by name
578 recap_temp.List = {}; -- constructed display list, numerically indexed
579 recap_temp.ListSize = 0; -- number of .List values
580 recap_temp.SelfList = {}; -- list for damage breakdown
581 recap_temp.SelfListSize = 0;
582 recap_temp.FightStart = 0; -- time fight started
583 recap_temp.FightEnd = 0; -- time fight ended
584 recap_temp.IdleTimer = -1; -- 0+ = time since last hit happened
585 recap_temp.FadeTimer = -1; -- 0+ = time since left window
586 recap_temp.UpdateTimer = 0; -- 0+ = time since last window update
587 recap_temp.ColorDmgIn = { r=0.90, g=0.25, b=0.25 };
588 recap_temp.ColorDmgOut = { r=0.25, g=0.90, b=0.25 };
589 recap_temp.ColorHeal = { r=0.50, g=0.75, b=1.00 };
590 recap_temp.ColorGreen = { r=0.25, g=0.90, b=0.25 };
591 recap_temp.ColorRed = { r=0.90, g=0.25, b=0.25 };
592 recap_temp.ColorWhite = { r=0.85, g=0.85, b=0.85 };
593 recap_temp.ColorBlue = { r=0.25, g=0.75, b=1.00 };
594 recap_temp.ColorNone = { r=1.00, g=0.82, b=0.00 };
595 recap_temp.ColorCyan = { r=0.65, g=1.00, b=1.00 };
596 recap_temp.ColorYellow = { r=1.00, g=1.00, b=0.65 };
597 recap_temp.ColorLime = { r=0.65, g=1.00, b=0.65 };
598 recap_temp.ColorPink = { r=1.00, g=0.65, b=1.00 };
599 recap_temp.FightSets = {}; -- list of fight data sets
600 recap_temp.FightSetsSize = 1; -- size of fight list
601 recap_temp.FightSetSelected = 0;
602 recap_temp.FilterIndex = {}; -- list to hold filter finds
603 recap_temp.MinTime = 0.9; -- threshhold to calculate DPS (still accumulates time)
604 recap_temp.UpdateDuration = 0; -- minimized update total time
605 recap_temp.UpdateDmgIn = 0; -- minimized update total dmg in
606 recap_temp.UpdateDmgOut =0; -- minimized update total dmg out
607 recap_temp.Selected = 0; -- index in .List of currently selected combatant, 0 for none
608 recap_temp.DetailSelected = 0; -- index in .Detail of currently selected detail, 0 for none
609 recap_temp.GaugeWidth = 100; -- max width of gauges
610 recap_temp.GaugeMax = 0; -- highest value from which gauges are adjusted
611 recap_temp.GaugeBy = nil -- "DmgInP" "DmgOutP" or "HealP"
612 recap_temp.Leader = nil -- name of current stat leader
613 recap_temp.MaxLogLines = 30; -- maximum number of lines to write to log
614 recap_temp.Writing = false; -- whether we are currently writing to WOWChatLog.txt
615  
616 -- context menus, used by RecapCreateMenu()
617 recap_temp.ColumnMenu = { {Text="Numbered List",Info="Ranks"}, {Text="Level/Faction",Info="Faction"}, {Text="Class",Info="Class"}, { Text="Deaths",Info="Kills"},
618 {Text="Time",Info="Time"}, {Text="Heal",Info="Heal"}, { Text="Heal %",Info="HealP"}, {Text="Overheal",Info="Over"},
619 {Text="Damage In",Info="DmgIn"}, {Text="Damage In %",Info="DmgInP"}, {Text="Damage Out",Info="DmgOut"},
620 {Text="Damage Out %",Info="DmgOutP"}, {Text="Max Hit",Info="MaxHit"}, {Text="DPS",Info="DPS"},
621 {Text="DPS vs All",Info="DPSvsAll"}, {Text="Total DPS In",Info="DPSIn"} };
622 recap_temp.MinMenu = { {Text="Lock Window", Info="Pin"}, {Text="Status Light",Info="MinStatus"}, {Text="Last/All",Info="MinView"},
623 {Text="Your DPS",Info="MinYourDPS"}, {Text="Total DPS In",Info="MinDPSIn"}, {Text="Total DPS Out",Info="MinDPSOut"},
624 {Text="Buttons",Info="MinButtons"}, {Text="Background",Info="MinBack"} };
625 recap_temp.AddMenu = { {Text="Add Friend",Info="MenuAdd"}, {Text="Reset",Info="MenuReset"}, {Text="Ignore",Info="MenuIgnore"} };
626 recap_temp.DropMenu = { {Text="Drop Friend",Info="MenuDrop"}, {Text="Reset",Info="MenuReset"}, {Text="Ignore",Info="MenuIgnore"} };
627 recap_temp.DetailMenu = { {Text="Total Damage",Info="Total"}, {Text="Average Hit",Info="Avg"}, {Text="Max Hit",Info="Max"}, {Text="Crit Rate",Info="Crits"}, {Text="Miss/Overheal",Info="Miss"} };
628 recap_temp.Menu = recap_temp.ColumnMenu; -- current dropdown menu
629 recap_temp.EffectMenu = { {Text="Reset Effect",Info="ResetEffect"} }
630 recap_temp.EffectOptMenu = { {Text="Total",Info="ETotal"}, {Text="Total %",Info="ETotalP"}, {Text="Max Dmg",Info="EMaxAll"},
631 {Text="Hits",Info="EHits"}, {Text="Avg Hit",Info="EHitsAvg"}, {Text="Max Hit",Info="EHitsMax"},
632 {Text="Ticks",Info="ETicks"}, {Text="Avg Tick",Info="ETicksAvg"}, {Text="Max Tick",Info="ETicksMax"},
633 {Text="Crits",Info="ECrits"}, {Text="Avg Crit",Info="ECritsAvg"}, {Text="Max Crit",Info="ECritsMax"},
634 {Text="Crit Rate",Info="ECritsP"}, {Text="Misses",Info="EMiss"}, {Text="Miss Rate",Info="EMissP"} }
635  
636  
637 recap_temp.ClassIcons = {
638 ["WARRIOR"] = { left=0.025, right=0.225, top=0.025, bottom=0.225 },
639 ["MAGE"] = { left=0.275, right=0.475, top=0.025, bottom=0.225 },
640 ["ROGUE"] = { left=0.525, right=0.725, top=0.025, bottom=0.225 },
641 ["DRUID"] = { left=0.775, right=0.975, top=0.025, bottom=0.225 },
642 ["HUNTER"] = { left=0.025, right=0.225, top=0.275, bottom=0.475 },
643 ["SHAMAN"] = { left=0.275, right=0.475, top=0.275, bottom=0.475 },
644 ["PRIEST"] = { left=0.525, right=0.725, top=0.275, bottom=0.475 },
645 ["WARLOCK"] = { left=0.775, right=0.975, top=0.275, bottom=0.475 },
646 ["PALADIN"] = { left=0.025, right=0.225, top=0.525, bottom=0.725 },
647 ["Pet"] = { left=0.275, right=0.475, top=0.525, bottom=0.725 }
648 };
649  
650 recap_temp.FactionIcons = {
651 ["Alliance"] = "Interface\\TargetingFrame\\UI-PVP-Alliance",
652 ["Horde"] = "Interface\\TargetingFrame\\UI-PVP-Horde"
653 };
654  
655 -- auto-post drop down choices
656 recap_temp.StatDropList = { "DPS", "Damage", "Tanking", "Healing" };
657 recap_temp.ChannelDropList = { "Self", "Party", "Say", "Raid", "Guild" };
658  
659 -- to help keep saved sets from bloat, commonly used strings will be replaced
660 -- with indexes to this table. The indexes need to remain in this order. Add
661 -- new keys to the end.
662 recap_temp.Keys = {
663 "Alliance", "Horde",
664 "WARRIOR", "MAGE", "ROGUE", "DRUID", "HUNTER",
665 "SHAMAN", "PRIEST", "WARLOCK", "PALADIN", "Pet"
666 }
667  
668 -- converts string.format to a string.find pattern: "%s hits %s for %d." to "(.+) hits (.+) for (%d+)"
669 local function Recap_Localize(filter)
670  
671 local i,k,field,idx;
672  
673 for i in filter do
674 filter[i].pattern = string.gsub(filter[i].pattern,"%.$",""); -- strip trailing .
675 filter[i].pattern = string.gsub(filter[i].pattern,"%%s","(.+)"); -- %s to (.+)
676 filter[i].pattern = string.gsub(filter[i].pattern,"%%d","(%%d+)"); -- %d to (%d+)
677 if string.find(filter[i].pattern,"%$") then
678 -- entries need reordered, ie: SPELLMISSOTHEROTHER = "%2$s von %1$s verfehlt %3$s.";
679  
680 field = {}; -- fills with ordered list of $s as they appear
681 idx = 1; -- incremental index into field[]
682  
683 for k in string.gfind(filter[i].pattern,"%%(%d)%$.") do
684 field[idx] = k;
685 idx = idx + 1
686 end
687 for k in filter[i] do
688 if tonumber(filter[i][k]) and tonumber(filter[i][k])<6 then
689 filter[i][k] = tonumber(field[filter[i][k]])
690 end
691 end
692  
693 filter[i].pattern = string.gsub(filter[i].pattern,"%%%d%$s","(.+)");
694 filter[i].pattern = string.gsub(filter[i].pattern,"%%%d%$d","(%%d+)");
695 end
696  
697 end
698  
699 end
700  
701 -- convert GlobalString patterns to string.find-usable patterns for all filters
702 Recap_Localize(recap_temp.Filter)
703 Recap_Localize(recap_temp.HealFilter)
704 Recap_Localize(recap_temp.DeathFilter)
705  
706 if ((GetLocale()=="frFR") or (GetLocale()=="deDE")) and UIErrorsFrame then
707 UIErrorsFrame:AddMessage(recap_temp.Local.MyGodStop)
708 end
709