Как работают тренировки:
В F-Legion тренировка команды состоит из трёх вещей, и бот заполняет все три автоматически:
1. 4 групповые тренировки (слоты Группа 1…4) — каждый выбирается из 9 доступных типов.
2. Группа для каждого игрока — в какую из этих 4 групп его поставить.
3. 1 индивидуальный навык каждому игроку — что качать персонально сверх группы.
Цель: за один проход подобрать комбинацию, которая приносит максимум пользы всей команде.
---
Шаг 0. Что бот читает про каждого игрока
Позицию (GK, LD, CD, RD, LM, CM, RM, FW), возраст, талант и список навыков. У каждого навыка:
- Цвет: green — профильный (сильный для позиции), blue — общий, red — чужой (не нужен), ⚫ чёрный — вообще нетренируемый.
- Уровень (число).
- Свежесть (статус 1–5): 1 совсем недавно качался · 2 недавно · 3 начнёт падать · 4 начал падать · 5 давно падает.
- Падающие = статусы 3, 4, 5 (их надо срочно поддержать).
- Хорошие = статусы 1, 2.
---
Шаг 1. Отсев лишнего + приоритеты позиции
- Игнор-лист по позиции: защитники не качают Пенальти/Штрафные/вратарские и т.п. — такие навыки выкидываются.
- Условный игнор: Навесы у полузащитников учитываются только если уровень ≥ 40; Пенальти/Штрафные у нападающих — только если ≥ 20 (иначе выкидываются).
- Список приоритетов позиции — упорядоченный «что важнее всего». Пример для нападающего (FW): Дриблинг → Удар → Скорость → Техника → Контроль мяча → …
---
Шаг 2. Считаем важность навыков для команды (веса)
Берутся только и навыки. Каждое появление навыка у игрока добавляет вес по таблице:
Если навык ПАДАЮЩИЙ (статус 3–5):
профильный → 10
приоритетный (не ) → 8
прочий → 4
Если навык В ПОРЯДКЕ (статус 1–2):
профильный → 6
приоритетный (не ) → 2
обычный → 1
Формула веса навыка по команде:
вес(навык) = Σ по всем игрокам, у кого он есть, значения из таблицы выше
Смысл: профильный навык, который падает сразу у многих, набирает огромный вес → команде срочно нужна тренировка на него.
---
Шаг 3. Выбор лучших 4 групповых тренировок
Каждый из 9 типов покрывает свой набор навыков. Бот перебирает все сочетания 4 из 9 (это ровно C(9,4) = 126 вариантов) и для каждого считает:
score(комбо) = Σ вес(s) для всех навыков s, покрытых этими 4 тренировками
(навыки объединяются, дубли не считаются дважды)
Побеждает комбинация с максимальным score — это и есть Группа 1…4.
(9 типов: Стандарты-атака, Стандарты-защита, 5×5 большое/малое поле, Квадрат, Тактика, Крбота с мячом — у каждого свой список навыков.)
---
Шаг 4. В какую из 4 групп поставить игрока
Для игрока строим его «важные» навыки:
green → вес 2 (но 5, если это вратарский навык у GK)
blue → вес 1 (но 5, если это вратарский навык у GK)
+ отдельно список ПАДАЮЩИХ навыков игрока
Для каждой из 4 групп (её набор навыков = gs):
covered = Σ вес важных навыков игрока, которые попадают в gs
falling_cov = сколько падающих навыков игрока попадает в gs
score(группа) = covered + falling_cov × 3
Игрок идёт в группу с максимальным score. То есть туда, где тренируют больше всего его ситетом — падающих навыков.
---
Шаг 5. Индивидуальный навык каждому игроку
Персональный навык добавляет то, чего нет в его групповой тренировке (чтобы не дублировать). Бонусы: +10 если навык падает, +5 если в хорошем статусе. По умолчанию качаются только -навыки.
Вратарь (GK):
вратарские навыки (не в группе): score = 20 (+10 падает / +5 хороший)
затем приоритетные (не в группе): score = 10 + место_в_приоритете (+10/+5)
Полевой игрок:
1) сначала ПАДАЮЩИЕ green (и приоритетные blue), не входящие в группу:
score = 10 + бонус_за_приоритет
2) если падающих нет — берём первый доступный приоритетный навык:
score = место_в_приоритете (+5 если статус хороший)
Выбирается навык с наибольшим score. Если подходящего нет — оставляем то, что стояло.
-—
Это щас шутка была?