ドロップ/窃盗アイテム共通モジュール



盗む、ダブルドロップで使用する共通モジュール

変更点
2026:05:01
・防御品リストの関数化

# ドロップアイテム、窃盗アイテム共通モジュール

module NeoDropSteal
module Double_Drop
  include Multi_Blade
  # データベースでトレジャーの設定を行ってない場合のトレジャー出現確率
  # 通常、何も設定を行わないと100になっています。
  DEFAULT_PROB_RATE = 75
  # スクリプトで設定した値が 0 < X <= 100 でない場合にエラーとするか
  # 範囲内に収めるかのフラグ。
  PROB_ERROR_FLG = true
  
  #============================================================================
  # ○ 確率の不正チェック関数
  # prob  : チェックする値
  # enemy : エネミー
  #============================================================================
  def check_prob_value(prob, enemy, flg=false)
    
    if enemy.is_a?(Game_Enemy)
      probX = prob == nil ? enemy.treasure_prob : prob
      if enemy.item_id == 0 && enemy.weapon_id == 0 && enemy.armor_id == 0 && 
        !flg
        probX = DEFAULT_PROB_RATE
      end
    else
      probX = prob == nil ? DEFAULT_PROB_RATE : prob
    end
    
    if probX <= 0 || probX > 100
      if PROB_ERROR_FLG
        p "値が不正です。"
        return nil
      else
        return [[probX, 1].max, 100].min
      end
    else
      return probX
    end
  end
end

module IGE
  GOLD_NAME = "ゴールド"
  EXP_NAME  = "経験値"
  TREJ_NAME = "トレジャー"
  # ゴールド/経験値/トレジャー 基本レート
  #  通常は100にしてください。
  PROB_RATE_BASE_SET = {
    GOLD_NAME => 100, 
    EXP_NAME  => 100, 
    TREJ_NAME => 100
  }
  
  #============================================================================
  # ○ 確率取得共通巻数
  # actor : アクター
  # kind  : 種別 [ゴールド、経験値、トレジャー]
  #============================================================================
  def get_prob_rate(actor, kind)
    tmp_rate_set = {
      GOLD_NAME => 0, 
      EXP_NAME  => 0, 
      TREJ_NAME => 0
    }
    gold_set_flg = false
    exp_set_flg  = false
    trej_set_flg = false
if $OuterFlgs["Equip_Extend"]
    armor_list = get_armors_id_list(actor)
    # 武器を装備している場合に除外する。
    # 位置で除外するため配列の後ろから精査すること
    for i in actor.armors_weapon.size-1..0
      if actor.armors_weapon[i]
        armor_list.delete_at(i)
      end
    end
else # もとの処理
    armor_list = [actor.armor1_id, actor.armor2_id, actor.armor3_id, 
                  actor.armor4_id]
end # $OuterFlgs["Equip_Extend"]
    
    for armor_id in armor_list
      next if armor_id == 0
      tmp_armor = $data_armors[armor_id]
      
      case kind
      when GOLD_NAME # ゴールド
      
        for id in tmp_armor.guard_state_set
          if $data_states[id].name =~ /^#{GOLD_NAME}([0-9]+)(%|%)/
            tmp_rate_set[GOLD_NAME] += $1.to_i
            gold_set_flg = true
          end
          if  $data_states[id].name =~ /^#{GOLD_NAME}(None)/
            tmp_rate_set[GOLD_NAME] = 0
            gold_set_flg = true
          end
        end
      when EXP_NAME # 経験値
      
        for id in tmp_armor.guard_state_set 
          if $data_states[id].name =~ /^#{EXP_NAME}([0-9]+)(%|%)/
            tmp_rate_set[EXP_NAME] += $1.to_i
            exp_set_flg = true
          end
          if $data_states[id].name =~ /^#{EXP_NAME}(None)/
            tmp_rate_set[EXP_NAME] = 0
            exp_set_flg = true
          end
        end
      when TREJ_NAME # トレジャー
      
        for id in tmp_armor.guard_state_set 
          if $data_states[id].name =~ /^#{TREJ_NAME}([0-9]+)(%|%)/
            tmp_rate_set[TREJ_NAME] += $1.to_i
            trej_set_flg = true
          end
          if $data_states[id].name =~ /^#{TREJ_NAME}(None)/
            tmp_rate_set[TREJ_NAME] = 0
            trej_set_flg = true
          end
        end
      else
        p "種別が不正です。"
        return 100
      end
    end
    
    # フラグが初期値のままなら基本レートを設定
    if !gold_set_flg
      tmp_rate_set[GOLD_NAME] = PROB_RATE_BASE_SET[GOLD_NAME]
    end
    if !exp_set_flg
      tmp_rate_set[EXP_NAME] = PROB_RATE_BASE_SET[EXP_NAME]
    end
    if !trej_set_flg
      tmp_rate_set[TREJ_NAME] = PROB_RATE_BASE_SET[TREJ_NAME]
    end
    
    return tmp_rate_set[kind]
  end
  
  # 諸注意:上記の獲得変動ステートが重複して装備した場合、効果が重なり合い、
  # 場合によってはゴールドもEXPも手に入らなくなる可能性があります。
  # よって、(ステートが防具に付加する場合は)Tetra-Z氏の排他装備(あるいは
  # 排他装備inパーティー)を併用することをお勧めします。
  # (ちなみに、そのスクリプトを使用する場合はさらにTetra-Z作「TETRAZ.排他理論」と
  # XMS.「XRXS.装備属性取得機構」が必要になります、)
end
end
カスタマイズポイント解説(・・・言わなくても分かるような・・・) 薄橙色の部分にてトレジャー獲得変動の属性名称ベースを設定。 薄赤色にて経験値変動の属性名称ベースを設定。 薄紫色の部分にてゴールド変動の属性名称ベースを設定。

戻る