You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
How many months will it take for me to reach master rank if I play the same hero?
Instructions
Go to your dotabuff profile, and go to Activity tab. The URL should look like https://www.dotabuff.com/players/<YOUR_ID>/activity
Open console and execute the following code (Ctrl + Shift + J for windows) by copy-pasting:
// This variable will remove weeks where you played games less than this number.// note: change this if you want.varremoveLessThan=5;/** * function that computes the shit * @param monthAvg {Number} averages games you play in a month * @param winrate {Number} your win rate * @return {String} */functioncompute(monthAvg,winrate=50){// convert to percentageconstwinPercent=winrate/100;// derive lose percentageconstlosePercent=1-winPercent;// 1500 exp from 3-star challenges every 14 days, so that's 3000 in 1 monthconstchallengeExp=3000;// exp required for master rank// from: https://www.reddit.com/r/DotA2/comments/84kxp6/0_25_master_rank_we_did_the_math/constmasterExp=46850;// add experience from winning, losing and completed challengesconstexpPerMonth=((monthAvg*winPercent)*100)+((monthAvg*losePercent)*50)+challengeExp;// compute required monthsconstrequiredMonths=(masterExp/expPerMonth).toFixed(2);return`Play ${monthAvg} games a month using only 1 hero and you will reach master rank in ${requiredMonths} months. Goodluck!`;}functiongetMonthAverage(){// get weekly average gamesconstgames=Array.from(document.querySelectorAll('.col')).map(d=>Array.from(d.querySelectorAll('.day')).map(c=>parseInt(c.className.replace(/((day(matches-)?))|(blank)/g,'')||0)).reduce((a,b)=>a+b,0)).filter(a=>a>removeLessThan);// convert it to monthly average gamesreturn((games.reduce((a,b)=>a+b,0)/games.length)*4).toFixed(2);}functiongetWinRate(){// get winrate from the headerconstwinRate=parseFloat(Array.from(document.querySelectorAll('dt')).filter(dt=>dt.innerText==='WIN RATE')[0].parentElement.firstChild.innerText.replace('%',''));}console.log(compute(getMonthAverage(),getWinRate()));