9 const CalcPatternMod _pmod = HS;
11 const std::string name =
"HSMod";
12 const int _tap_size = hand;
18 float mod_base = 0.4F;
19 float prop_buffer = 1.F;
21 float total_prop_min = min_mod;
22 float total_prop_max = max_mod;
25 float total_prop_scaler = 5.571F;
26 float total_prop_base = 0.4F;
28 float split_hand_pool = 1.6F;
29 float split_hand_min = 0.89F;
30 float split_hand_max = 1.F;
31 float split_hand_scaler = 1.F;
33 float jack_pool = 1.35F;
34 float jack_min = 0.5F;
36 float jack_scaler = 1.F;
38 float decay_factor = 0.05F;
40 const std::vector<std::pair<std::string, float*>> _params{
41 {
"min_mod", &min_mod },
42 {
"max_mod", &max_mod },
43 {
"mod_base", &mod_base },
44 {
"prop_buffer", &prop_buffer },
46 {
"total_prop_scaler", &total_prop_scaler },
47 {
"total_prop_min", &total_prop_min },
48 {
"total_prop_max", &total_prop_max },
49 {
"total_prop_base", &total_prop_base },
51 {
"split_hand_pool", &split_hand_pool },
52 {
"split_hand_min", &split_hand_min },
53 {
"split_hand_max", &split_hand_max },
54 {
"split_hand_scaler", &split_hand_scaler },
56 {
"jack_pool", &jack_pool },
57 {
"jack_min", &jack_min },
58 {
"jack_max", &jack_max },
59 {
"jack_scaler", &jack_scaler },
61 {
"decay_factor", &decay_factor },
63#pragma endregion params and param map
65 float total_prop = 0.F;
66 float jumptrill_prop = 0.F;
67 float jack_prop = 0.F;
68 float last_mod = min_mod;
79 pmod = std::clamp(last_mod - decay_factor, min_mod, max_mod);
91 const auto& itvi = mitvi._itvi;
94 if (itvi.total_taps == 0) {
99 if (itvi.taps_by_size.at(_tap_size) == 0) {
104 t_taps =
static_cast<float>(itvi.total_taps);
107 total_prop = total_prop_base +
108 (
static_cast<float>((itvi.taps_by_size.at(_tap_size) +
109 itvi.mixed_hs_density_tap_bonus) +
111 (t_taps - prop_buffer) * total_prop_scaler);
113 std::clamp(fastsqrt(total_prop), total_prop_min, total_prop_max);
116 jumptrill_prop = std::clamp(
117 split_hand_pool - (
static_cast<float>(mitvi.not_hs) / t_taps),
122 jack_prop = std::clamp(
123 jack_pool - (
static_cast<float>(mitvi.actual_jacks) / t_taps),
128 std::clamp(total_prop * jumptrill_prop * jack_prop, min_mod, max_mod);