RPGツクールMV 進捗その1
気が向いた時にツクールの進捗を報告するコーナー!
今日は↓のような処理をするイベントコマンドを作ったよ。
(変数a)番のキャラクターに(変数b)番のステートを与える
なぜこの処理が必要なのか。それには今作っているゲームを説明しなければなるまい!
今回作っているゲームは普通のステート(毒とか、防御力アップとか)とは別枠でいわば「強力なステート」を設定している。
それ一個で戦局がガラッと変わるほどの威力をステータス異常に持たせたいのだ。
今のところその強力なステートは、MPとは別のリソースを使って発動することになっている。
そこで目にしたのがこれ(新機能活用講座|RPGツクールMV)。テレポート場所を「隠しアイテム」で管理している。
それに習い、使用可能なステートを「隠しアイテム」として所持、選択したらそのステートになる、というイベントを作ることになった。
つまり冒頭に書いたイベントである。
ところが。
デフォルトのイベントコマンドでは「(変数a)番のキャラクターに(変数b)番のステートを与える」ことができない!
↑のように、(変数A)番のアクターに「ノックアウト」「毒」「睡眠」…etcを与えることはできるが、(変数A)番のアクターに(変数B)を与えることはできないのだ。
ここから苦闘が始まった……。
おおまかには次のような処理をしたよ。
・使用するステートを選択(上に書いたように、隠しアイテムを使った)
・選んだアイテムIDが0だったら、もう一回。
・0じゃなかったら、「$dataItems[先ほどのID].name」を変数に格納($dataItems[ID]の中にアイテムの情報がある)(変数には実は文字列も入る)
・「(さっきの変数)を使用しますか」と聞いて選択肢
・イエスなら、「\p[1]」「\p[2]」「\p[3]」「\p[4」」の4つの選択肢(\p[数字]でパーティのメンバーの名前が入る)
・「\p2」が選択された場合、パーティが2人いるかチェック。\p3なら3人いるかチェック。
・いたら、選択キャラは「$gameParty._actors[(番号)]」($gamePartyにはパーティの情報がある)
・これで「($gameParty._actors[(番号)])番のアクターに($dataItems[先ほどのID].name)を与える」処理をすればいいのだが、アクターにステートを付与するスクリプトがうまく動かず。
・しかたなく、力押し。ステートの数だけ条件分岐することに。
いやー疲れた。
でも特殊なシステムはこのステートまわりだけだから、たぶんあとは楽なはず。たぶん……。