查看: 1613|回复: 2

[已经过期] 这个vx的套装系统脚本怎么用,求教一下

[复制链接]
梦石
0
星屑
50
在线时间
114 小时
注册时间
2015-1-29
回帖
5
发表于 2015-2-25 18:23:34 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
[pre lang="ruby"]#===============================================================================
# ● RPGVX データ構造を集めたモジュールです
#===============================================================================
module RPG
  #=============================================================================
  # ● スキル、アイテム、武器、防具のスーパークラス。
  #=============================================================================
  class BaseItem
    #===========================================================================
    # ○ メモ欄の内容を取得
    #===========================================================================
    def real_note
      return @note
    end
    #===========================================================================
    # ○ 组合装备関連の処理が必要か?
    #===========================================================================
    def need_set_equips_check
      # 组合装备とセットボーナスの記述がある場合、true を返す
      if self.real_note.include?("组合装备") and self.real_note.include?("セットボーナス")
        return true
      else
        # 组合装备関係の記述がない場合、false を返す
        return false
      end
    end
    #===========================================================================
    # ○ 组合装备の取得
    #===========================================================================
    def set_equips
      text = self.real_note.clone
      # メモ欄から组合装备の記述を検索
      result = text.scan(/组合装备(.+)/)
      # 1つでもヒットした場合
      if result != []
        # 判定用文字から组合装备の名前を取得
        for data in result
          # 余分な文字を消去
          data.sub!("组合装备(") {""}
          data.sub!(")") {""}
        end
      end
      # 组合装备の内容(名前)を配列で返す
      return result
    end
    #===========================================================================
    # ○ セットボーナス(攻撃力)の取得
    #===========================================================================
    def set_bonus_atk
      text = self.real_note.clone
      result = 0
      # メモ欄からボーナス値(+)の記述を検索
      bonus = text.scan(/セットボーナス攻撃力\+\d+/)
      # 1つでもヒットした場合
      if bonus != []
        # 判定用文字からボーナス値を取得
        for data in bonus
          # 余分な文字を消去
          data.sub!("セットボーナス攻撃力+"){""}
          # 文字列を数値に変換し、変数に加算
          result += data.to_i
        end
      end
      # メモ欄からボーナス値(-)の記述を検索
      bonus = text.scan(/セットボーナス攻撃力\-\d+/)
      # 1つでもヒットした場合
      if bonus != []
        # 判定用文字からボーナス値を取得
        for data in bonus
          # 余分な文字を消去
          data.sub!("セットボーナス攻撃力-"){""}
          # 文字列を数値に変換し、変数から減算
          result -= data.to_i
        end
      end
      # ボーナス値を返す
      return result
    end
    #===========================================================================
    # ○ セットボーナス(防御力)の取得
    #===========================================================================
    def set_bonus_def
      text = self.real_note.clone
      result = 0
      # メモ欄からボーナス値(+)の記述を検索
      bonus = text.scan(/セットボーナス防御力\+\d+/)
      # 1つでもヒットした場合
      if bonus != []
        # 判定用文字からボーナス値を取得
        for data in bonus
          # 余分な文字を消去
          data.sub!("セットボーナス防御力+"){""}
          # 文字列を数値に変換し、変数に加算
          result += data.to_i
        end
      end
      # メモ欄からボーナス値(-)の記述を検索
      bonus = text.scan(/セットボーナス防御力\-\d+/)
      # 1つでもヒットした場合
      if bonus != []
        # 判定用文字からボーナス値を取得
        for data in bonus
          # 余分な文字を消去
          data.sub!("セットボーナス防御力-"){""}
          # 文字列を数値に変換し、変数から減算
          result -= data.to_i
        end
      end
      # ボーナス値を返す
      return result
    end
    #===========================================================================
    # ○ セットボーナス(精神力)の取得
    #===========================================================================
    def set_bonus_spi
      text = self.real_note.clone
      result = 0
      # メモ欄からボーナス値(+)の記述を検索
      bonus = text.scan(/セットボーナス精神力\+\d+/)
      # 1つでもヒットした場合
      if bonus != []
        # 判定用文字からボーナス値を取得
        for data in bonus
          # 余分な文字を消去
          data.sub!("セットボーナス精神力+"){""}
          # 文字列を数値に変換し、変数に加算
          result += data.to_i
        end
      end
      # メモ欄からボーナス値(-)の記述を検索
      bonus = text.scan(/セットボーナス精神力\-\d+/)
      # 1つでもヒットした場合
      if bonus != []
        # 判定用文字からボーナス値を取得
        for data in bonus
          # 余分な文字を消去
          data.sub!("セットボーナス精神力-"){""}
          # 文字列を数値に変換し、変数から減算
          result -= data.to_i
        end
      end
      # ボーナス値を返す
      return result
    end
    #===========================================================================
    # ○ セットボーナス(敏捷性)の取得
    #===========================================================================
    def set_bonus_agi
      text = self.real_note.clone
      result = 0
      # メモ欄からボーナス値(+)の記述を検索
      bonus = text.scan(/セットボーナス敏捷性\+\d+/)
      # 1つでもヒットした場合
      if bonus != []
        # 判定用文字からボーナス値を取得
        for data in bonus
          # 余分な文字を消去
          data.sub!("セットボーナス敏捷性+"){""}
          # 文字列を数値に変換し、変数に加算
          result += data.to_i
        end
      end
      # メモ欄からボーナス値(-)の記述を検索
      bonus = text.scan(/セットボーナス敏捷性\-\d+/)
      # 1つでもヒットした場合
      if bonus != []
        # 判定用文字からボーナス値を取得
        for data in bonus
          # 余分な文字を消去
          data.sub!("セットボーナス敏捷性-"){""}
          # 文字列を数値に変換し、変数から減算
          result -= data.to_i
        end
      end
      # ボーナス値を返す
      return result
    end
    #===========================================================================
    # ○ セットボーナス(命中率)の取得
    #===========================================================================
    def set_bonus_hit
      text = self.real_note.clone
      result = 0
      # メモ欄からボーナス値(+)の記述を検索
      bonus = text.scan(/セットボーナス命中率\+\d+/)
      # 1つでもヒットした場合
      if bonus != []
        # 判定用文字からボーナス値を取得
        for data in bonus
          # 余分な文字を消去
          data.sub!("セットボーナス命中率+"){""}
          # 文字列を数値に変換し、変数に加算
          result += data.to_i
        end
      end
      # メモ欄からボーナス値(-)の記述を検索
      bonus = text.scan(/セットボーナス命中率\-\d+/)
      # 1つでもヒットした場合
      if bonus != []
        # 判定用文字からボーナス値を取得
        for data in bonus
          # 余分な文字を消去
          data.sub!("セットボーナス命中率-"){""}
          # 文字列を数値に変換し、変数から減算
          result -= data.to_i
        end
      end
      # ボーナス値を返す
      return result
    end
    #===========================================================================
    # ○ セットボーナス(回避率)の取得
    #===========================================================================
    def set_bonus_eva
      text = self.real_note.clone
      result = 0
      # メモ欄からボーナス値(+)の記述を検索
      bonus = text.scan(/セットボーナス回避率\+\d+/)
      # 1つでもヒットした場合
      if bonus != []
        # 判定用文字からボーナス値を取得
        for data in bonus
          # 余分な文字を消去
          data.sub!("セットボーナス回避率+"){""}
          # 文字列を数値に変換し、変数に加算
          result += data.to_i
        end
      end
      # メモ欄からボーナス値(-)の記述を検索
      bonus = text.scan(/セットボーナス回避率\-\d+/)
      # 1つでもヒットした場合
      if bonus != []
        # 判定用文字からボーナス値を取得
        for data in bonus
          # 余分な文字を消去
          data.sub!("セットボーナス回避率-"){""}
          # 文字列を数値に変換し、変数から減算
          result -= data.to_i
        end
      end
      # ボーナス値を返す
      return result
    end
    #===========================================================================
    # ○ セットボーナス(クリティカル率)の取得
    #===========================================================================
    def set_bonus_cri
      text = self.real_note.clone
      result = 0
      # メモ欄からボーナス値(+)の記述を検索
      bonus = text.scan(/セットボーナスクリティカル率\+\d+/)
      # 1つでもヒットした場合
      if bonus != []
        # 判定用文字からボーナス値を取得
        for data in bonus
          # 余分な文字を消去
          data.sub!("セットボーナスクリティカル率+"){""}
          # 文字列を数値に変換し、変数に加算
          result += data.to_i
        end
      end
      # メモ欄からボーナス値(-)の記述を検索
      bonus = text.scan(/セットボーナスクリティカル率\-\d+/)
      # 1つでもヒットした場合
      if bonus != []
        # 判定用文字からボーナス値を取得
        for data in bonus
          # 余分な文字を消去
          data.sub!("セットボーナスクリティカル率-"){""}
          # 文字列を数値に変換し、変数から減算
          result -= data.to_i
        end
      end
      # ボーナス値を返す
      return result
    end
    #===========================================================================
    # ○ セットボーナス Odds半減 の有無
    #===========================================================================
    def set_bonus_odds_half
      # 記述の有無を真偽値で返す
      return self.real_note.include?("セットボーナス狙われやすさ半減")
    end
    #===========================================================================
    # ○ セットボーナス Odds倍加 の有無
    #===========================================================================
    def set_bonus_odds_twice
      # 記述の有無を真偽値で返す
      return self.real_note.include?("セットボーナス狙われやすさ倍加")
    end
    #===========================================================================
    # ○ セットボーナス 属性攻撃(ダメージ)半減 の有無(名前で取得)
    #===========================================================================
    def set_bonus_element_half
      text = self.real_note.clone
      result = []
      # メモ欄からボーナス内容の記述を検索
      bonus = text.scan(/セットボーナス(.+)属性半減/)
      # 1つでもヒットした場合
      if bonus != []
        # 判定用文字からボーナス内容を取得
        for data in bonus
          # 余分な文字を消去
          data.sub!("セットボーナス("){""}
          data.sub!(")属性半減"){""}
          # ボーナス内容(配列)に追加
          result.push(data)
        end
      end
      # ボーナス内容を返す
      return result
    end
    #===========================================================================
    # ○ セットボーナス 属性攻撃(ダメージ)無効 の有無(名前で取得)
    #===========================================================================
    def set_bonus_element_invalidate
      text = self.real_note.clone
      result = []
      # メモ欄からボーナス内容の記述を検索
      bonus = text.scan(/セットボーナス(.+)属性無効/)
      # 1つでもヒットした場合
      if bonus != []
        # 判定用文字からボーナス内容を取得
        for data in bonus
          # 余分な文字を消去
          data.sub!("セットボーナス("){""}
          data.sub!(")属性無効"){""}
          # ボーナス内容(配列)に追加
          result.push(data)
        end
      end
      # ボーナス内容を返す
      return result
    end
    #===========================================================================
    # ○ セットボーナス 状態異常(確率)半減 の有無(名前で取得)
    #===========================================================================
    def set_bonus_state_half
      text = self.real_note.clone
      result = []
      # メモ欄からボーナス内容の記述を検索
      bonus = text.scan(/セットボーナス(.+)状態半減/)
      # 1つでもヒットした場合
      if bonus != []
        # 判定用文字からボーナス内容を取得
        for data in bonus
          # 余分な文字を消去
          data.sub!("セットボーナス("){""}
          data.sub!(")状態半減"){""}
          # ボーナス内容(配列)に追加
          result.push(data)
        end
      end
      # ボーナス内容を返す
      return result
    end
    #===========================================================================
    # ○ セットボーナス 状態異常(確率)無効 の有無(名前で取得)
    #===========================================================================
    def set_bonus_state_invalidate
      text = self.real_note.clone
      result = []
      # メモ欄からボーナス内容の記述を検索
      bonus = text.scan(/セットボーナス(.+)状態無効/)
      # 1つでもヒットした場合
      if bonus != []
        # 判定用文字からボーナス内容を取得
        for data in bonus
          # 余分な文字を消去
          data.sub!("セットボーナス("){""}
          data.sub!(")状態無効"){""}
          # ボーナス内容(配列)に追加
          result.push(data)
        end
      end
      # ボーナス内容を返す
      return result
    end
    #===========================================================================
    # ○ セットボーナス 攻撃属性追加 の有無( IDで取得)
    #===========================================================================
    def set_bonus_attack_element_plus
      text = self.real_note.clone
      result = []
      # メモ欄からボーナス内容の記述を検索
      bonus = text.scan(/セットボーナス(.+)属性追加/)
      # 1つでもヒットした場合
      if bonus != []
        # 判定用文字からボーナス内容を取得
        for data in bonus
          # 余分な文字を消去
          data.sub!("セットボーナス("){""}
          data.sub!(")属性追加"){""}
          # 有効な属性の場合
          if $data_system.elements.include?(data)
            # ボーナス内容(配列)に追加
            result.push($data_system.elements.index(data))
          end
        end
      end
      # ボーナス内容を返す
      return result
    end
    #===========================================================================
    # ○ セットボーナス ステート付加攻撃 の有無( ID で取得)
    #===========================================================================
    def set_bonus_plus_state_attack
      text = self.real_note.clone
      result = []
      # メモ欄からボーナス内容の記述を検索
      bonus = text.scan(/セットボーナス(.+)付加攻撃/)
      # 1つでもヒットした場合
      if bonus != []
        temp = []
        # 判定用文字からボーナス内容を取得
        for data in bonus
          # 余分な文字を消去
          data.sub!("セットボーナス("){""}
          data.sub!(")付加攻撃"){""}
          # ステート名を一時変数に追加
          temp.push(data)
        end
        # 全ステートを調べる
        for state in $data_states
          # 無効なステートは無視
          next if state.nil?
          # ステート名が一時変数の中にある場合
          if temp.include?(state.name)
            # ボーナス内容に ID を追加
            result.push(state.id)
            # 調査が済んだらループを中断
            break if temp.size == $data_states.size
          end
        end
      end
      # ボーナス内容を返す
      return result
    end
    #===========================================================================
    # ○ セットボーナス ステート解除攻撃 の有無( ID で取得)
    #===========================================================================
    def set_bonus_minus_state_attack
      text = self.real_note.clone
      result = []
      # メモ欄からボーナス内容の記述を検索
      bonus = text.scan(/セットボーナス(.+)解除攻撃/)
      # 1つでもヒットした場合
      if bonus != []
        temp = []
        # 判定用文字からボーナス内容を取得
        for data in bonus
          # 余分な文字を消去
          data.sub!("セットボーナス("){""}
          data.sub!(")解除攻撃"){""}
          # ステート名を一時変数に追加
          temp.push(data)
        end
        # 全ステートを調べる
        for state in $data_states
          # 無効なステートは無視
          next if state.nil?
          # ステート名が一時変数の中にある場合
          if temp.include?(state.name)
            # ボーナス内容に ID を追加
            result.push(state.id)
            # 調査が済んだらループを中断
            break if temp.size == $data_states.size
          end
        end
      end
      # ボーナス内容を返す
      return result
    end
    #===========================================================================
    # ○ セットボーナス クリティカル防止 の有無
    #===========================================================================
    def set_bonus_prevent_critical
      # 記述の有無を真偽値で返す
      return self.real_note.include?("セットボーナスクリティカル防止")
    end
    #===========================================================================
    # ○ セットボーナス 取得経験値2倍 の有無
    #===========================================================================
    def set_bonus_double_exp_gain
      # 記述の有無を真偽値で返す(全角)
      return true if self.real_note.include?("セットボーナス取得経験値2倍")
      # 記述の有無を真偽値で返す(半角)
      return self.real_note.include?("セットボーナス取得経験値2倍")
    end
    #===========================================================================
    # ○ セットボーナス 消費MP半分 の有無
    #===========================================================================
    def set_bonus_half_mp_cost
      # 記述の有無を真偽値で返す(全角)
      return true if self.real_note.include?("セットボーナス消費MP半分")
      # 記述の有無を真偽値で返す(半角)
      return self.real_note.include?("セットボーナス消費MP半分")
    end
    #===========================================================================
    # ○ セットボーナス HP自動回復 の有無
    #===========================================================================
    def set_bonus_auto_hp_recover
      # 記述の有無を真偽値で返す(全角)
      return true if self.real_note.include?("セットボーナスHP自動回復")
      # 記述の有無を真偽値で返す(半角)
      return self.real_note.include?("セットボーナスHP自動回復")
    end
    #===========================================================================
    # ○ セットボーナス ターン内先制 の有無
    #===========================================================================
    def set_bonus_fast_attack
      return self.real_note.include?("セットボーナスターン内先制")
    end
    #===========================================================================
    # ○ セットボーナス 連続攻撃 の有無
    #===========================================================================
    def set_bonus_dual_attack
      return self.real_note.include?("セットボーナス連続攻撃")
    end
    #===========================================================================
    # ○ セットボーナス 強力防御 の有無
    #===========================================================================
    def set_bonus_super_guard
      return self.real_note.include?("セットボーナス強力防御")
    end
    #===========================================================================
    # ○ セットボーナス 薬の知識 の有無
    #===========================================================================
    def set_bonus_pharmacology
      return self.real_note.include?("セットボーナス薬の知識")
    end
    #===========================================================================
    # ○ セットボーナス スキル仮習得 の有無(オブジェクトで取得)
    #===========================================================================
    def set_bonus_skill_temp_learn
      text = self.real_note.clone
      result = []
      # メモ欄からボーナス内容の記述を検索
      bonus = text.scan(/セットボーナススキル仮習得\(\d+\)/)
      # 1つでもヒットした場合
      if bonus != []
        # 判定用文字からボーナス内容を取得
        for data in bonus
          # 余分な文字を消去
          data.sub!("セットボーナススキル仮習得("){""}
          data.sub!(")"){""}
          # 有効なスキル ID の場合
          unless $data_skills[data.to_i].nil?
            # スキルオブジェクトを追加
            result.push($data_skills[data.to_i])
          end
        end
      end
      # ボーナス内容を返す
      return result
    end
    #===========================================================================
    # ○ セットボーナス スリップダメージ の有無
    #===========================================================================
    def set_bonus_slip_damage
      return self.real_note.include?("セットボーナススリップダメージ")
    end
    #===========================================================================
    # ○ セットボーナス 魔法使用不可 の有無
    #===========================================================================
    def set_bonus_silent
      return self.real_note.include?("セットボーナス魔法使用不可")
    end
    #===========================================================================
    # ○ セットボーナス 暴走 の有無
    #===========================================================================
    def set_bonus_berserker
      return self.real_note.include?("セットボーナス暴走")
    end
  end
