.

forum

posted

Total Posts

23

NM OD: Initial OD

EZ OD: OD/2

HR OD: OD*1.4

DT OD: ROUND(OD/1.5+5.5) TO 2 DECIMALS

HT OD: ROUND(OD/0.75-5.5) TO 2 DECIMALS

EZ+DT OD: ROUND(EZ OD/1.5+5.5) TO 2 DECIMALS

HR+DT OD: ROUND(HR OD/1.5+5.5) TO 2 DECIMALS

EZ+HT OD: ROUND(EZ OD/0.75-5.5) TO 2 DECIMALS

HR+HT OD: ROUND(HR OD/0.75-5.5) TO 2 DECIMALS

300 Hit window: ROUND(49.5-(OD/0.5)*1.5) TO 1 DECIMAL

Hope it helps

EDIT: Here's the new and better (???) taiko pp calculator (automated 300 hit window calculation based off _Gezo_'s od table): https://www.dropbox.com/s/52mikcnntehqn ... .html?dl=0

Wow, great job. Thank you for sharing this with us.

Topic Starter

Sweet! I thought DT was just the 300 hit window times 2/3, and HT was the 300 hit window times 4/3. I figured out the 300 hit window as 49.5-(3*OD) (edit: actually, that's the exact same as yours, because dividing by 0.5 is equal to multiplying by 2, and then that times 1.5 is 3),## Pohm wrote:

I've finally figured out the formulas in a clean way (these are on the spreadsheet as well):NM OD: Initial OD

EZ OD: OD/2

HR OD: OD*1.4

DT OD: ROUND(OD/1.5+5.5) TO 2 DECIMALS

HT OD: ROUND(OD/0.75-5.5) TO 2 DECIMALS

EZ+DT OD: ROUND(EZ OD/1.5+5.5) TO 2 DECIMALS

HR+DT OD: ROUND(HR OD/1.5+5.5) TO 2 DECIMALS

EZ+HT OD: ROUND(EZ OD/0.75-5.5) TO 2 DECIMALS

HR+HT OD: ROUND(HR OD/0.75-5.5) TO 2 DECIMALS

300 Hit window: ROUND(49.5-(OD/0.5)*1.5) TO 1 DECIMAL

Hope it helps

EDIT: Here's the new and better (???) taiko pp calculator (automated 300 hit window calculation based off _Gezo_'s od table): https://www.dropbox.com/s/52mikcnntehqn ... .html?dl=0

private double GetHitWindow300()

{

string ODstr = map.GetTag("Difficulty", "OverallDifficulty");

if(ODstr.Length > 3)

throw new Exception("Error, OD has more than one decimal place");

double OD = Convert.ToDouble(ODstr);

if(((int)mods & (int)Modifiers.HardRock) > 0)

OD *= 1.4;

else if(((int)mods & (int)Modifiers.Easy) > 0)

OD *= 0.5;

OD = Dewlib.Clamp(OD, 0, 10);

//Calculate the integer part of OD first, then modify later based on the decimal

double window = 49.5 - 3 * Math.Floor(OD);

//If OD has a decimal place

if(OD % 1 != 0)

{

//Avoid precision bugs - round to one decimal place

double ODdecimal = Math.Round(OD - Math.Floor(OD), 1);

if(0.1 <= ODdecimal && ODdecimal <= 0.3)

window -= 1;

else if(0.4 <= ODdecimal && ODdecimal <= 0.6)

window -= 2;

else if(0.7 <= ODdecimal && ODdecimal <= 0.9)

window -= 3;

}

if(((int)mods & (int)Modifiers.DoubleTime) > 0 || ((int)mods & (int)Modifiers.Nightcore) > 0)

window /= 1.5;

else if(((int)mods & (int)Modifiers.HalfTime) > 0)

window /= 0.75;

return window;

}

If anyone needs an explanation I can explain it, but yea, OD is weird when it comes to decimals...

I might add input validation and more CSS later.

http://pp.mon.im/

Awesome :0!!## montymintypie wrote:

Fixed the broken OD calculations by everyone, made some checkboxes pretty, made the calculation realtime, added a nice hosted domain.

I might add input validation and more CSS later.

http://pp.mon.im/

Go for it, no worries

By the way, it looks like you forgot to clamp od after applying the multiplier from HR/EZ

http://puu.sh/rixFO/7e3a6e8060.jpg

Fixed. Also added display of OD with mods applied.