当ページではランダム依頼について、新規依頼の作り方を説明する。
ランダム依頼はかなり定型化されているため、フォーマットに従えば簡単に新規の依頼が作成できる。
事前に用意されたダンジョンを利用して、ダンジョン付きの依頼を作ることも可能なため
新しいイベントなどを作ってみたいけど自信がない、という方はランダム依頼の作成に挑戦してみるのもいいかもしれない。
以下の2つのランダム依頼を新規作成してみるという実戦形式で説明する。
・ランダム依頼34:ダンジョンなしテスト
・ランダム依頼35:ダンジョンありテスト
※番号が34,35なのは当記事を作成した時点で依頼番号33まで作成されているためである。
この記事をお読みの方が実際に試してみる場合、依頼番号がどこまで使われているのかを確認の上でお試しください。
ERB\RPG\依頼\REQUEST_108_新ランダム依頼
上記ディレクトリに新規の依頼ファイルを作成する。
ファイル名は「REQUEST_108_[依頼番号]_[依頼名].ERB」
当記事では例として「REQUEST_108_34_ダンジョンなしテスト.ERB」というファイルをここに置く。
「@TITLE_RANDOM_REQUEST_108_[依頼番号]」
この関数の中に、依頼の名前と難易度の表示を記入する。
※星の数は難易度。星の色が白色の場合はダンジョン無し、黒色の場合はダンジョン有り。
「@REQUEST_EXPLAIN_108_[依頼番号]」
この関数の中に、依頼の説明分を用意する。
これは最初にランダム依頼を受注するときに、どういう依頼であるか説明を表示するために使用される。
*二行で収めるのが基本
「@REQUEST_108_[依頼番号]」
この関数の中で、依頼の本処理を用意する。
中身は自由に作成してOKであるが、基本的な流れを以下に説明する。
�^様衙粗�の文章
どのような場所でどんなことをしているのか、など状況の描写を行う。
必須ではないものの、描写が素敵だと雰囲気が出て魅力的な依頼になるため是非力を入れてみてはいかがだろうか。
��依頼の本題部分
多くの場合、依頼の本題部分では戦闘を行っている。
必ずしも戦闘しなければならないわけではないため
アイテムの交換やミニゲーム、その他を行っても良い。
�0様蠅僚�了部分
依頼が終了したことを示す文章の表示や
報酬の取得を行う。
「依頼フラグ:108:5」
→依頼の難易度を設定する。難易度が高いほど報酬金額が高くなる仕組みである。1〜5の範囲で設定
「依頼フラグ:108:7」
→依頼人の陣営を設定する。メシアやガイアから依頼を受けるとアライメントが変動する仕組みである。(0:その他 / 1:メシア教 / 2:ガイア教)
「CALL PRIZE_REQUEST_108」
→報酬の計算と獲得を行う関数を実行する。報酬内容は日本円と名声であり、また金額などは直前に行っている難易度などの設定で決まる。
[補足]
上記の報酬設定は共通関数「CALL PRIZE_REQUEST_108」を利用することを前提としている。
これは難易度ごとの金額や報酬の上限金額の設定などを共通処理で行うことで「ランダム依頼」全体のバランスを整えるためのものである。
これを利用せず独自の処理で報酬を設定することもできるが、出来れば上記の処理に合わせていただけると幸いです。
(一部のランダム依頼で超高額報酬が発生して問題になったことがあるため)
ERB\RPG\依頼\REQUEST_108_新ランダム依頼
上記ディレクトリに新規の依頼ファイルを作成する。
ファイル名は「REQUEST_108_[依頼番号]_[依頼名].ERB」
当記事では例として「REQUEST_108_35_ダンジョンありテスト.ERB」というファイルをここに置く。
「@REQUEST_EXPLAIN_108_[依頼番号]」
この関数の中に、依頼の説明分を用意する。
これは最初にランダム依頼を受注するときに、どういう依頼であるか説明を表示するために使用される。
ダンジョンありの場合は、どの種類のダンジョンであるかなども記載する。(工場、森など)
「@REQUEST_108_[依頼番号]」
通常はこの関数の中で、依頼の本処理を用意する。
ただしダンジョンありのランダム依頼の場合、本題となる処理はダンジョン側のイベントで行うため
以下のようにどのダンジョンに行けるようになったのかなどの表示とフラグ設定だけ行う。
フラグ設定は以下の通り
「依頼フラグ:108:2」
→ランダム依頼のダンジョンに突入可能な状態であるかどうか(0:突入不可 / 1:突入可能)
「依頼フラグ:108:3」
→実際に突入するダンジョンの種類を設定する。
ランダムダンジョンのマップは既存の者が用意されているため、それを利用する形式となる。
(1:ビル / 2:下水道 / 3:工場 / 4:森 / 5:山 / 6:地下迷宮 / 8:ランダム迷宮) ※7は不明
@DUNGEON_EVENT_108_4_[依頼番号]
ダンジョン内で特定のイベントマスを踏んだ時に発生するイベントをここで指定する。
※@DUNGEON_EVENT_108_4_[依頼番号]の_4_の部分はイベントマス(!)を意味している。
すこし難易度が上がってしまうが、ダンジョン内に複数のイベントマスを用意することもできる。
この場合、『現在どの座標のイベントマスに乗っているか』を判断してそれぞれ処理を行うこともできる。
=||
@DUNGEON_EVENT_108_3_35
IF FLAG:現M == 1 && FLAG:現X == 31 && FLAG:現Y == 18
;1階のx=31,y=18の座標のイベントマスの処理\\
ELSEIF FLAG:現M == 2 && FLAG:現X == 24 && FLAG:現Y == 14
;2階のx=24,y=14の座標のイベントマスの処理\\
ENDIF
| = |
ダンジョン内イベントの最後に
報酬設定とダンジョン脱出処理を記載する。
今回の例では以下の部分が該当する
=||
;———————-
;依頼の終了部分
;———————-
PRINTFORMW >テンプルナイト達を森から追い払った。
;報酬
依頼フラグ:108:5 = 4;難易度
依頼フラグ:108:6 = 0;日本円
依頼フラグ:108:7 = 2;ガイア教
CALL PRIZE_REQUEST_108
;依頼受諾フラグを0に
依頼フラグ:108:2 = 0
FLAG:脱出 = 1
| = |
報酬設定は以下の通り
「依頼フラグ:108:5」
→依頼の難易度を設定する。難易度が高いほど報酬金額が高くなる仕組みである。1〜5の範囲で設定
「依頼フラグ:108:6」
→依頼の報酬の種類を設定する。(0:日本円 / 1:マッカ)
※ランダム依頼でマッカ獲得が問題視されたため、現在は常に「0:日本円」にすることを推奨。Rev142にて「依頼フラグ:108:6」を設定不要なったがRev143では再び設定が必要になってしまった。(何らかのミス?)
「依頼フラグ:108:7」
→依頼人の陣営を設定する。(0:その他 / 1:メシア教 / 2:ガイア教)
「CALL PRIZE_REQUEST_108」
→報酬の計算と獲得を行う関数を実行する。報酬内容は日本円と名声であり、また金額などは直前に行っている難易度などの設定で決まる。
脱出処理は以下の通り
依頼フラグ:108:2 = 0
→ランダム依頼のダンジョン突入可能フラグを(0:突入不可)にする
FLAG:脱出 = 1
→ダンジョンから脱出する
ERB\RPG\ダンジョンアタック\ダンジョンデータ\DUNGEON108_新ランダム依頼\DUNGEON108_ランダム依頼_MAP.ERB
上記のファイル内の関数「@MAKE_FLOOR_108」にて
ランダム依頼用のダンジョンマップとイベントマスを設定する。
ERB\RPG\ダンジョンアタック\ダンジョンデータ\DUNGEON108_新ランダム依頼\DUNGEON108_ランダム依頼_BASE.ERB
上記ファイルの関数「GET_DUNGEON_NAME_108」にてダンジョンの名前を設定している。
ERB\RPG\ダンジョンアタック\ダンジョンデータ\DUNGEON108_新ランダム依頼\DUNGEON108_ランダム依頼_BASE.ERB
上記ファイルの関数「EVENT_DUNGEON_START_108」にてそれぞれ
ダンジョン突入時、脱出時のイベントを設定している。
「DUNGEON108_ランダム依頼_ENEMY.ERB」ファイルの関数「GET_DUNGEON_LV_108」にて設定する。
「DUNGEON108_ランダム依頼_ENEMY.ERB」ファイルの関数「ENEMY_NUM_108」にて設定する。
=||
@ENEMY_NUM_108, ARG
SELECTCASE 依頼フラグ:108:1
;氷漬けの工場\\
CASE 0\\
RETURN ENEMY_NUM_COMMON("初級", ARG)\\
;下水道の異音\\
CASE 3,\\
RETURN ENEMY_NUM_COMMON("初級", ARG)\\
…(途中省略)…
;地下洞窟調査\\
CASE 32\\
RETURN ENEMY_NUM_COMMON("中級", ARG)\\
CASEELSE\\
RETURN ENEMY_NUM_COMMON("中級", ARG)\\
ENDSELECT
| = |
これは依頼の難易度に応じて初級、中級、上級の設定を行う。
;〜☆☆ 初級
;〜☆☆☆☆ 中級
;〜☆☆☆☆☆☆☆ 上級
;〜☆☆☆☆☆☆☆☆☆☆ 最上級
今回の例では「依頼番号:35」かつ星4の依頼であるため中級である。
従って以下の内容を追記する。
=||
;ダンジョンありテスト\\
CASE 35\\
RETURN ENEMY_NUM_COMMON("中級", ARG)\\
| | = |
「DUNGEON108_ランダム依頼_ENEMY.ERB」ファイルの関数「ENEMY_108」にて設定する。
=||
@ENEMY_108, ARG
SELECTCASE 依頼フラグ:108:1
;氷漬けの工場\\ CASE 0\\ RETURN [[キャラ_ジャックフロスト|キャラ:ジャックフロスト]], 13\\ ;下水道の異音\\ CASE 3\\ RETURN [[キャラ_スライム|キャラ:スライム]], 1\\
…(途中省略)…
;ドリアードを間引いてくれ\\ CASE 30\\ RETURN [[キャラ_ドリアード|キャラ:ドリアード]], 12\\ CASE 32\\ RETURN [[キャラ_ゾンビドッグ|キャラ:ゾンビドッグ]], 10\\
ENDSELECT
| = |
これはダンジョン内で出現する雑魚敵の種類とレベルである。(1種類のみ)
今回の例では「依頼番号:35」かつLv15〜20妖精の「オベロン」を出現させてみる。
従って以下の内容を追記する。
=||
;ダンジョンありテスト\\ CASE 35\\ RETURN [[キャラ_オベロン|キャラ:オベロン]], 15+RAND:6\\
| | = |
ERB\RPG\依頼\REQUEST_108_ランダム依頼.ERB
上記ファイル内で、実際にどのランダム依頼が発生するのかの判定などを行っている。
※ダンジョンなしの場合と同じ内容です。
また、ダンジョンなしの方を先に追加した後でこちらを追加しています。
「@PLAYABLE_REQUEST_108」
この関数の中に以下のような記載が存在する
=||
;ランダムな依頼を表示する\\ SELECTCASE RAND(0,35)\\ CASE 0\\ RESULTS = 氷漬けの工場(難易度 ★★)\\ 依頼フラグ:108:1 = 0\\ CASE 1\\ RESULTS = 教会施設を防衛(難易度 ☆☆☆)\\ 依頼フラグ:108:1 = 1\\
…(途中省略)…
CASE 33\\ RESULTS = 侵攻勢力調査(難易度 ☆☆)\\ 依頼フラグ:108:1 = 33\\ CASE 34\\ RESULTS = ダンジョンなしテスト(難易度 ☆☆)\\ 依頼フラグ:108:1 = 34\\ ENDSELECT\\ RETURN 1\\
| | = |
最初の「SELECTCASE RAND(0,35)」の部分は
0〜34番(35ではないことに注意!)までのランダムな番号の依頼を発生させている。
今回の例では「ランダム依頼34:ダンジョンなしテスト」を追加するため
0〜35番までを発生させるように変更しなければならない。
従ってこのように修正する
=||
;ランダムな依頼を表示する\\ SELECTCASE RAND(0,35)\\ ↓\\ ;ランダムな依頼を表示する\\ SELECTCASE RAND(0,36)\\
| | = |
上記の「Case xx」の部分では
その番号の依頼の名前を設定している。
=||
CASE 34\\ RESULTS = ダンジョンなしテスト(難易度 ☆☆)\\ 依頼フラグ:108:1 = 34\\
| | = |
例えば上記の場合は
「依頼番号:34番」の依頼の表示名を「ダンジョンなしテスト(難易度 ☆☆)」に設定している。
※星の数は難易度。星の色が白色の場合はダンジョン無し、黒色の場合はダンジョン有り。
※「依頼フラグ:108:1」は依頼番号を保存する。「Case xx」のxxと同じ番号をセットすればOK
今回の場合は、「依頼番号:35番」であり名前が「ダンジョンありテスト」、ダンジョンはなしなので
以下の内容を追加する。
=||
CASE 35\\ RESULTS = ダンジョンありテスト(難易度 ★★★★)\\ 依頼フラグ:108:1 = 35\\
| | = |