独学ツクールブログ

ツクールでのオリジナル作品の話を中心に創作関係の徒然な語り。

<< RGSS奮闘記80:プリセットを読み解く23(Game_Battlerクラスその5) | main | RGSS奮闘記82:プリセットを読み解く25(Game_Battlerクラスその7) >>

[ - ] スポンサーサイト

一定期間更新がないため広告を表示しています

| 2018.05.23 Wednesday | - | - |

[ RGSS奮闘記 ] RGSS奮闘記81:プリセットを読み解く24(Game_Battlerクラスその6)

さああと3回頑張るぞ(笑)
今回はスキルの効果適用。大まかには前回の直接攻撃と同じである。


まず初めにクリティカルフラグをオフ。これは変わらない。
次に効果範囲の判定。効果範囲がHP1以上の味方の場合、自分のHPが0なら処理終了。逆に効果範囲がHP0の味方で自分のHPが1以上でも処理終了。
フラグを初期化し、以下各種判定へ。
その1、コモンイベントが設定されている場合はフラグON。
その2、スキルの命中率判定。攻撃力Fが0でないスキルを「物理攻撃スキル」とみなし、この場合のみ判定を行う。ちなみにここにはバグが潜んでいる。
その3、命中判定。その後、命中率が100%でない場合はフラグON。
続いて、命中した場合の処理へ。
まずは威力の計算。威力は「スキルの威力 + 使用者の攻撃力 * 使用者の攻撃力F / 100」で算出される。攻撃力と攻撃力Fは負にはならないので、威力が正なら攻撃、負なら回復で紛れはない。
さて、攻撃スキルの場合、相手の防御力による計算を行う。「物理防御 * 物理防御F / 200」と「魔法防御 * 魔法防御F / 200」を威力から減算。もし0未満になったら0とする。
次に倍率の計算。ベースは20で、各パラメータごとに「パラメータ値 * F / 100」を計算し、加算していく。
基本ダメージ算出。「威力 * 倍率 / 20」で直接攻撃と同じ。
属性修正と防御修正。これも直接攻撃と同じ。
分散。スキルに設定された分散度を使用する以外は直接攻撃と同じ。
第二命中判定。回避率にスキルの回避Fを掛ける以外は直接攻撃と同じ。
ここからスキルが命中した場合の処理に入る。
まず、威力と攻撃力Fが0でないつまり物理攻撃スキルの場合、ステート衝撃解除処理を行ってからフラグON。
次に、HPからダメージ値を減算し、もしHPが変化していたらフラグをON。ここで一時変数を使っているのは、hp=メソッドには上下限があり、たとえばHPが全快のときに回復魔法をかけても現在HPは変化しないからである。
次はステート変化の処理。states_plusとstates_minusをそれぞれ呼び、戻り値が真ならフラグON。
次に、スキルの威力が0の場合はダメージ表示を空にする。これもバグであり、スキルの威力が0の場合はダメージが0でなくても「Miss」になってしまう。
このときステートに変化がなかった場合は、ダメージ表示を「Miss」に変更。
次は命中しなかった場合。これもやはり「Miss」表示。
次は、戦闘中でない場合はダメージをnilとする。ちなみにここの処理がいつ該当するのかは分からない(笑)
最後。フラグであるeffectiveを戻り値としてメソッド終了である。


メソッド一つでこの長さ……なんてこったいorz


次回、アイテムの効果。
もしかしたら残りもまとめてやるかも。


タグ:[ツクールXP] [Ruby] [RGSS] [プリセットを読み解く] [Game_Battler]

| 2011.11.23 Wednesday 21:04 | comments(0) | trackbacks(0) |

[ - ] スポンサーサイト

| 2018.05.23 Wednesday 21:04 | - | - |

コメント

コメントする






この記事のトラックバックURL

トラックバック

このページの先頭へ▲

Twitter

WebClap

Blogram

ブログランキングならblogram

calendar

S M T W T F S
  12345
6789101112
13141516171819
20212223242526
2728293031  
<< October 2019 >>

categories

archives

Amazon

selected entries

recent comment

recent trackback

recent ranking

links

search this site.

sponsored links

others

mobile

qrcode

powered

無料ブログ作成サービス JUGEM