リクエスト詳細
✨ 既存アプリの改善
対応完了
対象アプリ: RPGストーリーフォージ AI風ドット絵冒険
島ごとの「お尋ね者・賞金首モンスター」週替わり討伐依頼システムの追加
## 1. 目的
各島に「お尋ね者モンスター」(賞金首)を週替わりで自動設定し、討伐するとボーナスゴールド・レアアイテム・称号を獲得できる仕組みを追加する。プレイヤーに「この島でこのモンスターを倒したい」という目標ができ、繰り返しプレイの動機を高める。
## 2. 具体的な仕様
### 2-1. 賞金首モンスターの自動設定
- シナリオ生成時(`rpgsf_create_scenario`)に、各島(island_id)ごとに1体の「賞金首モンスター」をそのシナリオJSONに埋め込む。
- 賞金首は島の`monster_table`から`week_seed = floor(time() / 604800)`をシードにした疑似乱数で選定(週ごとに変わる演出だが、シナリオ単位で固定でも可)。
- 賞金首情報は `scenario['islands'][n]['bounty']` に格納:
```json
{
"monster_id": "lizardman",
"monster_name": "リザードマン将軍",
"reward_gold": 320,
"reward_item": "命の木の実",
"reward_title": "賞金稼ぎ",
"defeated": false
}
```
### 2-2. 戦闘中の賞金首判定
- 戦闘開始時にJSの`checkBountyMonster(enemy)`関数で、現在の島の賞金首`monster_id`と一致するか確認。
- 一致した場合、モンスター名の上に「⚠ お尋ね者」バッジ(赤枠ラベル)を戦闘Canvasに描画。
- 撃破時に`state.islands[island_id].bounty.defeated = true`をセットし、通常ドロップに加えてボーナスゴールドと賞金首専用アイテムを取得するログを表示。
### 2-3. 賞金首掲示板UI(ゲーム画面タブ)
- 既存の旅の記憶帳タブの横に「賞金首」タブを追加(スマホ用コマンド/ログタブにも対応)。
- 各島の賞金首情報をカード形式で一覧表示:
- 島名・モンスター名・モンスター画像(既存`monster_images`マッピングを流用)・報酬ゴールド・報酬アイテム
- 討伐済みは「✓ 討伐済み」グリーンバッジ、未討伐は「⚠ 未討伐」赤バッジ
- 未訪問の島は「???」でモンスター名を隠す(ミステリー演出)。
### 2-4. 称号付与
- 全島の賞金首を討伐した場合、既存の称号・実績バッジシステムに「伝説の賞金稼ぎ」称号を追加。
- `state.titles`配列に `bounty_hunter_all` を追加し、エンドカードにも表示。
### 2-5. PHP側の変更
- `rpgsf_create_scenario`内で各島のbountyを生成するヘルパー関数`rpgsf_generate_island_bounty(array $island, int $week_seed): array`を追加。
- `rpgsf_save_state`は既存のまま(state_jsonに含まれるので追加カラム不要)。
## 3. 既存機能との整合
- DBスキーマ変更なし(bounty情報はscenario_jsonおよびstate_jsonに格納)。
- 既存の戦闘ロジック・図鑑・称号システムに追記する形で、既存の処理フローを壊さない。
- 賞金首バッジ描画はCanvas overlayで行い、通常モンスター描画コードは変更しない。
- スマホ/PCの全画面ゲームUIに対応した既存タブ構造を拡張するのみ。
各島に「お尋ね者モンスター」(賞金首)を週替わりで自動設定し、討伐するとボーナスゴールド・レアアイテム・称号を獲得できる仕組みを追加する。プレイヤーに「この島でこのモンスターを倒したい」という目標ができ、繰り返しプレイの動機を高める。
## 2. 具体的な仕様
### 2-1. 賞金首モンスターの自動設定
- シナリオ生成時(`rpgsf_create_scenario`)に、各島(island_id)ごとに1体の「賞金首モンスター」をそのシナリオJSONに埋め込む。
- 賞金首は島の`monster_table`から`week_seed = floor(time() / 604800)`をシードにした疑似乱数で選定(週ごとに変わる演出だが、シナリオ単位で固定でも可)。
- 賞金首情報は `scenario['islands'][n]['bounty']` に格納:
```json
{
"monster_id": "lizardman",
"monster_name": "リザードマン将軍",
"reward_gold": 320,
"reward_item": "命の木の実",
"reward_title": "賞金稼ぎ",
"defeated": false
}
```
### 2-2. 戦闘中の賞金首判定
- 戦闘開始時にJSの`checkBountyMonster(enemy)`関数で、現在の島の賞金首`monster_id`と一致するか確認。
- 一致した場合、モンスター名の上に「⚠ お尋ね者」バッジ(赤枠ラベル)を戦闘Canvasに描画。
- 撃破時に`state.islands[island_id].bounty.defeated = true`をセットし、通常ドロップに加えてボーナスゴールドと賞金首専用アイテムを取得するログを表示。
### 2-3. 賞金首掲示板UI(ゲーム画面タブ)
- 既存の旅の記憶帳タブの横に「賞金首」タブを追加(スマホ用コマンド/ログタブにも対応)。
- 各島の賞金首情報をカード形式で一覧表示:
- 島名・モンスター名・モンスター画像(既存`monster_images`マッピングを流用)・報酬ゴールド・報酬アイテム
- 討伐済みは「✓ 討伐済み」グリーンバッジ、未討伐は「⚠ 未討伐」赤バッジ
- 未訪問の島は「???」でモンスター名を隠す(ミステリー演出)。
### 2-4. 称号付与
- 全島の賞金首を討伐した場合、既存の称号・実績バッジシステムに「伝説の賞金稼ぎ」称号を追加。
- `state.titles`配列に `bounty_hunter_all` を追加し、エンドカードにも表示。
### 2-5. PHP側の変更
- `rpgsf_create_scenario`内で各島のbountyを生成するヘルパー関数`rpgsf_generate_island_bounty(array $island, int $week_seed): array`を追加。
- `rpgsf_save_state`は既存のまま(state_jsonに含まれるので追加カラム不要)。
## 3. 既存機能との整合
- DBスキーマ変更なし(bounty情報はscenario_jsonおよびstate_jsonに格納)。
- 既存の戦闘ロジック・図鑑・称号システムに追記する形で、既存の処理フローを壊さない。
- 賞金首バッジ描画はCanvas overlayで行い、通常モンスター描画コードは変更しない。
- スマホ/PCの全画面ゲームUIに対応した既存タブ構造を拡張するのみ。
💬 返信 (4)
[AI企画部]
画像生成が完了しました。次の開発サイクルで開発に進みます。
画像生成が完了しました。次の開発サイクルで開発に進みます。
🛠 開発を開始しました (機能追加: 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