4.6 KiB
Battle Formulas —— データとして書くバトルスキル
Battle Formulas を使うと、バトルアクションを完全にデータとして書けます。どれだけ傷つけ、どれだけ回復するかは、行動者と対象のステータスから成る式で決まり、マナの消費、シールドの無視、スタンも設定できます。コードは不要で、同じスキルが FF Battle と Card Battle の両方のシステムで機能します。Classic RPG Rules の Power strike・Fireball・Heal・Guard break は、まさにそのようなスキルです。
さらに、敵の戦闘値をステータスから計算し、マナのようなリソース(プール)を戦闘カードのバーとして表示します。
式は Stats Engine の式言語で書かれ、戦闘画面はバトルシステムのものです。このModはその二つをつなぐ役割です。
スキルを一つずつ
Classic RPG Rules の Power strike:
{ "Id": "classic/power_strike", "Type": "ToEnemy",
"Values": [ "RequiredPoint=1", "Formula=a.atk * 1.5 + rand(0, a.str / 2)" ] }
FF のバトルメニューではカードに式が表示され、ヒントにはスキルの説明が出ます:
RPG Plus の戦士は攻撃 12・力 9 なので、この一撃は 12 × 1.5 = 18 に 0〜4.5 の乱数を加えた値になります。ここで記録した戦闘では 22 を出しました:
狼のシールド(2)が最初の部分を受け止めました——Power strike はシールドを無視しません——体力は 20 減り、31 から 11 へ。
同じカードを Card Battle で見ると:
敵の数値はステータスから
狼の体力 31、攻撃 7、シールド 2 は、どこにも数値として書かれていません。RPG Plus はパッチで狼にステータスを与えます:
{ "Id": "rpg_wolf", "Stats": { "str": 5, "vit": 5, "agi": 7 } }
戦闘が始まると、このModは Classic RPG Rules に従ってレベル 2 の狼のシートを計算します。体力 12 + vit * 3 + level * 2 = 31、攻撃 str + level = 7、防御 floor(vit / 2) = 2。ステータスデータのない敵は、キャラクターファイルの数値を使い続けます。
式アクションの値
Formula= 値を持つアクションエンティティ(種類 action。Characters Engine を参照):
Formula=——量。決して 0 未満にはなりません。a.は行動者、b.は対象:両者の任意のステータスに加え、hp、hp_max、attack、defence、pointが使えます。rand(lo, hi)、floor、min、maxなどの関数は Stats Engine 由来です。Effect=damage(既定)またはEffect=heal。Cost=mp:4——プール型ステータスから 4 消費します。パーティメンバーが足りなければ行動は拒否され、何も消費されません。敵は支払い不要です。RequiredPoint=1——行動ポイント。どのバトルシステムでも同じです。Pierce=1——対象のシールドを無視します。State=effect/physics/stunにStateTurns=1とStateChance=35を合わせると——35% の確率で対象に状態異常をそのターン数の間与えます。Type——ToEnemy、ToSelf、ToAlias(味方)。どのアクションでも同じです。
たとえば Classic RPG Rules の Fireball:
"Values": [ "RequiredPoint=1", "Cost=mp:4", "Pierce=1", "Formula=a.mag * 2 + rand(1, 6)" ]
うまくいかないときは
- スキルが 0 になる。 式の中の名前がゲームのステータスではない(未知の名前は 0 として数えられます)か、結果が負になりました。
- スキルが拒否される。 キャラクターに行動ポイント、または
Cost=で指定したプール型ステータスが足りません。 - 敵の数値がファイル由来で、ステータス由来でない。
Stats・Archetype・Traitsを持っていません。


