#==============================================================================
# 「スキル採用属性」(ACE) ver1.0 by奈々
#
# ◇使用規約
# 使用される場合はスクリプト作成者として「奈々」を明記して下さい。
# このスクリプトを改変したり、改変したものを配布するなどは自由ですが
# その場合も元のスクリプトの作成者として名前は載せて下さい。
#
#------------------------------------------------------------------------------
#
# スキルの属性「通常攻撃」に対して変更を行うスクリプトです。
# デフォルトはアクターの持つ攻撃属性「全て」から一番有効な属性が選ばれます。
#
# ・採用属性
# スキルのメモ欄に<採用属性 ID>と書いて設定します。(複数設定可)
# このスキルの「通常攻撃」属性はアクターの持つ攻撃属性のうち
# 「採用属性になっているもの」から一番有効な属性が選ばれます。
#
# ・不採用属性
# スキルのメモ欄に<不採用属性 ID>と書いて設定します。(複数設定可)
# このスキルの「通常攻撃」属性はアクターの持つ攻撃属性のうち
# 「不採用属性以外」から一番有効な属性が選ばれます。
#
# 採用属性が1つでも設定されている場合、不採用属性は無効になります。
# また例えばアクターの攻撃属性に採用属性が1つも無かった場合など
# 結果的に属性なしになった場合は0%扱いになります。(通常の属性なしは100%)
#
#==============================================================================
class RPG::Skill < RPG::UsableItem
#--------------------------------------------------------------------------
# ● 採用属性を取得
#--------------------------------------------------------------------------
def accept_elements
list = []
@note.scan(/<採用属性\s?(\d*)>/) {|s| list.push($1.to_i) if $1}
return list
end
#--------------------------------------------------------------------------
# ● 不採用属性を取得
#--------------------------------------------------------------------------
def non_accept_elements
list = []
@note.scan(/<不採用属性\s?(\d*)>/) {|s| list.push($1.to_i) if $1}
return list
end
end
class Game_Battler < Game_BattlerBase
#--------------------------------------------------------------------------
# ○ スキル/アイテムの属性修正値を取得(再定義)
#--------------------------------------------------------------------------
def item_element_rate(user, item)
if item.damage.element_id < 0
user.atk_elements.empty? ? 1.0 : elements_max_rate(user.atk_elements, item)
else
element_rate(item.damage.element_id)
end
end
#--------------------------------------------------------------------------
# ○ 属性の最大修正値の取得(再定義)
# elements : 属性 ID の配列
# 与えられた属性の中で最も有効な修正値を返す
#--------------------------------------------------------------------------
def elements_max_rate(elements, item)
if item.accept_elements != []
elements &= item.accept_elements
elsif item.non_accept_elements != []
elements -= item.non_accept_elements
end
elements.inject([0.0]) {|r, i| r.push(element_rate(i)) }.max
end
end