星潟様『バリア&対バリアシステム Ver1.01』(http://artificialprovidence.web.fc2.com ... S3B_AB.txt)
の173行目でエラーが起きてしまいます。
エラーが起きたプロジェクトでは他にもスクリプトを入れているのですが、その中の、
奈々様制作「薬の知識、拡張スクリプト」(ACE)
ver3.0(https://blog.cnobi.jp/v1/blog/user/ce92 ... 1405849426)
を入れてから、このエラーが起こるようになりました。
このスクリプトを外すと問題なく動作するので、原因の一端にはなっているのかなと思います。
ただ、別のプロジェクトを新規作成し、「薬の知識、拡張スクリプト」も含め、エラーが出たプロジェクトと同じスクリプト構成にしたところ、そのプロジェクトではエラーが起きず、問題なく動作しました。
それぞれのスクリプトの内容が反映されたのも確認しました。
なぜこのプロジェクトではエラーが起きたのかが分からず、どう確認すれば良いかも分かりません。
エラーの原因の確認方法と、できれば対処方法を教えていただけますと幸いです。
『バリア&対バリアシステム』で、
下記の欄の、「#バリア形式にアイテム/スキルに設定された形式を入れる。」という注釈の下の
type_data += item.br_type
という部分でエラーが起きます。▼
コード: 全て選択
#--------------------------------------------------------------------------
# 最終的なバリア値を計算する
#--------------------------------------------------------------------------
def br_eval(user, item)
#とりあえず初期値を設定。
main_data = 1.0
#バリア形式用配列を作成。
type_data = []
#バリア形式にアイテム/スキルに設定された形式を入れる。
type_data += item.br_type
#武器属性依存スキルの場合は属性別に属性依存形式を入れ
#そうでない場合は、スキル属性の属性依存形式を入れる。
if item.damage.element_id == -1
user.atk_elements.each do |elem|
v = BR_ABR_SYSTEM::ELEM2[elem]
type_data += v.clone if v
end
else
v = BR_ABR_SYSTEM::ELEM2[item.damage.element_id]
type_data += v if v
end
#バリア形式が何もない場合は処理を飛ばす。
return main_data if type_data.empty?
#形式の被りを排除する。
type_data.uniq!
#形式別に処理を行う。
type_data.each do |bt|
#対象者のバリア値を計算。
data1 = self.br_data(bt).to_f / 100
#使用者の対バリア値が有効となるスキルで
#なおかつ使用者の対バリア値が0ではない時
#使用者の対バリア値を計算。
data2 = item.ab_enable? && user.abr_data(bt) != 0 ? user.abr_data(bt).to_f / 100 : 0
#アイテム/スキルの対バリア値を計算。
data3 = item.item_abr_data[bt] ? item.item_abr_data[bt].to_f / 100 : 0
#全ての情報を元に、この形式でのダメージ補正を計算。
data = data1 * (1.0 - data2 - data3)
#補正が無効な値でない場合は処理を飛ばす。
next if data <= 0
#補正を行う。
main_data *= (1.0 - data)
end
#最終的な補正値を0.0~1.0の間になるように調整する。
return [[main_data, 0.0].max, 1.0].min
end
end
▼エラーメッセージです。