# Kingdom (v 1.0)
## Раскачка
Вместо текущей прокачки(получаешь опыт к навыку => лвл апает при достижении отметки)
Будут "пути" развития
### Путь воина
- Лучник
Повышенный урон со стрел + что-то
- Воин
Повышенный урон с руки и сопротивление урону
### Путь рабочего
- Шахтер
Повышение шансов на добычу ресурсов
- Древоруб
Повышение шансов на добычу ресурсов + капитатор
### Путь ремесленника
- Кузнец
Переплавка, инструменты, броня и штуки
- Плотник
Крафт деревянных штук
### Путь еды(трол кал)
- Фермер
Повышение шансов на урожай с ростков
- Рыбак
(?) Ускорение ловли
(?) Переделать, что дропается только рыба?
### Путь чародея
- Алхимик
Шансы на варку зелий
- Зачарователь
Шансы на зачарования
(?) либо анлокать уровни зачарования либо делать на 2,3 уровни енчанта коэффициент енчанта
### Енфорс пути
Коэффициенты для опыта "путей" считаются так:
1) Сортируем пути по количеству опыта
Коэффициенты для путей в порядке убывания опыта:
1) 1.0 (самый опытный путь)
2) 0.6
3) 0.4
4) 0.2
5) 0.1
При получении опыта он умножается на коэффициент соотвествующего пути
При совершении действий(ломание блока, крафт, варение, енчант и т.д.) добавляется опыт в пул "пути"(референс на смежные навыки).
При лвлапе пути показывается окошко, где ты выбираешь, что качать "на пути"(на каждом навыке написано при ховере че дает и какой шанс был/стал)
Каждый навык увеличивает шансы на успех при совершении соответствующих действий.
При достижении последнего уровня навыка все действия имеют 100% шанс
Например Шахтер:
- Базовый шанс = шанс с уровнем навыка 0
Базовый шанс добыть алмаз: 1%
Базовый шанс добыть булыгу: 50%
N = базовый шанс совершить действие
x = уровень
Z = максимальный уровень
Шанс совершить действие: N + (x / Z) * (1 - N)
Пример шансов для N = 1%, Z = 20

Соотвественно, на 10 уровне шанс добыть алмаз - ~50%
Формула шанса еще не утверждена, возможно будет использоваться что-то пораболическое для смещения центра важности уровней
## Мир
### Время
- Использовать как базу систему погод и сезонов с прошлой версии
- Добавить полный функционал внутреннего времени(год месяц день и тд)
- На основе прошлой версии определить оптимальную длительность года
- Добить систему сезонов(весна должна полностью реверсить эффекты зимы)
- Для сезонов сделать глобальные эффекты
### Королевства
Объекты:
1) Деревня
2) Город
3) Королевство
- Внедрить королевства и субъекты как игровой объект
- Как понять, что что-то = деревня/город?
Идеи:
1) "Счет" объекта: на основе фич(кол-во кроватей, хитмапа, тропинки, кол-во печек и верстаков)
Алгоритм:
1) Пробегать по чанкам/NхN надчанкам
2) Считать центроид по атрибутам(печки, кровати, тропинки, верстаки)
3) Как понять, что деревня не NPC: использовать хитмапу
4) Если счет > счета деревни, расширять область поиска(город же больше деревни по размеру)
5) Если счет в новой области > счета деревни, то это город
6) Как идентифицировать город? при перерасчете фичи поменяются
Идеи:
1) Для города/деревни определять центроид, а после перерасчета смотреть ближайший центроид из прошлого сета, если расстояние <= радиус города, то мердж
- При каких условиях создается королевство?
Идеи:
Событие "новый город" - когда мы рассчитали город и не нашли центроида, либо нашли, но это был центроид деревни
- Как оформить создание королевства? Кто будет отвественный за создание королевства?
Мысли:
1) Побочный навык лидерства(Draft)
2) Механизм голосования?
3) Выбирать рандомно?
4) Как ваще понять в каком городе живет челикс(хитмапа)(нужно ли это ваще?)
5) Сделать изначальный набор королевств(как сделать чтобы город стал из одного королевства другим?)
- (?) Явная принадлежность к королевству
## Общие элементы
- Региональный текстовый чат остается таким же(кластер алгоритм вроде DBSCAN)
### Войсчат:
Полная переработка войсчата
- Голосовые комнаты не создаются динамически в рандомных местах.
- Голосовые комнаты привязаны к "точкам" (центр таверны, центр чьего-то дома, центр рынка)
- "Точки" имеют радиус и координаты(фактически циллиндр/сфера еще не решил)
- "Точки" задаются ебаным алгоритмом который я еще не придумал
### Идеи для определения комнат
- По хитмапам(точка = центроид хитмапы)
- Полу-вручную: центр обозначается игроком(например, ставится баннер или табличка в специальном формате), а радиус считается уже автоматически
- Вручную(самый нежелательный способ)
- Авторизация через /register с опциональной одноразовой привязкой дискорда