Ivor Barhansky 2020-10-21 20:55:04 +00:00
parent dac122bf2a
commit f9d00608d7

@ -0,0 +1,70 @@
# Затравка
### Есть база предметов
Одна таблица, где лежат все заготовки всех предметов. Readonly для большинства пользователей\задач.
1. В магазинах: ссылка на id и цена.
2. В инвентаре: ссылка на id, слот в который она одета (0 если нет), переопределённые переменные (если предмет с изменёнными характеристиками).
### Есть база подарков
Одна таблица, в которой лежат все подарки. Всё аналогично предметам. Таблица отдельная потому что количество необходимых полей разительно отличается.
### Есть база магии…
Вот тут всё сложно, потому что если делать отдельную таблицу — они не полетят в магазин вместе со всеми. Зато можно из общей таблицы выкусывать данные по магии. А учитывая лимит на использование, пишется mysql-процедура, которая удаляет запись из строки, когда счётчик станет нулём.
Пример покупки:
```SQL
INSERT INTO `inventory` (
name, maxdur, cost, img, goden, dategoden, massa, prototype, owner,
nlevel, nsila, nlovk, ninta, nvinos, nintel, nmudra,
nnoj, ntopor, ndubina, nmech, nalign, nfire, nwater, nair, nearth, nlight, ngray, ndark,
minu, maxu,
gsila, glovk, ginta, gintel, ghp, gfire, gwater, gair, gearth, glight, ggray, gdark,
mfkrit, mfakrit, mfuvorot, mfauvorot,
gnoj, gtopor, gdubina, gmech,
bron1, bron2, bron3, bron4, magic, needident,
gmp, gmeshok, artefact, encicl, koll
)
SELECT
name, maxdur, cost, img, goden, dategoden, massa, id, {$userId},
nlevel, nsila, nlovk, ninta, nvinos, nintel, nmudra,
nnoj, ntopor, ndubina, nmech, nalign, nfire, nwater, nair, nearth, nlight, ngray, ndark,
minu, maxu,
gsila, glovk, ginta, gintel, ghp, gfire, gwater, gair, gearth, glight, ggray, gdark,
mfkrit, mfakrit, mfuvorot, mfauvorot,
gnoj, gtopor, gdubina, gmech,
bron1, bron2, bron3, bron4, magic, needident,
gmp, gmeshok, artefact, encicl, koll
FROM shop WHERE id = inventory.prototype;
```
## Мысли
Все предметы принято делить на экипировку и хлам. Хлам герои только продают, а экипировку, соответственно названию, могут надевать, получая игровые бонусы.
Экипированные предметы со временем ломаются. За вероятность поломки отвечает параметр «Долговечность», чем она меньше, тем быстрее предмет сломается. При поломке экипировка становится хламом. Долговечность обычно уменьшается после каждого боя, но некоторые способности героев могут влиять на скорость её изменения. Периодически, герой самостоятельно ремонтирует свою экипировку в ремонтной мастерской. С каждым новым ремонтом максимальная долговечность предмета уменьшается. Кроме того, максимальная долговечность уменьшается при «заточке» предмета экипировки.
Иногда герой может получить редкий или эпический артефакт с особыми свойствами. Такие артефакты ценятся выше обычных, их долговечность может быть выше обычной. Кроме того, такая экипировка и продаётся значительно дороже.
В некоторые предметы может быть встроена магия.
### Предметы: редкость
|значение|описание|
|---|---|
|0|Обычный предмет|
|1|Редкий предмет|
|2|Артефакт|
|3|Эпический артефакт|
### Предметы: тип
|значение|описание|
|---|---|
|0|Хлам|
|1|Основная рука|
|2|Вспомогательная рука|
|3|Доспех|
|4|Шлем|
|5|Перчатки|
|6|Ботинки|
|7|Серьги|
|8|Амулет|
|9|Кольцо|
|20|Неодеваемый предмет экипировки|
|21|Неодеваемый предмет экипировки с активными эффектами (свитки, зелья)|