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



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

変更点
まだなし

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

module NeoDropSteal
module Double_Drop
  # データベースでトレジャーの設定を行ってない場合のトレジャー出現確率
  # 通常、何も設定を行わないと100になっています。
  ST_R = 75
  # スクリプトで設定した値が 0 < X <= 100 でない場合にエラーとするか
  # 範囲内に収めるかのフラグ。
  ERR_FLG = true
  
  #============================================================================
  # ○ 確率の不正チェック関数
  # prob  : チェックする値
  # enemy : エネミー
  #============================================================================
  def ck_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 = ST_R
      end
    else
      probX = prob == nil ? ST_R : prob
    end
    
    if probX <= 0 || probX > 100
      if ERR_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 = "トレジャー"
  
  #============================================================================
  # ○ 確率取得共通巻数
  # actor : アクター
  # kind  : 種別 [ゴールド、経験値、トレジャー]
  #============================================================================
  def get_rate(actor, kind)
    get_rates = {
      GOLD_NAME => 100, 
      EXP_NAME  => 100, 
      TREJ_NAME => 100
    }
    armor_list  = [actor.armor1_id, actor.armor2_id, actor.armor3_id, 
                   actor.armor4_id, actor.armor5_id, actor.armor6_id, 
                   actor.armor7_id]
    # もし盾に武器を装備していたら除外
    if @armor1_buki
      armor_list.delete_at(0)
    end
    
    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]+)(%|%)/
          if get_rates[GOLD_NAME] == 100
            get_rates[GOLD_NAME] = $1.to_i
          else
            get_rates[GOLD_NAME] += $1.to_i
          end
        end
        if  $data_states[id].name =~ /^#{GOLD_NAME}(None)/
          get_rates[GOLD_NAME] = 0
        end
      end
    when EXP_NAME
      for id in tmp_armor.guard_state_set 
        if $data_states[id].name =~ /^#{EXP_NAME}([0-9]+)(%|%)/
          if get_rates[EXP_NAME] == 100
            get_rates[EXP_NAME] = $1.to_i
          else
            get_rates[EXP_NAME] += $1.to_i
          end
        end
        if $data_states[id].name =~ /^#{EXP_NAME}(None)/
          get_rates[GOLD_NAME] = 0
        end
      end
    when TREJ_NAME
      for id in tmp_armor.guard_state_set 
        if $data_states[id].name =~ /^#{TREJ_NAME}([0-9]+)(%|%)/
          if get_rates[TREJ_NAME] == 100
            get_rates[TREJ_NAME] = $1.to_i
          else
            get_rates[TREJ_NAME] += $1.to_i
          end
        end
        if $data_states[id].name =~ /^#{TREJ_NAME}(None)/
          get_rates[GOLD_NAME] = 0
        end
      end
    else
      p "種別が不正です。"
      return 100
    end
    end
    
    return get_rates[kind]
  end
  
  # 諸注意:上記の獲得変動ステートが重複して装備した場合、効果が重なり合い、
  # 場合によってはゴールドもEXPも手に入らなくなる可能性があります。
  # よって、(ステートが防具に付加する場合は)Tetra-Z氏の排他装備(あるいは
  # 排他装備inパーティー)を併用することをお勧めします。
  # (ちなみに、そのスクリプトを使用する場合はさらにTetra-Z作「TETRAZ.排他理論」と
  # XMS.「XRXS.装備属性取得機構」が必要になります、)
end
end
カスタマイズポイント解説(・・・言わなくても分かるような・・・) 薄橙色の部分にてトレジャー獲得変動の属性名称ベースを設定。 薄赤色にて経験値変動の属性名称ベースを設定。 薄紫色の部分にてゴールド変動の属性名称ベースを設定。

戻る