end
#==============================================================================
# ■ Game_Battler
#------------------------------------------------------------------------------
#  バトラーを扱うクラスです。このクラスは Game_Actor クラスと Game_Enemy クラ
# スのスーパークラスとして使用されます。
#==============================================================================
class Game_Battler
  #--------------------------------------------------------------------------
  # ● インスタンスの複製
  #--------------------------------------------------------------------------
  alias set_equips_bonus_minus_state_set minus_state_set
  alias set_equips_bonus_slip_damage? slip_damage?
  alias set_equips_bonus_silent? silent?
  alias set_equips_bonus_berserker? berserker?
  alias set_equips_bonus_confusion? confusion?
  alias set_equips_bonus_inputable? inputable?
  #--------------------------------------------------------------------------
  # ● 通常攻撃のステート変化 (-) 取得
  #--------------------------------------------------------------------------
  def minus_state_set
    # 通常の処理を実行して結果を取得
    result = set_equips_bonus_minus_state_set
    # アクターの場合
    if self.actor?
      # セットボーナス 追加攻撃ステート付加 が存在する場合
      if @set_bonus_minus_state_attack != []
        # ステート変化の追加
        result += @set_bonus_minus_state_attack
        # “被り”をなくす
        result.uniq!
      end
    end
    # 最終的な結果を返す
    return result
  end
  #--------------------------------------------------------------------------
  # ● ステート [スリップダメージ] 判定
  #--------------------------------------------------------------------------
  def slip_damage?
    # 通常の処理を実行して結果を取得
    result = set_equips_bonus_slip_damage?
    # アクターの場合
    if self.actor?
      # セットボーナスが存在する場合 result に true を入れる
      result = true if @set_bonus_slip_damage == true
    end
    # 最終的な結果を返す
    return result
  end
  #--------------------------------------------------------------------------
  # ● 沈黙状態判定
  #--------------------------------------------------------------------------
  def silent?
    # 通常の処理を実行して結果を取得
    result = set_equips_bonus_silent?
    # アクターの場合
    if self.actor?
      # セットボーナスが存在する場合 result に true を入れる
      result = true if @set_bonus_silent == true
    end
    # 最終的な結果を返す
    return result
  end
  #--------------------------------------------------------------------------
  # ● 暴走状態判定
  #--------------------------------------------------------------------------
  def berserker?
    # 通常の処理を実行して結果を取得
    result = set_equips_bonus_berserker?
    # アクターの場合
    if self.actor?
      # セットボーナスが存在する場合 result に true を入れる
      result = true if @set_bonus_berserker == true
    end
    # 最終的な結果を返す
    return result
  end
  #--------------------------------------------------------------------------
  # ● コマンド入力可能判定
  #--------------------------------------------------------------------------
  def inputable?
    # 通常の処理を実行して結果を取得
    result = set_equips_bonus_inputable?
    # アクターの場合
    if self.actor?
      # 暴走状態の場合、false にする
      result = false if self.berserker?
    end
    # 最終的な結果を返す
    return result
  end
end
#==============================================================================
# ■ Game_Actor
#------------------------------------------------------------------------------
#  アクターを扱うクラスです。このクラスは Game_Actors クラス ($game_actors)
# の内部で使用され、Game_Party クラス ($game_party) からも参照されます。
#==============================================================================
class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● インスタンスの複製
  #--------------------------------------------------------------------------
  alias set_equips_bonus_setup setup
  alias set_equips_bonus_change_equip change_equip
  alias set_equips_bonus_element_rate element_rate
  alias set_equips_bonus_state_probability state_probability
  alias set_equips_bonus_state_resist? state_resist?
  alias set_equips_bonus_element_set element_set
  alias set_equips_bonus_plus_state_set plus_state_set
  alias set_equips_bonus_base_atk base_atk
  alias set_equips_bonus_base_def base_def
  alias set_equips_bonus_base_spi base_spi
  alias set_equips_bonus_base_agi base_agi
  alias set_equips_bonus_hit hit
  alias set_equips_bonus_eva eva
  alias set_equips_bonus_cri cri
  alias set_equips_bonus_odds odds
  alias set_equips_bonus_super_guard super_guard
  alias set_equips_bonus_pharmacology pharmacology
  alias set_equips_bonus_fast_attack fast_attack
  alias set_equips_bonus_dual_attack dual_attack
  alias set_equips_bonus_prevent_critical prevent_critical
  alias set_equips_bonus_half_mp_cost half_mp_cost
  alias set_equips_bonus_double_exp_gain double_exp_gain
  alias set_equips_bonus_auto_hp_recover auto_hp_recover
  alias set_equips_bonus_skills skills
  alias set_equips_bonus_skill_can_use? skill_can_use?
  #--------------------------------------------------------------------------
  # ● セットアップ
  #     actor_id : アクター ID
  #--------------------------------------------------------------------------
  def setup(actor_id)
    # 通常の処理を実行
    set_equips_bonus_setup(actor_id)
    # テスト用セットボーナス変数を初期化
    @test_set_bonus = [0, 0, 0, 0, 0, 0, 0, nil]
    # 组合装备のチェック
    check_set_equips_bonus
  end
  #--------------------------------------------------------------------------
  # ● セットボーナスの初期化
  #--------------------------------------------------------------------------
  def initialize_set_bonus
    # 攻撃力
    @set_bonus_atk = 0
    # 防御力
    @set_bonus_def = 0
    # 精神力
    @set_bonus_spi = 0
    # 敏捷性
    @set_bonus_agi = 0
    # 攻撃命中率
    @set_bonus_hit = 0
    # 回避率
    @set_bonus_eva = 0
    # クリティカル率
    @set_bonus_cri = 0
    # 狙われやすさ
    @set_bonus_odds = 1
    # ダメージ半減属性
    @set_bonus_element_half = []
    # ダメージ無効属性
    @set_bonus_element_invalidate = []
    # 成功率半減ステート
    @set_bonus_state_half = []
    # 無効化ステート
    @set_bonus_state_invalidate = []
    # 追加攻撃属性
    @set_bonus_attack_element_plus = []
    # 追加攻撃ステート付加
    @set_bonus_plus_state_attack = []
    # 追加攻撃ステート解除
    @set_bonus_minus_state_attack = []
    # クリティカル防止
    @set_bonus_prevent_critical = false
    # 経験値取得2倍
    @set_bonus_double_exp_gain = false
    # 消費MP半分
    @set_bonus_half_mp_cost = false
    # HP自動回復
    @set_bonus_auto_hp_recover = false
    # ターン内先制
    @set_bonus_fast_attack = false
    # 連続攻撃
    @set_bonus_dual_attack = false
    # 強力防御
    @set_bonus_super_guard = false
    # 薬の知識
    @set_bonus_pharmacology = false
    # スキル仮習得
    @set_bonus_skill_temp_learn = []
    # スリップダメージ
    @set_bonus_slip_damage = false
    # 魔法使用不可
    @set_bonus_silent = false
    # 暴走
    @set_bonus_berserker = false
  end
  #--------------------------------------------------------------------------
  # ● 装備の変更 (オブジェクトで指定)
  #     equip_type : 装備部位 (0..4)
  #     item       : 武器 or 防具 (nil なら装備解除)
  #     test       : テストフラグ (戦闘テスト、または装備画面での一時装備)
  #--------------------------------------------------------------------------
  def change_equip(equip_type, item, test = false)
    # 通常の処理を実行
    set_equips_bonus_change_equip(equip_type, item, test)
    # テストの場合
    if test
      # テスト用変数の装備と item が違う場合
      if @test_set_bonus[7] != item
        # 组合装备のチェック
        check_set_equips_bonus
        # 各データをテスト用変数に入れる
        @test_set_bonus[0] = @set_bonus_atk
        @test_set_bonus[1] = @set_bonus_def
        @test_set_bonus[2] = @set_bonus_spi
        @test_set_bonus[3] = @set_bonus_agi
        @test_set_bonus[4] = @set_bonus_hit
        @test_set_bonus[5] = @set_bonus_eva
        @test_set_bonus[6] = @set_bonus_cri
        @test_set_bonus[7] = item
      # テスト用変数の装備と item が同じ場合
      else
        # テスト用変数に入っているデータをボーナス値に適用
        @set_bonus_atk = @test_set_bonus[0]
        @set_bonus_def = @test_set_bonus[1]
        @set_bonus_spi = @test_set_bonus[2]
        @set_bonus_agi = @test_set_bonus[3]
        @set_bonus_hit = @test_set_bonus[4]
        @set_bonus_eva = @test_set_bonus[5]
        @set_bonus_cri = @test_set_bonus[6]
      end
      # 処理を中断
      return
    end
    # 组合装备のチェック
    check_set_equips_bonus
  end
  #--------------------------------------------------------------------------
  # ● 组合装备のチェック
  #--------------------------------------------------------------------------
  def check_set_equips_bonus
    # セットボーナスの初期化
    initialize_set_bonus
    # 現在の装備を取得
    now_equips = equips.clone
    now_equips.compact!
    # 组合装备の設定があるか調べる
    for equip in now_equips
      # 設定がない場合は無視
      next unless equip.need_set_equips_check
      # 判定用変数の初期化
      match = []
      # 组合装备の内容を取得
      sets = equip.set_equips.sort
      # 组合装备を装着しているか各装備を調べる
      for data in now_equips
        # 组合装备の場合
        if sets.include?(data.name)
          # 判定用変数に名前を加える
          match << data.name
        end
      end
      # 组合装备が全て揃っている場合
      if (match.sort & sets) == sets
        #-----------------------------------------------------------------------
        # 各ボーナスを反映
        #-----------------------------------------------------------------------
        # 攻撃力
        @set_bonus_atk += equip.set_bonus_atk
        # 防御力
        @set_bonus_def += equip.set_bonus_def
        # 精神力
        @set_bonus_spi += equip.set_bonus_spi
        # 敏捷性
        @set_bonus_agi += equip.set_bonus_agi
        # 攻撃命中率
        @set_bonus_hit += equip.set_bonus_hit
        # 回避率
        @set_bonus_eva += equip.set_bonus_eva
        # クリティカル率
        @set_bonus_cri += equip.set_bonus_cri
        # 狙われやすさ
        if equip.set_bonus_odds_twice
          @set_bonus_odds *= 2
        elsif equip.set_bonus_odds_half
          @set_bonus_odds *= 0.5
        end
        # ダメージ半減属性
        if equip.set_bonus_element_half != []
          @set_bonus_element_half += equip.set_bonus_element_half.clone
        end
        # ダメージ無効属性
        if equip.set_bonus_element_invalidate != []
          @set_bonus_element_invalidate += equip.set_bonus_element_invalidate.clone
        end
        # 成功率半減ステート
        if equip.set_bonus_state_half != []
          @set_bonus_state_half += equip.set_bonus_state_half.clone
        end
        # 無効化ステート
        if equip.set_bonus_state_invalidate != []
          @set_bonus_state_invalidate += equip.set_bonus_state_invalidate.clone
        end
        # 追加攻撃属性
        if equip.set_bonus_attack_element_plus != []
          @set_bonus_attack_element_plus += equip.set_bonus_attack_element_plus.clone
        end
        # 追加攻撃ステート付加
        if equip.set_bonus_plus_state_attack != []
          @set_bonus_plus_state_attack += equip.set_bonus_plus_state_attack.clone
        end
        # 追加攻撃ステート解除
        if equip.set_bonus_minus_state_attack != []
          @set_bonus_minus_state_attack += equip.set_bonus_minus_state_attack.clone
        end
        # クリティカル防止
        unless @set_bonus_prevent_critical
          @set_bonus_prevent_critical = equip.set_bonus_prevent_critical
        end
        # 経験値取得2倍
        unless @set_bonus_double_exp_gain
          @set_bonus_double_exp_gain = equip.set_bonus_double_exp_gain
        end
        # 消費MP半分
        unless @set_bonus_half_mp_cost
          @set_bonus_half_mp_cost = equip.set_bonus_half_mp_cost
        end
        # HP自動回復
        unless @set_bonus_auto_hp_recover
          @set_bonus_auto_hp_recover = equip.set_bonus_auto_hp_recover
        end
        # ターン内先制
        unless @set_bonus_fast_attack
          @set_bonus_fast_attack = equip.set_bonus_fast_attack
        end
        # 連続攻撃
        unless @set_bonus_dual_attack
          @set_bonus_dual_attack = equip.set_bonus_dual_attack
        end
        # 強力防御
        unless @set_bonus_super_guard
          @set_bonus_super_guard = equip.set_bonus_super_guard
        end
        # 薬の知識
        unless @set_bonus_pharmacology
          @set_bonus_pharmacology = equip.set_bonus_pharmacology
        end
        # スキル仮習得
        if equip.set_bonus_skill_temp_learn != []
          @set_bonus_skill_temp_learn += equip.set_bonus_skill_temp_learn - self.skills
          # 配列が空ではない場合
          if @set_bonus_skill_temp_learn != []
            # 配列の内容を整理
            @set_bonus_skill_temp_learn.compact!
            @set_bonus_skill_temp_learn.uniq!
          end
        end
        # スリップダメージ
        unless @set_bonus_slip_damage
          @set_bonus_slip_damage = equip.set_bonus_slip_damage
        end
        # 魔法使用不可
        unless @set_bonus_silent
          @set_bonus_silent = equip.set_bonus_silent
        end
        # 暴走
        unless @set_bonus_berserker
          @set_bonus_berserker = equip.set_bonus_berserker
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 属性修正値の取得
  #     element_id : 属性 ID
  #--------------------------------------------------------------------------
  def element_rate(element_id)
    # 通常の処理を実行して値を取得
    result = set_equips_bonus_element_rate(element_id)
    # ダメージ無効属性の場合
    if @set_bonus_element_invalidate.include?($data_system.elements[element_id])
      result = 0
    # ダメージ半減属性の場合
    elsif @set_bonus_element_half.include?($data_system.elements[element_id])
      result /= 2
    end
    # 最終的な値を返す
    return result
  end
  #--------------------------------------------------------------------------
  # ● ステートの付加成功率の取得
  #     state_id : ステート ID
  #--------------------------------------------------------------------------
  def state_probability(state_id)
    # 通常の処理を実行して値を取得
    result = set_equips_bonus_state_probability(state_id)
    # [抵抗しない] フラグが立っていない場合
    unless $data_states[state_id].nonresistance
      # 無効化ステートの場合
      if @set_bonus_state_invalidate.include?($data_states[state_id].name)
        result = 0
      # 成功率半減ステートの場合
      elsif @set_bonus_state_half.include?($data_states[state_id].name)
        result /= 2
      end
    end
    # 最終的な値を返す
    return result
  end
  #--------------------------------------------------------------------------
  # ● ステート無効化判定
  #     state_id : ステート ID
  #--------------------------------------------------------------------------
  def state_resist?(state_id)
    # 通常の処理を実行して値を取得
    result = set_equips_bonus_state_resist?(state_id)
    # この時点で true なら true を返す
    return true if result == true
    # セットボーナス 無効化ステート に記載があるかを真偽値で返す
    return @set_bonus_state_invalidate.include?($data_states[state_id].name)
  end
  #--------------------------------------------------------------------------
  # ● 通常攻撃の属性取得
  #--------------------------------------------------------------------------
  def element_set
    # 通常の処理を実行して内容を取得
    result = set_equips_bonus_element_set
    # セットボーナス 追加攻撃属性 が存在する場合
    if @set_bonus_attack_element_plus != []
      # 攻撃属性の追加
      if @set_bonus_attack_element_plus != []
        result += @set_bonus_attack_element_plus
        # “被り”をなくす
        result.uniq!
      end
    end
    # 最終的な内容を返す
    return result
  end
  #--------------------------------------------------------------------------
  # ● 通常攻撃の追加効果 (ステート変化) 取得
  #--------------------------------------------------------------------------
  def plus_state_set
    # 通常の処理を実行して内容を取得
    result = set_equips_bonus_plus_state_set
    # セットボーナス 追加攻撃ステート付加 が存在する場合
    if @set_bonus_plus_state_attack != []
      # ステート変化の追加
      result += @set_bonus_plus_state_attack
      # “被り”をなくす
      result.uniq!
    end
    # 最終的な内容を返す
    return result
  end
  #--------------------------------------------------------------------------
  # ● 基本攻撃力の取得
  #--------------------------------------------------------------------------
  def base_atk
    # 通常の処理を実行して値を取得
    result = set_equips_bonus_base_atk
    # セットボーナスの値を追加
    result += @set_bonus_atk
    # 最終的な値を返す
    return result
  end
  #--------------------------------------------------------------------------
  # ● 基本防御力の取得
  #--------------------------------------------------------------------------
  def base_def
    # 通常の処理を実行して値を取得
    result = set_equips_bonus_base_def
    # セットボーナスの値を追加
    result += @set_bonus_def
    # 最終的な値を返す
    return result
  end
  #--------------------------------------------------------------------------
  # ● 基本精神力の取得
  #--------------------------------------------------------------------------
  def base_spi
    # 通常の処理を実行して値を取得
    result = set_equips_bonus_base_spi
    # セットボーナスの値を追加
    result += @set_bonus_spi
    # 最終的な値を返す
    return result
  end
  #--------------------------------------------------------------------------
  # ● 基本敏捷性の取得
  #--------------------------------------------------------------------------
  def base_agi
    # 通常の処理を実行して値を取得
    result = set_equips_bonus_base_agi
    # セットボーナスの値を追加
    result += @set_bonus_agi
    # 最終的な値を返す
    return result
  end
  #--------------------------------------------------------------------------
  # ● 命中率の取得
  #--------------------------------------------------------------------------
  def hit
    # 通常の処理を実行して値を取得
    result = set_equips_bonus_hit
    # セットボーナスの値を追加
    result += @set_bonus_hit
    # 最終的な値を返す
    return result
  end
  #--------------------------------------------------------------------------
  # ● 回避率の取得
  #--------------------------------------------------------------------------
  def eva
    # 通常の処理を実行して値を取得
    result = set_equips_bonus_eva
    # セットボーナスの値を追加
    result += @set_bonus_eva
    # 最終的な値を返す
    return result
  end
  #--------------------------------------------------------------------------
  # ● クリティカル率の取得
  #--------------------------------------------------------------------------
  def cri
    # 通常の処理を実行して値を取得
    result = set_equips_bonus_cri
    # セットボーナスの値を追加
    result += @set_bonus_cri
    # 最終的な値を返す
    return result
  end
  #--------------------------------------------------------------------------
  # ● 狙われやすさの取得
  #--------------------------------------------------------------------------
  def odds
    # 通常の処理を実行して値を取得する
    result = set_equips_bonus_odds
    result *= @set_bonus_odds
    result.to_i
    # 最終的な値を返す
    return [result, 1].max
  end
  #--------------------------------------------------------------------------
  # ● オプション [強力防御] の取得
  #--------------------------------------------------------------------------
  def super_guard
    # 通常の処理を実行し、結果が true なら true を返す
    return true if set_equips_bonus_super_guard == true
    # セットボーナスの真偽値を返す
    return @set_bonus_super_guard
  end
  #--------------------------------------------------------------------------
  # ● オプション [薬の知識] の取得
  #--------------------------------------------------------------------------
  def pharmacology
    # 通常の処理を実行し、結果が true なら true を返す
    return true if set_equips_bonus_pharmacology == true
    # セットボーナスの真偽値を返す
    return @set_bonus_pharmacology
  end
  #--------------------------------------------------------------------------
  # ● 武器オプション [ターン内先制] の取得
  #--------------------------------------------------------------------------
  def fast_attack
    # 通常の処理を実行し、結果が true なら true を返す
    return true if set_equips_bonus_fast_attack == true
    # セットボーナスの真偽値を返す
    return @set_bonus_fast_attack
  end
  #--------------------------------------------------------------------------
  # ● 武器オプション [連続攻撃] の取得
  #--------------------------------------------------------------------------
  def dual_attack
    # 通常の処理を実行し、結果が true なら true を返す
    return true if set_equips_bonus_dual_attack == true
    # セットボーナスの真偽値を返す
    return @set_bonus_dual_attack
  end
  #--------------------------------------------------------------------------
  # ● 防具オプション [クリティカル防止] の取得
  #--------------------------------------------------------------------------
  def prevent_critical
    # 通常の処理を実行し、結果が true なら true を返す
    return true if set_equips_bonus_prevent_critical == true
    # セットボーナスの真偽値を返す
    return @set_bonus_prevent_critical
  end
  #--------------------------------------------------------------------------
  # ● 防具オプション [消費 MP 半分] の取得
  #--------------------------------------------------------------------------
  def half_mp_cost
    # 通常の処理を実行し、結果が true なら true を返す
    return true if set_equips_bonus_half_mp_cost == true
    # セットボーナスの真偽値を返す
    return @set_bonus_half_mp_cost
  end
  #--------------------------------------------------------------------------
  # ● 防具オプション [取得経験値 2 倍] の取得
  #--------------------------------------------------------------------------
  def double_exp_gain
    # 通常の処理を実行し、結果が true なら true を返す
    return true if set_equips_bonus_double_exp_gain == true
    # セットボーナスの真偽値を返す
    return @set_bonus_double_exp_gain
  end
  #--------------------------------------------------------------------------
  # ● 防具オプション [HP 自動回復] の取得
  #--------------------------------------------------------------------------
  def auto_hp_recover
    # 通常の処理を実行し、結果が true なら true を返す
    return true if set_equips_bonus_auto_hp_recover == true
    # セットボーナスの真偽値を返す
    return @set_bonus_auto_hp_recover
  end
  #--------------------------------------------------------------------------
  # ● スキルオブジェクトの配列取得
  #--------------------------------------------------------------------------
  def skills
    # 通常の処理を実行してリストを取得
    result = set_equips_bonus_skills
    # セットボーナスの初期化が行われていない場合、リストをそのまま返す(競合防止)
    return result if @set_bonus_skill_temp_learn.nil?
    # セットボーナスが存在する場合
    if @set_bonus_skill_temp_learn != []
      result += @set_bonus_skill_temp_learn
    end
    # 最終的なリストを返す
    return result
  end
  #--------------------------------------------------------------------------
  # ● スキルの使用可能判定
  #     skill : スキル
  #--------------------------------------------------------------------------
  def skill_can_use?(skill)
    # 通常の処理を実行して結果を取得
    result = set_equips_bonus_skill_can_use?(skill)
    # false だった場合
    unless result
      # セットボーナススキル仮習得の中にスキルが存在する場合
      if @set_bonus_skill_temp_learn.include?(skill)
        # もう1度判定し直す
        result = super
      end
    end
    # 最終的な結果を返す
    return result
  end
end[/pre]{:2_270:}
梦石
0
星屑
90
在线时间
357 小时
注册时间
2006-3-3
回帖
163
发表于 2015-3-5 10:52:43 | 显示全部楼层
回复

使用道具 举报

梦石
0
星屑
782
在线时间
3431 小时
注册时间
2011-6-10
回帖
6325
发表于 2015-3-6 15:27:47 | 显示全部楼层
这个脚本的兼容性很差 而且不兼容装备扩张 使用还需要从长计议
长名公主玩家群:372588926 攻略娱乐应有尽有
了解更多新RM游戏,游戏制作请加入RPGmaker支援群:113622890
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部