I'm trying to make an offline version of osu!skills that would locally update your selected skill every time you submit a map in your top 100 plays, similarly to the ingame rank gain system you get from gaining pp, but when I tried to map the calculations for Tenacity on desmos I just get an equation that just creates a flat equation when you add more length to it
the way created the equation was:
and the equation in in code is:
double intervalScaled = 1.0 / pow(longestStream.interval, pow(longestStream.interval, GetVar("Tenacity", "IntervalPow")) * GetVar("Tenacity", "IntervalMult")) * GetVar("Tenacity", "IntervalMult2");
double lengthScaled = pow(GetVar("Tenacity", "LengthDivisor") / longestStream.length, GetVar("Tenacity", "LengthDivisor") / longestStream.length * GetVar("Tenacity", "LengthMult"));
double tenacity = intervalScaled * lengthScaled;
beatmap.skills.tenacity = tenacity;
beatmap.skills.tenacity = GetVar("Tenacity", "TotalMult") * pow(beatmap.skills.tenacity, GetVar("Tenacity", "TotalPow"));
return beatmap.skills.tenacity;
(from https://github.com/Kert/osuSkills/blob/master/tenacity.cpp)
the way created the equation was:
and the equation in in code is:
double intervalScaled = 1.0 / pow(longestStream.interval, pow(longestStream.interval, GetVar("Tenacity", "IntervalPow")) * GetVar("Tenacity", "IntervalMult")) * GetVar("Tenacity", "IntervalMult2");
double lengthScaled = pow(GetVar("Tenacity", "LengthDivisor") / longestStream.length, GetVar("Tenacity", "LengthDivisor") / longestStream.length * GetVar("Tenacity", "LengthMult"));
double tenacity = intervalScaled * lengthScaled;
beatmap.skills.tenacity = tenacity;
beatmap.skills.tenacity = GetVar("Tenacity", "TotalMult") * pow(beatmap.skills.tenacity, GetVar("Tenacity", "TotalPow"));
return beatmap.skills.tenacity;
(from https://github.com/Kert/osuSkills/blob/master/tenacity.cpp)