Skip to content
This repository has been archived by the owner on Aug 14, 2023. It is now read-only.

Таблица локаций сервантов #52

Open
Bobrokrot opened this issue May 24, 2022 · 8 comments · Fixed by #111
Open

Таблица локаций сервантов #52

Bobrokrot opened this issue May 24, 2022 · 8 comments · Fixed by #111

Comments

@Bobrokrot
Copy link
Collaborator

Для гайда нужна таблица с доступными в игре экспидициями (Hunt) сервантов.

Выглядит она вот так (лист List of Hunts).

В будущем можно будет связать локации сервантов с реальными локациями (они не совпадают 1 в 1), но это сейчас не надо, сейчас главное просто реализовать хоть как-то эту чисто справочную страничку.

@Bobrokrot
Copy link
Collaborator Author

image
Добавил количество лута для каждого ресурса в таблицу.
Там у каждого лута есть "класс" того, как количество лута (мин. значение и макс. значение) увеличивается с длительностью Охоты. (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.

@Bobrokrot
Copy link
Collaborator Author

Bobrokrot commented Jun 1, 2022

Hunt (servant location)
— Name
— Region
— Class
— Difficulty (число)
— Slots (макс. число сервантов, которые можно отправить на Hunt)
— {список до 5 шт. id ресурсов}
— {у каждого ресурса hunt reward id

Также в таблице можно указать для 2/4/8/16/23 часов мелким шрифтом
image

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 %)

@Bobrokrot
Copy link
Collaborator Author

image
Ну и заодно можно сделать такую табличку.
В ней просто показано, какие ресурсы могут/выгоднее всего собирать слугам в зависимости от их типа и региона.

@aelariane
Copy link
Collaborator

@Jagerente В каком формате тебе это присылать нужно, хоть примерно?

@aelariane
Copy link
Collaborator

Бэкенд часть в теории сделана.

@Bobrokrot касательно структуры базы данных.
Было добавлено 4 новых таблицы.

  1. Основная таблица самих хантов
hunts
id | regionid | location | maxservants | difficulty | classbonus

Где
regionid - id региона
location - Название локации (можно сказать что это имя ханта)
maxservants - Максимальное кол - во сервантов
difficulty - Сложность (Целое число)
classbonus - id типа крови (bloodtype) который является бонусным для экспедиции.

  1. Классификатор с возможными длительностями экспедиций (В часах)
hunttimes
id | time

Где
time - Количество часов. (Целое число)

  1. Классификатор модификаторов (1 сервант без бонусов, 1 сервант с бонусом, итд...)
huntmodifiers
id | servantsamount | bonus

Где
servantsamount - Кол - во сервантов (Целое число)
bonus - Бонус (Строка). Имеется в виду в процентах

Эта таблица содержит возможные модификаторы экспедиций.
Например, 1 сервант с бонусом, 1 сервант с 20% бонусом, 2 серванта, бонусный только один итд...

  1. Значения получаемых предметов
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

@aelariane
Copy link
Collaborator

aelariane commented Jun 11, 2022

@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 Это массив объектов наград, которые возможно получить с данной экспедиции.
Про бонусы итд читай комментарий выше. Если непонятно просьба спрашивать.

@aelariane aelariane linked a pull request Jun 11, 2022 that will close this issue
@Bobrokrot
Copy link
Collaborator Author

@Bobrokrot
Copy link
Collaborator Author

@aelariane таблицу можно упростить.
Вместо огромный таблицы у каждого ресурса есть base_value.

Формула для расчёта всех значений в таблице:
floor(base_value * time_modifier * N_of_servants * servant_bonus * 0.9/1.1)

  • floor — округление вниз
  • time_modifer = 0.5 / 0.75 / 1.0 / 1.25 / 1.5 для времён 2 / 4 / 8 / 16 / 23 часов соответственно.
  • N_of_servants = 1 / 2 / 3
  • sevant_bonus = 1.0 или 1.2
  • 0.9/1.1 = 0.9 для min (-10%) и 1.1 для max (+10%).

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants