【プレツク】モンカニを支える技術①

友人が毎週デュエルマスターズの環境考察noteを出すということで、対抗して毎月17日のプレミアムツクールデーで自作品に使っている技術を紹介しようと思う。

自由編成の概要

第1回目は自由編成となる。本作は4体の戦闘メンバーと4体の控えを120種のモンスターの中から編成することができ、同種を複数体編成することも可能で、連れ歩かずに預けておくものを含めて同時に50体のモンスターを育成することができる。

このシステムを実現するためには概ね以下の様に構築を行った。

①アクターの枠をダミーデータで確保
最初はなんら意味の無いアクターをじゅうぶんな数(ここでは50)入れておく。使用しないダミー武器だけを持たせておき、その武器を持っていれば空き枠であると判断できるようにしておく。(ダミーデータであることを示す情報を持たせておく。別に武器でなくともよい)

②戦闘の度に仲間の加入を判定
戦闘開始時のバトルイベントで敵の情報(種類、加入レベル、確率)を代入。戦闘後に実行するコモンイベントでそれが仲間になるかを判定する。

③空き枠を加入する仲間に書き換える
加入が決定したら、空き枠があるかを判定する。空き枠が無ければ、既にいる魔物と別れるかを選択する。空き枠があれば、その空き枠の職業や名前、顔グラフィックといった情報を加入する仲間のものに書き換える。

④編成はプラグインで
プラグインコマンドで加入したモンスターを編成できるようにする。
弊作ではKanji Party Changeを使用している(表示を顔グラフィックのみに設定できたので使用した)

実際のコモンイベント

戦後処理

まずは戦闘終了後に行う処理のコモンイベントだ。

◆スクリプト:for(var i = 0; i<7; i++)
:     :{
:     :if( $gameParty.size() >= i+1 )
:     :{
:     :if($gameActors.actor($gameParty.members()[i].actorId()).level > $gameVariables.value(52+i))
:     :{
:     :$gameActors.actor($gameParty.members()[i].actorId()).recoverAll()
:     :}
:     :}
:     :}
◆注釈:↑レベルアップしたメンバーを全回復
:  :-------------------------------------------------------------
◆条件分岐:スクリプト:$gameParty.size()==1
 ◆スクリプト:$gameVariables.setValue(12,$gameVariables.value(12)+($gameActors.actor($gameParty.members()[0].actorId()).param(7))/20)
 ◆
:分岐終了
◆条件分岐:スクリプト:$gameParty.size()==2
 ◆スクリプト:$gameVariables.setValue(12,$gameVariables.value(12)+($gameActors.actor($gameParty.members()[0].actorId()).param(7) + $gameActors.actor($gameParty.members()[1].actorId()).param(7) )/20)
 ◆
:分岐終了
◆条件分岐:スクリプト:$gameParty.size()==3
 ◆スクリプト:$gameVariables.setValue(12,$gameVariables.value(12)+($gameActors.actor($gameParty.members()[0].actorId()).param(7)+$gameActors.actor($gameParty.members()[2].actorId()).param(7)+$gameActors.actor($gameParty.members()[2].actorId()).param(7))/20)
 ◆
:分岐終了
◆条件分岐:スクリプト:$gameParty.size()>=4
 ◆スクリプト:$gameVariables.setValue(12,$gameVariables.value(12) + ($gameActors.actor($gameParty.members()[0].actorId()).param(7)+$gameActors.actor($gameParty.members()[2].actorId()).param(7)+$gameActors.actor($gameParty.members()[2].actorId()).param(7)+$gameActors.actor($gameParty.members()[3].actorId()).param(7))/20)
 ◆
:分岐終了
◆注釈:↑バトルメンバーの運に応じて、仲間になる確率に補正
:  :-------------------------------------------------------------
◆変数の操作:#0011 肉蓄積 += 10
◆変数の操作:#0012 確率素点 *= 肉蓄積
◆変数の操作:#0012 確率素点 /= 10
◆変数の操作:#0005 汎用計算E = 乱数 1..100
◆注釈:↑仲間になりやすくなるアイテムの補正を加え、仲間になるか判定
:  :-------------------------------------------------------------
◆スクリプト:$gameActors.actor(2).setName($dataEnemies[$gameVariables.value(1)].name)
◆注釈:↑実際には使用しないアクターに仲間になる魔物の名前を代入
:  :-------------------------------------------------------------
◆注釈:-------------------------------------------------------------
:  :↓仲間になるかを条件分岐で判定
◆条件分岐:汎用計算E ≤ 確率素点
 ◆ウェイト:30フレーム
 ◆スクリプト:var pict = String ( $gameVariables.value(1) );
 :     :$gameScreen.showPicture(1,pict,1,408,312,100,100,0,0)
 ◆ピクチャの移動:#1, 中央 (408,312), (100%,100%), 255, 通常, 10フレーム
 ◆文章:なし, ウィンドウ, 下
 :  :\n[2]が起き上がりこちらを見つめている
 :  :仲間にしますか?
 ◆注釈:↑ピクチャのファイル名をエネミーID、職業IDと対応させて表示させている
 :  :-------------------------------------------------------------
 ◆選択肢の表示:はい, いいえ (ウィンドウ, 右, #1, #2)
 :はいのとき
   ◆コモンイベント:空き枠サーチ
   ◆
 :いいえのとき
   ◆ピクチャの移動:#1, 中央 (408,312), (100%,100%), 0, 通常, 10フレーム
   ◆文章:なし, ウィンドウ, 下
   :  :\n[2]は悲しそうに去っていった
   ◆ピクチャの消去:#1
   ◆
 :分岐終了
 ◆
:分岐終了

独学で組んだため、拙い所もあるかと思うがこのようにして一応問題なく動いている。

空き枠サーチ

◆注釈:下記条件分岐の数値はアクターの魔物枠の始点
:  :この場合、アクター1、2番は別の用途に使用している
◆変数の操作:#0003 汎用計算C = 3
◆ラベル:ループ
◆注釈:下記条件分岐の数値はアクター数分だけ
◆条件分岐:汎用計算C = 53
 ◆注釈:↑最後のアクターまでダミーデータが無い場合の分岐
 :  :-----------------------------------------------------------
 ◆文章:なし, ウィンドウ, 下
 :  :仲間がいっぱいです!
 :  :誰かと別れますか?
 ◆ラベル:別れ1
 ◆選択肢の表示:はい, いいえ (ウィンドウ, 右, #1, #2)
 :はいのとき
   ◆コモンイベント:別れる
   ◆ラベルジャンプ:ループ終了
   ◆
 :いいえのとき
   ◆ピクチャの移動:#1, 中央 (408,312), (100%,100%), 0, 通常, 10フレーム
   ◆文章:なし, ウィンドウ, 下
   :  :魔物は悲しそうに去っていった
   ◆ピクチャの消去:#1
   ◆ラベルジャンプ:ループ終了
   ◆
 :分岐終了
 ◆
:それ以外のとき
 ◆条件分岐:スクリプト:$gameActors.actor($gameVariables.value(3)).hasWeapon($dataWeapons[1])
   ◆注釈:↑現在、魔物のデータが入っていないダミーデータであることを示す装備を持っているかを判定
   :  :-------------------------------------------------------------
   ◆コモンイベント:仲間加入
   ◆ラベルジャンプ:ループ終了
   ◆注釈:↑ダミーデータ=空きがあれば仲間をその枠に入れる
   :  :-----------------------------------------------------------
   ◆
 :分岐終了
 ◆変数の操作:#0003 汎用計算C += 1
 ◆注釈:↑次のアクターに検索対象を移す
 :  :-----------------------------------------------------------
 ◆ラベルジャンプ:ループ
 ◆
:分岐終了
◆ラベル:ループ終了

仲間加入

◆注釈:汎用計算A=入る種類
:  :汎用計算C=入れる枠
◆プラグインコマンド:EnemyBook_varID add 1
◆コモンイベント:仲間初期化
◆スクリプト:$gameActors.actor($gameVariables.value(3)).changeEquipById(1, 0)
◆武器の増減:選択不能 - 1
◆注釈:繰り返し条件の数字はスキル総数
◆スクリプト:for(var i = 1 ; i <= 140; i++){
:     :$gameActors.actor($gameVariables.value(3)).forgetSkill(i)
:     :}
◆スクリプト:$gameActors.actor($gameVariables.value(3)).changeClass($gameVariables.value(1),false)
◆スクリプト:$gameActors.actor($gameVariables.value(3)).initExp ()
◆スクリプト:$gameActors.actor($gameVariables.value(3)).setName($dataEnemies[$gameVariables.value(1)].name)
◆注釈:↑新たに仲間に加わるアクターの初期名を魔物の名前に。経験値や習得スキルを初期化
:  :コモンイベント:仲間初期化と内容に重複があるが、怖くていじれない
:  :-------------------------------------------------------------
◆コモンイベント:顔グラフィックセット
◆変数の操作:#0006 汎用計算F -= 1
◆注釈:-------------------------------------------------------------
:  :↓仲間になる魔物のIDに応じて装備を編集する
◆条件分岐:汎用計算A = 1
 ◆武器の増減:水棲 + 1
 ◆防具の増減:バイタリティ + 1
 ◆スクリプト:$gameActors.actor($gameVariables.value(3)).changeEquipById(1, 4)
 ◆スクリプト:$gameActors.actor($gameVariables.value(3)).changeEquipById(2, 35)
 ◆
:分岐終了
◆条件分岐:汎用計算A = 2
 ◆武器の増減:自然 + 1
 ◆防具の増減:スロウアクション + 1
 ◆スクリプト:$gameActors.actor($gameVariables.value(3)).changeEquipById(1, 3)
 ◆スクリプト:$gameActors.actor($gameVariables.value(3)).changeEquipById(2, 6)
 ◆
:分岐終了


~これを全種の魔物の分だけ~

◆スクリプト:$gameActors.actor(2).setName("欠番")
◆注釈:↑名前の保存に使ってたアクターを戻しておく
:  :-------------------------------------------------------------
◆スクリプト:SceneManager.push(Scene_Name)
:     :SceneManager.prepareNextScene($gameVariables.value(3), 8)
◆注釈:↑加入するアクターの命名画面を呼び出し
:  :-------------------------------------------------------------
◆ピクチャの移動:#1, 中央 (408,312), (100%,100%), 0, 通常, 10フレーム
◆変数の操作:#0005 汎用計算E = パーティ人数
◆スクリプト:if($gameParty.members().contains($gameActors.actor($gameVariables.value(3)))){
:     :$gameVariables.setValue(5,7)
:     :}
◆注釈:新規加入アクターが入れる枠がパーティーにあるかを判定
◆条件分岐:汎用計算E < 8
 ◆変数の操作:#0005 汎用計算E = 汎用計算C
 ◆文章:なし, ウィンドウ, 下
 :  :\n[\v[3]]が仲間になった!
 ◆スクリプト:$gameParty.addActor($gameVariables.value(3))
 ◆
:それ以外のとき
 ◆変数の操作:#0005 汎用計算E = 汎用計算C
 ◆文章:なし, ウィンドウ, 下
 :  :パーティーがいっぱいだ
 :  :誰かを預かり所に送りますか?
 ◆選択肢の表示:はい, いいえ (ウィンドウ, 右, #1, #2)
 :はいのとき
   ◆条件分岐:汎用計算A ≠ 汎用計算A
     ◆注釈:コメントアウト。
     :  :プラグインのバグ?が解消できなかったため
     ◆プラグインコマンド:ChoiceActors 預かり所に送るモンスターを選択してください
     ◆プラグインコマンド:ChoiceActors cancelchoice
     ◆プラグインコマンド:ChoiceActors party
     ◆
   :分岐終了
   ◆変数の操作:#0009 カラム数 = 3
   ◆選択肢の表示:\p[1], \p[2], \p[3], \p[4], \p[5], \p[6] (ウィンドウ, 中, #1, -)
   :\p[1]のとき
     ◆変数の操作:#0003 汎用計算C = パーティメンバー1番のアクターID
     ◆
   :\p[2]のとき
     ◆変数の操作:#0003 汎用計算C = パーティメンバー2番のアクターID
     ◆
   :\p[3]のとき
     ◆変数の操作:#0003 汎用計算C = パーティメンバー3番のアクターID
     ◆
   :\p[4]のとき
     ◆変数の操作:#0003 汎用計算C = パーティメンバー4番のアクターID
     ◆
   :\p[5]のとき
     ◆変数の操作:#0003 汎用計算C = パーティメンバー5番のアクターID
     ◆
   :\p[6]のとき
     ◆変数の操作:#0003 汎用計算C = パーティメンバー6番のアクターID
     ◆
   :分岐終了
   ◆選択肢の表示:\p[7], \p[8], やめる (ウィンドウ, 中, -, #3)
   :\p[7]のとき
     ◆変数の操作:#0003 汎用計算C = パーティメンバー7番のアクターID
     ◆
   :\p[8]のとき
     ◆変数の操作:#0003 汎用計算C = パーティメンバー8番のアクターID
     ◆
   :やめるのとき
     ◆ラベルジャンプ:送らない
     ◆
   :分岐終了
   ◆スクリプト:$gameParty.removeActor($gameVariables.value(3))
   ◆注釈:↑預かり所送りにするアクターを選択し、預かり所へ
   :  :-------------------------------------------------------------
   ◆プラグインコマンド:kanjiPC_varID add 3
   ◆文章:なし, ウィンドウ, 下
   :  :\n[\v[5]]が仲間になった!
   ◆スクリプト:$gameParty.addActor($gameVariables.value(5))
   ◆注釈:↑ここでやっと加入
   :  :-------------------------------------------------------------
   ◆変数の操作:#0003 汎用計算C = 汎用計算E
   ◆
 :いいえのとき
   ◆ラベル:送らない
   ◆文章:なし, ウィンドウ, 下
   :  :\n[\v[3]]は預かり所に向かって行った!
   ◆
 :分岐終了
 ◆
:分岐終了
◆ピクチャの消去:#1
◆プラグインコマンド:kanjiPC_varID add 3
◆レベルの増減:{汎用計算E}, + {汎用計算F}
◆全回復:{汎用計算E}
◆注釈:↑加入レベルの調整、回復
:  :-------------------------------------------------------------

仲間初期化

◆武器の増減:選択不能 + 1
◆変数の操作:#0008 汎用計算H = $gameActors.actor($gameVariables.value(3)).level
◆変数の操作:#0008 汎用計算H -= 1
◆変数の操作:#0008 汎用計算H *= -1
◆スクリプト:$gameActors.actor($gameVariables.value(3)).changeLevel(1 - $gameActors.actor($gameVariables.value(3)).level, false)
◆スクリプト:$gameActors.actor($gameVariables.value(3)).changeClass(21),false
◆スクリプト:$gameActors.actor($gameVariables.value(3)).clearParamPlus()
◆スクリプト:$gameActors.actor($gameVariables.value(3)).initSkills ()
◆スクリプト:$gameActors.actor($gameVariables.value(3)).changeEquipById(1, 1)
◆スクリプト:$gameActors.actor($gameVariables.value(3)).changeEquipById(2, 0)
◆スクリプト:$gameActors.actor($gameVariables.value(3)).changeEquipById(3, 0)
◆スクリプト:$gameActors.actor($gameVariables.value(3)).changeEquipById(4, 0)
◆スクリプト:$gameActors.actor($gameVariables.value(3)).changeEquipById(5, 0)
◆スクリプト:$gameActors.actor($gameVariables.value(3)).setName("空き")
◆スクリプト:for(var i = 1; i <= 8; i++){
:     :$gameParty.loseItem($dataWeapons[i], 1, false)
:     :}
◆スクリプト:for(var i = 1; i <= 37; i++){
:     :$gameParty.loseItem($dataArmors[i], 1, false)
:     :}
◆スクリプト:for(var i = 1; i <= 8; i++){
:     :$gameParty.loseItem($dataWeapons[i], 1, false)
:     :}
◆スクリプト:for(var i = 1; i <= 37; i++){
:     :$gameParty.loseItem($dataArmors[i], 1, false)
:     :}

別れ(※FTKR_OriginalSceneWindow.jsを使用)

◆変数の操作:#0038 別れ選択 = 3
◆注釈:↑有効なアクターの番号。1、2番は別の用途に使用している
:  :---------------------------------------------------------------------
◆ラベル:選択初期化
◆条件分岐:スクリプト:$gameVariables.value(38)>52
 ◆変数の操作:#0038 別れ選択 = 3
 ◆注釈:↑尻の番号のアクターまでたどり着いたら、頭のアクターに戻る
 :  :---------------------------------------------------------------------
 ◆
:分岐終了
◆条件分岐:スクリプト:$gameActors.actor($gameVariables.value(38)).hasWeapon($dataWeapons[1])
 ◆変数の操作:#0038 別れ選択 += 1
 ◆ラベルジャンプ:選択初期化
 ◆注釈:↑ダミーデータがいたら、選択カーソルの初期値を先に送る
 :  :別れを選択している時点でダミーがいるはずないが
 :  :別所のコモンイベントを流用しているため残している
 :  :---------------------------------------------------------------------
 ◆
:それ以外のとき
 ◆条件分岐:スクリプト:$gameActors.actor($gameVariables.value(38)).hasWeapon($dataWeapons[9])
   ◆変数の操作:#0038 別れ選択 += 1
   ◆ラベルジャンプ:選択初期化
   ◆注釈:↑神獣とかモントナー的な、手放せないやつもカーソル選択を飛ばす
   :  :---------------------------------------------------------------------
   ◆
 :それ以外のとき
   ◆ラベルジャンプ:別れ選択
   ◆
 :分岐終了
 ◆
:分岐終了
◆ラベル:別れ選択
◆プラグインコマンド:OSW_コモン設定 マップ 0 生成
◆プラグインコマンド:OSW_コモン設定 マップ 0 アクター \v[38]
◆プラグインコマンド:OSW_コモン設定 マップ 0 内容 ステータス face,level,name,class
◆プラグインコマンド:OSW_コモン設定 マップ 0 位置 280 100 表示 ON REFRESH
◆ループ
 ◆条件分岐:スクリプト:Input.isTriggered('ok')
   ◆SEの演奏:Decision1 (90, 100, 0)
   ◆変数の操作:#0003 汎用計算C = 別れ選択
   ◆ラベルジャンプ:決定
   ◆注釈:↑現在選択している仲間と別れる
   :  :---------------------------------------------------------------------
   ◆
 :分岐終了
 ◆条件分岐:スクリプト:Input.isTriggered('cancel')
   ◆SEの演奏:Cancel2 (90, 100, 0)
   ◆変数の操作:#0003 汎用計算C = 0
   ◆ラベルジャンプ:決定
   ◆注釈:↑別れないことを決定
   :  :---------------------------------------------------------------------
   ◆
 :分岐終了
 ◆条件分岐:スクリプト:Input.isTriggered('right')
   ◆SEの演奏:Cursor2 (90, 100, 0)
   ◆ラベル:追加加算
   ◆変数の操作:#0038 別れ選択 += 1
   ◆注釈:↑次の番号のアクターを選択
   :  :---------------------------------------------------------------------
   ◆条件分岐:スクリプト:$gameVariables.value(38)>52
     ◆変数の操作:#0038 別れ選択 = 3
     ◆注釈:↑カンストまで動かしたら振り出しへ
     :  :---------------------------------------------------------------------
     ◆
   :分岐終了
   ◆条件分岐:スクリプト:$gameActors.actor($gameVariables.value(38)).hasWeapon($dataWeapons[1])
     ◆ラベルジャンプ:追加加算
     ◆
   :それ以外のとき
     ◆条件分岐:スクリプト:$gameActors.actor($gameVariables.value(38)).hasWeapon($dataWeapons[9])
       ◆ラベルジャンプ:追加加算
       ◆
     :それ以外のとき
       ◆ラベルジャンプ:別れ選択
       ◆
     :分岐終了
     ◆
   :分岐終了
   ◆注釈:↑ダミーデータなどを飛ばす処理
   :  :別所から流用してる名残
   :  :---------------------------------------------------------------------
   ◆
 :分岐終了
 ◆条件分岐:スクリプト:Input.isTriggered('left')
   ◆SEの演奏:Cursor2 (90, 100, 0)
   ◆ラベル:追加減算
   ◆変数の操作:#0038 別れ選択 -= 1
   ◆注釈:↑手前の番号のアクターを選択
   :  :---------------------------------------------------------------------
   ◆条件分岐:スクリプト:$gameVariables.value(38)<3
     ◆変数の操作:#0038 別れ選択 = 52
     ◆注釈:↑最初の番号のアクターまで動かしたら最後の番号へ
     :  :---------------------------------------------------------------------
     ◆
   :分岐終了
   ◆条件分岐:スクリプト:$gameActors.actor($gameVariables.value(38)).hasWeapon($dataWeapons[1])
     ◆ラベルジャンプ:追加減算
     ◆
   :それ以外のとき
     ◆条件分岐:スクリプト:$gameActors.actor($gameVariables.value(38)).hasWeapon($dataWeapons[9])
       ◆ラベルジャンプ:追加減算
       ◆
     :それ以外のとき
       ◆ラベルジャンプ:別れ選択
       ◆
     :分岐終了
     ◆
   :分岐終了
   ◆注釈:↑ダミーデータなどを飛ばす処理
   :  :別所から流用してる名残
   :  :---------------------------------------------------------------------
   ◆
 :分岐終了
 ◆ウェイト:1フレーム
 ◆
:以上繰り返し
◆ラベル:決定
◆注釈:ここより上で選択
:  :------------------
◆条件分岐:汎用計算C = 0
 ◆注釈:↑別れないことを選んだ場合
 :  :---------------------------------------------------------------------
 ◆ピクチャの移動:#1, 中央 (408,312), (100%,100%), 0, 通常, 10フレーム
 ◆プラグインコマンド:OSW_コモン設定 マップ 0 表示 OFF
 ◆文章:なし, ウィンドウ, 下
 :  :魔物は悲しそうに去っていった
 ◆ピクチャの消去:#1
 ◆
:それ以外のとき
 ◆注釈:↑別れることを選んだ場合
 :  :---------------------------------------------------------------------
 ◆文章:なし, ウィンドウ, 下
 :  :\N[\v[3]]と別れますか?
 ◆選択肢の表示:はい, いいえ (ウィンドウ, 右, #1, #2)
 :はいのとき
   ◆プラグインコマンド:OSW_コモン設定 マップ 0 表示 OFF
   ◆コモンイベント:仲間加入
   ◆
 :いいえのとき
   ◆プラグインコマンド:OSW_コモン設定 マップ 0 表示 OFF
   ◆ラベルジャンプ:別れ選択
   ◆
 :分岐終了
 ◆
:分岐終了

※とくにここは無駄が多いと思うので許してね

顔グラフィックセット

◆変数の操作:#0008 汎用計算H = 汎用計算A
◆変数の操作:#0008 汎用計算H %= 8
◆変数の操作:#0008 汎用計算H -= 1
◆条件分岐:汎用計算H = -1
 ◆変数の操作:#0008 汎用計算H = 7
 ◆
:分岐終了
◆条件分岐:汎用計算A ≤ 8
 ◆スクリプト:$gameActors.actor($gameVariables.value(3)).setFaceImage("M1", $gameVariables.value(8))
 ◆ラベルジャンプ:設定終了
 ◆
:分岐終了
◆条件分岐:汎用計算A ≤ 16
 ◆スクリプト:$gameActors.actor($gameVariables.value(3)).setFaceImage("M2", $gameVariables.value(8))
 ◆ラベルジャンプ:設定終了
 ◆
:分岐終了
◆条件分岐:汎用計算A ≤ 24
 ◆スクリプト:$gameActors.actor($gameVariables.value(3)).setFaceImage("M3", $gameVariables.value(8))
 ◆ラベルジャンプ:設定終了
 ◆
:分岐終了
◆条件分岐:汎用計算A ≤ 32
 ◆スクリプト:$gameActors.actor($gameVariables.value(3)).setFaceImage("M4", $gameVariables.value(8))
 ◆ラベルジャンプ:設定終了
 ◆
:分岐終了
◆条件分岐:汎用計算A ≤ 40
 ◆スクリプト:$gameActors.actor($gameVariables.value(3)).setFaceImage("M5", $gameVariables.value(8))
 ◆ラベルジャンプ:設定終了
 ◆
:分岐終了
◆条件分岐:汎用計算A ≤ 48
 ◆スクリプト:$gameActors.actor($gameVariables.value(3)).setFaceImage("M6", $gameVariables.value(8))
 ◆ラベルジャンプ:設定終了
 ◆
:分岐終了
◆条件分岐:汎用計算A ≤ 56
 ◆スクリプト:$gameActors.actor($gameVariables.value(3)).setFaceImage("M7", $gameVariables.value(8))
 ◆ラベルジャンプ:設定終了
 ◆
:分岐終了
◆条件分岐:汎用計算A ≤ 64
 ◆スクリプト:$gameActors.actor($gameVariables.value(3)).setFaceImage("M8", $gameVariables.value(8))
 ◆ラベルジャンプ:設定終了
 ◆
:分岐終了
◆条件分岐:汎用計算A ≤ 72
 ◆スクリプト:$gameActors.actor($gameVariables.value(3)).setFaceImage("M9", $gameVariables.value(8))
 ◆ラベルジャンプ:設定終了
 ◆
:分岐終了
◆条件分岐:汎用計算A ≤ 80
 ◆スクリプト:$gameActors.actor($gameVariables.value(3)).setFaceImage("M10", $gameVariables.value(8))
 ◆ラベルジャンプ:設定終了
 ◆
:分岐終了
◆条件分岐:汎用計算A ≤ 88
 ◆スクリプト:$gameActors.actor($gameVariables.value(3)).setFaceImage("M11", $gameVariables.value(8))
 ◆ラベルジャンプ:設定終了
 ◆
:分岐終了
◆条件分岐:汎用計算A ≤ 96
 ◆スクリプト:$gameActors.actor($gameVariables.value(3)).setFaceImage("M12", $gameVariables.value(8))
 ◆ラベルジャンプ:設定終了
 ◆
:分岐終了
◆条件分岐:汎用計算A ≤ 104
 ◆スクリプト:$gameActors.actor($gameVariables.value(3)).setFaceImage("M13", $gameVariables.value(8))
 ◆ラベルジャンプ:設定終了
 ◆
:分岐終了
◆条件分岐:汎用計算A ≤ 112
 ◆スクリプト:$gameActors.actor($gameVariables.value(3)).setFaceImage("M14", $gameVariables.value(8))
 ◆ラベルジャンプ:設定終了
 ◆
:分岐終了
◆条件分岐:汎用計算A ≤ 120
 ◆スクリプト:$gameActors.actor($gameVariables.value(3)).setFaceImage("M15", $gameVariables.value(8))
 ◆ラベルジャンプ:設定終了
 ◆
:分岐終了
◆ラベル:設定終了

※ファイル名も込みのギミックなので、是非とも本体を落として確認して欲しい。

総括

概ねこのような形でモンスターズ・カーニバルの基幹部分が形成されている。DQMライクのみならず、ポケモンライクとかモンスターファームライクにも応用が利くと思われる。

先駆者となる作品も見られるため、車輪の再開発となっているかもしれないが、このように知見や技術を共有しているページを私は見つけることができなかったため、少しでも後発の役に立てるように遺しておくことにする。

つまるところ私は今、私がプレイしたいゲームを製作しているため、私が作ろうとしているような作品を他の作者が作ってくれることこそが理想なのである。これを読んだツクラー諸氏は是非ともDQMライクを作って欲しい。






この記事が気に入ったらサポートをしてみませんか?