ロートル元ゲーム開発者がツクールでゲームを作る|戦闘まわりをもうちょっと作る
さて、昨日アップした時間制限でステータスを上げるアイテムの件ですが、まずツクールMVにはアイテムの効果でスイッチをONにすることができないという壁にぶつかってしまい、例によって公式フォーラムに助けてドラえもんして、コモンイベントでスイッチをONにするという目うろこな回答をいただきました。つまり以下の画像のようにスイッチをONにするコモンイベントをひとつ用意しアイテムで使用するコモンイベントに設定、もうひとつ別にそのスイッチを起動条件としたコモンイベントを用意して時間を監視すれば良い訳です。個人的にこれはコロンブスの卵な回答でしたね。これでステータスを一定時間アップするアイテムがいろいろ作れるようになりました。
あともうひとつ、敵を倒した時に手に入るドロップアイテムの設定もやっておきたいところです。エンカウント型の戦闘の場合はツクールであらかじめドロップアイテムの設定ができるのですが、今回の戦闘はアクションですので、ちょっとした工夫が必要です。例によって敵のスクリプトを以下のように書き換えます。
◆条件分岐:スクリプト:enemyDamage[this.character(0)._eventId - 1] >= 30
◆SEの演奏:Explosion1 (90, 100, 0)
◆移動ルートの設定:このイベント (ウェイト)
: :◇すり抜けON
: :◇不透明度:230
: :◇ウェイト:5フレーム
: :◇不透明度:204
: :◇ウェイト:5フレーム
: :◇不透明度:179
: :◇ウェイト:5フレーム
: :◇不透明度:153
: :◇ウェイト:5フレーム
: :◇不透明度:128
: :◇ウェイト:5フレーム
: :◇不透明度:102
: :◇ウェイト:5フレーム
: :◇不透明度:77
: :◇ウェイト:5フレーム
: :◇不透明度:51
: :◇ウェイト:5フレーム
: :◇不透明度:26
: :◇ウェイト:5フレーム
◆イベントの位置設定:このイベント, (0,0)
◆変数の操作:#0022 = 乱数 1..10
◆条件分岐:#0022 = 1
◆変数の操作:#0022 = 乱数 1..10
◆条件分岐:#0022 = 1
◆文章:なし, ウィンドウ, 下
: :ヒスイを手に入れた!
◆アイテムの増減:ヒスイ + 1
◆
:それ以外のとき
◆文章:なし, ウィンドウ, 下
: :やくそうを手に入れた!
◆アイテムの増減:やくそう + 1
◆
:分岐終了
◆
:分岐終了
◆セルフスイッチの操作:B = ON
◆
:分岐終了
敵を倒した時に10分の1の確率でアイテムをドロップ、その中の更に10分の1の確率でヒスイが手に入りそれ以外はやくそうが手に入るという処理を加えました。本当は死んだ後にキラキラマークみたいなのが残って、それを踏むとアイテムが手に入るという仕様にしたかったのですが、なんかうまくいかないので暫定的にコレでいきます。
最後に、昨日書いたスクリプトでバグを発見したので、修正します。
$gameVariables.setValue(18, ($gameVariables.value(19) - $gameActors.actor(1).param(3)));
上記の通りにやると、防御力が敵の攻撃力を上回った場合にダメージを受けると逆に回復しちゃうんですよ。そこで、下記のように書き換えます。
var damage = $gameVariables.value(19) - $gameActors.actor(1).param(3);
if (damage < 0) {damage = 0}
$gameVariables.setValue(18, damage);
ダメージがマイナスになった場合、ダメージを0にするという処理を加えました。これでバグが直った筈です。
という訳で、戦闘まわりの処理づくりはほぼ終了したので、あとは敵の設定と武器や防具の設定をガリガリ作ります。その間noteを更新するネタがなくなるかもしれませんが、まぁボチボチやります。
コーヒー代でも投げてくれると、作者が喜びます。