Skip to content

Commit 801ac69

Browse files
committed
rip pure runman farm by dragging diff towards tc | 460
this is kind of a bandaid. BUT - to not remove all runningmen by killing its scaling altogether, compromise by letting extreme overrated rm detection exist, and then scale it back towards the tc instead of applying some additional arbitrary scalar
1 parent 9d5eb4f commit 801ac69

File tree

3 files changed

+30
-7
lines changed

3 files changed

+30
-7
lines changed

src/Etterna/MinaCalc/Dependent/HD_PatternMods/RunningMan.h

+17-3
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,11 @@ struct RunningManMod
3232
float offhand_tap_prop_max = 1.F;
3333
float offhand_tap_prop_base = 1.7F;
3434

35+
float offhand_tap_prop_anch_diff_base = 1.2F;
36+
float offhand_tap_prop_anch_diff_scaler = 1.1F;
37+
float offhand_tap_prop_anch_diff_min = 0.75F;
38+
float offhand_tap_prop_anch_diff_max = 1.F;
39+
3540
float off_tap_same_prop_scaler = 1.F;
3641
float off_tap_same_prop_min = 0.F;
3742
float off_tap_same_prop_max = 1.25F;
@@ -71,6 +76,11 @@ struct RunningManMod
7176
{ "offhand_tap_prop_max", &offhand_tap_prop_max },
7277
{ "offhand_tap_prop_base", &offhand_tap_prop_base },
7378

79+
{ "offhand_tap_prop_anch_diff_base", &offhand_tap_prop_anch_diff_base },
80+
{ "offhand_tap_prop_anch_diff_scaler", &offhand_tap_prop_anch_diff_scaler },
81+
{ "offhand_tap_prop_anch_diff_min", &offhand_tap_prop_anch_diff_min },
82+
{ "offhand_tap_prop_anch_diff_max", &offhand_tap_prop_anch_diff_max },
83+
7484
{ "off_tap_same_prop_scaler", &off_tap_same_prop_scaler },
7585
{ "off_tap_same_prop_min", &off_tap_same_prop_min },
7686
{ "off_tap_same_prop_max", &off_tap_same_prop_max },
@@ -171,10 +181,14 @@ struct RunningManMod
171181
* as well- this is called immediately after advance_sequencing, so
172182
* we've already determined which sequence to use as rm */
173183

174-
float oht_p = 1.5F - (highest_rm._rm.get_offhand_tap_prop() *
175-
offhand_tap_prop_scaler);
184+
float oht_p = offhand_tap_prop_anch_diff_base -
185+
(highest_rm._rm.get_offhand_tap_prop() *
186+
offhand_tap_prop_anch_diff_scaler);
187+
188+
oht_p = std::clamp(oht_p,
189+
offhand_tap_prop_anch_diff_min,
190+
offhand_tap_prop_anch_diff_max);
176191

177-
oht_p = std::clamp(oht_p, 0.75F, 1.0F);
178192
return highest_rm.get_difficulty() * oht_p;
179193
}
180194

src/Etterna/MinaCalc/MinaCalc.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -986,7 +986,7 @@ MinaSDCalcDebug(
986986
}
987987
}
988988

989-
int mina_calc_version = 459;
989+
int mina_calc_version = 460;
990990
auto
991991
GetCalcVersion() -> int
992992
{

src/Etterna/MinaCalc/SequencedBaseDiffCalc.h

+12-3
Original file line numberDiff line numberDiff line change
@@ -101,11 +101,20 @@ struct techyo
101101
{
102102
// for now do simple thing, for this interval either use the higher
103103
// between weighted adjusted ms/nps base and runningman diff
104-
// we definitely don't want to average here because we don't want tech
104+
// we definitely don't want to pure average here because we don't want tech
105105
// to only be files with strong runningman pattern detection, but we
106106
// could probably do something more robust at some point
107-
return std::max(weighted_average(get_tc_base(calc), nps_base, 4.F, 9.F),
108-
rm_itv_max_diff);
107+
auto tc = weighted_average(get_tc_base(calc), nps_base, 4.F, 9.F);
108+
auto rm = rm_itv_max_diff;
109+
if (rm >= tc) {
110+
// for rm dominant intervals, use tc to drag diff down
111+
// weight should be [0,1]
112+
// 1 -> all rm
113+
// 0 -> all tc
114+
constexpr float weight = 0.6F;
115+
rm = weighted_average(rm, tc, weight, 1.F);
116+
}
117+
return std::max(tc, rm);
109118
}
110119

111120
void interval_end()

0 commit comments

Comments
 (0)