ORK Framework 3を使ってみよう!(5)〜戦闘計算式を調整する〜
ORK Framework 3を使ってみるシリーズ。
基本情報と目次は以下。
計算式を設定する
Game > Formulaでいろんな計算式の登録ができる
ノードをつなげていく形式で計算式を組み立てるので、視覚的に分かりやすい
ただし四則演算をしない
前から順に計算するので、A + B / C が自動的に ( A + B ) / C なる
四則演算するには A + ( B / C ) と組み立てる必要がある
サンプルではPhysical Damage(物理ダメージ)とMagical Damage(魔法ダメージ)が設定されている
「使用者のATK / (( 50 + 対象のDEF ) / 50)」という計算式になっている
DEFが50でダメージ半減の扱い
物理攻撃計算式を改変する
50という固定値が入ってると融通が効かないので改変する
ひとまずツクールに則って「使用者のATK * 4 - 対象のDEF * 2」にしてみる
Physical Damageの計算式を変更する
既にAbilityに設定済みの計算式なので、新規作成せずに改変した方が変更の手間が省ける
先頭から2番目のBegin Sub Calculationノードを選択し、Remove Chainボタンで全てのノードを削除する
Formula Settingsノードを選択し、Use Mininum Valueを有効化
(エディタの誤字)
これでダメージ最低値が0になる
これを入れないと防御の高い相手は攻撃されると回復しかねない
Add NodeボタンからBase > Begin Sub Calculationで下流にノードを追加
前述の通り、四則演算をしないので()で括る
FormulaにはInitial Valueが設定できるので、混ざらないようにする
ノードを未選択だと非接続のノードが追加される
Status Valueノードの後ろ側の○とValueノードの前側の○をドラッグして繋げば接続される
Initial ValueからCombatant > Status Valueを選択
Status ValueからATKを選択
Add NodeボタンからValue > Valueで下流にノードを追加
OperatorからMultiplyを選択し、Valueを4に設定
AddボタンからBase > End Sub Calculationで下流にノードを追加
しっかり()を閉じる
Add NodeボタンからBase > Begin Sub Calculationで下流にノードを追加
OperatorからSubを選択
Initial ValueからCombatant > Status Valueを選択
Status ValueからDEFを選択
Game ObjectからTargetを選択
Add NodeボタンからValue > Valueで下流にノードを追加
OperatorからMultiplyを選択し、Valueを2に設定
AddボタンからBase > End Sub Calculationで下流にノードを追加
魔法攻撃計算式を改変する
MATKとMDEFに置き換えてMagical Damageも同様に変更する。
ツクールの魔法攻撃は「固定値 + 使用者のMATK * 2 - 対象のMDEF * 2」
Formulaで設定するのは「使用者のMATK * 2 - 対象のMDEF * 2」
固定値の設定方法は後で
状態異常成功率の計算式を作る
せっかくLUCKを追加したから状態異常の付与成功率に使ってみる
ツクールにおける付与成功率は「100 +(使用者の運 - 対象の運) * 0.1」%らしい
LUCKが1上がるごとに0.1%成功率が上がる計算
流石にしょっぱすぎるので1%くらいは変動させたい
「100 + 使用者の運 - 対象の運」%にしてみる
Formula Addボタンから新しい計算式を追加し、適当に名前をつける
とりあえずEffects Chanceにしとく
Add NodeボタンからValue > Valueで下流にノードを追加
Valueを100に設定
Add NodeボタンからCombatant > Status Valueで下流にノードを追加
Status ValueからLUCKを選択
Add NodeボタンからCombatant > Status Valueで下流にノードを追加
OperatorからSubを選択
Status OriginからTargetを選択
Status ValueからLUCKを選択
逃走成功率の計算式を作る
AGIを使って逃走確率も計算式を作ってみる
ツクールの逃走成功率は「0.5 * パーティの敏捷性 / トループの敏捷性」
ORKの形式に合わせて「( 0.5 * パーティの敏捷性 / トループの敏捷性 * 100 )」%にする
Formula Addボタンから新しい計算式を追加し、適当に名前をつける
とりあえずEscape Chanceにしとく
Add NodeボタンからBase > Begin Sub Calculationで下流にノードを追加
Initial Valueを0.5に設定
Add NodeボタンからCombatant > Status Valueで下流にノードを追加
OperatorからMultiplyを選択
Staus ValueからAGIを選択
Combatant ScopeからBattleを選択
戦闘に参加しているメンバー全員を対象にする
設定次第では戦闘不参加の控えメンバーも設定できるので、戦闘参加中メンバーを指定すると後々便利かも
Add NodeボタンからCombatant > Status Valueで下流にノードを追加
OperatorからDivideを選択
Status OriginからTargetを選択
Status ValueからAGIを選択
Combatant ScopeからBattleを選択
Add NodeボタンからValue > Valueで下流にノードを追加
OperatorからMultiplyを選択
Valueを100に設定
Add NodeボタンからBase > End Sub Calculationで下流にノードを追加
先制攻撃と不意打ちの計算式を作る
AGIを使って先制攻撃と不意打ちの計算式も作ってみる
ツクールではパーティの敏捷性の合計値がトループの敏捷性の合計値より大きいか小さいかで固定値が適用される
パーティの敏捷性合計値が高い場合、先制10%、不意打ち3%
トループの敏捷性合計値が高い場合、先制5%、不意打ち10%
これを再現するにはIF構文が必要
一応該当するノードはある
Formula Addボタンから新しい計算式を追加し、適当に名前をつける
とりあえずPreemptive Chanceにしとく
Add NodeボタンからCombatant > Status Valueで下流にノードを追加
Status ValueからAGIを選択
Combatant ScopeからBattleを選択
ここまでで「味方AGIの合計値」
Add NodeボタンからCombatant > Status Valueで下流にノードを追加
OperatorからSubを選択
Status OriginからTargetを選択
Status ValueからAGIを選択
Combatant ScopeからBattleを選択
ここまでで「味方AGIの合計値 ー 敵AGIの合計値」
Add NodeボタンからCheck > Check Valueで下流にノードを追加
2つの数値を比較するノード
ValueからValue > Current Value (Formula)を選択
現在の値「味方AGIの合計値 ー 敵AGIの合計値」を判定する
Check TypeからIs Greaterを選択
これで『「味方AGIの合計値 ー 敵AGIの合計値」が0以上かどうか』というIF構文になる
先頭のキャラクターに依存するなら直接UserのAGIを指定してもいい
Add NodeボタンからValue > Valueで下流にノードを追加
先にSuccess(Trueの場合)に繋がる
OperatorからSetを選択
既に「味方AGIの合計値 ー 敵AGIの合計値」が入っているので上書きする
Valueを10に設定
Check Valueノードを選択する
Add NodeボタンからValue > Valueで下流にノードを追加
Successが接続済みの場合Failed(Falseの場合)に繋がる
OperatorからSetを選択
Valueを5に設定
Formula CopyボタンでPreemptive Chanceを複製し、適当に名前をつける
とりあえずSneak Chanceにしとく
Successに繋がるValueを3に変更
Failedに繋がるValueを10に変更
この記事が気に入ったらサポートをしてみませんか?