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

かくじき
記事: 9
登録日時: 2017年5月12日(金) 23:50

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

投稿記事by かくじき » 2017年6月21日(水) 21:54

表題の通り、戦闘において例えば500ダメージ以下の攻撃は無効になるようなステートを作成したいと思っております。
ロックマンエグゼのドリームオーラのようなイメージです。
よろしくお願いします。

TOMO
記事: 343
登録日時: 2015年11月16日(月) 20:12
連絡を取る:

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

投稿記事by TOMO » 2017年6月21日(水) 23:18

こんな感じでいいですか?

コード: 全て選択

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ダメージ以下の攻撃は無効となります

そのゲームはやった事ないので、イメージと違ってたらごめん
かくじき
記事: 9
登録日時: 2017年5月12日(金) 23:50

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

投稿記事by かくじき » 2017年6月22日(木) 00:05

>TOMOさん

動作確認出来ました。
ご対応ありがとうございます。
TOMO
記事: 343
登録日時: 2015年11月16日(月) 20:12
連絡を取る:

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

投稿記事by TOMO » 2017年6月22日(木) 23:55

勘違いしてたので修正します

スクリプト内の

コード: 全て選択

value = [value - max, 0].max


コード: 全て選択

value = 0 if value <= max

として下さい
かくじき
記事: 9
登録日時: 2017年5月12日(金) 23:50

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

投稿記事by かくじき » 2017年7月03日(月) 01:39

すいません、動作確認が不十分でした。
スクリプト導入時、スキルによる回復が無効になってしまうようです。
TOMO
記事: 343
登録日時: 2015年11月16日(月) 20:12
連絡を取る:

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

投稿記事by TOMO » 2017年7月03日(月) 14:36

追加部分の

コード: 全て選択

value = 0 if value <= max


コード: 全て選択

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

とすれば行けるはずです
かくじき
記事: 9
登録日時: 2017年5月12日(金) 23:50

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

投稿記事by かくじき » 2017年7月04日(火) 21:54

>TOMOさん

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

“VX / Ace:スクリプト素材のリクエスト” へ戻る