#--------------------------------------------------------------------------
# * Targets for Opponents
#--------------------------------------------------------------------------
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
opponents_unit.alive_members
end
#--------------------------------------------------------------------------
# * Targets for Opponents
#--------------------------------------------------------------------------
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
opponents_unit.alive_members
end
#--------------------------------------------------------------------------
# ● 复数对像的随机确定
# num : 需要的对像个数
# hp0 : 限制为 HP 0 的角色
#--------------------------------------------------------------------------
def random_targets(num = 1, hp0 = false)
# 取得参与随机的战斗者和总括机率
candidate_set = hp0 ? hp0_members : alive_members
return candidate_set if candidate_set.size <= num
total_rate = candidate_set.sum {|a| a.target_rate}
result_set = []
# 逐一添加随机对象
num.times do
# 转轮盘赌决定机率
n = rand(total_rate)
candidate_set.each do |battler|
n -= battler.target_rate
if n < 0
result_set << battler
total_rate -= battler.target_rate
candidate_set.delete(battler)
break
end
end
end
result_set
end
#--------------------------------------------------------------------------
# ● 复数对像的随机确定
# num : 需要的对像个数
# hp0 : 限制为 HP 0 的角色
#--------------------------------------------------------------------------
def random_targets(num = 1, hp0 = false)
# 取得参与随机的战斗者和总括机率
candidate_set = hp0 ? hp0_members : alive_members
return candidate_set if candidate_set.size <= num
total_rate = candidate_set.sum {|a| a.target_rate}
result_set = []
# 逐一添加随机对象
num.times do
# 转轮盘赌决定机率
n = rand(total_rate)
candidate_set.each do |battler|
n -= battler.target_rate
if n < 0
result_set << battler
total_rate -= battler.target_rate
candidate_set.delete(battler)
break
end
end
end
result_set
end