ページ 11

一定以下のダメージを無効化

Posted: 2017年6月21日(水) 21:54
by かくじき
表題の通り、戦闘において例えば500ダメージ以下の攻撃は無効になるようなステートを作成したいと思っております。
ロックマンエグゼのドリームオーラのようなイメージです。
よろしくお願いします。

Re: 一定以下のダメージを無効化

Posted: 2017年6月21日(水) 23:18
by TOMO
こんな感じでいいですか?

コード: 全て選択

class Game_ActionResult
  alias tomo_damage_barrier_make_damage make_damage
  def make_damage(value, item)
    if item.damage.to_hp?
      max = 0
      @battler.states.each do |state|
        if state && state.note.match(/<バリア:(\d+)>/i)
          max = [max, $1.to_i].max
        end
      end
      value = [value - max, 0].max
    end
    tomo_damage_barrier_make_damage(value, item)
  end
end

ステートのメモ欄に「<バリア:500>」と書けば、
500ダメージ以下の攻撃は無効となります

そのゲームはやった事ないので、イメージと違ってたらごめん

Re: 一定以下のダメージを無効化

Posted: 2017年6月22日(木) 00:05
by かくじき
>TOMOさん

動作確認出来ました。
ご対応ありがとうございます。

Re: 一定以下のダメージを無効化

Posted: 2017年6月22日(木) 23:55
by TOMO
勘違いしてたので修正します

スクリプト内の

コード: 全て選択

value = [value - max, 0].max


コード: 全て選択

value = 0 if value <= max

として下さい

Re: 一定以下のダメージを無効化

Posted: 2017年7月03日(月) 01:39
by かくじき
すいません、動作確認が不十分でした。
スクリプト導入時、スキルによる回復が無効になってしまうようです。

Re: 一定以下のダメージを無効化

Posted: 2017年7月03日(月) 14:36
by TOMO
追加部分の

コード: 全て選択

value = 0 if value <= max


コード: 全て選択

value = 0 if value.between?(0, max)

とすれば行けるはずです

Re: 一定以下のダメージを無効化

Posted: 2017年7月04日(火) 21:54
by かくじき
>TOMOさん

無事に回復が出来るようになりました。
ありがとうございます。