リクエスト詳細
✨ 既存アプリの改善
対応完了
対象アプリ: RPGストーリーフォージ AI風ドット絵冒険
DQ3風「野営・休憩」システムの追加(宿屋・野営地でHP/MP全回復と夜明けイベント)
## 1. 目的
DQ3では宿屋でHP/MPを全回復できる。現状のアプリにはマップ上で立ち寄れる回復拠点が明示されておらず、戦闘消耗からの回復手段がアイテム頼みのみで単調になりがち。宿屋NPCと野営地タイルを追加し、「お金を払って宿屋に泊まる」または「特定タイルで野営する」ことでHP/MPを全回復できる仕組みを実装する。合わせて泊まった翌朝にシナリオ固有の短い「夜明けナレーション」を表示してストーリー没入感を高める。
## 2. 具体的な仕様
### 2-1. 宿屋NPC
- `rpgsf_assets()` の `npcs` 配列に `id=inn_keeper`(宿屋の主人)を追加。
- `action: 'inn'`、料金: 難易度に応じて easy=5G / normal=10G / hard=20G
- マップ生成時、既存NPC配置ロジックで一定確率(テーマに関わらず1マップに必ず1体)宿屋NPCを配置する。
- プレイヤーが宿屋NPCに接触すると「泊まりますか?(○○G)」の確認ダイアログを表示。
- 所持金が足りる場合:POST action=`inn_rest` → HP/MP全回復、gold減算、`last_event='inn_rest'`
- 所持金不足:「お金が足りません」メッセージをログに追記するだけ
- 「泊まる」「やめる」2択ボタンをHTMLフォームで実装
### 2-2. 野営地タイル
- `rpgsf_assets()` の `terrain` 配列に `'T'`(焚き火・野営地)を追加。`walk=true`、`mark='🔥'`、CSS class=`campfire`
- マップ生成時、草原('G')タイルの中に1〜2か所をランダムでTに置き換える(既存のNPC/宝箱配置後に上書き)
- プレイヤーがTタイルに乗ったとき: 「野営しますか?」確認ダイアログ。
- 確認後 POST action=`camp_rest` → HP/MPを50%回復(端数切り上げ)、`last_event='camp_rest'`
- 無料だが宿屋より回復量が少ない差別化
### 2-3. 夜明けナレーション
- `inn_rest` または `camp_rest` 実行時、`state['dawn_narration']` にシナリオ生成時の `scenario['narrations']['mid']` を流用した短文(最大80文字)を格納。
- play.php で `$state['dawn_narration']` が存在すれば、既存のナレーションオーバーレイ(`narration_ack`)と同じUIで表示し、確認後 `state['dawn_narration']` を削除する。
- ナレーション文は PHP 側で `rpgsf_dawn_narration(array $scenario, string $rest_type): string` 関数を新設し、シナリオタイトル・テーマ・キーワードをもとに定型文配列からランダム選択(外部API不要)。
### 2-4. lib.php への追加処理
- `rpgsf_apply_action()` の `switch($action)` に `'inn_rest'` と `'camp_rest'` を追加。
- HP/MP全回復または50%回復のロジックをパーティ全員(`$state['party']`配列も含む)に適用。
- ログに「宿屋でゆっくり休んだ。HP/MPが全回復した。」「焚き火のそばで野営した。HP/MPが少し回復した。」を追記。
### 2-5. CSS追加
- `.campfire` タイル: `background: #3a2000; color: #ffb84d;` でSFC風の焚き火色
- 宿屋確認・野営確認のダイアログは既存の `diagnosis-modal` と同スタイルを流用し新規CSSクラス不要
## 3. 既存機能との整合
- 既存のショップ・宝箱・NPC会話の接触判定フローと同じ `action` POST方式で実装するため、既存コードへの影響は `rpgsf_apply_action()` へのcase追加と `rpgsf_assets()` へのデータ追記のみ。
- セーブ/ロード(冒険の書)は `state_json` に gold・hp・mp がそのまま含まれるため追加対応不要。
- 転職・スキル習得・モンスター図鑑など既存イベントとの競合なし(接触NPCのactionキーで分岐するため)。
- スマホ対応: 確認ダイアログは既存モーダルと同じflex縦並びレイアウトで実装。
DQ3では宿屋でHP/MPを全回復できる。現状のアプリにはマップ上で立ち寄れる回復拠点が明示されておらず、戦闘消耗からの回復手段がアイテム頼みのみで単調になりがち。宿屋NPCと野営地タイルを追加し、「お金を払って宿屋に泊まる」または「特定タイルで野営する」ことでHP/MPを全回復できる仕組みを実装する。合わせて泊まった翌朝にシナリオ固有の短い「夜明けナレーション」を表示してストーリー没入感を高める。
## 2. 具体的な仕様
### 2-1. 宿屋NPC
- `rpgsf_assets()` の `npcs` 配列に `id=inn_keeper`(宿屋の主人)を追加。
- `action: 'inn'`、料金: 難易度に応じて easy=5G / normal=10G / hard=20G
- マップ生成時、既存NPC配置ロジックで一定確率(テーマに関わらず1マップに必ず1体)宿屋NPCを配置する。
- プレイヤーが宿屋NPCに接触すると「泊まりますか?(○○G)」の確認ダイアログを表示。
- 所持金が足りる場合:POST action=`inn_rest` → HP/MP全回復、gold減算、`last_event='inn_rest'`
- 所持金不足:「お金が足りません」メッセージをログに追記するだけ
- 「泊まる」「やめる」2択ボタンをHTMLフォームで実装
### 2-2. 野営地タイル
- `rpgsf_assets()` の `terrain` 配列に `'T'`(焚き火・野営地)を追加。`walk=true`、`mark='🔥'`、CSS class=`campfire`
- マップ生成時、草原('G')タイルの中に1〜2か所をランダムでTに置き換える(既存のNPC/宝箱配置後に上書き)
- プレイヤーがTタイルに乗ったとき: 「野営しますか?」確認ダイアログ。
- 確認後 POST action=`camp_rest` → HP/MPを50%回復(端数切り上げ)、`last_event='camp_rest'`
- 無料だが宿屋より回復量が少ない差別化
### 2-3. 夜明けナレーション
- `inn_rest` または `camp_rest` 実行時、`state['dawn_narration']` にシナリオ生成時の `scenario['narrations']['mid']` を流用した短文(最大80文字)を格納。
- play.php で `$state['dawn_narration']` が存在すれば、既存のナレーションオーバーレイ(`narration_ack`)と同じUIで表示し、確認後 `state['dawn_narration']` を削除する。
- ナレーション文は PHP 側で `rpgsf_dawn_narration(array $scenario, string $rest_type): string` 関数を新設し、シナリオタイトル・テーマ・キーワードをもとに定型文配列からランダム選択(外部API不要)。
### 2-4. lib.php への追加処理
- `rpgsf_apply_action()` の `switch($action)` に `'inn_rest'` と `'camp_rest'` を追加。
- HP/MP全回復または50%回復のロジックをパーティ全員(`$state['party']`配列も含む)に適用。
- ログに「宿屋でゆっくり休んだ。HP/MPが全回復した。」「焚き火のそばで野営した。HP/MPが少し回復した。」を追記。
### 2-5. CSS追加
- `.campfire` タイル: `background: #3a2000; color: #ffb84d;` でSFC風の焚き火色
- 宿屋確認・野営確認のダイアログは既存の `diagnosis-modal` と同スタイルを流用し新規CSSクラス不要
## 3. 既存機能との整合
- 既存のショップ・宝箱・NPC会話の接触判定フローと同じ `action` POST方式で実装するため、既存コードへの影響は `rpgsf_apply_action()` へのcase追加と `rpgsf_assets()` へのデータ追記のみ。
- セーブ/ロード(冒険の書)は `state_json` に gold・hp・mp がそのまま含まれるため追加対応不要。
- 転職・スキル習得・モンスター図鑑など既存イベントとの競合なし(接触NPCのactionキーで分岐するため)。
- スマホ対応: 確認ダイアログは既存モーダルと同じflex縦並びレイアウトで実装。
💬 返信 (3)
🛠 開発を開始しました (機能追加 (rpg-story-forge))
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
📝 開発が完了しました
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
✅ リリース完了のお知らせ
ご要望いただいた「RPGストーリーフォージ AI風ドット絵冒険」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=rpg-story-forge
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/rpg-story-forge/
ご利用ありがとうございます!
ご要望いただいた「RPGストーリーフォージ AI風ドット絵冒険」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=rpg-story-forge
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/rpg-story-forge/
ご利用ありがとうございます!
Echo
Iris