Open Bobrokrot opened 2 years ago
Добавил количество лута для каждого ресурса в таблицу. Там у каждого лута есть "класс" того, как количество лута (мин. значение и макс. значение) увеличивается с длительностью Охоты. (id, min1, max1, min2, max2, min3, max3, min4, max4, min5, max5).
К сожалению, пришлось задокументировать отдельно каждый класс. Прослеживается общая тенденция, что среднее количество увеличивается x1, x1.5, x2.0, x2.5, x3.0 и разброс min-max +-10%, но, к сожалению, для низких значений это не выполняется. :(
Из этого можно рисовать таблички: по X длительность Охоты, по Y количество слуг и есть ли бонус +20% к ресурсами, в ячейках количество ресурсов min-max.
Hunt (servant location) — Name — Region — Class — Difficulty (число) — Slots (макс. число сервантов, которые можно отправить на Hunt) — {список до 5 шт. id ресурсов} — {у каждого ресурса hunt reward id
Также в таблице можно указать для 2/4/8/16/23 часов мелким шрифтом
Hunt Reward: — id — min1 (мин. число ресурсов на 2ч миссии) — max1 (макс. число ресурсов на 2ч миссии) — min2 (4ч) — max2 (4ч) — min3 (8ч) — max3 (8ч) — min4 (16ч) — max4 (16ч) — min5 (23ч) — max5 (23ч)
Вариации формул расчёта: — умножить все числа на количество сервантов — умножить все числа на x1.2 при True/False галочке для правильного региона. Умноженное округлять вверх (НАДО ПРОВЕРИТЬ)
Формула для Difficulty: — минус 25 при 2 сервантах, минус 50 при 3 сервантах — минус 100 при правильном классе серванта (добавить галочку под это)
Раз уж пошли калькуляторы, то вот на отдельной странице можно вот такой сделать: Сервант: — Expertise (слайдер от 0% до 26%) — слоты под броню, оружие и ювелирку. Выбор экипировки, оттуда для расчётов нужен только Gear Level.
Выводить суммарный Gear Level и Power = Gear Level 9 (1 + Expertise %)
Ну и заодно можно сделать такую табличку. В ней просто показано, какие ресурсы могут/выгоднее всего собирать слугам в зависимости от их типа и региона.
@Jagerente В каком формате тебе это присылать нужно, хоть примерно?
Бэкенд часть в теории сделана.
@Bobrokrot касательно структуры базы данных. Было добавлено 4 новых таблицы.
Основная таблица самих хантов
hunts
id | regionid | location | maxservants | difficulty | classbonus
Где regionid - id региона location - Название локации (можно сказать что это имя ханта) maxservants - Максимальное кол - во сервантов difficulty - Сложность (Целое число) classbonus - id типа крови (bloodtype) который является бонусным для экспедиции.
Классификатор с возможными длительностями экспедиций (В часах)
hunttimes
id | time
Где time - Количество часов. (Целое число)
Классификатор модификаторов (1 сервант без бонусов, 1 сервант с бонусом, итд...)
huntmodifiers
id | servantsamount | bonus
Где servantsamount - Кол - во сервантов (Целое число) bonus - Бонус (Строка). Имеется в виду в процентах
Эта таблица содержит возможные модификаторы экспедиций. Например, 1 сервант с бонусом, 1 сервант с 20% бонусом, 2 серванта, бонусный только один итд...
huntrewardvalues
huntid | itemid | time | modifier | minamount | maxamount
Где huntid - id экспедиции itemid - id получаемого предмета time - id классификатора времени (hunttimes) modifier - id классификатора модификаторов (huntmodifiers) minamount - Минимальное количество предмета которое можно получить с экспедиции maxamount - Максимальное количество предмета которое можно получить с экспедиции
Первичным ключом в этой таблице являются сразу 4 первых столбца. Поэтому только одна строка с каждой возможной комибанацией из них возможна В чём идея последней таблицы. С huntid всё понятно, остальное на примере. Допустим мы имеем следующие данные: (Допустим что у нас есть hunt с id 33)
Следущие возможные часы для экспедиций:
hunttimes
1 | 2
2 | 4
3 | 8
Далее имеем следующие модификаторы:
huntmodifiers
1 | 1 | 'No bonus'
2 | 1 | `20% bonus`
3 | 2 | `No bonus`
4 | 2 | '20 % bonus'
5 | 2 | '40% bonus'
Представлены возможные комбинации, например первое это отправили 1 серванта без бонусов типа крови. Строка с id 2 представляет собой случай, когда мы отправили одного серванта и у него есть бонус по типу крови.
Далее. Вот примеры записи в таблицу huntrewardvalues
huntrewardvalues
33 | 98 | 1 | 2 | 10 | 15
Что значит запись: Для экспедиции с id 33, мы можем получить предмет с id 98, при отправке на 2 часа (id 1 на hunttimes),с условием чтоо у него есть бонус типа крови (id 2 на huntmodifiers), минимальное количество 10, максимальное 15
@Jagerente для фронтенда. Добавлен следующий эндпоинт:
/api/hunt/list
Ответ является обычным массивом объектов hunt, структура следующая:
{
"id": 1,
"region": "Farbane",
"location": "Bandit Logging Camp",
"maxservants": 1,
"difficulty": 200,
"bonusBlood": 1,
"rewards": [
{
"itemId": 98,
"time": 23,
"servantsAmount": 1
"bonus": "No bonus",
"minimalAmount": 10,
"maximumAmount": 15
},
{
"itemId": 98,
"time": 23,
"servantsAmount": 1
"bonus": "20% bonus",
"minimalAmount": 17,
"maximumAmount": 23
}
]
}
rewards Это массив объектов наград, которые возможно получить с данной экспедиции. Про бонусы итд читай комментарий выше. Если непонятно просьба спрашивать.
@Jagerente SQL в отдельно таблице. https://docs.google.com/spreadsheets/d/1YAMSUdtcrsG-mNUE8sqeDZMyww9yjaZ2kHGg6CavXxY/edit?usp=sharing
@aelariane таблицу можно упростить. Вместо огромный таблицы у каждого ресурса есть base_value.
Формула для расчёта всех значений в таблице: floor(base_value time_modifier N_of_servants servant_bonus 0.9/1.1)
Для гайда нужна таблица с доступными в игре экспидициями (Hunt) сервантов.
Выглядит она вот так (лист List of Hunts).
В будущем можно будет связать локации сервантов с реальными локациями (они не совпадают 1 в 1), но это сейчас не надо, сейчас главное просто реализовать хоть как-то эту чисто справочную страничку.