[解決済み]【Ace】全体攻撃で対象の数だけ数値を分散したい

いおん
記事: 27
登録日時: 2020年5月18日(月) 23:57

[解決済み]【Ace】全体攻撃で対象の数だけ数値を分散したい

投稿記事by いおん » 2020年10月16日(金) 23:00

全体攻撃を敵や味方が発動しても、対象の数だけダメージが
割られるようにしたいです。
最後に編集したユーザー いおん on 2020年10月18日(日) 17:57 [ 編集 1 回目 ]

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

Re: 【Ace】全体攻撃で対象の数だけ数値を分散したい

投稿記事by TOMO » 2020年10月17日(土) 07:34

ダメージ計算式で

コード: 全て選択

計算式 / (b.enemy? ? $game_troop.alive_members.size : $game_party.alive_members.size)
のようにすれば可能です

>ecf5DTTzl6h6lJj02さん
その事を忘れてました
暇魔神さんはecf5DTTzl6h6lJj02さんの方のを使って下さい
最後に編集したユーザー TOMO on 2020年10月17日(土) 16:14 [ 編集 1 回目 ]
ecf5DTTzl6h6lJj02
記事: 455
登録日時: 2018年12月23日(日) 13:55

Re: 【Ace】全体攻撃で対象の数だけ数値を分散したい

投稿記事by ecf5DTTzl6h6lJj02 » 2020年10月17日(土) 11:37

こんにちは。
TOMOさんのコードは、生存者の数で除算していますので、
スキルによって戦闘不能が出た場合、生存者の数が変動してしまい、
それ以降の攻撃対象へのダメージが増加してしまいます。

以下のコードをスクリプトエディタの ▼素材 の項目に追加して、
希望の動作が得られるか、お試しください。

コード: 全て選択

=begin
=============================================================================
 ■全体攻撃スキルのダメージをターゲット数で除算するスクリプト
 
    2020/10/17 by ecf5DTTzl6h6lJj02
=============================================================================
  ◆概要: 
    全体が対象になっているスキルを使用した場合、
    基本のダメージ値をターゲットの数で除算します。
   
    ※スキルにのみ適用されます。アイテムには適用されません。
     アイテムに適用したい場合は、
     make_damage_value 関数内の
     item.class == RPG::Skill &&
     の部分を削除してください。
=============================================================================
=end

# 不使用時は false に変更してください
if true
 
  class Game_Action
    #--------------------------------------------------------------------------
    # ● 公開インスタンス変数
    #--------------------------------------------------------------------------
    attr_reader   :targets_size              # ターゲット数

    #--------------------------------------------------------------------------
    # ● クリア
    #--------------------------------------------------------------------------
    alias :o_clear :clear
    def clear
      o_clear
      @taget_length = 0
    end
    #--------------------------------------------------------------------------
    # ● 敵に対するターゲット
    #--------------------------------------------------------------------------
    def targets_for_opponents
      if item.for_random?
        Array.new(item.number_of_targets) { opponents_unit.random_target }
      elsif item.for_one?
        num = 1 + (attack? ? subject.atk_times_add.to_i : 0)
        if @target_index < 0
          [opponents_unit.random_target] * num
        else
          [opponents_unit.smooth_target(@target_index)] * num
        end
      else
        # 生存メンバーの数を記録
        @targets_size = opponents_unit.alive_members.size
        # 生存メンバーの配列を返還
        opponents_unit.alive_members
      end
    end
    #--------------------------------------------------------------------------
    # ● 味方に対するターゲット
    #--------------------------------------------------------------------------
    def targets_for_friends
      if item.for_user?
        [subject]
      elsif item.for_dead_friend?
        if item.for_one?
          [friends_unit.smooth_dead_target(@target_index)]
        else
          friends_unit.dead_members
        end
      elsif item.for_friend?
        if item.for_one?
          [friends_unit.smooth_target(@target_index)]
        else
          # 生存メンバーの数を記録
          @targets_size = friends_unit.alive_members.size
          # 生存メンバーの配列を返還
          friends_unit.alive_members
        end
      end
    end
  end
 
  class Game_Battler < Game_BattlerBase
    #--------------------------------------------------------------------------
    # ● ダメージ計算
    #--------------------------------------------------------------------------
    def make_damage_value(user, item)
      value = item.damage.eval(user, self, $game_variables)
      # 全体攻撃の場合はターゲットの数で除算
      value /= user.current_action.targets_size if item.class == RPG::Skill && item.for_all?
      value *= item_element_rate(user, item)
      value *= pdr if item.physical?
      value *= mdr if item.magical?
      value *= rec if item.damage.recover?
      value = apply_critical(value) if @result.critical
      value = apply_variance(value, item.damage.variance)
      value = apply_guard(value)
      @result.make_damage(value.to_i, item)
    end 
  end
 
end
いおん
記事: 27
登録日時: 2020年5月18日(月) 23:57

Re: 【Ace】全体攻撃で対象の数だけ数値を分散したい

投稿記事by いおん » 2020年10月18日(日) 17:56

TOMO様、ecf5DTTzl6h6lJj02様 どうもありがとうございます!
おかげさまで無事に解決しました!
いおん
記事: 27
登録日時: 2020年5月18日(月) 23:57

Re: [解決済み]【Ace】全体攻撃で対象の数だけ数値を分散したい

投稿記事by いおん » 2020年10月31日(土) 13:49

もう一つ質問したいのですが、メモ欄などで
特定のスキルはダメージを分散させないようにするにはどうすれば良いですか?
ecf5DTTzl6h6lJj02
記事: 455
登録日時: 2018年12月23日(日) 13:55

Re: [解決済み]【Ace】全体攻撃で対象の数だけ数値を分散したい

投稿記事by ecf5DTTzl6h6lJj02 » 2020年10月31日(土) 22:51

こんばんは。
暇魔神 さんが書きました:もう一つ質問したいのですが、メモ欄などで
特定のスキルはダメージを分散させないようにするにはどうすれば良いですか?

対応させてみました。
今回は、テキストファイルでアップさせていただいております。
スクリプトの内容をファイルの中身で上書きしてください。

メモ欄への記述法などは、スクリプトの ◆概要 と書かれている部分を参照してください。
添付ファイル
全体攻撃スキルのダメージ人数割り.txt
(4.55 KiB) ダウンロード数: 21 回
いおん
記事: 27
登録日時: 2020年5月18日(月) 23:57

Re: [解決済み]【Ace】全体攻撃で対象の数だけ数値を分散したい

投稿記事by いおん » 2020年11月11日(水) 21:53

おかげさまで解決出来ました。
ありがとうございます。

“VX / Ace:質問” へ戻る