Code:
function timeToMaxTraits(region, toonName, realmName, LFRBossKills, normBossKills, heroicBossKills, mythicBossKills, mythicDaily, mythicHighest)
{
if (!toonName || !realmName)
{
return " ";
}
Utilities.sleep(Math.floor((Math.random() * 10000) + 1000));
toonName = toonName.replace(/[\u200B-\u200D\uFEFF]/g, "");
realmName = realmName.replace(/[\u200B-\u200D\uFEFF]/g, "");
region = region.replace(/[\u200B-\u200D\uFEFF]/g, "");
region = region.toLowerCase();
var options={ muteHttpExceptions:true };
var toonJSON = UrlFetchApp.fetch("https://"+region+".api.battle.net/wow/character/"+realmName+"/"+toonName+"?fields=reputation,statistics,items,quests,achievements,audit,progression,feed,professions,talents&?locale=en_US&apikey="+apikey+"", options);
var toon = JSON.parse(toonJSON.toString());
var artifactKnowledge;
for (i=0; i<toon.achievements.criteria.length; i++)
{
if (toon.achievements.criteria[i] === 31466)
{
artifactKnowledge = toon.achievements.criteriaQuantity[i];
}
};
var artifactRankTotal;
for (i=0; i<toon.achievements.criteria.length; i++)
{
if (toon.achievements.criteria[i] === 30103)
{
artifactRankTotal = toon.achievements.criteriaQuantity[i];
}
}
var traitArray = [100, 400, 725, 1075, 1450, 1850, 2275, 2725, 3250, 3875,
4625, 5500, 6500, 13340, 22170, 33450, 47850, 66470, 90740, 121070,
160590, 211470, 276270, 358770, 464050, 602700, 785480, 1026350, 1341870, 1759430,
2305430, 3023630, 3970290, 5216130, 6851330, 8766330, 23766330, 40266330, 58266330, 78266330,
100266330, 124266330, 150766330, 179766330, 211766330, 246766330, 285266330, 327766330, 374766330, 426266330,
482766330, 544766330, 612766330, 687766330, 770266330, 861266330, 961266330, 1071266330, 1192266330, 1325266330,
1471766330, 1632766330, 1809766330, 2004266330, 2218266330, 2453766330, 2712766330, 2997766330, 3311266330, 3656266330, 4035766330];
var multiplierArray = [1, 1.25, 1.5, 1.9, 2.4, 3, 3.75, 4.75, 6, 7.5, 9.5, 12, 15, 18.75, 23.50, 29.50, 37, 46.5, 58, 73, 100, 121, 143, 179, 224, 250, 500, 750,
1000, 1250, 1500, 1725, 2000, 2250, 2500, 2750, 3000, 3250, 3500, 3750, 4000];
var bossKills = (LFRBossKills * .5) + (normBossKills * .5) + (heroicBossKills * .5) + mythicBossKills;
var apPerBoss = 940 * mythicDaily;
var day = 0;
var AP = artifactRankTotal;
var index = artifactKnowledge;
var check = false;
while (AP < traitArray[70])
{
if (day % 5 == 0 && index <40)
{
index++
}
if (day % 7 == 0)
{
AP += (400 * bossKills * multiplierArray[index]);
AP += (3000 * multiplierArray[index]);
}
AP += (apPerBoss * multiplierArray[index]);
day++
}
return day + 1;
}
Should be accurate. Someone let me know if it's not. I'm not a programmer so excuse me if something is wrong.