vanilla-wow-addons – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 --[[
2 --
3 -- DamageMeters Localization Data (ENGLISH)
4 --
5 --]]
6  
7  
8 -------------------------------------------------------------------------------
9  
10 -- General --
11 DamageMeters_PRINTCOLOR = "|cFF8F8FFF"
12  
13 -- Bindings --
14 BINDING_HEADER_DAMAGEMETERSHEADER = "DamageMeters";
15 BINDING_NAME_DAMAGEMETERS_TOGGLESHOW = "Toggle Visible";
16 BINDING_NAME_DAMAGEMETERS_CYCLEQUANT = "Cycle Visible Quantity";
17 BINDING_NAME_DAMAGEMETERS_CYCLEQUANTBACK= "Cycle Visible Quantity Backwards";
18 BINDING_NAME_DAMAGEMETERS_CLEAR = "Clear Data";
19 BINDING_NAME_DAMAGEMETERS_TOGGLEPAUSED = "Toggle Paused";
20 BINDING_NAME_DAMAGEMETERS_SHOWREPORTFRAME = "Show Report Frame";
21 BINDING_NAME_DAMAGEMETERS_SWAPMEMORY = "Swap Memory";
22 BINDING_NAME_DAMAGEMETERS_TOGGLESHOWMAX = "Toggle Show Max Bars";
23 BINDING_NAME_DAMAGEMETERS_SYNCREADY = "Send Sync Ready";
24 BINDING_NAME_DAMAGEMETERS_TOGGLESHOWFIGHTASPS = "Toggle Show Fight Data As Per/Second";
25 BINDING_NAME_DAMAGEMETERS_TOGGLENORMALANDFIGHT = "Toggle Between Normal and Fight Quantities";
26 BINDING_NAME_DAMAGEMETERS_TOGGLEMINIMODE = "Toggle Mini Mode";
27 BINDING_NAME_DAMAGEMETERS_SYNCPAUSE = "Sync Pause";
28 BINDING_NAME_DAMAGEMETERS_SYNCUNPAUSE = "Sync Unpause";
29 BINDING_NAME_DAMAGEMETERS_SYNCCLEAR = "Sync Clear";
30  
31 --[[ work in progress
32 -- command, function, help string
33 DM_HELPDEF = {
34 -- Main commands.
35 { "help", DamageMeters_Help, DM_CMD_HELP },
36 { "cmd", DamageMeters_ListCommands, DM_CMD_CMD },
37 { "version", DamageMeters_ShowVersion, DM_CMD_VERSION },
38 { "show", DamageMeters_ToggleShow, DM_CMD_SHOW },
39 { "hide", DamageMeters_Hide, DM_CMD_HIDE },
40 { "clear", DamageMeters_Clear, DM_CMD_CLEAR },
41 { "report", DamageMeters_Report, DM_CMD_REPORT },
42 { "sort", DamageMeters_SetSort, DM_CMD_SORT },
43 { "count", DamageMeters_SetCount, DM_CMD_SETCOUNT },
44 { "autocount", DamageMeters_SetAutoCount, DM_CMD_AUTOCOUNT },
45 { "lock", DamageMeters_ToggleLock, DM_CMD_LOCK },
46 { "pause", DamageMeters_TogglePause, DM_CMD_PAUSE },
47 { "ready", DamageMeters_SetReady, DM_CMD_READY },
48 { "resetpos", DamageMeters_ResetPos, DM_CMD_RESETPOS },
49 { "pop", DamageMeters_Populate, DM_CMD_POP },
50 { "listbanned", DamageMeters_ListBanned, DM_CMD_LISTBANNED },
51 { "clearbanned", DamageMeters_ClearBanned, DM_CMD_CLEARBANNED },
52  
53 -- Memory
54 { "save", DamageMeters_Save, DM_CMD_SAVE },
55 { "restore", DamageMeters_Restore, DM_CMD_RESTORE },
56 { "swap", DamageMeters_Swap, DM_CMD_SWAP },
57 { "memclear", DamageMeters_MemClear, DM_CMD_MEMCLEAR },
58  
59 -- These all have menu options.
60 { "color", DamageMeters_SetColorScheme, DM_CMD_COLOR },
61 { "quant", DamageMeters_SetQuantity, DM_CMD_QUANT },
62 { "text", DamageMeters_SetTextOptions, DM_CMD_TEXT },
63 { "visinparty", DamageMeters_SetVisibleInParty, DM_CMD_VISINPARTY },
64 { "lockpos", DamageMeters_ToggleLockPos, DM_CMD_LOCKPAUSE },
65 { "grouponly", DamageMeters_ToggleGroupMembersOnly, DM_CMD_GROUPONLY },
66 { "addpettoplayer", DamageMeters_ToggleAddPetToPlayer, DM_CMD_ADDPETTOPLAYER },
67 { "resetoncombat", DamageMeters_ToggleResetWhenCombatStarts, DM_CMD_RESETONCOMBAT },
68 { "total", DamageMeters_ToggleTotal, DM_CMD_TOTAL },
69 { "showmax", DamageMeters_ToggleMaxBars, DM_CMD_SHOWMAX },
70  
71 -- Sync commands.
72 { "sync", DamageMeters_Sync, DM_CMD_SYNC },
73 { "syncchan", DamageMeters_SyncChan, DM_CMD_SYNCCHAN },
74 { "syncleave", DamageMeters_SyncLeaveChanCmd, DM_CMD_SYNCLEAVE },
75 { "syncsend", DamageMeters_SyncReport, DM_CMD_SYNCSEND },
76 { "syncrequest", DamageMeters_SyncRequest, DM_CMD_SYNCREQUEST },
77 { "syncclear", DamageMeters_SyncClear, DM_CMD_SYNCCLEAR },
78 { "syncmsg", DamageMeters_SendSyncMsg, DM_CMD_SYNCMSG },
79 { "syncbroadcastchan", DamageMeters_SyncBroadcastChan, DM_CMD_SYNCBROADCASTCHAN },
80 { "syncping", DamageMeters_SyncPingRequest, DM_CMD_SYNCPING },
81 { "syncpause", DamageMeters_SyncPause, DM_CMD_SYNCPAUSE },
82 { "syncunpause", DamageMeters_SyncUnpause, DM_CMD_SYNCUNPAUSE },
83 { "syncready", DamageMeters_SyncReady, DM_CMD_SYNCREADY },
84 { "synckick", DamageMeters_SyncKick, DM_CMD_SYNCKICK },
85 { "synclabel", DamageMeters_SyncLabel, DM_CMD_SYNCLABEL },
86 { "syncstart", DamageMeters_SyncStart, DM_CMD_SYNCSTART },
87 { "synchalt", DamageMeters_SyncHalt, DM_CMD_SYNCHALT },
88 { "synce", DamageMeters_SyncEmote, DM_CMD_SYNCEMOTE },
89  
90 -- Debug commands.
91 { "reset", DamageMeters_Reset, DM_CMD_RESET },
92 { "test", DamageMeters_Test, DM_CMD_TEST },
93 { "add", DamageMeters_Add, DM_CMD_ADD },
94 { "dumptable", DamageMeters_DumpTable, DM_CMD_DUMPTABLE },
95 { "debug", DM_ToggleDMPrintD, DM_CMD_DEBUG },
96 { "dumpmsg", DM_DumpMsg, DM_CMD_DUMPMSG },
97 { "print", DM_ConsolePrint, DM_CMD_PRINT },
98 };
99 ]]--
100  
101 -- Help --
102 DamageMeters_helpTable = {
103 "The following commands can be entered into the console:",
104 "/dmhelp : Gives help on using DamageMeters.",
105 "/dmcmd : Lists available /dm (DamageMeters) commands.",
106 "/dmshow : Toggles whether or not the meters are visible. Note that data collection continues when meters are not visible.",
107 "/dmhide : Hides the meters.",
108 "/dmclear [#] : Removes entries from the bottom of the list, leaving #. If # not specified, entire list is cleared.",
109 "/dmreport [help] [total] [c/s/p/r/w/h/g/f[#]] [whispertarget/channelNAME] - Prints a report of the current data: use '/dmreport help' for details.",
110 "/dmsort [#] - Sets sorting style. Specify no number for a list of available styles.",
111 "/dmcount [#] - Sets number of bars visible at once. If # not given shows the maximum possible.",
112 "/dmsave - Saves the current table internally.",
113 "/dmrestore - Restores a previously saved table, overwriting any new data.",
114 --"/dmmerge - Merges a previously saved table with any existing data.",
115 "/dmswap - Swaps the previously saved table with the current one.",
116 "/dmmemclear - Clears the saved table.",
117 "/dmresetpos - Resets the position of the window (helpful incase you lose it)%.",
118 "/dmtext 0/<[r][n][p][l][v]> - Sets what text should be shown on the bars. r - Rank. n - Player name. p - Percentage of total. l - Percentage of leader. v - Value.",
119 "/dmcolor # - Sets the color scheme for the bars. Specify no # for a list of options.",
120 "/dmquant # - Sets the quantity the bars should use. Specify no # for a list of options.",
121 "/dmvisinparty [y/n] - Sets whether or not the window should only be visible while you are in a party/raid. Specify no argument to toggle.",
122 "/dmautocount # - If # is greater than zero, then the window will show as many bars as it has information for up to #. If # is zero, it turns off the auto-count function.",
123 "/dmlistbanned - Lists all banned entities.",
124 "/dmclearbanned - Clears list of all banned entities.",
125  
126 "/dmsync [d#] [e] - Causes you to synchronize your data with other users using the same sync channel. (Calls dmsyncsend and dmsyncrequest.) If d specified, the sync will be delayed that many seconds. If e specified, event data will be sent/requested.",
127 --"/dmsyncchan - Sets the name of the channel to use for synchronizing.",
128 --"/dmsyncleave - Leaves the current sync chan.",
129 "/dmsyncsend - Sends sync information on the sync channel.",
130 "/dmsyncrequest - Sends request for an automatic dmsync to other people using your sync channel.",
131 "/dmsyncclear - Sends request for everyone to clear their data.",
132 "/dmsyncmsg msg - Sends a message to other people in the same syncchan. Can also use /dmm.",
133 --"/dmsyncbroadcastchan - Broadcasts the current sync channel to your party or raid. Can also use /dmsyncb.",
134 "/dmsyncping - 'Pings' the other people in the sync chan, causing them to respond with their current version of DM.",
135 "/dmsyncpause - Makes other DMs on your syncchan pause.",
136 "/dmsyncunpause - Makes other DMs on your syncchan unpause.",
137 "/dmsyncready - Transmits a command to make everyone in the sync chan go into the ready state.",
138 --"/dmsynckick player - Kickes player out of the sync channel.",
139 "/dmsynclabel label - Labels the current session. (Index defaults to 1).",
140 "/dmsyncstart label - Convenience function which does dmsynclabel, dmsyncpause, and dmsyncclear automatically.",
141 "/dmsynchalt - Aborts any syncing in progress (clears incoming and outgoing message queues).",
142  
143 "/dmpop - Populates it with your current party/raid members (though will not remove any existing entries)%.",
144 "/dmlock - Toggles whether or not the list is locked. New people cannot be added to a locked list, but people already in can are updated.",
145 "/dmpause - Toggles whether or not the parsing of data is to occur.",
146 "/dmlockpos - Toggles whether or not the position of the window is locked.",
147 "/dmgrouponly - Toggles whether or not to reject anyone who is not in your raid/party. (Your pet will be monitored regardless of this setting.)",
148 "/dmaddpettoplayer - Toggles whether or not to consider pet's data as coming directly from the player.",
149 "/dmresetoncombat = Toggles whether or not to reset data when combat starts.",
150 "/dmversion - Shows version information.",
151 "/dmtotal - Toggles display of the total display.",
152 "/dmshowmax - Toggles whether or not to show the max number of bars.",
153 };
154  
155 -- Filters --
156 DamageMeters_Filter_STRING1 = "party members";
157 DamageMeters_Filter_STRING2 = "all friendly characters";
158  
159 -- Relationships --
160 DamageMeters_Relation_STRING = {
161 "Self",
162 "Your Pet",
163 "Party",
164 "Friendly"};
165  
166 -- Color Schemes --
167 DamageMeters_colorScheme_STRING = {
168 "Relationship",
169 "Class Colors"};
170  
171 -- Quantities --
172 DM_QUANTSTRING_DAMAGEDONE = "Damage Done";
173 DM_QUANTSTRING_HEALINGDONE = "Healing Done";
174 DM_QUANTSTRING_DAMAGETAKEN = "Damage Taken";
175 DM_QUANTSTRING_HEALINGTAKEN = "Healing Taken";
176 DM_QUANTSTRING_DAMAGEDONE_FIGHT = "Fight Damage Done";
177 DM_QUANTSTRING_HEALINGDONE_FIGHT = "Fight Healing Done";
178 DM_QUANTSTRING_DAMAGETAKEN_FIGHT = "Fight Damage Taken";
179 DM_QUANTSTRING_HEALINGTAKEN_FIGHT = "Fight Healing Taken";
180 DM_QUANTSTRING_DAMAGEDONE_PS = "DPS";
181 DM_QUANTSTRING_HEALINGDONE_PS = "HPS";
182 DM_QUANTSTRING_DAMAGETAKEN_PS = "DTPS";
183 DM_QUANTSTRING_HEALINGTAKEN_PS = "HTPS";
184 DM_QUANTSTRING_IDLETIME = "Idle Time";
185 DM_QUANTSTRING_NETDAMAGE = "Net Damage";
186 DM_QUANTSTRING_NETHEALING = "Net Healing";
187 DM_QUANTSTRING_DAMAGEPLUSHEALING = "Damage+Healing";
188 DM_QUANTSTRING_CURING = "Curing Done";
189 DM_QUANTSTRING_CURING_FIGHT = "Fight Curing Done";
190 DM_QUANTSTRING_CURING_PS = "Cures PS";
191 DM_QUANTSTRING_OVERHEAL = "Overhealing";
192 DM_QUANTSTRING_OVERHEAL_FIGHT = "Fight Overhealing";
193 DM_QUANTSTRING_OVERHEAL_PS = "OHPS";
194 DM_QUANTSTRING_HEALTH = "Health";
195 DM_QUANTSTRING_OVERHEAL_PERCENTAGE = "Overheal %";
196 DM_QUANTSTRING_ABSHEAL = "Raw Heal Done";
197 DM_QUANTSTRING_ABSHEAL_FIGHT = "Fight Raw Heal Done";
198 DM_QUANTSTRING_ABSHEAL_PS = "Raw. HPS";
199  
200 DMI_NAMES = {
201 DM_QUANTSTRING_DAMAGEDONE,
202 DM_QUANTSTRING_HEALINGDONE,
203 DM_QUANTSTRING_DAMAGETAKEN,
204 DM_QUANTSTRING_HEALINGTAKEN,
205 DM_QUANTSTRING_CURING,
206 DM_QUANTSTRING_OVERHEAL,
207 DM_QUANTSTRING_ABSHEAL,
208 };
209  
210 DM_QUANTABBREV_DAMAGEDONE = "D";
211 DM_QUANTABBREV_HEALINGDONE = "H";
212 DM_QUANTABBREV_DAMAGETAKEN = "DT";
213 DM_QUANTABBREV_HEALINGTAKEN = "HT";
214 DM_QUANTABBREV_CURING = "Cu";
215 DM_QUANTABBREV_OVERHEAL = "Oh";
216 DM_QUANTABBREV_ABSHEAL = "RawHD";
217  
218 DM_QUANTABBREV_DAMAGEDONE_PS = "DPS";
219 DM_QUANTABBREV_HEALINGDONE_PS = "HPS";
220 DM_QUANTABBREV_DAMAGETAKEN_PS = "DTPS";
221 DM_QUANTABBREV_HEALINGTAKEN_PS = "HTPS";
222 DM_QUANTABBREV_CURING_PS = "CuPS";
223 DM_QUANTABBREV_OVERHEAL_PS = "OHPS";
224 DM_QUANTABBREV_ABSHEAL_PS = "RawHDPS";
225  
226 DM_QUANTABBREV_IDLETIME = "IT";
227 DM_QUANTABBREV_NETDAMAGE = "NetD";
228 DM_QUANTABBREV_NETHEALING = "NetH";
229 DM_QUANTABBREV_DAMAGEPLUSHEALING = "D+H";
230 DM_QUANTABBREV_HEALTH = "HP";
231 DM_QUANTABBREV_OVERHEAL_PERCENTAGE = "Oh%";
232  
233  
234 -- Sort --
235 DamageMeters_Sort_STRING = {
236 "Decreasing",
237 "Increasing",
238 "Alphabetical"};
239  
240 -- Class Names
241 function DamageMeters_GetClassColor(className)
242 return RAID_CLASS_COLORS[string.upper(className)];
243 end
244  
245 -- This associates the string names of damage types (schools) with the DM_DMGTYPE constants.
246 DM_DMGNAMETOID = {
247 Arcane = DM_DMGTYPE_ARCANE,
248 Fire = DM_DMGTYPE_FIRE,
249 Nature = DM_DMGTYPE_NATURE,
250 Frost = DM_DMGTYPE_FROST,
251 Shadow = DM_DMGTYPE_SHADOW,
252 Holy = DM_DMGTYPE_HOLY,
253 Physical = DM_DMGTYPE_PHYSICAL,
254 };
255  
256 DM_DMGTYPENAMES = {
257 "Arcane",
258 "Fire",
259 "Nature",
260 "Frost",
261 "Shadow",
262 "Holy",
263 "Physical",
264 "Default",
265 };
266  
267 -- Errors --
268 DM_ERROR_INVALIDARG = "DamageMeters: Invalid argument(s).";
269 DM_ERROR_MISSINGARG = "DamageMeters: Argument(s) missing.";
270 DM_ERROR_NOSAVEDTABLE = "DamageMeters: No saved table.";
271 DM_ERROR_BADREPORTTARGET = "DamageMeters: Invalid report target = ";
272 DM_ERROR_MISSINGWHISPERTARGET = "DamageMeters: Whisper specified but no player given.";
273 DM_ERROR_MISSINGCHANNEL = "DamageMeters: Channel specified but no number given.";
274 DM_ERROR_NOSYNCCHANNEL = "DamageMeters: Sync channel must be specified with dmsyncchan before calling sync functions.";
275 DM_ERROR_JOINSYNCCHANNEL = "DamageMeters: You must join sync channel ('%s') before you can call sync functions.";
276 DM_ERROR_SYNCTOOSOON = "DamageMeters: Sync request too soon after last one; ignoring.";
277 DM_ERROR_POPNOPARTY = "DamageMeters: Cannot populate table; you are not in a party or raid.";
278 DM_ERROR_NOROOMFORPLAYER = "DamageMeters: Cannot merge pet data with players because cannot add player to list (list full?).";
279 DM_ERROR_BROADCASTNOGROUP = "DamageMeters: Must be in a party or raid to broadcast the sync channel.";
280 DM_ERROR_NOPARTY = "DamageMeters: You are not in a party.";
281 DM_ERROR_NORAID = "DamageMeters: You are not in a raid.";
282  
283 -- Messages --
284 DM_MSG_SETQUANT = "DamageMeters: Setting visible quantity to ";
285 DM_MSG_CURRENTQUANT = "DamageMeters: Current quantity = ";
286 DM_MSG_CURRENTSORT = "DamageMeters: Current sort = ";
287 DM_MSG_SORT = "DamageMeters: Setting sort to ";
288 DM_MSG_CLEAR = "DamageMeters: Removing entries %d to %d.";
289 --DM_MSG_REMAINING = "DamageMeters: %d items remaining.";
290 DM_MSG_REPORTHEADER = "DamageMeters: <%s> report on %d/%d sources:";
291 DM_MSG_PLAYERREPORTHEADER = "DamageMeters: Player report on %s:";
292 DM_MSG_SETCOUNTTOMAX = "DamageMeters: No count argument specified, setting to max.";
293 DM_MSG_SETCOUNT = "DamageMeters: New bar count = ";
294 DM_MSG_RESETFRAMEPOS = "DamageMeters: Resetting frame position.";
295 DM_MSG_SAVE = "DamageMeters: Saving table.";
296 DM_MSG_RESTORE = "DamageMeters: Restoring saved table.";
297 DM_MSG_MERGE = "DamageMeters: Merging saved table with current.";
298 DM_MSG_SWAP = "DamageMeters: Swapping normal (%d) and saved (%d) table.";
299 DM_MSG_SETCOLORSCHEME = "DamageMeters: Setting color scheme to ";
300 DM_MSG_TRUE = "true";
301 DM_MSG_FALSE = "false";
302 DM_MSG_SETVISINPARTY = "DamageMeters: Visible-only-in-party is set to ";
303 DM_MSG_SETAUTOCOUNT = "DamageMeters: Setting new autocount limit to ";
304 DM_MSG_LISTBANNED = "DamageMeters: Listing banned entities:";
305 DM_MSG_CLEARBANNED = "DamageMeters: Clearing all banned entities.";
306 DM_MSG_HOWTOSHOW = "DamageMeters: Hiding window. Use /dmshow to make it visible again.";
307 DM_MSG_SYNCCHAN = "DamageMeters: Synchronization channel name set to ";
308 DM_MSG_SYNCREQUESTACK = "DamageMeters: Sync requested from player ";
309 DM_MSG_SYNCREQUESTACKEVENTS = "DamageMeters: Sync (with events) requested from player ";
310 DM_MSG_SYNC = "DamageMeters: Sending sync data.";
311 DM_MSG_SYNCEVENTS = "DamageMeters: Sending sync data (with events).";
312 DM_MSG_LOCKED = "DamageMeters: List now locked.";
313 DM_MSG_NOTLOCKED = "DamageMeters: List unlocked.";
314 DM_MSG_PAUSED = "DamageMeters: Parsing paused.";
315 DM_MSG_UNPAUSED = "DamageMeters: Parsing resumed.";
316 DM_MSG_POSLOCKED = "DamageMeters: Position locked.";
317 DM_MSG_POSNOTLOCKED = "DamageMeters: Position unlocked.";
318 DM_MSG_CLEARRECEIVED = "DamageMeters: Clear request received from player ";
319 DM_MSG_ADDINGPETTOPLAYER = "DamageMeters: Now treating pet data as though it was yours.";
320 DM_MSG_NOTADDINGPETTOPLAYER = "DamageMeters: Pet data now treated separately from yours.";
321 DM_MSG_PETMERGE = "DamageMeters: Merging pet's (%s) information into your's.";
322 DM_MSG_RESETWHENCOMBATSTARTSCHANGE = "DamageMeters: Reset when combat starts = ";
323 DM_MSG_SHOWFIGHTASPS = "DamageMeters: Showing fight data as per/second = ";
324 DM_MSG_COMBATDURATION = "Combat duration = %.2f seconds.";
325 DM_MSG_RECEIVEDSYNCDATA = "DamageMeters: Receiving Sync data from %s.";
326 DM_MSG_TOTAL = "TOTAL";
327 DM_MSG_VERSION = "DamageMeters Version %s Active.";
328 DM_MSG_REPORTHELP = "The /dmreport command consists of three parts:\n\n1) The destination character. This can be one of the following letters:\n c - Console (only you can see it)%.\n s - Say\n p - Party chat\n r - Raid chat\n g - Guild chat\n o - Guild Officer chat\n h - Chat cHannel. /dmreport h mychannel\n w - Whisper to player. /dmreport w dandelion\n f - Frame: Shows the report in this window.\n\nIf the letter is lower case the report will be in reverse order (lowest to highest)%.\n\n2) Optionally, the number of people to limit it to. This number goes right after the destination character.\nExample: /dmreport p5.\n\n3) By default, reports are on the currently visible quantity only. If the word 'total' is specified before the destination character, though, the report will be on the totals for every quantity. 'Total' reports are formatted so that they look good when cut-and-paste into a text file, and so work best with the Frame destination.\nExample: /dmreport total f\n\nExample: Whisper to player 'dandelion' the top three people in the list:\n/dmreport w3 dandelion";
329 DM_MSG_COLLECTORS = "Data collectors: (%s)";
330 DM_MSG_ACCUMULATING = "DamageMeters: Accumulating data in memory register.";
331 DM_MSG_REPORTTOTALDPS = "Total = %.1f (%.1f visible)";
332 DM_MSG_REPORTTOTAL = "Total = %d (%d visible)";
333 DM_MSG_SYNCMSG = "[DMM] |Hplayer:%s|h[%s]|h: %s";
334 DM_MSG_MEMCLEAR = "DamageMeters: Saved table cleared.";
335 DM_MSG_MAXBARS = "DamageMeters: Setting show-max-bars to %s.";
336 DM_MSG_MINBARS = "DamageMeters: Setting minimized to %s.";
337 DM_MSG_LEADERREPORTHEADER = "DamageMeters: Leaders Report on %d/%d Sources:\n #";
338 -- This causes disconnects...maybe its too long? ..maybe WoW doesn't like the \n character?
339 --DM_MSG_FULLREPORTHEADER = "DamageMeters: Full Report on %d/%d Sources:\nPlayer Damage Healing Damaged Healed Hits Crits\n_______________________________________________________________________________";
340 DM_MSG_FULLREPORTHEADER1 = "DamageMeters: Full Report on %d/%d Sources:";
341 DM_MSG_FULLREPORTHEADER2 = "Player Damage Healing Damaged Healed Hits Crits";
342 DM_MSG_FULLREPORTHEADER3 = "_______________________________________________________________________________";
343 DM_MSG_CLEARACKNOWLEDGED = "DamageMeters: Clear acknowledged from player %s.";
344 DM_MSG_EVENTREPORTHEADER = "DamageMeters: Event report on %d/%d sources:\n";
345 DM_MSG_PLAYERONLYEVENTDATAOFF = "DamageMeters: Recording all player's event data.";
346 DM_MSG_PLAYERONLYEVENTDATAON = "DamageMeters: Now recording only your own event data.";
347 DM_MSG_SYNCCHANBROADCAST = "<DamageMeters>: Setting this group's sync channel to: ";
348 DM_MSG_SYNCINGROUPON = "DamageMeters: You will now only sync with group members.";
349 DM_MSG_SYNCINGROUPOFF = "DamageMeters: You can now sync with anyone.";
350 DM_MSG_AUTOSYNCJOINON = "DamageMeters: You will automatically join broadcasted sync channels.";
351 DM_MSG_AUTOSYNCJOINOFF = "DamageMeters: You will no longer automatically join broadcasted sync channels.";
352 DM_MSG_SYNCHELP = "DamageMeters Sync'ing (short for synchronization) is a process whereby multiple DM users can transmit their data to each other. Its primary use is for instances where the players are often far from each other and thus miss some of each other's combat messages.\n\nSync Quick-Start Guide:\n\n1) Someone (I'll call her the Sync Leader) chooses a channel name and joins it, ie. /dmsyncchan ourchannel.\n2) The Sync Leader then calls /dmsyncbroadcastchan (or just /dmsyncb). Anyone who is running a sufficiently recent version of DM will automatically be joined into that channel.\n3) The Sync Leader choses a name for the session--for example, Onyxia-- then calls /dmsyncstart with that name. (/dmsyncstart Onyxia_. This will clear everyone's data and pause them, as well as mark them with this label.\n3) Once everyone is in the channel, but before the activity begins, the Sync Leader should call /dmsyncready or /dmsyncunpause so that data collection can happen.\n4) Play! Collect data!\n5) Finally, the Sync Leader calls /dmsync whenever she wants the raid to share data. Since it can cause a little slowdown it is best to do this between fights (though not necessarily between every fight). If event data is desired, call (/dmsync e), though it takes a lot longer to sync.\n\nNote: There is nothing special about the Sync Leader: any player can perform any of these commands. It just seems simpler to have one person in charge of it.";
353 DM_MSG_PINGING = "DamageMeters: Pinging other players...";
354 DM_MSG_SYNCONLYPLAYEREVENTSON = "DamageMeters: Only your event information will be transmitted.";
355 DM_MSG_SYNCONLYPLAYEREVENTSOFF = "DamageMeters: All player's event information will be transmitted.";
356 DM_MSG_SYNCPAUSE = "DamageMeters: Pause command recieved from %s.";
357 DM_MSG_SYNCUNPAUSE = "DamageMeters: Unpause command recieved from %s.";
358 DM_MSG_SYNCREADY = "DamageMeters: Ready command recieved from %s.";
359 DM_MSG_SYNCPAUSEREQ = "DamageMeters: Transmitting pause command...";
360 DM_MSG_SYNCUNPAUSEREQ = "DamageMeters: Transmitting unpause command...";
361 DM_MSG_SYNCREADYREQ = "DamageMeters: Transmitting ready command...";
362 DM_MSG_PRESSCONTROLEVENT = "Press Control To See Event Data";
363 DM_MSG_PRESSCONTROLQUANTITY = "Press Control To See Quantity Data";
364 DM_MSG_PRESSALTSINGLEQUANTITY = "Press Alt To See Only Current Quantity";
365 DM_MSG_PAUSEDTITLE = "Paused";
366 DM_MSG_READYTITLE = "Ready";
367 DM_MSG_EVENTDATALEVEL = {
368 "DamageMeters: Parsing no event data.",
369 "DamageMeters: Parsing player's event data only.",
370 "DamageMeters: Parsing all players' event data."
371 };
372 DM_MSG_SYNCEVENTDATALEVEL = {
373 "DamageMeters: Transmitting no event data.",
374 "DamageMeters: Transmitting player's event data only.",
375 "DamageMeters: Transmitting all players' event data."
376 };
377 DM_MSG_HELP = "- Enter /dmcmd for a list of commands.\n- If you cannot see the DM window, try /dmresetpos.";
378 DM_MSG_LEAVECHAN = "DamageMeters: Leaving sync channel '%s'.";
379 DM_MSG_READYUNPAUSING = "DamageMeters: Damage event received, transmitting sync unpause command...";
380 DM_MSG_KICKED = "DamageMeters: You have been removed from the sync channel by %s.";
381 DM_MSG_SETLABEL = "DamageMeters: Session label set to <%s>. (Index = %d)";
382 DM_MSG_SESSIONMISMATCH = "DamageMeters: Sync received with different session information. Auto-clearing.";
383 DM_MSG_SHOWINGFIGHTEVENTSONLY = "Showing events for current fight only.";
384 DM_MSG_SYNCCLEARREQ = "DamageMeters: Transmitting clear request...";
385 DM_MSG_CURRENTBARWIDTH = "DamageMeters: Current bar width = %d.\nCall (/dmsetbarwidth default) to reset.";
386 DM_MSG_NEWBARWIDTH = "DamageMeters: New bar width = %d.";
387 DM_MSG_PLAYERJOINEDSYNCCHAN = "DamageMeters: Player %s joined sync channel. [Version %s]";
388 DM_MSG_SYNCSESSIONMISMATCH = "Player %s's session (%s:%d) mismatched: Player's data cleared.";
389 DM_MSG_SYNCHALTRECEIVED = "DamageMeters: Sync Halt command received from %s.";
390 DM_MSG_SYNCHALTSENT = "DamageMeters: Transmitting halt command...";
391 -- RPS
392 DM_MSG_RPS_CHALLENGE = "You challenge %s to Rock-Paper Scissors! You play %s.";
393 DM_MSG_RPS_CHALLENGED = "%s has challenged you to Rock-Paper-Scissors! Use /dmrpsr [player] [r/p/s] to respond.";
394 DM_MSG_RPS_MISSING_PLAYER = "ERROR: Missing Arg. Player argument can be omitted if and only if there is only one player currently challenging you.";
395 DM_MSG_RPS_NOTCHALLENGED = "Error: You were not challenged by %s.";
396 DM_MSG_RPS_YOUPLAY = "You play %s.";
397 DM_MSG_RPS_PLAYS = "%s plays %s.";
398 DM_MSG_RPS_DEFEATED = "%s has defeated you.";
399 DM_MSG_RPS_VICTORIOUS = "You have defeated %s!"
400 DM_MSG_RPS_TIE = "You have tied with %s.";
401  
402 --[[ Note: This is only to help construct the DM_MSG_REPORTHELP string.
403 The /dmreport command consists of three parts:
404  
405 1) The destination character. This can be one of the following letters:
406 c - Console (only you can see it)%.
407 s - Say
408 p - Party chat
409 r - Raid chat
410 g - Guild chat
411 h - Chat cHannel. /dmreport h mychannel
412 w - Whisper to player. /dmreport w dandelion
413 f - Frame: Shows the report in this window.
414  
415 If the letter is lower case the report will be in reverse order (lowest to highest)%.
416  
417 2) Optionally, the number of people to limit it to. This number goes right after the destination character.
418 Example: /dmreport p5
419  
420 3) By default, reports are on the currently visible quantity only. If the word 'total' is specified before the destination character, though, the report will be on the totals for every quantity. 'Total' reports are formatted so that they look good when cut-and-paste into a text file, and so work best with the Frame destination.
421 Example: /dmreport total f
422  
423 Example: Whisper to player "dandelion" the top three people in the list:
424 /dmreport w3 dandelion
425 ]]--
426  
427 --[[ Note: This is only to help construct the DM_MSG_SYNCHELP string.
428 DamageMeters Sync'ing (short for synchronization) is a process whereby multiple DM users can transmit their data to each other. Its primary use is for instances where the players are often far from each other and thus miss some of each other's combat messages.\n\nSync Quick-Start Guide:\n\n1) Someone (I'll call her the Sync Leader) chooses a channel name and joins it, ie. /dmsyncchan ourchannel.\n2) The Sync Leader then calls /dmsyncbroadcastchan (or just /dmsyncb). Anyone who is running a sufficiently recent version of DM will automatically be joined into that channel.\n3) The Sync Leader choses a name for the session--for example, Onyxia-- then calls /dmsyncstart with that name. (/dmsyncstart Onyxia_. This will clear everyone's data and pause them, as well as mark them with this label.\n3) Once everyone is in the channel, but before the activity begins, the Sync Leader should call /dmsyncready or /dmsyncunpause so that data collection can happen.\n4) Play! Collect data!\n5) Finally, the Sync Leader calls /dmsync whenever she wants the raid to share data. Since it can cause a little slowdown it is best to do this between fights (though not necessarily between every fight). If event data is desired, call (/dmsync e), though it takes a lot longer to sync.\n\nNote: There is nothing special about the Sync Leader: any player can perform any of these commands. It just seems simpler to have one person in charge of it.
429 ]]--
430  
431 -- Menu Options --
432 DM_MENU_CLEAR = "Clear";
433 DM_MENU_RESETPOS = "Reset Position";
434 DM_MENU_HIDE = "Hide Window";
435 DM_MENU_SHOW = "Show Window";
436 DM_MENU_VISINPARTY = "Visible Only While In A Party";
437 DM_MENU_REPORT = "Report";
438 DM_MENU_BARCOUNT = "Bar Count";
439 DM_MENU_AUTOCOUNTLIMIT = "Auto Count Limit";
440 DM_MENU_SORT = "Sort Type";
441 DM_MENU_VISIBLEQUANTITY = "Visible Quantity";
442 --DM_MENU_COLORSCHEME = "Color Scheme";
443 DM_MENU_MEMORY = "Memory Register";
444 DM_MENU_SAVE = "Save";
445 DM_MENU_RESTORE = "Restore";
446 DM_MENU_MERGE = "Merge";
447 DM_MENU_SWAP = "Swap";
448 DM_MENU_DELETE = "Delete";
449 DM_MENU_BAN = "Ban";
450 DM_MENU_CLEARABOVE = "Clear Above";
451 DM_MENU_CLEARBELOW = "Clear Below";
452 --DM_MENU_LOCK = "Lock List";
453 --DM_MENU_UNLOCK = "Unlock List";
454 DM_MENU_PAUSE = "Pause Parsing";
455 --DM_MENU_UNPAUSE = "Resume Parsing";
456 DM_MENU_LOCKPOS = "Lock Position";
457 DM_MENU_UNLOCKPOS = "Unlock Position";
458 DM_MENU_GROUPMEMBERSONLY = "Only Monitor Group Members";
459 DM_MENU_ADDPETTOPLAYER = "Treat Pet Data As Your Data";
460 DM_MENU_TEXT = "Text Options";
461 DM_MENU_TEXT_RANK = "Rank";
462 DM_MENU_TEXT_NAME = "Name";
463 DM_MENU_TEXT_TOTALPERCENTAGE = "% of Total";
464 DM_MENU_TEXT_LEADERPERCENTAGE = "% of Leader's";
465 DM_MENU_TEXT_VALUE = "Value";
466 DM_MENU_TEXT_DELTA = "Delta";
467 DM_MENU_SETCOLORFORALL = "Set Color For All";
468 DM_MENU_DEFAULTCOLORS = "Restore Default Colors";
469 DM_MENU_RESETONCOMBATSTARTS = "Reset Data When Combat Starts";
470 DM_MENU_SHOWFIGHTASPS = "Show Fight Data as Per/Second";
471 DM_MENU_REFRESHBUTTON = "Refresh";
472 DM_MENU_TOTAL = "Total";
473 DM_MENU_CHOOSEREPORT = "Choose Report";
474 -- Note reordered this list in version 2.2.0
475 DM_MENU_REPORTNAMES = {"Frame", "Console", "Say", "Party", "Raid", "Guild", "Officer"};
476 DM_MENU_TEXTCYCLE = "Cycle";
477 DM_MENU_QUANTCYCLE = "Auto-Cycle";
478 DM_MENU_HELP = "Help";
479 DM_MENU_ACCUMULATEINMEMORY = "Accumulate Data";
480 DM_MENU_POSITION = "Position";
481 DM_MENU_RESIZELEFT = "Resize Left";
482 DM_MENU_RESIZEUP = "Resize Up";
483 DM_MENU_SHOWMAX = "Show Max";
484 DM_MENU_SHOWTOTAL = "Show Total";
485 DM_MENU_LEADERS = "Leaders";
486 DM_MENU_PLAYERREPORT = "Player Report";
487 DM_MENU_EVENTREPORT = "Event Report";
488 DM_MENU_EVENTDATA = "Event Data";
489 DM_MENU_EVENTDATA_NONE = "Parse No Events";
490 DM_MENU_EVENTDATA_PLAYER = "Parse Own Events";
491 DM_MENU_EVENTDATA_ALL = "Parse All Events";
492 --DM_MENU_SYNCEVENTDATA_NONE = "Transmit No Events";
493 --DM_MENU_SYNCEVENTDATA_PLAYER = "Transmit Own Events";
494 --DM_MENU_SYNCEVENTDATA_ALL = "Transmit All Events";
495 DM_MENU_SHOWEVENTDATATOOLTIP = "Tooltip Default";
496 DM_MENU_EVENTS1 = "Events 1-20";
497 DM_MENU_EVENTS2 = "Events 21-40";
498 DM_MENU_EVENTS3 = "Events 41-50";
499 DM_MENU_SYNC = "Synchronization";
500 DM_MENU_ONLYSYNCWITHGROUP = "Only Sync With Group";
501 DM_MENU_PERMITSYNCAUTOJOIN = "Join Broadcasted Channels";
502 DM_MENU_CLEARONAUTOJOIN = "Clear When Joining";
503 DM_MENU_SYNCBROADCASTCHAN = "Broadcast Channel";
504 DM_MENU_SYNCLEAVECHAN = "Leave Channel";
505 DM_MENU_SYNCONLYPLAYEREVENTS = "Sync Self Events Only";
506 DM_MENU_ENABLEDMM = "Show DMM Messages";
507 DM_MENU_NOSYNCCHAN = "NO SYNC CHANNEL SET";
508 DM_MENU_SYNCCHAN = "Current syncchan = ";
509 DM_MENU_SESSION = "Current session = ";
510 DM_MENU_SAVEDSESSION = "Session = ";
511 DM_MENU_JOINSYNCCHAN = "Join Channel: Use /dmsyncchan";
512 DM_MENU_PARSEEVENTMESSAGES = "Parse Incoming Events";
513 DM_MENU_SENDINGBAR = "Sending...";
514 DM_MENU_PROCESSINGBAR = "Processing...";
515 DM_MENU_QUANTITYFILTER = "Quantity Filter";
516 DM_MENU_MINIMIZE = "Minimize";
517 DM_MENU_LEFTJUSTIFYTEXT = "Left-Justify";
518 DM_MENU_RESTOREDEFAULTOPTIONS = "Restore Default Options";
519 DM_MENU_PLAYERALWAYSVISIBLE = "Self Always Visible";
520 DM_MENU_APPLYFILTERTOMANUALCYCLING = "Apply to Manual Cycling";
521 DM_MENU_APPLYFILTERTOAUTOCYCLING = "Apply to Auto-Cycle";
522 DM_MENU_GENERAL = "General Options";
523 DM_MENU_GROUPDPSMODE = "Group DPS Mode";
524 DM_MENU_CLEARBANNED = "Un-ban All";
525 DM_MENU_CONSTANTVISUALUPDATE = "Constant Visual Update";
526 DM_MENU_CLEARWHENJOINPARTY = "Clear When Joining A Party";
527 DM_MENU_AUTOSYNC = "Sync Automaticly";
528 DM_MENU_STARTNEWSESSION = "Start A New Session";
529 DM_MENU_SYNCGROUPDATA = "Syncronize Group Data";
530 DM_MENU_SYNCREADY = "Request Ready";
531 DM_MENU_SYNCPAUSE = "Request Pause";
532 DM_MENU_SYNCCLEAR = "Request Clear";
533 DM_MENU_REPORTCHANNEL = "Channel";
534 DM_MENU_REPORTWHISPER = "Whisper";
535  
536  
537 -- Misc
538 DM_CLASS = "Class"; -- The word for player class, like Druid or Warrior.
539 DM_TOOLTIP = "\nTime since last action = %.1fs\nRelationship = %s";
540 DM_YOU = "you"
541 DM_CRITSTR = "Crit";
542 DM_UNKNOWNENTITY = "Unknown Entity";
543 DM_SYNCSPELLNAME = "[Sync]";
544 DM_NEWSESSIONID = "Enter new session ID: "
545 DM_REPORTCHANNEL = "Enter the name or number of the channel to report to: "
546 DM_REPORTWHISPER = "Enter the name of the player to report to: "
547  
548 DM_DMG_MELEE = "[Melee]";
549 DM_DMG_FALLING = "[Falling]";
550 DM_DMG_LAVA = "[Lava]";
551 DM_DMG_DAMAGESHIELD = "[DmgShield]";
552 DM_DMG_DEATH = "[Death]";
553 DM_DMG_COMBAT = "[Out of Combat]";
554  
555 DamageMeters_RPSmoveStrings =
556 {
557 r = "Rock",
558 p = "Paper",
559 s = "Scissors"
560 };
561  
562 -------------------------------------------------------------------------------
563  
564 --[[ This system based on the one in Gello's Recap, which itself was based on the one in Telo's MobHealth.
565 - source and dest = 0 means the player
566  
567 TODO: These are all special cases in English because they contain apostrophes.
568 Julie's Dagger
569 Rammstein's Lightning Bolts
570 Night Dragon's Breath
571  
572 ]]--
573  
574 --[[
575 This table defines types of messages that DM parses and how to parse them.
576  
577 The index of the table is a human-readable name, which by convention is
578 normally the name of the string variable (as defined in GlobalStrings.lua) that
579 is being parsed. Every type of message that is parsed for the "Damage Done",
580 "Healing Done", "Damage Taken", and "Healing Taken" quantities must be defined in this
581 table.
582  
583 The key to the system is the "pattern" member. This is usually (there are some
584 special cases) a string defined in GlobalStrings.lua. An example is COMBATHITSELFOTHER =
585 "You hit %s for %d.". When DM loads up it goes through this list and converts all the
586 patterns into "regular expression" search strings. So, for example, the above becomes
587 "You hit (.+) for (%d+)%."
588  
589 When a match is found there will be an array of "elements" for
590 each unknown in the pattern. In the above pattern, elements[1] will be the string name
591 of who was hit, and elements[2] will be how much damage was done. Each msgInfo has fields
592 in which you specify which elements mean what. So, in the msgInfo for this example we set
593 "dest=1" and "amount=2".
594  
595 The fields of each entry are defined as follows:
596 - source: The index of the element that specifies the source of the amount. The source is the
597 person doing damage or doing the healing in the case of "Damage done" and "healing done" messages,
598 but it is the the person being hit in the case of "damage received" messages. When source=0, it
599 means the player (us) is the source.
600 - dest: The name of the entity being effected. Again, dest=0 means the player.
601 - amount: The index of the element that contains the quantity of damage/healing done.
602 - spell: This is the index of the element which references the spell that is doing the damage/healing.
603 Alternately, if it is a string that spell will be used explicitly. Spell=0 or nil defaults to regular
604 melee damage.
605 - damageType: Also known as "school", this is the index of the element which specifies the type of
606 damage done, ie. "physical", "fire", "frost", etc.
607 - crit: This is one of three defined values: DM_HIT, DM_CRT, DM_DOT. Set this to specify whether
608 the message represents a spell that hit normally, critically hit, or was a non-crittable spell.
609 (Damage Over Time spells, DOTs, cannot crit, hence the name.)
610 - pattern: This is the pattern, usually a string from GlobalStrings.lua.
611 - custom: If this is set to true, the pattern will not be transformed when DM is loaded. Use
612 this for custom patterns.
613 ]]--
614  
615 DamageMeters_msgInfo = {
616 -- CHAT_MSG_COMBAT_SELF_HITS
617 _COMBATHITSELFOTHER =
618 { source=0, dest=1, amount=2, spell=0, damageType=0, crit=DM_HIT, pattern=COMBATHITSELFOTHER }, -- You hit (.+) for (%d+)
619 _COMBATHITCRITSELFOTHER =
620 { source=0, dest=1, amount=2, spell=0, damageType=0, crit=DM_CRT, pattern=COMBATHITCRITSELFOTHER }, -- You crit (.+) for (%d+)
621 _VSENVIRONMENTALDAMAGE_FALLING_SELF =
622 { source=0, dest=0, amount=1, spell=DM_DMG_FALLING, damageType=0, crit=DM_DOT, pattern=VSENVIRONMENTALDAMAGE_FALLING_SELF }, -- You fall and lose (%d+) health
623 _VSENVIRONMENTALDAMAGE_LAVA_SELF =
624 { source=0, dest=0, amount=1, spell=DM_DMG_LAVA, damageType=0, crit=DM_DOT, pattern=VSENVIRONMENTALDAMAGE_LAVA_SELF }, -- You lose %d health for swimming in lava.
625  
626  
627 -- CHAT_MSG_SPELL_SELF_DAMAGE
628 _SPELLLOGSCHOOLSELFOTHER =
629 { source=0, dest=2, amount=3, spell=1, damageType=4, crit=DM_HIT, pattern=SPELLLOGSCHOOLSELFOTHER }, -- Your (.+) hits (.+) for (%d+) (.+)%.
630 _SPELLLOGCRITSCHOOLSELFOTHER =
631 { source=0, dest=2, amount=3, spell=1, damageType=4, crit=DM_CRT, pattern=SPELLLOGCRITSCHOOLSELFOTHER }, -- "Your %s crits %s for %d %s damage.";
632 _SPELLLOGSELFOTHER =
633 { source=0, dest=2, amount=3, spell=1, damageType=0, crit=DM_HIT, pattern=SPELLLOGSELFOTHER }, -- Your (.+) hits (.+) for (%d+)
634 _SPELLLOGCRITSELFOTHER =
635 { source=0, dest=2, amount=3, spell=1, damageType=0, crit=DM_CRT, pattern=SPELLLOGCRITSELFOTHER }, -- Your (.+) crits (.+) for (%d+)
636  
637 -- "CHAT_MSG_SPELL_PERIODIC_CREATURE_DAMAGE" or event == "CHAT_MSG_SPELL_PERIODIC_HOSTILEPLAYER_DAMAGE"
638 -- No such message.
639 --_PERIODICAURADAMAGEABSORBEDSELFOTHER =
640 -- { source=0, dest=1, amount=2, spell=4, damageType=3, crit=DM_DOT, pattern=PERIODICAURADAMAGEABSORBEDSELFOTHER }, -- = "%s suffers %d %s damage from your %s (%d absorbed)."
641 _PERIODICAURADAMAGESELFOTHER =
642 { source=0, dest=1, amount=2, spell=4, damageType=3, crit=DM_DOT, pattern=PERIODICAURADAMAGESELFOTHER }, -- (.+) suffers (%d+) (.+) damage from your (.+).
643 -- No such message.
644 --_PERIODICAURADAMAGEABSORBEDOTHEROTHER =
645 -- { source=4, dest=1, amount=2, spell=5, damageType=3, crit=DM_DOT, pattern=PERIODICAURADAMAGEABSORBEDOTHEROTHER }, -- %s suffers %d %s damage from %s's %s (%d absorbed).
646 _PERIODICAURADAMAGEOTHEROTHER =
647 { source=4, dest=1, amount=2, spell=5, damageType=0, crit=DM_DOT, pattern=PERIODICAURADAMAGEOTHEROTHER }, -- (.+) suffers (%d+) (.+) damage from (.+)'s (.+)
648  
649 -- "CHAT_MSG_COMBAT_PARTY_HITS" or "CHAT_MSG_COMBAT_FRIENDLYPLAYER_HITS" or "CHAT_MSG_COMBAT_PET_HITS")
650 _COMBATHITOTHEROTHER =
651 { source=1, dest=2, amount=3, spell=7, damageType=0, crit=DM_HIT, pattern=COMBATHITOTHEROTHER }, -- (.+) hits (.+) for (%d+)
652 _COMBATHITCRITOTHEROTHER =
653 { source=1, dest=2, amount=3, spell=7, damageType=0, crit=DM_CRT, pattern=COMBATHITCRITOTHEROTHER }, -- (.+) crits (.+) for (%d+)
654 _VSENVIRONMENTALDAMAGE_FALLING_OTHER =
655 { source=1, dest=1, amount=2, spell=DM_DMG_FALLING, damageType=0, crit=DM_DOT, pattern=VSENVIRONMENTALDAMAGE_FALLING_OTHER }, -- %s falls and loses %d health.
656 _VSENVIRONMENTALDAMAGE_LAVA_OTHER =
657 { source=1, dest=1, amount=2, spell=DM_DMG_LAVA, damageType=0, crit=DM_DOT, pattern=VSENVIRONMENTALDAMAGE_LAVA_OTHER }, -- %s loses %d health for swimming in lava.
658  
659 -- "CHAT_MSG_SPELL_PARTY_DAMAGE" "CHAT_MSG_SPELL_FRIENDLYPLAYER_DAMAGE" "CHAT_MSG_SPELL_PET_DAMAGE"
660 _SPELLLOGOTHEROTHER =
661 { source=1, dest=3, amount=4, spell=2, damageType=0, crit=DM_HIT, pattern=SPELLLOGOTHEROTHER }, -- (.+)'s (.+) hits (.+) for (%d+)
662 _SPELLLOGCRITOTHEROTHER =
663 { source=1, dest=3, amount=4, spell=2, damageType=0, crit=DM_CRT, pattern=SPELLLOGCRITOTHEROTHER }, -- (.+)'s (.+) crits (.+) for (%d+)
664 _SPELLSPLITDAMAGEOTHEROTHER =
665 { source=1, dest=3, amount=4, spell=2, damageType=0, crit=DM_DOT, pattern=SPELLSPLITDAMAGEOTHEROTHER }, -- (.+)'s (.+) causes (.+) (%d+) damage
666  
667 -- CHAT_MSG_SPELL_DAMAGESHIELDS_ON_SELF
668 _DAMAGESHIELDSELFOTHER =
669 { source=0, dest=3, amount=1, spell=DM_DMG_DAMAGESHIELD, damageType=0, crit=DM_DOT, pattern=DAMAGESHIELDSELFOTHER }, -- You reflect (%d+) (.+) damage to (.+)
670  
671 -- CHAT_MSG_SPELL_DAMAGESHIELDS_ON_OTHERS
672 _DAMAGESHIELDOTHEROTHER =
673 { source=1, dest=4, amount=2, spell=DM_DMG_DAMAGESHIELD, damageType=0, crit=DM_DOT, pattern=DAMAGESHIELDOTHEROTHER }, -- (.+) reflects (%d+) (.+) damage to (.+)
674 -- ? soul link or something?
675 _SPELLSPLITDAMAGESELFOTHER =
676 { source=0, dest=2, amount=3, spell=1, damageType=0, crit=DM_DOT, pattern=SPELLSPLITDAMAGESELFOTHER }, -- Your (.+) causes (.+) (%d+) damage
677  
678 -- DAMAGE TAKEN
679 --"CHAT_MSG_COMBAT_CREATURE_VS_SELF_HITS" -- this gets complicated with pets.
680 --"CHAT_MSG_COMBAT_CREATURE_VS_PARTY_HITS"
681 --"CHAT_MSG_COMBAT_CREATURE_VS_CREATURE_HITS"
682 _COMBATHITOTHERSELF =
683 { source=1, dest=0, amount=2, crit=DM_HIT, pattern=COMBATHITOTHERSELF }, -- "%s hits you for %d.";
684 _COMBATHITCRITOTHERSELF =
685 { source=1, dest=0, amount=2, crit=DM_CRT, pattern=COMBATHITCRITOTHERSELF }, -- "%s crits you for %d.";
686 _COMBATHITOTHEROTHER =
687 { source=1, dest=2, amount=3, crit=DM_HIT, pattern=COMBATHITOTHEROTHER }, -- "%s hits %s for %d.";
688 _COMBATHITCRITOTHEROTHER =
689 { source=1, dest=2, amount=3, crit=DM_CRT, pattern=COMBATHITCRITOTHEROTHER }, -- "%s crits %s for %d.";
690 _COMBATHITCRITSCHOOLOTHEROTHER =
691 { source=1, dest=2, amount=3, damageType=4, crit=DM_CRT, pattern=COMBATHITCRITSCHOOLOTHEROTHER }, -- "%s crits %s for %d %s damage.";
692 _COMBATHITSCHOOLOTHEROTHER =
693 { source=1, dest=2, amount=3, damageType=4, crit=DM_HIT, pattern=COMBATHITSCHOOLOTHEROTHER }, -- "%s hits %s for %d %s damage.";
694 _COMBATHITCRITSCHOOLOTHERSELF =
695 { source=1, dest=0, amount=2, damageType=3, crit=DM_CRT, pattern=COMBATHITCRITSCHOOLOTHERSELF }, -- "%s crits you for %d %s damage.";
696 _COMBATHITSCHOOLOTHERSELF =
697 { source=1, dest=0, amount=2, damageType=3, crit=DM_HIT, pattern=COMBATHITSCHOOLOTHERSELF }, -- "%s hits you for %d %s damage.";
698  
699  
700 --"CHAT_MSG_SPELL_CREATURE_VS_SELF_DAMAGE" or
701 --"CHAT_MSG_SPELL_CREATURE_VS_PARTY_DAMAGE" or
702 --"CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE") then
703 _SPELLLOGOTHERSELF =
704 { source=1, dest=0, amount=3, spell=2, damageType=0, crit=DM_HIT, pattern=SPELLLOGOTHERSELF }, -- "%s's %s hits you for %d.";
705 _SPELLLOGSCHOOLOTHERSELF =
706 { source=1, dest=0, amount=3, spell=2, damageType=4, crit=DM_HIT, pattern=SPELLLOGSCHOOLOTHERSELF }, -- "%s's %s hits you for %d %s damage.";
707 _SPELLLOGCRITSCHOOLOTHERSELF =
708 { source=1, dest=0, amount=3, spell=2, damageType=4, crit=DM_CRT, pattern=SPELLLOGCRITSCHOOLOTHERSELF }, -- "%s's %s crits you for %d %s damage.";
709 _SPELLLOGCRITOTHERSELF =
710 { source=1, dest=0, amount=3, spell=2, crit=DM_CRT, pattern=SPELLLOGCRITOTHERSELF }, -- "%s's %s crits you for %d.";
711 -- bunch of junk in here in the old code
712 _SPELLRESISTOTHERSELF =
713 { source=1, dest=0, amount=0, spell=2, crit=DM_HIT, pattern=SPELLRESISTOTHERSELF }, -- "%s's %s was resisted.";
714  
715 _SPELLLOGSCHOOLOTHEROTHER =
716 { source=1, dest=3, amount=4, spell=2, damageType=5, crit=DM_HIT, pattern=SPELLLOGSCHOOLOTHEROTHER }, -- "%s's %s hits %s for %d %s damage.";
717 _SPELLLOGCRITSCHOOLOTHEROTHER =
718 { source=1, dest=3, amount=4, spell=2, damageType=5, crit=DM_CRT, pattern=SPELLLOGCRITSCHOOLOTHEROTHER }, -- "%s's %s crits %s for %d %s damage.";
719 _SPELLRESISTOTHEROTHER =
720 { source=1, dest=3, amount=0, spell=2, crit=DM_HIT, pattern=SPELLRESISTOTHEROTHER }, -- "%s's %s was resisted by %s.";
721  
722 --"CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE"
723 _PERIODICAURADAMAGEOTHERSELF =
724 { source=3, dest=0, amount=1, spell=4, damageType=2, crit=DM_DOT, pattern=PERIODICAURADAMAGEOTHERSELF }, -- "You suffer %d %s damage from %s's %s."
725 _PERIODICAURADAMAGESELFSELF =
726 { source=0, dest=0, amount=1, spell=3, damageType=2, crit=DM_DOT, pattern=PERIODICAURADAMAGESELFSELF }, -- "You suffer %d %s damage from your %s."
727 -- pet
728 _PERIODICAURADAMAGEOTHEROTHER =
729 { source=4, dest=1, amount=2, spell=5, damageType=3, crit=DM_DOT, pattern=PERIODICAURADAMAGEOTHEROTHER }, -- "%s suffers %d %s damage from %s's %s."
730  
731 --HEALING
732 -- "CHAT_MSG_SPELL_SELF_BUFF" "CHAT_MSG_SPELL_PARTY_BUFF" "CHAT_MSG_SPELL_FRIENDLYPLAYER_BUFF" "CHAT_MSG_SPELL_HOSTILEPLAYER_BUFF"
733 _HEALEDSELFSELF =
734 { source=0, dest=0, amount=2, spell=1, crit=DM_HIT, pattern=HEALEDSELFSELF }, -- "Your %s heals you for %d.";
735 _HEALEDCRITSELFSELF =
736 { source=0, dest=0, amount=2, spell=1, crit=DM_CRT, pattern=HEALEDCRITSELFSELF }, -- "Your %s critically heals you for %d.";
737 _HEALEDSELFOTHER =
738 { source=0, dest=2, amount=3, spell=1, crit=DM_HIT, pattern=HEALEDSELFOTHER }, -- "Your %s heals %s for %d."
739 -- missing some here, ie. HEALEDSELFSELF "Your %s heals you for %d."
740 _HEALEDCRITSELFOTHER =
741 { source=0, dest=2, amount=3, spell=1, crit=DM_CRT, pattern=HEALEDCRITSELFOTHER }, -- "Your %s critically heals %s for %d.";
742 __NIGHTDRAGONSBREATHOTHER =
743 { source=1, dest=2, amount=3, spell="Night Dragon's Breath", crit=DM_HIT, pattern="(.+)'s Night Dragon's Breath heals (.+) for (%d+)%.", custom=true }, -- "%s's Night Dragon's Breath heals %s for %d.";
744 __NIGHTDRAGONSBREATHOTHERCRIT =
745 { source=1, dest=2, amount=3, spell="Night Dragon's Breath", crit=DM_CRT, pattern="(.+)'s Night Dragon's Breath critically heals (.+) for (%d+)%.", custom=true }, -- "%s's Night Dragon's Breath heals %s for %d.";
746 _HEALEDOTHERSELF =
747 { source=1, dest=0, amount=3, spell=2, crit=DM_HIT, pattern=HEALEDOTHERSELF }, -- "%s's %s heals %s you %d.";
748 _HEALEDCRITOTHERSELF =
749 { source=1, dest=0, amount=3, spell=2, crit=DM_CRT, pattern=HEALEDCRITOTHERSELF }, -- "%s's %s critically heals %s you %d.";
750 _HEALEDOTHEROTHER =
751 { source=1, dest=3, amount=4, spell=2, crit=DM_HIT, pattern=HEALEDOTHEROTHER }, -- "%s's %s heals %s for %d.";
752 _HEALEDCRITOTHEROTHER =
753 { source=1, dest=3, amount=4, spell=2, crit=DM_CRT, pattern=HEALEDCRITOTHEROTHER }, -- "%s's %s critically heals %s for %d.";
754  
755 --"CHAT_MSG_SPELL_PERIODIC_SELF_BUFFS" "CHAT_MSG_SPELL_PERIODIC_PARTY_BUFFS" "CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_BUFFS" "CHAT_MSG_SPELL_PERIODIC_HOSTILEPLAYER_BUFFS" -- why?
756 __JULIESBLESSINGOTHER =
757 { source=3, dest=1, amount=2, spell="Julie's Blessing", crit=DM_HIT, pattern="(.+) gains (%d+) health from (.+)'s Julie's Blessing%.", custom=true },
758  
759 _PERIODICAURAHEALOTHERSELF =
760 { source=2, dest=0, amount=1, spell=3, crit=DM_DOT, pattern=PERIODICAURAHEALOTHERSELF }, -- "You gain %d health from %s's %s."
761 _PERIODICAURAHEALSELFSELF =
762 { source=0, dest=0, amount=1, spell=2, crit=DM_DOT, pattern=PERIODICAURAHEALSELFSELF }, -- "You gain %d health from %s."
763 _PERIODICAURAHEALSELFOTHER =
764 { source=0, dest=1, amount=2, spell=3, crit=DM_DOT, pattern=PERIODICAURAHEALSELFOTHER }, -- "%s gains %d health from your %s."
765 _PERIODICAURAHEALOTHEROTHER =
766 { source=3, dest=1, amount=2, spell=4, crit=DM_DOT, pattern=PERIODICAURAHEALOTHEROTHER }, -- "%s gains %d health from %s's %s."
767  
768 --CURING
769 };
770  
771 --[[ DamageMeters_eventCaseTable
772  
773 This table defines which msgInfos are checked for which events. Although its a bit of a pain
774 maintaining this big list there are several big reasons why we do so. First and foremost, we
775 gain some information about the players involved in a message from the event type. For example,
776 we can deduce that if the event was CHAT_MSG_COMBAT_CREATURE_VS_SELF_HITS and the message was of the
777 type "[Someone] hit [someone] for [amount] damage." that the entity being hit was not us but rather
778 a pet or totem of ours. The second reason for this table is to greatly reduce the amount of patterns
779 each event is compared against. The final reason is that sometimes the order of parsing is critical.
780  
781 Here is an example:
782  
783 HEALEDOTHEROTHER = "%s's %s heals %s for %d."
784 HEALEDCRITOTHEROTHER - "%s's %s critically heals %s for %d."
785  
786 If we feed the following message into the above patterns, the
787 HEALEDOTHEROTHER will generate the following elements:
788  
789 "Dandelion's Healing Touch critically heals Sterne for 1234."
790 ->
791 "Dandelion", "Healing Touch critically", "Sterne", 1234
792  
793 Hence, we must in this case test for HEALEDCRITOTHEROTHER before HEALEDOTHEROTHER.
794  
795 ]]--
796  
797 DamageMeters_eventCaseTable = {
798 [DM_MSGTYPE_DAMAGE] = {
799 CHAT_MSG_COMBAT_SELF_HITS = {
800 [1] = { n = "_COMBATHITSELFOTHER" }, -- ok
801 [2] = { n = "_COMBATHITCRITSELFOTHER" }, -- ok
802 [3] = { n = "_VSENVIRONMENTALDAMAGE_FALLING_SELF", msgType=DM_MSGTYPE_DAMAGERECEIVED }, -- ok
803 [4] = { n = "_VSENVIRONMENTALDAMAGE_LAVA_SELF", msgType=DM_MSGTYPE_DAMAGERECEIVED }, -- ok
804 },
805 CHAT_MSG_SPELL_SELF_DAMAGE = {
806 -- These two are for school-less "spells" like Heroic Strike.
807 [1] = { n = "_SPELLLOGSELFOTHER" }, -- ok
808 [2] = { n = "_SPELLLOGCRITSELFOTHER" }, -- ok
809 -- These are for regular spells (ie. with Frost damage, etc).
810 [3] = { n = "_SPELLLOGSCHOOLSELFOTHER" }, -- ok
811 [4] = { n = "_SPELLLOGCRITSCHOOLSELFOTHER" }, -- ok
812 },
813  
814 CHAT_MSG_SPELL_PERIODIC_CREATURE_DAMAGE = {
815 [1] = { n = "_PERIODICAURADAMAGESELFOTHER" }, -- ok (rend)
816 [2] = { n = "_PERIODICAURADAMAGEOTHEROTHER" }, -- ok
817 },
818 CHAT_MSG_SPELL_PERIODIC_HOSTILEPLAYER_DAMAGE = {
819 [1] = { n = "_PERIODICAURADAMAGESELFOTHER" },
820 [2] = { n = "_PERIODICAURADAMAGEOTHEROTHER" }, -- ok
821 },
822  
823 CHAT_MSG_COMBAT_PARTY_HITS = {
824 [1] = { n = "_COMBATHITOTHEROTHER", sourceRelation=DamageMeters_Relation_PARTY }, -- ok
825 [2] = { n = "_COMBATHITCRITOTHEROTHER", sourceRelation=DamageMeters_Relation_PARTY }, -- ok
826 [3] = { n = "_VSENVIRONMENTALDAMAGE_FALLING_OTHER", sourceRelation=DamageMeters_Relation_PARTY },
827 [4] = { n = "_VSENVIRONMENTALDAMAGE_LAVA_OTHER", sourceRelation=DamageMeters_Relation_PARTY },
828 },
829 CHAT_MSG_COMBAT_FRIENDLYPLAYER_HITS = {
830 [1] = { n = "_COMBATHITOTHEROTHER" }, -- ok
831 [2] = { n = "_COMBATHITCRITOTHEROTHER" }, -- ok
832 [3] = { n = "_VSENVIRONMENTALDAMAGE_FALLING_OTHER", sourceRelation=DamageMeters_Relation_FRIENDLY }, -- ok
833 [4] = { n = "_VSENVIRONMENTALDAMAGE_LAVA_OTHER", sourceRelation=DamageMeters_Relation_FRIENDLY },
834 },
835 CHAT_MSG_COMBAT_PET_HITS = {
836 [1] = { n = "_COMBATHITOTHEROTHER", sourceRelation=DamageMeters_Relation_PET }, -- ok
837 [2] = { n = "_COMBATHITCRITOTHEROTHER", sourceRelation=DamageMeters_Relation_PET }, --ok
838 [3] = { n = "_VSENVIRONMENTALDAMAGE_FALLING_OTHER", destRelation=DamageMeters_Relation_PET, msgType=DM_MSGTYPE_DAMAGERECEIVED }, -- ok
839 [4] = { n = "_VSENVIRONMENTALDAMAGE_LAVA_OTHER", destRelation=DamageMeters_Relation_PET, msgType=DM_MSGTYPE_DAMAGERECEIVED }, -- ok
840 },
841  
842 CHAT_MSG_SPELL_PARTY_DAMAGE = {
843 [1] = { n = "_SPELLLOGCRITSCHOOLOTHEROTHER", sourceRelation=DamageMeters_Relation_PARTY }, -- ok
844 [2] = { n = "_SPELLLOGSCHOOLOTHEROTHER", sourceRelation=DamageMeters_Relation_PARTY }, -- ok
845 [3] = { n = "_SPELLLOGCRITOTHEROTHER", sourceRelation=DamageMeters_Relation_PARTY }, -- ok
846 [4] = { n = "_SPELLLOGOTHEROTHER", sourceRelation=DamageMeters_Relation_PARTY }, -- ok
847 [5] = { n = "_SPELLSPLITDAMAGEOTHEROTHER", sourceRelation=DamageMeters_Relation_PARTY },
848 },
849 CHAT_MSG_SPELL_FRIENDLYPLAYER_DAMAGE = {
850 [1] = { n = "_SPELLLOGCRITSCHOOLOTHEROTHER" }, -- ok
851 [2] = { n = "_SPELLLOGSCHOOLOTHEROTHER" }, -- ok
852 [3] = { n = "_SPELLLOGCRITOTHEROTHER" }, -- ok
853 [4] = { n = "_SPELLLOGOTHEROTHER" }, -- ok
854 [5] = { n = "_SPELLSPLITDAMAGEOTHEROTHER" },
855 },
856 CHAT_MSG_SPELL_PET_DAMAGE = {
857 [1] = { n = "_SPELLLOGOTHEROTHER", sourceRelation=DamageMeters_Relation_PET }, -- ok
858 [2] = { n = "_SPELLLOGCRITOTHEROTHER", sourceRelation=DamageMeters_Relation_PET }, -- ok
859 -- Totems do school damage.
860 [3] = { n = "_SPELLLOGCRITSCHOOLOTHEROTHER", sourceRelation=DamageMeters_Relation_PET },
861 [4] = { n = "_SPELLLOGSCHOOLOTHEROTHER", sourceRelation=DamageMeters_Relation_PET }, -- ok
862 [5] = { n = "_SPELLSPLITDAMAGEOTHEROTHER", sourceRelation=DamageMeters_Relation_PET },
863 },
864  
865 CHAT_MSG_SPELL_DAMAGESHIELDS_ON_SELF = {
866 [1] = { n = "_DAMAGESHIELDSELFOTHER" }, -- ok
867 },
868 CHAT_MSG_SPELL_DAMAGESHIELDS_ON_OTHERS = {
869 [1] = { n = "_DAMAGESHIELDOTHEROTHER" }, -- ok
870 [2] = { n = "_SPELLSPLITDAMAGESELFOTHER" },
871 },
872 },
873  
874 [DM_MSGTYPE_DAMAGERECEIVED] = {
875 CHAT_MSG_COMBAT_CREATURE_VS_SELF_HITS = {
876 [1] = { n = "_COMBATHITCRITOTHERSELF" }, -- ok
877 [2] = { n = "_COMBATHITOTHERSELF" }, -- ok
878 [3] = { n = "_COMBATHITCRITSCHOOLOTHERSELF" }, -- ok
879 [4] = { n = "_COMBATHITSCHOOLOTHERSELF" }, -- ok
880  
881 [5] = { n = "_COMBATHITOTHEROTHER", destRelation=DamageMeters_Relation_PET }, -- ok
882 [6] = { n = "_COMBATHITCRITOTHEROTHER", destRelation=DamageMeters_Relation_PET },
883 [7] = { n = "_COMBATHITCRITSCHOOLOTHEROTHER", destRelation=DamageMeters_Relation_PET }, -- ok
884 [8] = { n = "_COMBATHITSCHOOLOTHEROTHER", destRelation=DamageMeters_Relation_PET }, -- ok
885 },
886 CHAT_MSG_COMBAT_CREATURE_VS_PARTY_HITS = {
887 [1] = { n = "_COMBATHITCRITOTHEROTHER", destRelation=DamageMeters_Relation_PARTY },
888 [2] = { n = "_COMBATHITOTHEROTHER", destRelation=DamageMeters_Relation_PARTY }, -- ok
889 [3] = { n = "_COMBATHITCRITSCHOOLOTHEROTHER", destRelation=DamageMeters_Relation_PARTY },
890 [4] = { n = "_COMBATHITSCHOOLOTHEROTHER", destRelation=DamageMeters_Relation_PARTY }, -- ok
891 },
892 CHAT_MSG_COMBAT_CREATURE_VS_CREATURE_HITS = {
893 [1] = { n = "_COMBATHITCRITOTHEROTHER" }, -- ok
894 [2] = { n = "_COMBATHITOTHEROTHER" }, -- ok
895 [3] = { n = "_COMBATHITCRITSCHOOLOTHEROTHER" },
896 [4] = { n = "_COMBATHITSCHOOLOTHEROTHER" },
897 },
898  
899 -- absorb messages.
900 --CHAT_MSG_COMBAT_CREATURE_VS_SELF_MISSES = {},
901 --CHAT_MSG_COMBAT_CREATURE_VS_PARTY_MISSES = {},
902 --CHAT_MSG_COMBAT_CREATURE_VS_CREATURE_MISSES = {},
903  
904 CHAT_MSG_SPELL_CREATURE_VS_SELF_DAMAGE = {
905 [1] = { n = "_SPELLLOGCRITSCHOOLOTHERSELF" }, --! test
906 [2] = { n = "_SPELLLOGSCHOOLOTHERSELF" }, -- ok
907 [3] = { n = "_SPELLLOGCRITOTHERSELF" }, -- ok
908 [4] = { n = "_SPELLLOGOTHERSELF" }, -- ok
909 [5] = { n = "_SPELLRESISTOTHERSELF" }, -- ok
910  
911 [6] = { n = "_SPELLLOGCRITSCHOOLOTHEROTHER", destRelation=DamageMeters_Relation_PET },
912 [7] = { n = "_SPELLLOGSCHOOLOTHEROTHER", destRelation=DamageMeters_Relation_PET }, -- ok
913 [8] = { n = "_SPELLLOGCRITOTHEROTHER", destRelation=DamageMeters_Relation_PET },
914 [9] = { n = "_SPELLLOGOTHEROTHER", destRelation=DamageMeters_Relation_PET },
915 [10] = { n = "_SPELLRESISTOTHEROTHER", destRelation=DamageMeters_Relation_PET }, -- ok
916 },
917 CHAT_MSG_SPELL_CREATURE_VS_PARTY_DAMAGE = {
918 [1] = { n = "_SPELLLOGCRITSCHOOLOTHEROTHER", destRelation=DamageMeters_Relation_PARTY }, -- ok
919 [2] = { n = "_SPELLLOGSCHOOLOTHEROTHER", destRelation=DamageMeters_Relation_PARTY }, -- ok
920 [3] = { n = "_SPELLLOGCRITOTHEROTHER", destRelation=DamageMeters_Relation_PARTY }, --! hmm
921 [4] = { n = "_SPELLLOGOTHEROTHER", destRelation=DamageMeters_Relation_PARTY }, -- ok
922 [5] = { n = "_SPELLRESISTOTHEROTHER", destRelation=DamageMeters_Relation_PARTY }, -- ok
923 },
924 CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE = {
925 [1] = { n = "_SPELLLOGCRITSCHOOLOTHEROTHER" }, -- ok
926 [2] = { n = "_SPELLLOGSCHOOLOTHEROTHER" }, -- ok
927 [3] = { n = "_SPELLLOGCRITOTHEROTHER" }, -- ok
928 [4] = { n = "_SPELLLOGOTHEROTHER" }, -- ok
929 [5] = { n = "_SPELLRESISTOTHEROTHER" }, -- ok
930 },
931  
932 -- Unsure against what players this occurs for. Happens vs. self and pets for sure.
933 CHAT_MSG_SPELL_HOSTILEPLAYER_DAMAGE = {
934 [1] = { n = "_SPELLLOGCRITSCHOOLOTHERSELF" }, --ok
935 [2] = { n = "_SPELLLOGSCHOOLOTHERSELF" }, -- ok
936 [3] = { n = "_SPELLLOGCRITOTHERSELF" }, -- ok
937 [4] = { n = "_SPELLLOGOTHERSELF" }, -- ok
938 [5] = { n = "_SPELLRESISTOTHERSELF" }, -- ok
939  
940 [6] = { n = "_SPELLLOGCRITSCHOOLOTHEROTHER" }, -- ok
941 [7] = { n = "_SPELLLOGSCHOOLOTHEROTHER" }, -- ok
942 [8] = { n = "_SPELLLOGCRITOTHEROTHER" }, -- ok
943 [9] = { n = "_SPELLLOGOTHEROTHER" }, -- ok
944 [10] = { n = "_SPELLRESISTOTHEROTHER" }, -- ok
945 },
946  
947 CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE = {
948 [1] = { n = "_PERIODICAURADAMAGESELFSELF" }, --! hmm, would need to get a mob to reflect a dot onto me.
949 [2] = { n = "_PERIODICAURADAMAGEOTHERSELF" }, -- ok
950 [3] = { n = "_PERIODICAURADAMAGEOTHEROTHER", destRelation=DamageMeters_Relation_PET }, -- ok
951 },
952  
953 CHAT_MSG_SPELL_PERIODIC_PARTY_DAMAGE = {
954 [1] = { n = "_PERIODICAURADAMAGEOTHEROTHER" }, -- ok
955 },
956 CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_DAMAGE = {
957 [1] = { n = "_PERIODICAURADAMAGEOTHEROTHER" }, -- ok
958 },
959  
960 CHAT_MSG_COMBAT_HOSTILEPLAYER_HITS = {
961 [1] = { n = "_COMBATHITOTHERSELF" }, -- ok
962 [2] = { n = "_COMBATHITCRITOTHERSELF" }, -- ok
963 [3] = { n = "_COMBATHITOTHEROTHER" }, -- ok (sometimes pets but we couldn't know)
964 [4] = { n = "_COMBATHITCRITOTHEROTHER" }, -- ok
965 [5] = { n = "_VSENVIRONMENTALDAMAGE_FALLING_OTHER" }, -- ok (this monitors the damage our enemys take in pvp. we don't really care about this)
966 [6] = { n = "_VSENVIRONMENTALDAMAGE_LAVA_OTHER" },
967 },
968 },
969  
970 -- Healing :
971 [DM_MSGTYPE_HEALING] = {
972 CHAT_MSG_SPELL_SELF_BUFF = {
973 [1] = { n="_HEALEDCRITSELFSELF" }, -- ok
974 [2] = { n="_HEALEDSELFSELF" }, -- ok
975 [3] = { n="_HEALEDCRITSELFOTHER" }, --ok
976 [4] = { n="_HEALEDSELFOTHER" }, -- ok
977  
978 --[5] = { n="_HEALEDOTHEROTHER" }, -- this might theoretically happen if there was a direct heal (non-hot) for a pet class, but i don't think there are any
979 --[6] = { n="_HEALEDCRITOTHEROTHER" },
980 },
981 CHAT_MSG_SPELL_PARTY_BUFF = {
982 [1] = { n="__NIGHTDRAGONSBREATHOTHERCRIT", sourceRelation=DamageMeters_Relation_PARTY, destRelation=DamageMeters_Relation_PARTY },
983 [2] = { n="__NIGHTDRAGONSBREATHOTHER", sourceRelation=DamageMeters_Relation_PARTY, destRelation=DamageMeters_Relation_PARTY },
984 [3] = { n="_HEALEDCRITOTHERSELF", sourceRelation=DamageMeters_Relation_PARTY, destRelation=DamageMeters_Relation_SELF }, --! test, and shouldn't there be relations?
985 [4] = { n="_HEALEDOTHERSELF", sourceRelation=DamageMeters_Relation_PARTY, destRelation=DamageMeters_Relation_SELF }, --!
986 [5] = { n="_HEALEDCRITOTHEROTHER", sourceRelation=DamageMeters_Relation_PARTY }, -- ok
987 [6] = { n="_HEALEDOTHEROTHER", sourceRelation=DamageMeters_Relation_PARTY }, -- ok
988 },
989 CHAT_MSG_SPELL_FRIENDLYPLAYER_BUFF = {
990 [1] = { n="__NIGHTDRAGONSBREATHOTHERCRIT" }, -- ok
991 [2] = { n="__NIGHTDRAGONSBREATHOTHER" },
992 [3] = { n="_HEALEDCRITOTHERSELF", destRelation=DamageMeters_Relation_SELF }, --! test, and shouldn't there be relations?
993 [4] = { n="_HEALEDOTHERSELF", destRelation=DamageMeters_Relation_SELF }, --!
994 [5] = { n="_HEALEDCRITOTHEROTHER" }, -- ok
995 [6] = { n="_HEALEDOTHEROTHER" }, -- ok
996 },
997 CHAT_MSG_SPELL_HOSTILEPLAYER_BUFF = {
998 [1] = { n="__NIGHTDRAGONSBREATHOTHERCRIT" },
999 [2] = { n="__NIGHTDRAGONSBREATHOTHER" },
1000 [3] = { n="_HEALEDCRITOTHERSELF", destRelation=DamageMeters_Relation_SELF }, --! test, and shouldn't there be relations?
1001 [4] = { n="_HEALEDOTHERSELF", destRelation=DamageMeters_Relation_SELF }, --!
1002 [5] = { n="_HEALEDCRITOTHEROTHER" }, -- ok
1003 [6] = { n="_HEALEDOTHEROTHER" }, -- ok
1004 },
1005  
1006 -- guessing
1007 CHAT_MSG_SPELL_PERIODIC_SELF_BUFFS = {
1008 [1] = { n="_PERIODICAURAHEALOTHERSELF" }, -- ok
1009 [2] = { n="_PERIODICAURAHEALSELFSELF" }, -- ok
1010 [3] = { n="_PERIODICAURAHEALSELFOTHER" }, -- ok (ie. Mend Pet)
1011 },
1012 -- guessing
1013 CHAT_MSG_SPELL_PERIODIC_PARTY_BUFFS = {
1014 [1] = { n="__JULIESBLESSINGOTHER", sourceRelation=DamageMeters_Relation_PARTY },
1015 [2] = { n="_PERIODICAURAHEALSELFOTHER", sourceRelation=DamageMeters_Relation_PARTY, destRelation=DamageMeters_Relation_PARTY }, -- ok
1016 [3] = { n="_PERIODICAURAHEALOTHEROTHER", sourceRelation=DamageMeters_Relation_PARTY, destRelation=DamageMeters_Relation_PARTY }, -- ok
1017 };
1018 -- guessing
1019 CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_BUFFS = {
1020 [1] = { n="__JULIESBLESSINGOTHER" },
1021 [2] = { n="_PERIODICAURAHEALSELFOTHER" }, -- ok
1022 [3] = { n="_PERIODICAURAHEALOTHEROTHER" }, -- ok
1023 };
1024 -- guessing
1025 CHAT_MSG_SPELL_PERIODIC_HOSTILEPLAYER_BUFFS = {
1026 [1] = { n="_PERIODICAURAHEALOTHERSELF" }, --!
1027 [2] = { n="_PERIODICAURAHEALSELFSELF" }, --!
1028 [3] = { n="_PERIODICAURAHEALSELFOTHER" }, --!
1029 [4] = { n="_PERIODICAURAHEALOTHEROTHER" }, --! ok, but irrelevant, i think
1030 };
1031 },
1032 };
1033  
1034 -------------------------------------------------------------------------------
1035  
1036 --[[
1037 I lifted this system from some other mod (can't remember which, maybe DPSPlus).
1038 Basically, the DM_Spellometer_Patterns works a lot like my own system, but
1039 the patterns are quite a bit more complicated in this case. In English, the two
1040 patterns represent all 4 of the following:
1041  
1042 DISPELLEDOTHEROTHER = "%s casts %s on %s.";
1043 DISPELLEDOTHERSELF = "%s casts %s on you.";
1044 DISPELLEDSELFOTHER = "You cast %s on %s.";
1045 DISPELLEDSELFSELF = "You cast %s.";
1046  
1047 ]]--
1048 DM_Spellometer_Patterns = {
1049 { pattern="^([^ ]+) cast[s]? (.*) on (.*)%.$", caster=1, spell=2, target=3 },
1050 { pattern="^([^ ]+) cast[s]? (.*)%.$", caster = 1, spell=2, target=nil }
1051 };
1052  
1053 -- This list contains all of the "cure" spells we want to track.
1054 DM_CURESPELLS = {
1055 "Dispel Magic",
1056 "Remove Curse",
1057 "Remove Lesser Curse",
1058 "Cure Poison",
1059 "Abolish Poison",
1060 "Cure Disease",
1061 "Abolish Disease",
1062 "Cleanse",
1063 "Purification",
1064 "Poison Cleansing Totem",
1065 "Disease Cleansing Totem",
1066 "Ancestral Spirit",
1067 "Rebirth",
1068 "Redemption",
1069 "Resurrection",
1070 "Defibrillate",
1071 };
1072  
1073 -------------------------------------------------------------------------------