【自己解決】星潟様制作『バリア&対バリアシステム Ver1.01』でエラーが起きる

返信する
やきいも
記事: 3
登録日時: 2025年7月27日(日) 18:28

【自己解決】星潟様制作『バリア&対バリアシステム Ver1.01』でエラーが起きる

投稿記事 by やきいも »

バトル中、バトラーがダメージを受ける瞬間に、
星潟様『バリア&対バリアシステム 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

▼エラーメッセージです。
エラー画像.png
エラー画像.png (12.2 KiB) 閲覧された回数 543 回
最後に編集したユーザー やきいも [ 2025年7月31日(木) 23:20 ], 累計 1 回
やきいも
記事: 3
登録日時: 2025年7月27日(日) 18:28

【自己解決】 星潟様制作『バリア&対バリアシステム Ver1.01』でエラーが起きる

投稿記事 by やきいも »

自己解決しました。
お騒がせしました。
返信する

“VX / Ace:質問”に戻る