diff --git a/src/mixer/mixer.rs b/src/mixer/mixer.rs index 0125a20..4a9246c 100644 --- a/src/mixer/mixer.rs +++ b/src/mixer/mixer.rs @@ -68,7 +68,10 @@ fn calculate_priorities(players: &Vec, team1: &Team, team2: &Team) -> Ve } } as f32; - let complex_coefficient = role_diff_rank * role_diff_avg_rank; + let team_rank_difference = (team1.average_rank_role(role) - team2.average_rank_role(role)).abs(); + let rank_difference_weight = 1.0 + 1.5 * team_rank_difference; + + let complex_coefficient = role_diff_rank * role_diff_avg_rank * rank_difference_weight; item.2 *= player.ranks[role] / complex_coefficient; } diff --git a/src/mixer/player.rs b/src/mixer/player.rs index 93ce83e..170f322 100644 --- a/src/mixer/player.rs +++ b/src/mixer/player.rs @@ -31,10 +31,11 @@ impl Player { pub fn base_priority(&self) -> HashMap { let mut priorities = HashMap::new(); + let priority_points = 100.0; if self.flex { for role in Role::iter() { - priorities.insert(role, (self.priority_roles.len() / 2) as f32); + priorities.insert(role, (priority_points / self.priority_roles.len() as f32) as f32); } return priorities; @@ -42,7 +43,6 @@ impl Player { let count = self.priority_roles.iter().filter(|role| role.is_some()).count() as f32; let denominator = count * (count + 1.0) * (2.0 * count + 1.0) / 6.0; - let priority_points = 100.0; for (i, role) in self.priority_roles.iter().enumerate() { if let Some(role) = role {