★小ネタ3★ノーダメージでステート異常が付くのはどうなのか!?

おはようございます^^
今週も小ネタで更新しちゃうぞのコーナーです。

例えば麻痺斬りというスキルを作ったとします。
効果は通常攻撃と同様のダメージを与え、尚且つ100%で麻痺を与えるというものです。
(何ともチートなスキルですが、ここは例えばの話なのでご容赦を^^;)

次に防御力の馬鹿高いモンスターがいたとします。
普通の攻撃では傷ひとつ付きません。(要するにノーダメージ)

↓この条件で攻撃を行うとデフォルトの仕様ではこうなってしまいます。
ノーダメ麻痺

むむ…これはどうなのかと。
ノーダメージでステート異常が付くのは自分的にはちょっと解せない。
そこで今回はそれを改善する小ネタの紹介です。

ボクもワタシもと思う方は続きから!

6/9
おお! たくさんの拍手ありがとうございます^^
やっぱり、この仕様に疑問を感じますよね…!?
この小ネタが参考になれば幸いです。

6/20
記事に誤りがあったので訂正しました。
参考にして下さった皆様にはご迷惑をお掛けして
申し訳ございません。



続きから読んで頂きありがとうございます^^

やり方は凄く簡単。
たった一行のスクリプトをある場所に挟むだけで解決できちゃいます^^

スクリプトエディタを開きGame_Battlerの594行目辺りを見ていただくと

  #--------------------------------------------------------------------------
  # ● 使用効果[ステート付加]
  #--------------------------------------------------------------------------
  def item_effect_add_state(user, item, effect)
    if effect.data_id == 0
      item_effect_add_state_attack(user, item, effect)
    else
      item_effect_add_state_normal(user, item, effect)
    end
  end

という記述があると思います。
これは注釈にも書いてあるとおりスキルなどで使用効果ステート付加を設定したとき
実行する処理です。
そこでここの処理を実行するかどうかの処理を挟んでやります。

やり方はこうです。
def item_effect_add_state(user, item, effect)のすぐ下に
return if item.damage.to_hp? && @result.hp_damage == 0
というスクリプトを挟んでください。
このスクリプトのもつ意味はもし、そのスキル(アイテム)にHPダメージ計算が
設定されていて、尚且つHPに与えたダメージが0ならば処理を終了というものです。


↓これを挟むと先ほどの例でいうとこうなります。
ノーダメ麻痺しない

ノーダメージではステート異常が付かなくなりました。
もちろん、普通の状態異常にするスキル(ダメージ設定をしていない)はちゃんと効果が
発動しますのでご安心を。

まあ、この仕様については人それぞれ感じ方が違うと思うので
必要と思う方は参考にしてみてください。

一応、エイリアス処理をしてコピペでも使えるようにしたものも
用意しておきます。エディタの(ここに追加)に貼って使用してください。

class Game_Battler < Game_BattlerBase
  #--------------------------------------------------------------------------
  # ● 使用効果[ステート付加]
  #--------------------------------------------------------------------------
  alias original_item_effect_add_state item_effect_add_state
  def item_effect_add_state(user, item, effect)
    return if item.damage.to_hp? && @result.hp_damage == 0
    
    original_item_effect_add_state(user, item, effect)
  end
end

最後に、スキルが~と書きましたが武器の特徴に設定した攻撃時ステートにも
この小ネタは有効です。
あと、HPダメージだけじゃなく、MPダメージにも適用したい場合は
return if item.damage.to_hp? && @result.hp_damage == 0

return if item.damage.to_hp? && @result.hp_damage == 0
return if item.damage.to_mp? && @result.mp_damage == 0
HPの分とMPの分の二行に変えると吉です^^
スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

mo-to

Author:mo-to
RGSSとJavaScriptを学んで弄って遊んでいます。
まだまだひよっこですが宜しくお願いします。
所持ツクールはXP、VX、VXAce、MV
Twitter

リンクはフリーです。ご自由にどうぞ。

最新記事
最新コメント
カテゴリ
カウンター
T.COOL人気記事ランキング
検索フォーム
リンク
月別アーカイブ
QRコード
QR