[解決済み]【Ace】全体攻撃で対象の数だけ数値を分散したい
Posted: 2020年10月16日(金) 23:00
全体攻撃を敵や味方が発動しても、対象の数だけダメージが
割られるようにしたいです。
割られるようにしたいです。
コード: 全て選択
計算式 / (b.enemy? ? $game_troop.alive_members.size : $game_party.alive_members.size)
コード: 全て選択
=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
対応させてみました。暇魔神 さんが書きました:もう一つ質問したいのですが、メモ欄などで
特定のスキルはダメージを分散させないようにするにはどうすれば良いですか?