コンテンツにスキップ

Player_CalculateDamage()

Master old_version zhazha
Player_CalculateDamage(ベースダメージ,*最小値,*最大値)

ベースダメージを元に、ダメージを補正して計算結果を出力します。

この関数だけ使用しても、ダメージは受けません。そのため、Player_Hurt()と組み合わせて使用する必要があります。

この関数は、プレイヤーのHPとトータルDEFを取得し、以下の式に基づいてダメージを補正します。

Damage=round(BaseDamage+max(0,HP2010)DEF5)Damage = \text{round}\left( BaseDamage + \max\left(0, \left\lceil \frac{HP - 20}{10} \right\rceil\right) - \frac{DEF}{5} \right)

1.HPが20以下の場合、ダメージは補正されません。HPが20を超える場合、HPが高いほどダメージが加算されます。小数点以下切り上げで計算されます。

2.ダメージからDEFの5分の1を引きます。

3.銀行丸めで計算結果を四捨五入します。

ダメージ計算の最終的な丸めにはGMLの round() が使われています。これは「銀行丸め(端数が0.5の時は偶数へ丸める)」という仕様のため、一般的な四捨五入で計算した値とは、.5 の時だけダメージがずれる場合があります。

オプションで、最小値と最大値を指定することもできます。

最小値は、計算されたダメージがこの値を下回らないようにするためのものです。最大値は、計算されたダメージがこの値を超えないようにするためのものです。

最小値はデフォルトで1、最大値はデフォルトでは設定されていません。

ただし、最小値と最大値はハードコーディングされているため、実際には変更できません。変更できるようにするには、後述の修正コードに書き換えてください。

object/step
Player_Hurt(Player_CalculateDamage(10,2,15));

上記コードは、ベースダメージ10、最小値2、最大値15を用いてダメージを計算し、その結果をPlayer_Hurt()に適用します。