84 lines
5.7 KiB
Markdown
84 lines
5.7 KiB
Markdown
# Equipment — снаряжение, которое меняет характеристики персонажа
|
||
|
||
Equipment позволяет персонажам носить вещи: оружие, броню, талисман — а в визуальной новелле наряд и украшения. Пока предмет надет, его бонусы входят в характеристики персонажа, поэтому лист персонажа, бои, проверки характеристик и условия меняются сразу. Снятая вещь возвращается в сумку.
|
||
|
||
Моду нужны Stats Engine и Items Base. Слоты и снаряжение RPG Plus берутся из набора Classic RPG Rules; другая игра опишет свои.
|
||
|
||
## Как что-то надеть
|
||
|
||
Откройте сумку, выберите предмет и нажмите **Equip**, затем укажите, кто его наденет:
|
||
|
||

|
||
|
||
Предмет уходит из сумки и появляется в блоке **Equipment** листа персонажа. До и после:
|
||
|
||

|
||
|
||
Броня выросла с 4 до 6 — это `def` брони +2. Здоровье выросло с 42 до 48: база 38 плюс `hp` брони +6 даёт 44, а 10% бонус воина к здоровью доводит до 48.
|
||
|
||
- **Take off** на листе возвращает предмет в сумку.
|
||
- Если надеть вещь в занятый слот, прежний предмет вернётся в сумку.
|
||
- Выбирать можно только членов отряда.
|
||
|
||
## Как сделать предмет надеваемым
|
||
|
||
Два ключа в собственном JSON предмета делают его снаряжением; моду предметов знать о них не нужно. Кожаная броня из Classic RPG Rules:
|
||
|
||
```json
|
||
{
|
||
"Id": "classic/leather_armor",
|
||
"Name": "classic/item/leather_armor/name",
|
||
"ItemType": "TargetUsed",
|
||
"ItemAction": "action/equip",
|
||
"verb": "equipment/verb_equip",
|
||
"Equip": "armor",
|
||
"Traits": [ { "Stat": "def", "Add": 2 }, { "Stat": "hp", "Add": 6 } ]
|
||
}
|
||
```
|
||
|
||
- `Equip` — тип снаряжения предмета; он и выбирает слот.
|
||
- `Traits` — что предмет даёт, пока надет, в формате черт Stats Engine (`Add`, `Percent` или `Formula`).
|
||
- `Archetypes` (необязательно) — кто может это надеть, например `["classic/mage"]` у дубового посоха.
|
||
- `ItemType: TargetUsed` вместе с `ItemAction: action/equip` дают предмету кнопку Equip и список целей; `verb` задаёт надпись на кнопке.
|
||
|
||
## Слоты
|
||
|
||
Слоты — это сущности вида `equip_slot`. Каждый перечисляет принимаемые типы снаряжения:
|
||
|
||
```json
|
||
{
|
||
"Kind": "equip_slot",
|
||
"Items": [
|
||
{ "Id": "weapon", "Name": "classic/slot/weapon", "Order": 1, "Accepts": ["sword", "staff", "dagger"] },
|
||
{ "Id": "body", "Name": "classic/slot/body", "Order": 2, "Accepts": ["armor", "robe"] },
|
||
{ "Id": "accessory", "Name": "classic/slot/accessory", "Order": 3, "Accepts": ["charm", "ring"] }
|
||
]
|
||
}
|
||
```
|
||
|
||
Слот без `Accepts` принимает предметы, чей `Equip` равен id самого слота.
|
||
|
||
## Предметы, навсегда повышающие характеристики
|
||
|
||
`\"ItemAction\": \"action/stat_up\"` с ключом `StatUp` — например `{"str": 1}` — навсегда меняет характеристики члена отряда, на котором использован предмет, как тоник или книга. Предмет расходуется.
|
||
|
||
## В сценариях
|
||
|
||
```scenario
|
||
action equip.put who=rpg_hero item=classic/wood_sword give=1
|
||
action equip.remove who=rpg_hero slot=weapon
|
||
when "equipped(rpg_hero, 'classic/wood_sword')" -> :armed
|
||
```
|
||
|
||
- `equip.put` надевает предмет из сумки; с `give=1` предмет вместо этого выдаётся и может в сумке отсутствовать. Так RPG Plus выдаёт каждому классу стартовое оружие. `slot=` выбирает слот, если подходят несколько.
|
||
- `equip.remove` снимает надетое в слоте — обратно в сумку.
|
||
- `equipped(who, 'item')` истинно, пока предмет надет.
|
||
|
||
Надетое сохраняется вместе с игрой.
|
||
|
||
## Если что-то пошло не так
|
||
|
||
1. **После Equip некого выбирать.** В списке целей только члены отряда; в RPG Plus герой вступает в отряд при входе в деревню, после пролога.
|
||
2. **Предмет не надевается.** Ни один слот не принимает его тип `Equip`, либо `Archetypes` не включает класс персонажа.
|
||
3. **Лист не меняется.** В `Traits` предмета названы характеристики, которых игра не определяет.
|