applied akatsuki relax pp formula Xd
This commit is contained in:
parent
a65dcc2f10
commit
53140b4be4
49
oppai.c
49
oppai.c
@ -2078,7 +2078,7 @@ int pp_std(ezpp_t ez) {
|
||||
0.4f * al_min(1.0f, nobjects_over_2k) +
|
||||
(ez->nobjects > 2000 ? (float)log10(nobjects_over_2k) * 0.5f : 0.0f)
|
||||
);
|
||||
float miss_penality = (float)pow(0.97f, ez->nmiss);
|
||||
float miss_penality = (float)pow(0.97f, ez->nmiss + (ez->n50 * 0.35f));
|
||||
float combo_break = (
|
||||
(float)pow(ez->combo, 0.8f) / (float)pow(ez->max_combo, 0.8f)
|
||||
);
|
||||
@ -2087,6 +2087,8 @@ int pp_std(ezpp_t ez) {
|
||||
float acc_bonus, od_bonus;
|
||||
float od_squared;
|
||||
float hd_bonus;
|
||||
|
||||
float aim_crosscheck;
|
||||
|
||||
/* acc used for pp is different in scorev1 because it ignores sliders */
|
||||
float real_acc;
|
||||
@ -2125,13 +2127,13 @@ int pp_std(ezpp_t ez) {
|
||||
ar_bonus = 1.0f;
|
||||
|
||||
/* high ar bonus */
|
||||
if (ez->ar > 10.33f) {
|
||||
ar_bonus += 0.3f * (ez->ar - 10.33f);
|
||||
if (ez->ar > 10.7f) {
|
||||
ar_bonus += 0.45f * (ez->ar - 10.7f);
|
||||
}
|
||||
|
||||
/* low ar bonus */
|
||||
else if (ez->ar < 8.0f) {
|
||||
ar_bonus += 0.01f * (8.0f - ez->ar);
|
||||
else if (ez->ar < 8.5f) {
|
||||
ar_bonus += 0.025f * (8.5f - ez->ar);
|
||||
}
|
||||
|
||||
/* aim pp ---------------------------------------------------------- */
|
||||
@ -2167,45 +2169,25 @@ int pp_std(ezpp_t ez) {
|
||||
/* od bonus (high od requires better aim timing to acc) */
|
||||
od_squared = (float)pow(ez->od, 2);
|
||||
od_bonus = 0.98f + od_squared / 2500.0f;
|
||||
|
||||
aim_crosscheck = al_max(0.75f, 0.6f + (float)pow(real_acc, 3.0f) / 2.0f);
|
||||
|
||||
ez->aim_pp *= acc_bonus;
|
||||
ez->aim_pp *= od_bonus;
|
||||
ez->aim_pp *= aim_crosscheck;
|
||||
|
||||
/* speed pp -------------------------------------------------------- */
|
||||
ez->speed_pp = base_pp(ez->speed_stars);
|
||||
ez->speed_pp *= length_bonus;
|
||||
ez->speed_pp *= miss_penality;
|
||||
ez->speed_pp *= combo_break;
|
||||
ez->speed_pp *= hd_bonus;
|
||||
|
||||
/* scale the speed value with accuracy slightly */
|
||||
ez->speed_pp *= 0.02f + accuracy;
|
||||
|
||||
/* it's important to also consider accuracy difficulty when doing that */
|
||||
ez->speed_pp *= 0.96f + (od_squared / 1600.0f);
|
||||
|
||||
// REWORK: SPEED CHANGE before AR bonus
|
||||
if (ez->speed_pp <= 200.0f) // https://www.desmos.com/calculator/chklgsnpca?lang=de
|
||||
ez->speed_pp = (float) sin(ez->speed_pp * M_PI / 400.0f) * 100.0f;
|
||||
else {
|
||||
ez->speed_pp = (float) pow(ez->speed_pp, 0.8692f);
|
||||
}
|
||||
// REWORK END
|
||||
|
||||
if (ez->ar > 10.33f) {
|
||||
ez->speed_pp *= ar_bonus;
|
||||
}
|
||||
|
||||
/* acc pp ---------------------------------------------------------- */
|
||||
/* arbitrary values tom crafted out of trial and error */
|
||||
ez->acc_pp = (float)pow(1.52163f, ez->od) *
|
||||
(float)pow(real_acc, 24.0f) * 2.83f;
|
||||
ez->acc_pp = (float)pow(1.52163f, 5.0f + ez->od / 2.0f) *
|
||||
(float)pow(real_acc, 18.0f) * 2.83f;
|
||||
|
||||
/* length bonus (not the same as speed/aim length bonus) */
|
||||
ez->acc_pp *= al_min(1.15f, (float)pow(ncircles / 1000.0f, 0.3f));
|
||||
|
||||
if (ez->mods & MODS_HD) ez->acc_pp *= 1.08f;
|
||||
if (ez->mods & MODS_FL) ez->acc_pp *= 1.02f;
|
||||
|
||||
// REWORK: ACC CHANGE
|
||||
ez->acc_pp = (float) pow(ez->acc_pp, 0.94f);
|
||||
@ -2218,10 +2200,9 @@ int pp_std(ezpp_t ez) {
|
||||
|
||||
ez->pp = (float)(
|
||||
pow(
|
||||
pow(ez->aim_pp, 1.1f) +
|
||||
pow(ez->speed_pp, 1.1f) +
|
||||
pow(ez->acc_pp, 1.1f),
|
||||
1.0f / 1.1f
|
||||
pow(ez->aim_pp, 1.158f) +
|
||||
pow(ez->acc_pp, 1.186f),
|
||||
0.99f / 1.1f
|
||||
) * final_multiplier
|
||||
);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user