# Items Base — アイテム、インベントリ、使い方 Items Base は、ゲームにアイテムと、それを入れるバッグを与えます。アイテムとは何か(名前・画像・価格・種類、そして使ったときに何が起きるか)を定義し、**インベントリ**パネルを表示し、プレイヤーの所持品をセーブし、シナリオがアイテムを渡したり奪ったり確かめたりできるようにします。交易、料理、クラフト、装備、RPG マップはすべてこの上に成り立っています。 ## インベントリパネル ツールバーのバッグ・アイコンで開きます。左の一覧でアイテムをクリックすると、右に詳しい情報が出ます。 ![RPG Plus で森のキノコを使う場面: 格子で選ばれたキノコ (×2)、右側の詳細 — 「対象指定」と「食料」のバッジ、説明「体力を 5 回復」、heal 5 のプロパティを持つ action/heal — そして「食べる」の後、対象一覧には 10/24 の体力の主人公。](assets/use-mushroom.jpg) - 上部の**タブ**は種類で絞り込みます(食料・素材・レシピ・クエスト)。検索欄と並び替えで格子をさらに狭められます。 - **詳細**には名前、種類のバッジ、価格、説明、スタック数、id、そしてアイテム自身のプロパティが出ます。 - **アクションボタン**の名前はアイテムが決めます。**使う**、食料なら**食べる**、**対象に使う**、**レシピを覚える**、あるいはアイテムが定義した動詞(キノコは `verb` のおかげで**食べる**と表示)。 - **対象指定アイテム**は、誰に使うか尋ねてきます。パーティのメンバーを選ぶか**キャンセル**します。 - **捨てる**は確認のうえスタックを捨てます。大事なアイテムは捨てられません。 - 戦闘中は、使うのも捨てるのも行動中のキャラクターのアクションポイントを 1 消費します。戦闘外は無料です。 ![主人公を選んだ後: スタックは ×1 に減り、パネルは「使用しました: 森のキノコ → 主人公」と伝えます。](assets/after-use.jpg) アクションができないとき — たとえば対象の体力がすでに満タン — には、アイテムは消費されず、パネルが理由を伝えます。 ## アイテムの定義 アイテムは、mod の `items/` フォルダーに入る kind `item` の JSON ファイルで、画像はそのそばに置きます。こちらは上の画像のキノコ(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` の値だけ体力を回復します。最大値を超えず、倒れたキャラクターには決して使いません。ほかの mod もアクションを追加します。たとえば equipment の `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')` で確かめてください。 ## レシピ レシピ(kind `recipe`)は `Input` と `Output` のアイテムと数を並べます。プレイヤーがどのレシピを覚えているかはこの mod が保持し、料理とクラフトが使います。 ## うまく動かないとき 1. **アイテムが名前ではなく id を表示する。** `Name` のキーを mod の `locale` ファイルに追加してください。 2. **アクションボタンがない。** アイテムには `ItemType` の `Used` か `TargetUsed` と、`ItemAction` が必要です。 3. **使っても何も起きず、アイテムが残る。** アクションが拒否しました。回復なら対象の体力が満タンか、倒れています。 4. **`item.add` が何も足さない。** id が未知です。アイテムファイルの `Id` を確かめてください。