52 lines
No EOL
2 KiB
Ruby
52 lines
No EOL
2 KiB
Ruby
|
||
module ELEMENTS_RATE
|
||
|
||
#加算平均とは別に乗算する属性ID
|
||
# 計算時にはここで指定しなかった属性の有効度の加算平均が出され
|
||
# その加算平均に、ここで指定した属性の有効度を乗算した値が結果有効度となる
|
||
MULTI_ELEMENT = [1,2,3,4,5,7,8,9,11,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,51,52,53,54,55,56,57,58,59,60,61,62,63]
|
||
|
||
# 例:攻撃属性が1,19,22で
|
||
#
|
||
# ①相手の属性有効度がID1:50%の場合
|
||
# MULTI_ELEMENTの設定をしなければ (0.50 + 1.00 + 1.00) / 3 = 83.3%
|
||
# 19,22がMULTI_ELEMENTなら (0.50 / 1) * 1.00 * 1.00 = 50%
|
||
#
|
||
# ②相手の属性有効度がID1:0%の場合
|
||
# MULTI_ELEMENTの設定をしなければ (0.00 + 1.00 + 1.00) / 3 = 66.6%
|
||
# 19,22がMULTI_ELEMENTなら (0.00 / 1) * 1.00 * 1.00 = 0%
|
||
|
||
end
|
||
|
||
#==============================================================================
|
||
# ■ Game_Battler
|
||
#==============================================================================
|
||
class Game_Battler < Game_BattlerBase
|
||
#--------------------------------------------------------------------------
|
||
# ● 属性の最大修正値の取得
|
||
#--------------------------------------------------------------------------
|
||
def elements_max_rate(user, elements)
|
||
plus_rate = 0.0
|
||
plus_number = 0
|
||
multi_rate = 1.0
|
||
elements.each do |i|
|
||
rate = (element_rate(i) * elements_booster_rate(user, i)) -
|
||
elements_drain_rate(i)
|
||
if ELEMENTS_RATE::MULTI_ELEMENT.include?(i)
|
||
multi_rate *= rate
|
||
else
|
||
plus_rate += rate
|
||
plus_number += 1
|
||
end
|
||
end
|
||
if plus_number > 0
|
||
plus_rate /= plus_number
|
||
else
|
||
plus_rate = 1.0
|
||
end
|
||
rate = plus_rate * multi_rate
|
||
p sprintf("攻撃者:%s 有効度:%s%% (平均:%s%% 乗算:%s) 属性:%s",
|
||
user.name, rate * 100, plus_rate * 100, multi_rate, elements)
|
||
return rate
|
||
end
|
||
end |