# Items Base — предметы, инвентарь и то, как их применять Items Base даёт игре предметы и сумку, чтобы их носить. Мод определяет, что такое предмет (имя, картинка, цена, тип и что происходит при использовании), показывает панель **Инвентарь**, сохраняет то, что несёт игрок, и позволяет сценариям выдавать, забирать и проверять предметы. Торговля, готовка, крафт, экипировка и RPG-карты строятся на нём. ## Панель инвентаря Открывается иконкой сумки на панели инструментов. Щёлкните предмет слева, чтобы справа увидеть его подробности. ![Использование лесного гриба в RPG Plus: гриб (×2) выбран в сетке, справа его подробности — метки «Целевое» и «Еда», описание «Восстанавливает 5 здоровья», действие action/heal со свойством heal 5, а после «Съесть» — список целей, где Герой с 10/24 здоровья.](assets/use-mushroom.jpg) - **Вкладки** сверху фильтруют по типу (Еда, Ресурсы, Рецепты, Задания); поле поиска и список сортировки сужают сетку. - **Подробности** показывают имя, метки типа, цену, описание, размер стопки, id и собственные свойства предмета. - **Кнопка действия** названа самим предметом: **Использовать**, **Съесть** для еды, **Применить к цели**, **Выучить рецепт** — или тем глаголом, который предмет задаёт (гриб говорит **Съесть** из-за своего `verb`). - **Направляемые предметы** спрашивают, на кого их применить: выберите члена отряда или **Отмена**. - **Выбросить** уничтожает стопку после подтверждения; ключевые предметы выбросить нельзя. - В бою каждое использование или выбрасывание стоит активному персонажу одно очко действия; вне боя — бесплатно. ![После выбора Героя: стопка уменьшилась до ×1, а панель сообщает «Применено: Лесной гриб → Герой».](assets/after-use.jpg) Если действие невозможно — например, у цели уже полное здоровье, — предмет не тратится, а панель объясняет почему. ## Описание предмета Предметы — это JSON-файлы вида `item` в папке `items/` мода, рядом с ними лежит картинка. Вот гриб с картинок выше (из RPG Demo): ```json { "Kind": "item", "Items": [ { "Id": "rpg_demo/mushroom", "Name": "rpg_demo/item/mushroom/name", "Description": "rpg_demo/item/mushroom/desc", "Cost": 2, "Sprite": "rpg_demo/forest_mushroom", "ItemType": "Food,TargetUsed", "ItemAction": "action/heal", "heal": 5, "verb": "ui/inventory/verb_eat" } ] } ``` - `Name`, `Description` — ключи перевода, показываются в подробностях. - `Cost` — цена; её используют магазины. - `Sprite` — картинка `items/rpg_demo/forest_mushroom.png`. - `ItemType` — один или несколько типов через запятую: `Food`, `Resource`, `Quest`, `Recipe`, `Used` (применяется без цели), `TargetUsed` (применяется к члену отряда), `CantDrop`. - `ItemAction` — что делает применение. `action/heal` восстанавливает здоровье на значение `heal` предмета — не выше максимума и никогда не поднимает упавшего. Другие моды добавляют свои действия, например `action/equip` экипировки. - Любой другой ключ (`heal`, `verb`) — свойство предмета: действия его читают, а подробности его показывают. `verb` называет кнопку действия. ## Предметы в сценариях ```scenario action item.add id=rpg_demo/mushroom count=2 when "item('rpg_demo/mushroom') >= 2" -> :enough action item.remove id=rpg_demo/mushroom count=2 ``` - `item.add` кладёт предметы в сумку (сундук, подарок, подбор на карте); `count` по умолчанию равен 1. - `item('id')` сравнивает, сколько предметов у игрока; работает в `when`, в условиях ответов, в заданиях и событиях карты. - `item.remove` забирает предметы; если их меньше, отказывается — поэтому сначала проверьте через `item('id')`. ## Рецепты Рецепты (вид `recipe`) перечисляют предметы `Input` и `Output` с количествами. Этот мод хранит, какие рецепты игрок уже знает; готовка и крафт пользуются ими. ## Если что-то пошло не так 1. **Предмет показывает id вместо имени.** Добавьте его ключ `Name` в файлы `locale` мода. 2. **Нет кнопки действия.** Предмету нужен тип `Used` или `TargetUsed` в `ItemType` и `ItemAction`. 3. **Применение ничего не делает, а предмет остаётся.** Действие отказало: для лечения цель либо при полном здоровье, либо упала. 4. **`item.add` ничего не добавляет.** Идентификатор неизвестен; сверьте `Id` в файле предмета.