RPGツクール技術部門

RPGツクールMVのダメージ計算式を、簡単にしたい

2019/05/14

こんにちわ!yatsureです。

スキルの計算式って面倒が過ぎませんか?

というのも、例えば私の場合はスキルを炎、氷、風、雷、土の5属性、加えてそれぞれⅠ〜Ⅴの五段階に威力を分けているのですが・・・

ダメージの計算式って、実際にゲームが出来上がった後にバランス調整するじゃないですか。戦闘バランス調整として。
この計算式って、正直正解が無くて、みんな手探りだと思うんですよ。それは良いんですけど、ただ調整が面倒すぎません?

例えば、1段階目の威力は良いとして、2段階目の威力をちょっと修正したい、ってなったら、5属性分修正が確定なんですよ。しかもそれでやってみると、今度は3段階目が・・・ってなって目も当てられない。毎回こんな調整やってられねー!!!

でも、ダメージ計算式はコモンイベント的なものでまとめたりできない。クソ過ぎませんかね?

と、いうことで、色々試してみたんですけど、やっぱりスクリプトというか、プラグイン作成が超簡単で良いですね。

自分で関数を作る&それをRPGツクールで使えるようにする、という事に関しては、この記事か、ツクールMV問題集の上級編にて解説しておりますので、ご参考に。

上記の記事か問題集の上級編をご覧いただいた方であれば、例えばtest_plugin.jsってテキストファイルを作って、そこにfunctionを作ればツクール上でスクリプトをコモンイベントのように関数として使える、という事をある程度認識していただけていると思いますが、そこでですね。
実は、ダメージ計算式にも関数をそのまま使えるんですよ。

簡単に答えだけ言っちゃうと、

function jisaku_damage(a_mat, b_mdf){
    var damage = 0;
    damage = a_mat * 3 - b_mdf * 2;
    return damage;
}

こんな風にtest_plugin.jsの中に書いて、ツクールのデータベース【スキル】のダメージ計算式の所に

jisaku_damage(a.mat, b.mdf)

って書くと、使えます!
ポイントは、
・ツクール上に書くので、最後の;がいらない
・ダメージ計算式に実際に書くときは、a.atkと言った感じにツクール上での書き方に合わせて引数として入れる

です!

これ、何が最高かって、例えば

function jisaku_damage(a_mat, b_mdf, level){
    var damage = 0;
    damage = a_mat * 3 - b_mdf * 2;
    damage *= level;
    return damage;
}

と言った具合に、スキルの段階を予め入れておいて、実際のスキルに

炎Ⅰ jisaku_damage(a.mat, b.mdf, 1)
炎Ⅱ jisaku_damage(a.mat, b.mdf, 2)
炎Ⅲ jisaku_damage(a.mat, b.mdf, 3)
炎Ⅳ jisaku_damage(a.mat, b.mdf, 4)
炎Ⅴ jisaku_damage(a.mat, b.mdf, 5)

って感じで入れておけば、あとの調整はtest_plugin.jsの中を書き換えるだけで全てに反映してくれるようになるんです!
鬼便利じゃないですか!?

もし、スキルの段階ごとに全然違う計算式を作りたい場合は

function jisaku_damage(a_mat, b_mdf, level){
    var damage = 0;
    if(level == 1){
        damage = a_mat * 3 - b_mdf * 2;
    }
    if(level == 2){
        damage = a_mat * 5 - b_mdf * 3;
    }
    if(level == 3){
        damage = a_mat * 7 - b_mdf * 4;
    }
    if(level == 4){
        damage = a_mat * 9 - b_mdf * 5;
    }
    if(level == 5){
        damage = a_mat * 12 - b_def * 6;
    }
    return damage;
}

って感じで作っちゃえば良いと思います。
switch文を使えば良いんですけど、そんなややこしい事は私の記事では書いていないのでif文を使っています。

どうでしょうか

これ、革新的アイデアだと思ってるんですけどね?
スクリプトなどをちょこっと覚えるだけで、作業がこんなにも楽になります。
あんなに嫌いだったスクリプト。使えるようになると、まぁ便利ですねHAHAHA

って感じで、アイデアの御裾分けでした。

-RPGツクール技術部門