ダメージ計算式の小ネタ

ツクる上でのちょっとした小ネタや裏ワザなどを紹介してみましょう。
GRASY
記事: 2
登録日時: 2016年2月19日(金) 20:01

ダメージ計算式の小ネタ

投稿記事by GRASY » 2016年2月19日(金) 23:42

皆さん、初めまして。

ダメージ計算式で使える小ネタを載せときます。
間違いなどがあったら、どんどん指摘してください。

●属性有効度を算出する
x.elementRate(属性ID)

対象の属性有効度を算出します。
これを使えば擬似的に2つ以上の属性をスキルにもたせられます。
例:敵の属性1と属性3の有効度の平均値をダメージにかける
a.atk * ((b.elementRate(1) + b.elementRate(3)) / 2)

例:敵の属性1と属性3の有効度で、もっとも有効度が高いほうを採用する
Math.max(a.atk * b.elementRate(1),a,atk * b.elementRate(3))

※属性有効度の計算式を入れる場合は、計算式の上にある属性を決めるところを、必ず「なし」に設定してください。

●ステート有効度を算出する
x.stateRate(ステートID)

対象のステート有効度を算出します。
使い方は、属性有効度算出と大体一緒です。

●防御を貫通させる
b.isGuard() ? m * b.grd : n

いわゆる、防御状態を無視できるスキルを作れます。
mとnには、それぞれ数値や計算式を入れてください。

例:防御している敵には通常の2倍の威力のダメージを与え、それ以外の敵には通常のダメージを与える
a.atk * (b.isGuard() ? 4 * b.grd : 1)

ちなみに、x.grdで対象の防御効果率を算出できます。

●特定のステートにかかっているかを調べる
x.isStateAffected(ステートID) ? m : n

敵が毒にかかってたら威力が上がるスキルや、使用者が特定のステートにかかってたら威力が上がるスキルなどが作れます。
例:敵が3番目のステートにかかってたら、威力が2倍になる。
かかってなかったら、通常の威力になる。
a.mat * (b.isStateAffected(3) ? 2 : 1)

●特定の能力値が1段階以上強化されているかを調べる
x.isBuffAffected(パラメータID) ? m : n

使い方は、上のものと大体一緒です。
使用効果の能力値で能力を強化した場合のみ反映されます。
パラメータIDは、0~7の整数のどれかが入ります
0:HP 1:MP 2:攻撃力 3:防御力 4:魔法力 5:魔法防御力 6:敏捷性 7:運

●特定の能力値が1段階以上弱体化されているかを調べる
x.isDebuffAffected(パラメータID) ? m : n

●特定の能力値が最大まで強化されているかを調べる
x.isMaxBuffAffected(パラメータID) ? m : n

●特定の能力値が最大まで弱体化されているかを調べる
x.isMaxDebuffAffected(パラメータID) ? m : n

●最低でも1のダメージを与える
Math.max(m,1)

mには任意の計算式を入れてください。
maxをminに変えれば、maxと逆のことができます。

●1~3の中からランダムでダメージを与える:
(Math.random() * 3) + 1

0から始める場合は、「+1」を消せばいけます。

●瀕死で威力が上がるスキル
a.atk * 4 *(a.hp <= a.mhp / 5 ? 2 : 1) - b.def * 2
上記の式は残りHPが20%以下になると、威力が2倍になる計算式です。
他にも、「残りHPが半分以上だったら○○する」「敏捷性が一定以上あったら○○する」などのスキルも作れます。


ちなみに、計算式にどれくらい文字を入れられるかを調べてみた結果、Aceでは100文字が限界だったのに対して、MVでは1000文字以上入力できました(正確な限界値はわかりませんでした)
MVではかなり複雑な計算式でも、容易に実現ができそうです。

“MV:小ネタ・TIPS・講座” へ戻る