crushyourfoes
Version:
A LotRO combat log parser
206 lines (160 loc) • 5.88 kB
JavaScript
var test = require('tap').test;
var fs = require('fs');
var cyf = require('../lib/CRUSHYOURFOES.js');
var player = "Luringdad";
var opponent = "ALL";
var lines = fs.readFileSync("../dontcommitmebro/Combat_20140607_1.txt").toString().split("\n");
var myDPS = cyf.GetTotalDPS(player, opponent, lines);
// watch out, these parameters are transposed
var myEvades = cyf.ParseEvades(opponent, player, lines);
var myBlocks = cyf.ParseBlocks(opponent, player, lines);
var myParries = cyf.ParseParries(opponent, player, lines);
var myResists = cyf.ParseResists(opponent, player, lines);
// then flip back
var myAttacks = cyf.NumberOfAttacks(player, opponent, lines);
var myPartialAttacks = cyf.PartialAttacks(player, lines);
var bigHitOut = cyf.FindBiggestHit(player, opponent, lines);
var myCrits = cyf.FindCrits(player, opponent, lines);
var myDevCrits = cyf.FindDevCrits(player, opponent, lines);
var theirDPS = cyf.GetTotalDPS(opponent, player, lines);
// watch out, these parameters are transposed
var theirEvades = cyf.ParseEvades(player, opponent, lines);
var theirBlocks = cyf.ParseBlocks(player, opponent, lines);
var theirParries = cyf.ParseParries(player, opponent, lines);
var theirResists = cyf.ParseResists(player, opponent, lines);
// then flip back
var theirAttacks = cyf.NumberOfAttacks(opponent, player, lines);
var theirPartialAttacks = cyf.PartialAttacks(opponent, lines);
var bigHitIn = cyf.FindBiggestHit(opponent, player, lines);
var theirCrits = cyf.FindCrits(opponent, player, lines);
var theirDevCrits = cyf.FindDevCrits(opponent, player, lines);
var myTotalAvoidances = myEvades + myBlocks + myParries;
var theirTotalAvoidances = theirEvades + theirBlocks + theirParries;
var mySuccessfulAttacks = myAttacks - theirEvades - theirBlocks - theirParries - theirResists;
var theirSuccessfulAttacks = theirAttacks - myEvades - myBlocks - myParries - myResists;
// avoids div by zero
var myDPA = (myAttacks > 0 && myDPS > 0)
? cyf.DamagePerAttack(myAttacks, myDPS)
: 0;
var myDPATaken = (theirAttacks > 0 && theirDPS > 0)
? cyf.DamagePerAttack(theirAttacks, theirDPS)
: 0;
var theirAvoidResist = (mySuccessfulAttacks > 0)
? 100 - cyf.CalculatePercentage(myAttacks, mySuccessfulAttacks)
: 0;
var myAvoidResist = (theirSuccessfulAttacks > 0)
? 100 - cyf.CalculatePercentage(theirAttacks, theirSuccessfulAttacks)
: 0;
var myCritPct = (mySuccessfulAttacks > 0 && myCrits > 0)
? cyf.CalculatePercentage(mySuccessfulAttacks, myCrits)
: 0;
var theirCritPct = (theirSuccessfulAttacks > 0 && theirCrits > 0)
? cyf.CalculatePercentage(theirSuccessfulAttacks, theirCrits)
: 0;
var myDevCritPct = (mySuccessfulAttacks > 0 && myDevCrits > 0)
? cyf.CalculatePercentage(mySuccessfulAttacks, myDevCrits)
: 0;
var theirDevCritPct = (theirSuccessfulAttacks > 0 && theirDevCrits > 0)
? cyf.CalculatePercentage(theirSuccessfulAttacks, theirDevCrits)
: 0;
var myDPATaken = (theirAttacks > 0 && theirDPS > 0)
? cyf.DamagePerAttack(theirAttacks, theirDPS)
: 0;
var theirAvoidResist = (mySuccessfulAttacks > 0)
? 100 - cyf.CalculatePercentage(myAttacks, mySuccessfulAttacks)
: 0;
var myAvoidResist = (theirSuccessfulAttacks > 0)
? 100 - cyf.CalculatePercentage(theirAttacks, theirSuccessfulAttacks)
: 0;
var myCritPct = (mySuccessfulAttacks > 0 && myCrits > 0)
? cyf.CalculatePercentage(mySuccessfulAttacks, myCrits)
: 0;
var theirCritPct = (theirSuccessfulAttacks > 0 && theirCrits > 0)
? cyf.CalculatePercentage(theirSuccessfulAttacks, theirCrits)
: 0;
var myDevCritPct = (mySuccessfulAttacks > 0 && myDevCrits > 0)
? cyf.CalculatePercentage(mySuccessfulAttacks, myDevCrits)
: 0;
var theirDevCritPct = (theirSuccessfulAttacks > 0 && theirDevCrits > 0)
? cyf.CalculatePercentage(theirSuccessfulAttacks, theirDevCrits)
: 0;
var myBiggestHitOut = bigHitOut[0];
var myBiggestHitIn = bigHitIn[0];
var bigCombatLogOut = bigHitOut[1];
var bigCombatLogIn = bigHitIn[1];
var myKBs = cyf.MyKillingBlows(lines);
var myKills = cyf.WhoDied(lines);
test("MyDPS", function(t) {
t.equal(myDPS, 732221)
t.end()
});
test("TheirDPS", function(t) {
t.equal(theirDPS, 115012)
t.end()
});
test("myDPA", function(t) {
t.equal(myDPA, 152)
t.end();
});
test("theirDPA", function(t) {
t.equal(myDPATaken, 127)
t.end();
});
test("myBiggestHitOut", function(t) {
t.equal(myBiggestHitOut, 1345)
t.end();
});
test("myBiggestHitIn", function(t) {
t.equal(myBiggestHitIn, 2953)
t.end();
});
test("myAttacks", function(t) {
t.equal(myAttacks, 4807)
t.end();
});
test("theirAttacks", function(t) {
t.equal(theirAttacks, 905)
t.end();
});
test("mySuccessfulAttacks", function(t) {
t.equal(mySuccessfulAttacks, 4720)
t.end();
});
test("theirSuccessfulAttacks", function(t) {
t.equal(theirSuccessfulAttacks, 720)
t.end();
});
//FIXME: toString() lolwut?
test("myAvoidResist.toFixed(2)", function(t) {
t.equal(myAvoidResist.toFixed(2), "20.44")
t.end()
});
test("theirAvoidResist.toFixed(2)", function(t) {
t.equal(theirAvoidResist.toFixed(2), "1.81")
t.end()
});
test("myCritPct.toFixed(2)", function(t) {
t.equal(myCritPct.toFixed(2), "20.83")
t.end()
});
test("theirCritPct.toFixed(2)", function(t) {
t.equal(theirCritPct.toFixed(2), "14.17")
t.end()
});
test("myDevCritPct.toFixed(2)", function(t) {
t.equal(myDevCritPct.toFixed(2), "5.74")
t.end()
});
test("theirDevCritPct.toFixed(2)", function(t) {
t.equal(theirDevCritPct.toFixed(2), "3.61")
t.end()
});
test("bigCombatLogIn", function(t) {
t.equal(bigCombatLogIn, "Commander Târsh scored a hit with Bellow of Wrath on Luringdad for 2,953 Shadow damage to Morale.")
t.end()
});
test("bigCombatLogOut", function(t) {
t.equal(bigCombatLogOut, "Luringdad scored a devastating hit with Exposed Throat on the Moria Orc-warrior for 1,345 Common damage to Morale.")
t.end()
});
//TODO add kill list