Jagerente / VRisingAcademySite

VRising Database
https://vrising-academy.info
0 stars 1 forks source link

Бестиарий #84

Open Bobrokrot opened 2 years ago

Bobrokrot commented 2 years ago

image У меня есть монстры в полуготовом виде. Их надо в этом полуготовом виде и публиковать, ибо это долгий проект. Выяснить, у каких монстров какой лут, где они обитают и т.п. Так что я напишу, какие фичи надо в ближайшее время, но с заделом на будущее.

Для фильтра я разделил монстров на типы или faction. У них кроме id и названия ничего нет.

Монстр: — name — faction — blood type —— есть 6 стандартный, есть None для нежити всякой, есть Random для комаров и есть V Blood для боссов. Когда у нас будет страница для типов крови, там отображать надо будет только 6 стандартных.

— level —— У монстров есть базовый уровень, но каждые 30% качества крови их уровень повышается на 2 и ещё +4 при 100% (надо проверить). То есть можно хранить только одно число, а на странице указывать рендж от level до level+10. При этом для V Blood и None типов уровень фиксированный. Однако... —— Есть парочка монстров-исключений. Villager'ы часть имеют базовый уровень 28, а часть 26. Они одни такие, и это не зависит от локации или чего-то ещё, по крайней мере я не смог понять прикол. Пофиг на них, текстом можно написать про это. —— Есть парочка монстров, у который одинаковые названия и они одинаково выглядят, но у них разные уровни в зависимости от локации. Это Armoured Skeleton (20 ур. в начальных локациях и 40 в более сложных) и Skeleton Crossbow (2 в самой первой локации, 18 в начальных и 36 в сложных). Я думаю, можно их хранить как отдельных монстров и дописать им в название их уровень. В далёком будущем им можно будет указывать в качестве мест обитания разные локации.

— locationS —— это для далёкого будущего, это слишком муторно делать. Причём тут такая проблема ещё: для каждой локации надо указывать монстров, в которой они обитают. Но при этом есть ещё патрулирующие монстры, которые ходят по дорогам, и при этом они ходят ни где попало, а, например, в северной части региона Данли. Можно придумать свои локации "северные дороги Данли" в принципе.

— loot —— (loot id, droprate, amount) —— у нас в ближайшее время не будет никакой информации по поводу шансов выпадения. Однако я думаю, можно сразу это подключить и использовать так: писать дропрейт 0.25 для редких предметов, 0.75 для частых предметов, 1.0 для гарантированных предметов. И в information соответственно давать три списка предметов: guaranteed drops, common drops, rare drops. —— Но есть ещё "сеты" дропов. Например, Treant всегда гарантированно даёт 4 случайных предмета из списка семян, Stone Golem даёт 2 случайных гема и есть ещё пара примеров. Типа хотелось бы писать "Guaranteed to drop 4 items among these: (список итемов)". — Соответственно эту информацию можно будет писать в information у итемов. Давать список name монстров, у которых можно нафармить эти предметы.

ДЛЯ V BLOOD дополнительно — knowledgeid — mapgenieid

Bobrokrot commented 2 years ago

Ну и ещё есть три Merchant'а. Хотелось бы им в Information вывести табличку рецептов, которые они предлагают. У них name то же самое, что и station рецептов.

Bobrokrot commented 2 years ago

Ну а ещё Дане захардкодить монстра Scarecrow. В выдаче вместо имени монстра и картинки написать Spoiler.

Bobrokrot commented 2 years ago

А, и хотелось бы свободу форматирования в написании Description. В первой итерации вряд ли описания будут большими, но потом, скорее всего с помощью коммьюнити. напишем полные описания монстров как в Геншине. Где-то понадобятся списки, где-то понадобится вставка дополнительных иллюстраций.

aelariane commented 2 years ago

@Bobrokrot сделано.

Были доавлены следующие таблицы:

factions
id | name

Были изменены таблицы monsters и monsterdrops, выглядят следующим образом:

monsters
id | name | description | bloodtypeid | level | factionid | knowlegdeid | mapgenieid

monsterdrops
monsterid | itemid | droprate | amount

droprate дробное число amount целое factionid ссылается на id из factions Остальное должно быть понятно, если есть вопросы то спрашивайте.

@Jagerente Добавлены следующие эндпоинты:

/api/monster/factions
/api/monster/list

factions возвращает массив объектов в следующем формате:

{
  "id": 1,
  "name": "FactionName"
}

list возвращает массив объектов в следующем формате:

{
  "id": 1,
  "name": "Pig",
  "description": "Description of pig",
  "faction": {
    "id": 3,
    "name": "Creatures"
  },
  "bloodtype": {
    "id": 1,
    "name": "Creature"
  },
  "level": 8,
  "knowledgeId": null,
  "mapgenieId": null,
  "locations": [
    {
      "id": 115,
      "name": "Brighthaven Slums"
    }
  ],
  "loot": [
    {
      "itemId": 83,
      "dropRate": 0.25,
      "amount": 5
    }
  ]
}