# Equipment — снаряжение, которое меняет характеристики персонажа Equipment позволяет персонажам носить вещи: оружие, броню, талисман — а в визуальной новелле наряд и украшения. Пока предмет надет, его бонусы входят в характеристики персонажа, поэтому лист персонажа, бои, проверки характеристик и условия меняются сразу. Снятая вещь возвращается в сумку. Моду нужны Stats Engine и Items Base. Слоты и снаряжение RPG Plus берутся из набора Classic RPG Rules; другая игра опишет свои. ## Как что-то надеть Откройте сумку, выберите предмет и нажмите **Equip**, затем укажите, кто его наденет: ![Инвентарь в RPG Plus: выбрана Leather armour, её детали (Targeted, тип снаряжения armor, черты def +2 и hp +6, кнопка Equip), кнопка Equip и список целей, где герой 42/42.](assets/bag-equip.jpg) Предмет уходит из сумки и появляется в блоке **Equipment** листа персонажа. До и после: ![Боевая часть листа и блок Equipment. До: Health 42/42, Armour 4, Body пусто. После: Health 48/48 (+10), Armour 6 (+2), Body — Leather armour, DEF +2 HP +6, рядом кнопка Take off.](assets/sheet-before-after.jpg) Броня выросла с 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` предмета названы характеристики, которых игра не определяет.