【RPGツクールMV】ゲーム作成の便利メモ

作っていく上で「あ、これ便利や」と思ったスクリプトや細かいテクニックなどの情報をメモっていく記事。
少しずつ追加していく所存。

攻撃におけるダメージ計算について

攻撃のダメージにはJavascriptのMathクラスを使うとそれなりに幅広く設定できる。
例えば、
Math.max(A, B)
を使い、最低でも1ダメージを与えたい、という計算式にするならば、
Math.max(a.atk * 4 – b.def * 2, 1)
とするとで、AとBを比べ、より大きい正の値を使う、という計算がされ、防御力が劣っていれば普通のダメージ、防御力が勝っていれば最低の1ダメージになる、という感じ。

で。

個人的に作った、敵側の基本攻撃。
Math.max(a.atk * 10 – b.def * Math.max(Math.random(),0.8) , Math.max(Math.random(),0.5) * 20)

A:攻撃力の10倍 引く B:防御力の0.8~1倍の値
A-Bの結果、10~20未満の値になった場合、10~20の値を使用する。

これで、最低でも10ダメージ以上で10~20の間でランダムにダメージが当たるような感じにできる。
防具が重要なゲームで役に立つ……かも。

Math.random()は0~1の間のランダムな数値を返す関数。

参考ページ

特定のマップで特定の行動をさせたくないorしたい場合の判定

まず、特定のマップIDを取得する。
→変数にゲームデータ→マップID等で入れる、か、事前に調べて固定値とかで入れる。

特定の行動をしたときに、条件分岐→スクリプトに
$gameMap.mapId() == $gameVariables.value(n)
を指定する。
この場合、n番の変数に入れたマップIDと現在自分がいるマップIDが一致した場合、条件分岐内の処理をする、という感じになる。

例えばリレミト系のスキルを使う場合、
拠点や街等で使いたくない場合、その使いたくないマップIDを指定して除外する、みたいな使い方。
条件分岐で処理を出来るので、
「街の中なのにリレミトしてどうすんだよ!」
みたいなことをキャラに喋らせることもできる。
(同様にルーラで天井にぶつかる、みたいなことも可能。)

セルフスイッチ一気に初期化

mapId = $gameMap.mapId()
var i = 0
while(i <= 30){
key = [mapId, i , “A”]
$gameSelfSwitches.setValue(key, false)
i++
}

イベントコマンド→上級→スクリプトで直書き。
現在いるマップのセルフスイッチを全部OFFにする。
例えば入るたびに宝箱が復活する、みたいなダンジョンで使える。
セルフスイッチの数によって30のとこを変えると良いかもしれない。

逃げるについて

デフォルトの逃げる確率は
0.5 × 味方全員の敏捷性の平均値 ÷ 敵全員の敏捷性の平均値
味方の敏捷が100、敵の敏捷が100だと50%の確率で失敗。
つまり、味方のほうが素早くないと基本失敗する確率。
プラスして、1回失敗するごとに10%確率が上昇するようになっている。

で。

直接いじるにはrpg_managers.jsの下記部分を編集。

BattleManager.makeEscapeRatio = function() {
this._escapeRatio = 0.5 * $gameParty.agility() / $gameTroop.agility();
};

 

絶対に逃げられるようにするには、

BattleManager.makeEscapeRatio = function() {
this._escapeRatio = 1;
};

でおk。