---
# System prepended metadata

title: Kingdom (v 1.0)

---

# 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
![](https://i.imgur.com/QPuHJ9m.png)

Соотвественно, на 10 уровне шанс добыть алмаз - ~50%
Формула шанса еще не утверждена, возможно будет использоваться что-то пораболическое для смещения центра важности уровней


## Мир

### Время
- Использовать как базу систему погод и сезонов с прошлой версии
- Добавить полный функционал внутреннего времени(год месяц день и тд)
- На основе прошлой версии определить оптимальную длительность года
- Добить систему сезонов(весна должна полностью реверсить эффекты зимы)
- Для сезонов сделать глобальные эффекты

### Королевства
Объекты:
1) Деревня
2) Город
3) Королевство


- Внедрить королевства и субъекты как игровой объект
- Как понять, что что-то = деревня/город?
Идеи:
1) "Счет" объекта: на основе фич(кол-во кроватей, хитмапа, тропинки, кол-во печек и верстаков)
Алгоритм:
1) Пробегать по чанкам/NхN надчанкам
2) Считать центроид по атрибутам(печки, кровати, тропинки, верстаки)
3) Как понять, что деревня не NPC: использовать хитмапу
4) Если счет > счета деревни, расширять область поиска(город же больше деревни по размеру)
5) Если счет в новой области > счета деревни, то это город
6) Как идентифицировать город? при перерасчете фичи поменяются
Идеи:
1) Для города/деревни определять центроид, а после перерасчета смотреть ближайший центроид из прошлого сета, если расстояние <= радиус города, то мердж

- При каких условиях создается королевство?
Идеи:
Событие "новый город" - когда мы рассчитали город и не нашли центроида, либо нашли, но это был центроид деревни

- Как оформить создание королевства? Кто будет отвественный за создание королевства?
Мысли:
1) Побочный навык лидерства(Draft)
2) Механизм голосования?
3) Выбирать рандомно?
4) Как ваще понять в каком городе живет челикс(хитмапа)(нужно ли это ваще?)
5) Сделать изначальный набор королевств(как сделать чтобы город стал из одного королевства другим?)

- (?) Явная принадлежность к королевству


## Общие элементы

- Региональный текстовый чат остается таким же(кластер алгоритм вроде DBSCAN)

### Войсчат:
Полная переработка войсчата
- Голосовые комнаты не создаются динамически в рандомных местах.
- Голосовые комнаты привязаны к "точкам" (центр таверны, центр чьего-то дома, центр рынка)
- "Точки" имеют радиус и координаты(фактически циллиндр/сфера еще не решил)
- "Точки" задаются ебаным алгоритмом который я еще не придумал

### Идеи для определения комнат
- По хитмапам(точка = центроид хитмапы)
- Полу-вручную: центр обозначается игроком(например, ставится баннер или табличка в специальном формате), а радиус считается уже автоматически
- Вручную(самый нежелательный способ)


- Авторизация через /register с опциональной одноразовой привязкой дискорда