Skip to content

Instantly share code, notes, and snippets.

@Tylian
Last active August 29, 2015 14:19
Show Gist options
  • Save Tylian/49357ccb97359ca8d0d2 to your computer and use it in GitHub Desktop.
Save Tylian/49357ccb97359ca8d0d2 to your computer and use it in GitHub Desktop.
var expNeeded = [
0,
300, 600, 1100, 1700, 2300,
4200, 6000, 7350, 9930, 11800,
15600, 19600, 23700, 26400, 30500,
35400, 40500, 45700, 51000, 56600,
63900, 71400, 79100, 87100, 95209,
109800, 124800, 140200, 155900, 162500,
175900, 189600, 203500, 217900, 232320,
249900, 267800, 286200, 304900, 324000,
340200, 356800, 373700, 390800, 408200,
437600, 467500, 498000, 529000, 562000
];
var expTotal = [
0,
300, 900, 2000, 3700, 6000,
10200, 16200, 23550, 33480, 45280,
60880, 80480, 104180, 130580, 161080,
196480, 236980, 282680, 333680, 390280,
454180, 525580, 604680, 691780, 786989,
896789, 1021589, 1161789, 1317689, 1480189,
1656089, 1845689, 2049189, 2267089, 2499409,
2749309, 3017109, 3303309, 3608209, 3932209,
4272409, 4629209, 5002909, 5393709, 5801909,
6239509, 6707009, 7205009, 7734009, 8296009
];
function calculateExp(level, exp) {
return expTotal[level - 1] + exp
}
function calculateLevel(exp) {
for(var i = expTotal.length; i >= 0; i--) {
if(expTotal[i] <= exp) {
return i + 1;
}
}
return 0;
}
function calculateBestLeve(leves, exp) {
var level = calculateLevel(exp);
return leves.sort(function(a, b) {
return a.level - b.level;
}).filter(function(leve) {
return leve.level <= level;
}).reverse()[0];
}
var leveItems = [
{
level: 20,
name: "Goatskin Jacket",
exp: 19876
},
{
level: 25,
name: "Goatskin Wristbands",
exp: 34716
},
{
level: 30,
name: "Boarskin Satchel Belt",
exp: 47824
},
{
level: 35,
name: "Boarskin Ringbands",
exp: 61552
},
{
level: 40,
name: "Boarskin Culottes",
exp: 81322
},
{
level: 45,
name: "Rapotorskin Artisan's Belt",
exp: 97716
},
];
var leveAmounts = {};
var currentExp = calculateExp(21, 17334);
while(currentExp < expTotal[49]) {
var leve = calculateBestLeve(leveItems, currentExp);
currentExp += leve.exp * 2;
leveAmounts[leve.name] = (leveAmounts[leve.name] || 0) + 1;
}
console.log(JSON.stringify(leveAmounts, null, ' '));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment