summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFreeyorp <TheFreeYorp@NOSPAM.G.m.a.i.l.replace>2013-05-13 05:32:50 +1200
committerFreeyorp <TheFreeYorp@NOSPAM.G.m.a.i.l.replace>2013-05-13 05:50:29 +1200
commit4c7034f4dbae545fe731e08151256092404f5a67 (patch)
treeacd0f911670d4ca47b8c2d6f54e84fabe19e4844
parentaf7ec4d5bed3b39caf1aef8e8f6875bc824c1bdb (diff)
downloadmanavis-4c7034f4dbae545fe731e08151256092404f5a67.tar.gz
manavis-4c7034f4dbae545fe731e08151256092404f5a67.tar.bz2
manavis-4c7034f4dbae545fe731e08151256092404f5a67.tar.xz
manavis-4c7034f4dbae545fe731e08151256092404f5a67.zip
Fix SPELLDMG parsing, add MOB-TO-MOB-DMG parsing
-rw-r--r--public/js/mv/parse.js23
1 files changed, 20 insertions, 3 deletions
diff --git a/public/js/mv/parse.js b/public/js/mv/parse.js
index 6ec70c2..65c409c 100644
--- a/public/js/mv/parse.js
+++ b/public/js/mv/parse.js
@@ -39,7 +39,7 @@ var mv = function(mv) {
var spl = data.split(/\r?\n/);
spl.forEach(function(e) {
/* Check for each of the record types we're looking for. */
- if (checkDmg(e) || checkStat(e)) {
+ if (checkDmg(e) || checkMobMobDmg(e) || checkStat(e)) {
/* We have a record that has nothing to do with killed mobs, so no mob just died. */
freeMob();
} else {
@@ -132,7 +132,7 @@ var mv = function(mv) {
return true;
}
function checkDmg(e) {
- var d = e.match(/^(\d+\.\d+) PC(\d+) (\d+):(\d+),(\d+) ([A-Z]+)DMG MOB(\d+) (\d+) FOR (\d+) WPN (\d+)/);
+ var d = e.match(/^(\d+\.\d+) PC(\d+) (\d+):(\d+),(\d+) ([A-Z]+)DMG MOB(\d+) (\d+) FOR (\d+) (?:WPN|BY) ([^ ]+)/);
if (!d) {
return false;
}
@@ -140,7 +140,7 @@ var mv = function(mv) {
var mobClass = mob.nameByServerID(d[8]);
var target = parseInt(d[7]);
var pc = parseInt(d[2]);
- var wpn = item.nameByServerID(d[10]);
+ var wpn = d[6] == "SPELL" ? d[10] : item.nameByServerID(d[10]);
var damage = parseInt(d[9]);
/* Update combat state */
var mobData = combat[target] || (combat[target] = { mobClass: mobClass });
@@ -148,6 +148,23 @@ var mv = function(mv) {
(pcData[wpn] += damage) || (pcData[wpn] = damage);
(pcData.total += damage) || (pcData.total = damage);
}
+ function checkMobMobDmg(e) {
+ var d = e.match(/^^(\d+\.\d+) PC(\d+) (\d+):(\d+),(\d+) MOB-TO-MOB-DMG FROM MOB(\d+) (\d+) TO MOB(\d+) (\d+) FOR (\d+)/);
+ if (!d) {
+ return false;
+ }
+ /* Parse out values */
+ var mobClass = mob.nameByServerID(d[9]);
+ var target = parseInt(d[8]);
+ var pc = parseInt(d[2]);
+ var wpn = mob.nameByServerID(d[7]);
+ var damage = parseInt(d[10]);
+ /* Update combat state */
+ var mobData = combat[target] || (combat[target] = { mobClass: mobClass });
+ var pcData = mobData[pc] || (mobData[pc] = {});
+ (pcData[wpn] += damage) || (pcData[wpn] = damage);
+ (pcData.total += damage) || (pcData.total = damage);
+ }
function checkMobDeath(e) {
var d = e.match(/^(\d+\.\d+) MOB(\d+) DEAD/);
if (!d) {