リクエスト詳細
✨ 既存アプリの改善
対応完了
対象アプリ: RPGストーリーフォージ AI風ドット絵冒険
DQ3風「職業転職」システムの追加(レベル条件達成で職業チェンジ・能力値引継ぎ演出)
## 1. 目的
DQ3の核心システムである「転職」を追加し、プレイヤーが仲間キャラクターのレベルを上げて別職業に転職できるようにする。これにより周回プレイや育成の深みが生まれ、リプレイ性が大幅に向上する。
## 2. 具体的な仕様
### 転職条件
- 転職できるのは仲間3人(パーティメンバー)のみ。主人公(勇者)は転職不可。
- 転職可能レベル:Lv 5以上(easyは4以上、hardは7以上)。
- 転職はマップ上の「神殿NPC(転職の神殿)」に話しかけることで行う。
### 神殿NPCの追加
- 既存マップの `rpgsf_assets()['npcs']` に `id='job_temple'`、`name='転職の神殿'` を追加。
- シナリオ生成時に1体だけマップ上に配置(既存NPC配置ロジックに1枠追加)。
- 接触時のアクション `'action' => 'job_temple'` をPHP側 `rpgsf_apply_action()` に追加。
### 転職処理(PHP: `rpgsf_apply_action` 内)
```
case 'job_change':
$member_index = (int)($_POST['member_index'] ?? -1);
$new_job_id = (string)($_POST['new_job'] ?? '');
$member = &$state['party'][$member_index];
if (!$member || $member['level'] < $required_level) break;
$job_def = $jobs[$new_job_id] ?? null;
if (!$job_def || $new_job_id === $member['job']) break;
// 能力値引継ぎ: 転職後は新職業の基礎値 + 旧職業レベルの20%ボーナス
$bonus_atk = (int)floor($member['atk'] * 0.2);
$bonus_def = (int)floor($member['def'] * 0.2);
$member['job'] = $new_job_id;
$member['job_name'] = $job_def['name'];
$member['level'] = 1;
$member['exp'] = 0;
$member['max_hp'] = $job_def['hp'];
$member['hp'] = $job_def['hp'];
$member['max_mp'] = $job_def['mp'];
$member['mp'] = $job_def['mp'];
$member['atk'] = $job_def['atk'] + $bonus_atk;
$member['def'] = $job_def['def'] + $bonus_def;
$member['spells'] = $job_def['spells'];
$state['last_event'] = 'job_change';
rpgsf_log($state, $member['name'].'は'.$job_def['name'].'に転職した!経験を引き継いでLv1から再出発。');
break;
```
### 転職UIモーダル(JS/HTML)
- `pages/play.php` に `#job-temple-modal` を追加。
- 神殿NPCに接触するとモーダルが開く(`last_event === 'job_change_open'` をPHPがセット → JSがモーダル表示)。
- モーダル内容:
- 転職可能な仲間のリスト(条件未達はグレーアウト)。
- 仲間を選ぶと職業一覧が表示(現在職業はグレーアウト)。
- 「転職する」ボタンで `action=job_change&member_index=X&new_job=Y` をPOST。
- 転職不可の場合は「まだ修行が足りません(Lv○以上で転職可能)」と表示。
- SFC風演出:転職確定時に画面を白フラッシュ(CSSアニメーション `@keyframes flash-white`)+「レベルアップ」と同系統のファンファーレ音(既存 `fx_class='fx-levelup'` を流用)。
### ステータス画面への反映
- 既存の「ステータス画面モーダル」で、転職済みキャラには「元職業名(引継ぎボーナス表示)」を小字で追記する。
- 例:「魔法使い(元:戦士 ATK+2 DEF+1)」
## 3. 既存機能との整合(壊さない点)
- 転職は `state['party']` の配列内のオブジェクトを書き換えるだけで、主人公・モンスター仲間・オーブ進行・セーブ/ロード・戦闘ロジックに影響しない。
- 転職後のメンバーも既存の `rpgsf_member_attack()` / `rpgsf_member_spell()` でそのまま動作する(atk/def/spells を上書きするだけ)。
- `rpgsf_assets()['jobs']` の既存定義を変更せず、新規 case を追加するのみ。
- スマホ対応:モーダルは既存の `.modal` CSSクラスを流用し、タップ操作に対応。
## 4. 実装規模の目安
- PHP追加:`rpgsf_apply_action` に `job_temple` / `job_change` の2 case(約50行)、`rpgsf_assets()['npcs']` に1エントリ追加。
- HTML/JS追加:`pages/play.php` に転職モーダル1個(約80行)、モーダル開閉JS(約30行)。
- CSS追加:`flash-white` アニメーション(約10行)。
- 合計約170行の追加で完結。
DQ3の核心システムである「転職」を追加し、プレイヤーが仲間キャラクターのレベルを上げて別職業に転職できるようにする。これにより周回プレイや育成の深みが生まれ、リプレイ性が大幅に向上する。
## 2. 具体的な仕様
### 転職条件
- 転職できるのは仲間3人(パーティメンバー)のみ。主人公(勇者)は転職不可。
- 転職可能レベル:Lv 5以上(easyは4以上、hardは7以上)。
- 転職はマップ上の「神殿NPC(転職の神殿)」に話しかけることで行う。
### 神殿NPCの追加
- 既存マップの `rpgsf_assets()['npcs']` に `id='job_temple'`、`name='転職の神殿'` を追加。
- シナリオ生成時に1体だけマップ上に配置(既存NPC配置ロジックに1枠追加)。
- 接触時のアクション `'action' => 'job_temple'` をPHP側 `rpgsf_apply_action()` に追加。
### 転職処理(PHP: `rpgsf_apply_action` 内)
```
case 'job_change':
$member_index = (int)($_POST['member_index'] ?? -1);
$new_job_id = (string)($_POST['new_job'] ?? '');
$member = &$state['party'][$member_index];
if (!$member || $member['level'] < $required_level) break;
$job_def = $jobs[$new_job_id] ?? null;
if (!$job_def || $new_job_id === $member['job']) break;
// 能力値引継ぎ: 転職後は新職業の基礎値 + 旧職業レベルの20%ボーナス
$bonus_atk = (int)floor($member['atk'] * 0.2);
$bonus_def = (int)floor($member['def'] * 0.2);
$member['job'] = $new_job_id;
$member['job_name'] = $job_def['name'];
$member['level'] = 1;
$member['exp'] = 0;
$member['max_hp'] = $job_def['hp'];
$member['hp'] = $job_def['hp'];
$member['max_mp'] = $job_def['mp'];
$member['mp'] = $job_def['mp'];
$member['atk'] = $job_def['atk'] + $bonus_atk;
$member['def'] = $job_def['def'] + $bonus_def;
$member['spells'] = $job_def['spells'];
$state['last_event'] = 'job_change';
rpgsf_log($state, $member['name'].'は'.$job_def['name'].'に転職した!経験を引き継いでLv1から再出発。');
break;
```
### 転職UIモーダル(JS/HTML)
- `pages/play.php` に `#job-temple-modal` を追加。
- 神殿NPCに接触するとモーダルが開く(`last_event === 'job_change_open'` をPHPがセット → JSがモーダル表示)。
- モーダル内容:
- 転職可能な仲間のリスト(条件未達はグレーアウト)。
- 仲間を選ぶと職業一覧が表示(現在職業はグレーアウト)。
- 「転職する」ボタンで `action=job_change&member_index=X&new_job=Y` をPOST。
- 転職不可の場合は「まだ修行が足りません(Lv○以上で転職可能)」と表示。
- SFC風演出:転職確定時に画面を白フラッシュ(CSSアニメーション `@keyframes flash-white`)+「レベルアップ」と同系統のファンファーレ音(既存 `fx_class='fx-levelup'` を流用)。
### ステータス画面への反映
- 既存の「ステータス画面モーダル」で、転職済みキャラには「元職業名(引継ぎボーナス表示)」を小字で追記する。
- 例:「魔法使い(元:戦士 ATK+2 DEF+1)」
## 3. 既存機能との整合(壊さない点)
- 転職は `state['party']` の配列内のオブジェクトを書き換えるだけで、主人公・モンスター仲間・オーブ進行・セーブ/ロード・戦闘ロジックに影響しない。
- 転職後のメンバーも既存の `rpgsf_member_attack()` / `rpgsf_member_spell()` でそのまま動作する(atk/def/spells を上書きするだけ)。
- `rpgsf_assets()['jobs']` の既存定義を変更せず、新規 case を追加するのみ。
- スマホ対応:モーダルは既存の `.modal` CSSクラスを流用し、タップ操作に対応。
## 4. 実装規模の目安
- PHP追加:`rpgsf_apply_action` に `job_temple` / `job_change` の2 case(約50行)、`rpgsf_assets()['npcs']` に1エントリ追加。
- HTML/JS追加:`pages/play.php` に転職モーダル1個(約80行)、モーダル開閉JS(約30行)。
- CSS追加:`flash-white` アニメーション(約10行)。
- 合計約170行の追加で完結。
💬 返信 (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