From 8804397ff39f142fec4ac13ee193928b639327cf Mon Sep 17 00:00:00 2001 From: Freeyorp Date: Tue, 14 May 2013 10:10:15 +1200 Subject: Chart the number of attackers --- public/index.html | 3 +++ public/js/mv/chart.js | 3 +++ public/js/mv/heap.js | 1 + public/js/mv/parse.js | 14 +++++++++++--- 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/public/index.html b/public/index.html index e27c0e6..5d0a9a2 100644 --- a/public/index.html +++ b/public/index.html @@ -25,6 +25,9 @@

Instance breakdown by Weapon

+
+

Instance breakdown by number of attackers

+

Instance breakdown by Type

diff --git a/public/js/mv/chart.js b/public/js/mv/chart.js index be0740b..bb511b9 100644 --- a/public/js/mv/chart.js +++ b/public/js/mv/chart.js @@ -23,6 +23,9 @@ var mv = function(mv) { ; mv.charts.wpn = pie(monoGroup(dc.pieChart("#wpn-chart"), "wpn")) ; + mv.charts.numAttackers = pie(monoGroup(dc.pieChart("#num-attackers-chart"), "numAttackers")) + .sort(function(d1, d2) { return d3.descending(d1.key, d2.key); }) + ; mv.charts.map = monoGroup(margined(wide(dc.bubbleChart("#map-chart"))), "map") .height(500) .colorCalculator(d3.scale.category20c()) diff --git a/public/js/mv/heap.js b/public/js/mv/heap.js index b226d72..4ba5c06 100644 --- a/public/js/mv/heap.js +++ b/public/js/mv/heap.js @@ -16,6 +16,7 @@ var mv = function(mv) { monoGroup("type", function(d) { return d.type; }); monoGroup("target", function(d) { return d.target; }); monoGroup("wpn", function(d) { return d.wpn; }); + monoGroup("numAttackers", function(d) { return d.numAttackers; }); function sa(p, d) { if (!d.pcstat) return p; p.str[d.pcstat.str]++ || (p.str[d.pcstat.str] = 1); diff --git a/public/js/mv/parse.js b/public/js/mv/parse.js index ecef612..162739f 100644 --- a/public/js/mv/parse.js +++ b/public/js/mv/parse.js @@ -25,7 +25,7 @@ var mv = function(mv) { */ var killedMobID = 0; /* - * mob ID -> { mobClass, player IDs -> { total, weapon names -> { sum damage } } } + * mob ID -> { mobClass, numAttackers, player IDs -> { total, weapon names -> { sum damage } } } */ var combat = {}; function freeMob() { @@ -73,7 +73,8 @@ var mv = function(mv) { pcstat: pcstat[d[2]], target: "UNKNOWN", dmg: 0, - wpn: "UNKNOWN" + wpn: "UNKNOWN", + numAttackers: 0 }; if (pcstat[d[2]] == undefined && (!fullyDefinedCutoff || ts > fullyDefinedCutoff)) { /* Undefined, and newer than any existing definedness cutoff */ @@ -83,6 +84,7 @@ var mv = function(mv) { if (killedMobID && killedMobID in combat && rec.pc in combat[killedMobID]) { var mob = combat[killedMobID]; rec.target = mob.mobClass; + rec.numAttackers = mob.numAttackers || 0; var weapons = mob[rec.pc]; /* We have the needed information. */ rec.dmg = weapons.total; @@ -145,7 +147,13 @@ var mv = function(mv) { var damage = parseInt(d[9]); /* Update combat state */ var mobData = combat[target] || (combat[target] = { mobClass: mobClass }); - var pcData = mobData[pc] || (mobData[pc] = {}); + var pcData; + if (pc in mobData) { + pcData = mobData[pc]; + } else { + (++mobData.numAttackers) || (mobData.numAttackers = 1); + pcData = mobData[pc] = {}; + } (pcData[wpn] += damage) || (pcData[wpn] = damage); (pcData.total += damage) || (pcData.total = damage); return true; -- cgit v1.2.3-60-g2f50