查看: 3499|回复: 5

[已经解决] 关于魔剑工铺的强化系统

[复制链接]
梦石
0
星屑
65
在线时间
99 小时
注册时间
2014-8-7
回帖
48
发表于 2014-9-24 19:15:50 | 显示全部楼层 |阅读模式

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

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

×
框框够不到底,本来想不管的... 但本能不允许... 就是想改正它,

有没有大师能够帮帮我,拜了...
123.png

附上脚本:

资料转换#=======================================
#★ 魔劍工舖 - XP與VX資料轉換 1.01
# http://blog.yam.com/a870053jjkj/
#=======================================
  $Sword ? $Sword[77] = true : $Sword = {77=>true} # 腳本使用標誌
  ($Sword_VX = false ; RPG::Weather rescue $Sword_VX = true) if $Sword_VX == nil
#=======================================
#■ XP與VX資料類
class Sword_XPVX
  #-------------------------------------------------------------
  #● 遊戲畫面寬度
  def width ; $Sword_VX ? Graphics.width : 640 ; end
  #-------------------------------------------------------------
  #● 遊戲畫面高度
  def height ; $Sword_VX ? Graphics.height : 480 ; end
  #-------------------------------------------------------------
  #● 單行窗口高度
  def wlh ; $Sword_VX ? Window_Base::WLH + 32 : 64 ; end
  #-------------------------------------------------------------
  #● 演奏游標SE
  def se_cursor
    $Sword_VX ? Sound.play_cursor : $game_system.se_play($data_system.cursor_se)
  end
  #-------------------------------------------------------------
  #● 演奏確定SE
  def se_decision
    $Sword_VX ? Sound.play_decision : $game_system.se_play($data_system.decision_se)
  end
  #-------------------------------------------------------------
  #● 演奏取消SE
  def se_cancel
    $Sword_VX ? Sound.play_cancel : $game_system.se_play($data_system.cancel_se)
  end
  #-------------------------------------------------------------
  #● 演奏凍結SE
  def se_buzzer
    $Sword_VX ? Sound.play_buzzer : $game_system.se_play($data_system.buzzer_se)
  end
  #-------------------------------------------------------------
  #● 演奏裝備SE
  def se_equip
    $Sword_VX ? Sound.play_equip : $game_system.se_play($data_system.equip_se)
  end
  #-------------------------------------------------------------
  #● 演奏存檔SE
  def se_save
    $Sword_VX ? Sound.play_save : $game_system.se_play($data_system.save_se)
  end
  #-------------------------------------------------------------
  #● 演奏讀檔SE
  def se_load
    $Sword_VX ? Sound.play_load : $game_system.se_play($data_system.load_se)
  end
  #-------------------------------------------------------------
  #● 演奏商店SE
  def se_shop
    $Sword_VX ? Sound.play_shop : $game_system.se_play($data_system.shop_se)
  end
  #-------------------------------------------------------------
  #● 演奏戰鬥開始SE
  def se_battle_start
    $Sword_VX ? Sound.play_battle_start :
    $game_system.se_play($data_system.battle_start_se)
  end
  #-------------------------------------------------------------
  #● 演奏角色擊倒SE
  def se_actor_collapse
    $Sword_VX ? Sound.play_actor_collapse :
    $game_system.se_play($data_system.actor_collapse_se)
  end
  #-------------------------------------------------------------
  #● 演奏敵人擊倒SE
  def se_enemy_collapse
    $Sword_VX ? Sound.play_enemy_collapse :
    $game_system.se_play($data_system.enemy_collapse_se)
  end
  #-------------------------------------------------------------
  #● 獲取隊伍列表(索引, 新值)
  def members(index = nil, new_id = nil)
    new_id = new_id.id if new_id.is_a?(Game_Actor)
    if index ; if $Sword_VX ; $game_party.actors[index] = new_id
    else ; $game_party.actors[index] = $game_actors[new_id]
    end ; end
    $Sword_VX ? $game_party.members : $game_party.actors
  end
  #-------------------------------------------------------------
  #● 獲取道具數量(道具數據)
  def item_number(item)
    if $Sword_VX ; $game_party.item_number(item) # 道具
    else ; case item
      when RPG::Item ; $game_party.item_number(item.id) # 物品
      when RPG::Weapon ; $game_party.weapon_number(item.id) # 武器
      when RPG::Armor ; $game_party.armor_number(item.id) # 防具
      end
    end
  end
  #-------------------------------------------------------------
  #● 增減道具(道具數據, 增減量, 包含已裝備標誌)
  def gain_item(item, n, include_equip = true)
    if $Sword_VX ; $game_party.gain_item(item, n, include_equip) # 道具
    else
      number = item_number(item) ; n1 = n + number # 獲取持有數量
      case item
      when RPG::Item ; $game_party.gain_item(item.id, n) # 物品
      when RPG::Weapon # 武器
        members.each{|actor| break if n1 >= 0
        (actor.equip(0, 0) ; n1 += 1) if actor.weapon_id == item.id} if include_equip and n1 < 0
        $game_party.gain_weapon(item.id, n)
      when RPG::Armor # 防具
        members.each{|actor| break if n1 >= 0
        (actor.equip(1, 0) ; n1 += 1) if actor.armor1_id == item.id
        (actor.equip(2, 0) ; n1 += 1) if actor.armor2_id == item.id and n1 >= 0
        (actor.equip(3, 0) ; n1 += 1) if actor.armor3_id == item.id and n1 >= 0
        (actor.equip(4, 0) ; n1 += 1) if actor.armor4_id == item.id and n1 >= 0} if
        include_equip and n1 < 0
        $game_party.gain_armor(item.id, n)
      end
    end
  end
  #-------------------------------------------------------------
  #● 獲取防具數據的屬性列表(防具編號)
  def armor_element(id)
    $Sword_VX ? $data_armors[id].element_set : $data_armors[id].guard_element_set
  end
  #-------------------------------------------------------------
  #● 獲取防具數據的狀態列表(防具編號)
  def armor_state(id)
    $Sword_VX ? $data_armors[id].state_set : $data_armors[id].guard_state_set
  end
end
XPVX = Sword_XPVX.new # 定義常量
#=======================================
#■ 同伴的類
if $Sword_VX
  class Game_Party < Game_Unit
   attr_accessor :actors     # 目前隊伍中的角色
  end
end


生产装备module Sword
#=======================================
#★魔劍工舖 - 浮動數值裝備產生 1.01
# http://blog.yam.com/a870053jjkj/
#=======================================
  Sword73_Weapon, Sword73_Armor = [], []
#=======================================
=begin
● 函數
獲得浮動武器:【1】$game_party.sword73_weapon(武器編號)
       【2】$game_party.sword73_weapon(武器編號, [能力值表*])
       【3】$game_party.sword73_weapon(武器編號, 採用編號)
       【4】$game_party.sword73_weapon(武器編號, false)
       能力值表:設定方式同Sword73_Weapon設置,可省略
獲得浮動防具:【1】$game_party.sword73_armor(防具編號)
       【2】$game_party.sword73_armor(防具編號, [能力值表*])
       【3】$game_party.sword73_armor(防具編號, 採用編號)
       【4】$game_party.sword73_armor(防具編號, false)
       能力值表:設定方式同Sword73_Armor設置,可省略
丟棄浮動武器:$game_party.sword73_lose_weapon(編號)
丟棄浮動防具:$game_party.sword73_lose_armor(編號)
浮動裝備判斷:【1】$data_weapons[武器編號].fluctuation?
       【2】$data_armors[防具編號].fluctuation?
獲取裝備資料:$game_party.sword73_equip
資料保留變量:$game_party.sword73_retain
========================================
● 所需腳本
內部函數擴充:http://blog.yam.com/a870053jjkj/article/25033724
=end
#=======================================
#● 功能設定
Sword73_Window = [400, 6] # 設定浮動裝備選擇窗口的 [寬度, 最大行數]
#--------------------------------------------------------------
#○ 武器能力浮動表
# [XP]Sword73_Weapon[武器編號] = [攻擊力, 物防, 魔防, 力量, 靈巧, 速度, 魔力, 價格]
# [VX]Sword73_Weapon[武器編號] = [攻擊力, 防禦力, 精神力, 敏捷性, 命中率, 價格]
Sword73_Weapon[0] = [20, 0, 0, 0, 0, 0, 0, 0]
#--------------------------------------------------------------
#○ 防具能力浮動表
# [XP]Sword73_Armor[防具編號] = [物防, 魔防, 迴避, 力量, 靈巧, 速度, 魔力, 價格]
# [VX]Sword73_Armor[防具編號] = [攻擊力, 防禦力, 精神力, 敏捷性, 回避率, 價格]
Sword73_Armor[0] = [0, 10, 0, 0, 0, 0, 0, 0]
#=======================================
  $Sword ? $Sword[73] = true : $Sword = {73=>true} # 腳本使用標誌
  ($Sword_VX = false ; RPG::Weather rescue $Sword_VX = true) if $Sword_VX == nil
end
#=======================================
#□ RPGXP(RPGVX) 數據結構
module RPG
  #-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  #■ 武器的數據類
  class Weapon
    include Sword # 連接自定設置
    attr_accessor :original_id # 原始編號
    #-----------------------------------------------------------
    #● 初始化物件(武器編號, 能力值數組)
    def initialize(number, ability)
      weapons = $data_weapons[number]
      @id, @original_id = 1, number # 編號, 原始編號
      @name = weapons.name
      @description = weapons.description
      @atk = weapons.atk + (ability[0].is_a?(Range) ? rand(ability[0]) : ability[0])
      @element_set = weapons.element_set
      if $Sword_VX
        @icon_index = weapons.icon_index
        @note = weapons.note
        @animation_id = weapons.animation_id
        @hit = weapons.hit + (ability[4].is_a?(Range) ? rand(ability[4]) : ability[4])
        @def = weapons.def + (ability[1].is_a?(Range) ? rand(ability[1]) : ability[1])
        @SPI = weapons.spi + (ability[2].is_a?(Range) ? rand(ability[2]) : ability[2])
        @agi = weapons.agi + (ability[3].is_a?(Range) ? rand(ability[3]) : ability[3])
        @price = weapons.price + (ability[5].is_a?(Range) ? rand(ability[5]) : ability[5])
        @two_handed = weapons.two_handed
        @fast_attack = weapons.fast_attack
        @dual_attack = weapons.dual_attack
        @critical_bonus = weapons.critical_bonus
        @state_set = weapons.state_set
      else
        @icon_name = weapons.icon_name
        @animation1_id = weapons.animation1_id
        @animation2_id = weapons.animation2_id
        @pdef = weapons.pdef + (ability[1].is_a?(Range) ? rand(ability[1]) : ability[1])
        @mdef = weapons.mdef + (ability[2].is_a?(Range) ? rand(ability[2]) : ability[2])
        @str_plus = weapons.str_plus + (ability[3].is_a?(Range) ? rand(ability[3]) : ability[3])
        @dex_plus = weapons.dex_plus + (ability[4].is_a?(Range) ? rand(ability[4]) : ability[4])
        @agi_plus = weapons.agi_plus + (ability[5].is_a?(Range) ? rand(ability[5]) : ability[5])
        @int_plus = weapons.int_plus + (ability[6].is_a?(Range) ? rand(ability[6]) : ability[6])
        @price = weapons.price +  (ability[7].is_a?(Range) ? rand(ability[7]) : ability[7])
        @plus_state_set = weapons.plus_state_set
        @minus_state_set = weapons.minus_state_set
      end
      # 對應的職業添加可裝備的武器
      (1...$data_classes.size).each{|i|
      $data_classes.weapon_set.push($data_weapons.size) if
      $data_classes.weapon_set.include?(number)}
    end
    #-----------------------------------------------------------
    #● 判斷是否為浮動武器
    def fluctuation? ; @original_id ? true : false ; end
  end
  #-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  #■ 防具的數據類
  class Armor
    include Sword # 連接自定設置
    attr_accessor :original_id # 原始編號
    #-----------------------------------------------------------
    #● 初始化物件(防具編號, 能力值數組)
    def initialize(number, ability)
      armor = $data_armors[number]
      @id, @original_id = 1, number
      @name = armor.name
      @description = armor.description
      @kind = armor.kind
      if $Sword_VX
        @icon_index = armor.icon_index
        @note = armor.note
        @price = armor.price + (ability[5].is_a?(Range) ? rand(ability[5]) : ability[5])
        @eva = armor.eva + (ability[4].is_a?(Range) ? rand(ability[4]) : ability[4])
        @atk = armor.atk + (ability[0].is_a?(Range) ? rand(ability[0]) : ability[0])
        @def = armor.def + (ability[1].is_a?(Range) ? rand(ability[1]) : ability[1])
        @spi = armor.spi + (ability[2].is_a?(Range) ? rand(ability[2]) : ability[2])
        @agi = armor.agi + (ability[3].is_a?(Range) ? rand(ability[3]) : ability[3])
        @prevent_critical = armor.prevent_critical
        @half_mp_cost = armor.half_mp_cost
        @double_exp_gain = armor.double_exp_gain
        @auto_hp_recover = armor.auto_hp_recover
        @element_set = armor.element_set
        @state_set = armor.state_set
      else
        @icon_name = armor.icon_name
        @auto_state_id = armor.auto_state_id
        @price = armor.price + (ability[7].is_a?(Range) ? rand(ability[7]) : ability[7])
        @pdef = armor.pdef + (ability[0].is_a?(Range) ? rand(ability[0]) : ability[0])
        @mdef = armor.mdef + (ability[1].is_a?(Range) ? rand(ability[1]) : ability[1])
        @eva = armor.eva + (ability[2].is_a?(Range) ? rand(ability[2]) : ability[2])
        @str_plus = armor.str_plus + (ability[3].is_a?(Range) ? rand(ability[3]) : ability[3])
        @dex_plus = armor.dex_plus + (ability[4].is_a?(Range) ? rand(ability[4]) : ability[4])
        @agi_plus = armor.agi_plus + (ability[5].is_a?(Range) ? rand(ability[5]) : ability[5])
        @int_plus = armor.int_plus + (ability[6].is_a?(Range) ? rand(ability[6]) : ability[6])
        @guard_element_set = armor.guard_element_set
        @guard_state_set = armor.guard_state_set
      end
      # 對應的職業添加可裝備的防具
      (1...$data_classes.size).each{|i|
      $data_classes.armor_set.push($data_armors.size) if
      $data_classes.armor_set.include?(number)}
    end
    #-----------------------------------------------------------
    #● 判斷是否為浮動防具
    def fluctuation? ; @original_id ? true : false ; end
  end
end
#=======================================
#■ 處理同伴的類
class Game_Party
  include Sword # 連接自定設置
  attr_reader    :sword73_equip # 浮動裝備列表
  attr_accessor :sword73_retain # 資料保留紀錄
  #-------------------------------------------------------------
  #● 初始化物件
  alias sword73_initialize initialize
  def initialize
    sword73_initialize
    @sword73_equip, @sword73_retain = [{}, {}], [[], []] # [武器, 防具]
    @sword73_equip[0].default = [] ; @sword73_equip[1].default = []
  end
  if $Sword_VX
    #-----------------------------------------------------------
    #● 增減道具(道具, 增減量, 包含已裝備標誌)
    alias sword73_gain_item gain_item
    def gain_item(item, n, include_equip = false)
      sword73_gain_item(item, n, include_equip)
      return if item.is_a?(RPG::Item)
      sword73_xpvx1(item.is_a?(RPG::Weapon) ? 1 : 2, item)
    end
  else
    #-----------------------------------------------------------
    #● 增減武器(武器編號, 增減量)
    alias sword73_gain_weapon gain_weapon
    def gain_weapon(weapon_id, n)
      sword73_gain_weapon(weapon_id, n) ; sword73_xpvx1(1, weapon_id)
    end
    #-----------------------------------------------------------
    #● 增減防具(防具編號, 增減量)
    alias sword73_gain_armor gain_armor
    def gain_armor(armor_id, n)
      sword73_gain_armor(armor_id, n) ; sword73_xpvx1(2, armor_id)
    end
  end
  def sword73_xpvx1(kind, id) # 裝備類型
    id = id.id if $Sword_VX
    if kind == 1 # 武器
      if @weapons[id] == 0 and $data_weapons[id].fluctuation?
        return if @sword73_retain[0].include?(id) # 要保留就中斷
        XPVX.members.each{|member| return if member.weapon_id == id}
        $data_weapons[id] = false
      end
    else # 防具
      if @armors[id] == 0 and $data_armors[id].fluctuation?
        return if @sword73_retain[1].include?(id) # 要保留就中斷
        XPVX.members.each{|member| return if
        member.armor1_id == id or member.armor2_id == id or
        member.armor3_id == id or member.armor4_id == id}
        $data_armors[id] = false
      end
    end
  end
  #-------------------------------------------------------------
  #● 獲得浮動武器(武器編號, 能力值數組)
  def sword73_weapon(id, ability = nil)
    ability = ability == false ?  [0, 0, 0, 0, 0, 0, 0, 0] :
    Sword73_Weapon[id] unless ability # 沒指定能力表的情況的場合(採用設置)
    ability = Sword73_Weapon[0] unless ability # 沒有該編號資料就採用默認值
    index = $data_weapons.index(false)
    index ? $data_weapons[index] = RPG::Weapon.new(id, ability) :
    ($data_weapons += [RPG::Weapon.new(id, ability)] ; index = $data_weapons.size - 1)
    $data_weapons[index].id = index # 設定武器編號
    $Sword_VX ? gain_item($data_weapons[index], 1) : gain_weapon(index, 1)
    @sword73_equip[0][id] += [index] ; index # 返回產生出的武器實際編號
  end
  #-------------------------------------------------------------
  #● 獲得浮動防具(防具編號, 能力值數組)
  def sword73_armor(id, ability = nil)
    ability = ability == false ?  [0, 0, 0, 0, 0, 0, 0, 0] :
    Sword73_Armor[id] unless ability # 沒指定能力表的情況的場合(採用設置)
    ability = Sword73_Armor[0] unless ability # 沒有該編號資料就採用默認值
    index = $data_armors.index(false)
    index ? $data_armors[index] = RPG::Armor.new(id, ability) :
    ($data_armors += [RPG::Armor.new(id, ability)] ; index = $data_armors.size - 1)
    $data_armors[index].id = index # 設定防具編號
    $Sword_VX ? gain_item($data_armors[index], 1) : gain_armor(index, 1)
    @sword73_equip[1][id] += [index] ; index # 返回產生出的防具實際編號
  end
  #-------------------------------------------------------------
  #● 丟棄浮動武器(武器編號)
  def sword73_lose_weapon(id)
    index = rand(@sword73_equip[0][id])
    return nil unless @sword73_equip[0][id].delete(index)
    $Sword_VX ? gain_item($data_weapons[index], -1) : gain_weapon(index, -1)
    index # 移除持有武器及資料
  end
  #-------------------------------------------------------------
  #● 丟棄浮動防具(防具編號)
  def sword73_lose_armor(id)
    index = rand(@sword73_equip[1][id])
    return nil unless @sword73_equip[1][id].delete(index)
    $Sword_VX ? gain_item($data_armors[index], -1) : gain_armor(index, -1)
    index # 移除持有防具及資料
  end
end
#=======================================
#■ 浮動裝備選擇窗口
class WSword_FluctEquip < Window_Selectable
  #-------------------------------------------------------------
  #● 初始化物件
  def initialize
    @xpvx = $Sword_VX ? [Graphics.width, Graphics.height, 24] : [640, 480, 32]
    super((@xpvx[0] - Sword73_Window[0]) / 2, 0, Sword73_Window[0], 33)
    self.contents = Bitmap.new(width - 32, height - 32)
    @column_max = 2
    self.z, self.index, self.active, self.visible = 500, 0, false, false
  end
  #-------------------------------------------------------------
  #● 更新內容(裝備類型, 裝備原始編號)
  def refresh(kind, id) # kind已0開始為武器
    self.contents.clear ; y = 0
    fluctuation = $game_party.sword73_equip[kind][id].uniq
    @item_max = fluctuation.size
    self.height = [(@item_max / @column_max + @item_max % @column_max) *
    @xpvx[2] + 32, Sword73_Window[1] * @xpvx[2] + @xpvx[2]].min
    self.y = (@xpvx[1] - self.height) / 2
    self.contents = Bitmap.new(width - 32,
    (@item_max / @column_max + @item_max % @column_max) * @xpvx[2])
    fluctuation.each do |i|
      x = 4 + y % @column_max * (Sword73_Window[0] / 2)
      draw_item_name(kind == 0 ? $data_weapons :
      $data_armors, x, y / @column_max * @xpvx[2])
      y += 1
    end
  end
end
#=======================================
#■ 處理存檔畫面的類
eval("
class #{$Sword_VX ? 'Scene_File' : 'Scene_Save'}
  #-------------------------------------------------------------
  #● 寫入存檔資料(寫入用檔案)
  alias sword73_write_save_data write_save_data
  def write_save_data(file)
    sword73_write_save_data(file)
    Marshal.dump($data_classes, file)
    Marshal.dump($data_weapons, file)
    Marshal.dump($data_armors, file)
  end
end
#=======================================
#■ 處理存檔畫面的類
class #{$Sword_VX ? 'Scene_File' : 'Scene_Load'}
  #-------------------------------------------------------------
  #● 讀取存檔資料(讀取用檔案)
  alias sword73_read_save_data read_save_data
  def read_save_data(file)
    sword73_read_save_data(file)
    $data_classes = Marshal.load(file)
    $data_weapons = Marshal.load(file)
    $data_armors = Marshal.load(file)
  end
end")


装备强化module Sword
#=======================================
#★ 魔劍工舖 - 裝備強化 2.00
# http://blog.yam.com/a870053jjkj/
#=======================================
  Sword20_Strengyhen1, Sword20_Strengyhen2 = [], []
#=======================================
=begin
● 函數
呼叫強化畫面:【1】$scene = Sword_Strengyhen.new(物品編號)
       【2】$scene = Sword_Strengyhen.new(物品編號, 機率加乘)
       【3】$scene = Sword_Strengyhen.new(編號, 機率, 武器資料, 防具資料)
       武器資料、防具資料:
         同「浮動數值裝備產生」的獲得裝備函數4個設置法第2參數相同
獲取武器編號:$game_party.sword20_gain_weapon(武器編號, 武器等級)
增減強化武器:$game_party.sword20_gain_weapon(武器編號, 武器等級, 增減數量)
獲取防具編號:$game_party.sword20_gain_armor(防具編號, 防具等級)
增減強化防具:$game_party.sword20_gain_armor(防具編號, 防具等級, 增減數量)
========================================
● 所需腳本
XP與VX資料轉換(1.00):http://blog.yam.com/a870053jjkj/article/33973184
浮動數值裝備產生(1.01):http://blog.yam.com/a870053jjkj/article/32162811
=end
#=======================================
#● 功能設定
Sword20_Fixed = true # 是否採用固定式強化資料(仿1版的效果)
Sword20_Reduce = 1 # 當強化失敗時,降低武器的等級數,0為不使用
Sword20_Detonate = true # 將未強化的武器(+0武器)強化失敗時,是否爆掉
Sword20_Wait1 = 120 # 設定強化中的等待時間,XP40、VX60約為1秒
Sword20_Wait2 = 30 # 設定訊息窗口的顯示時間,XP40、VX60約為1秒
Sword20_SE = 3 # 開始合成時演奏SE檔名或動畫編號,''或0為不演奏
Sword20_Mame = 0  # 0為回到地圖、1以上回到選單,並指著第幾個選項
Sword20_Surp1 = '剩余强化石数量:'   # 設定最左下方的剩餘用語
Sword20_Surp2 = '强化成功率:' # 設定最右下方的成功率用語
Sword20_Whether = '是否确定要强化武器?' # 設定是否強化提示窗口文字,''為不用
Sword20_Surr2 = 2 # 成功率顯示方式,0[原機率],1[總機率],2[原+總機率]
Sword20_Smax2 = '---%' # 當武器強化到上限時,此時顯示的成功率內容
Sword20_Neglect = [[], []] # 設不想強化的 [武器, 防具] 編號,每個編號可用小逗號分開
Sword20_Cond1 = ['强化石不足', Color.new(255, 0, 0)] # 道具不足時的 [內容, 顏色]
Sword20_Cond2 = ['物品已到达强化上限', Color.new(255, 0, 0)] # 已達上限的 [內容, 顏色]
Sword20_Cond3 = ['强化中...', Color.new(255, 255, 255)] # 強化中 [內容, 顏色]
Sword20_Cond4 = ['强化失败!', Color.new(0, 0, 0)]            # 強化失敗的 [內容, 顏色]
Sword20_Cond5 = ['强化成功!', Color.new(255, 255, 0)]        # 強化成功的 [內容, 顏色]
#--------------------------------------------------------------
#○ 裝備強化機率資料表
#【1】Sword20_Strengyhen1[武器編號] = [強化機率表*]
#【2】Sword20_Strengyhen2[防具編號] = [強化機率表*]
# 設定每個裝備各個等級的強化機率,同時機率數也代表可強化的上限
# 武器編號、防具編號:設定0為默認,沒設定的裝備將一律採用0號的資料
# 強化機率表:設定強化機率,可以設定多個機率,機率越多則可強化次數就越多
Sword20_Strengyhen1[0] = [95, 95, 90, 85, 80, 70, 50, 40, 35, 20]
Sword20_Strengyhen2[0] = [95, 95, 90, 85, 80, 70, 50, 40, 35, 20]
#=======================================
  $Sword ? $Sword[20] = true : $Sword = {20=>true} # 腳本使用標誌
  ($Sword_VX = false ; RPG::Weather rescue $Sword_VX = true) if $Sword_VX == nil
  #-------------------------------------------------------------
  #● 獲取原始裝備編號(裝備)
  def self.original_id20(equip)
    equip.is_a?(RPG::Weapon) ? ($data_weapons[equip.id].fluctuation? ?
    $data_weapons[equip.id].original_id : $data_weapons[equip.id].id) :
    ($data_armors[equip.id].fluctuation? ?
    $data_armors[equip.id].original_id : $data_armors[equip.id].id)
  end
  #-------------------------------------------------------------
  #● 獲取強化機率資料(裝備類型, 裝備編號)
  def self.strengyhen20(kind, id)
    if kind == 1
      Sword20_Strengyhen1[id] ? Sword20_Strengyhen1[id] : Sword20_Strengyhen1[0]
    else ; Sword20_Strengyhen2[id] ? Sword20_Strengyhen2[id] : Sword20_Strengyhen2[0]
    end
  end
end
#=======================================
#□ RPGXP(RPGVX) 數據結構
module RPG
  #-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  #■ 武器的數據類
  class Weapon
    attr_accessor :level # 武器等級
    attr_accessor :before # 強化之前的武器編號
    attr_accessor :next # 強化之後的武器編號
    #-------------------------------------------------------------
    #● 初始化物件
    alias sword20_initialize initialize
    def initialize(id, ability)
      sword20_initialize(id, ability) ; @level, @before = 0, 0
    end
  end
  #-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  #■ 防具的數據類
  class Armor
    attr_accessor :level # 防具等級
    attr_accessor :before # 強化之前的防具編號
    attr_accessor :next # 強化之後的防具編號
    #-------------------------------------------------------------
    #● 初始化物件
    alias sword20_initialize initialize
    def initialize(id, ability)
      sword20_initialize(id, ability) ; @level, @before = 0, 0
    end
  end
end
#=======================================
#■ 處理同伴的類別
class Game_Party
  include Sword # 連接自定設置
  attr_writer     :multiply # 強化機率加乘
  #-------------------------------------------------------------
  #● 初始化物件
  alias sword20_initialize initialize
  def initialize
    sword20_initialize
    @sword20_equip, @multiply = [{}, {}], 999 # 紀錄 [武器, 防具] 以強化而成的列表
    Sword20_Fixed ? (@sword20_equip[0].default, @sword20_equip[1].default = 0, 0) :
    (@sword20_equip[0].default, @sword20_equip[1].default = [], [])
  end
  #-------------------------------------------------------------
  #● 強化裝備(武器或防具)
  def sword20_strengthen(equip)
    if equip.is_a?(RPG::Weapon) # 強化武器的場合
      weapon_id = Sword.original_id20(equip)
      return nil unless prob = Sword.strengyhen20(1, weapon_id)[equip.level] # 無機率就中斷
      if rand(100) < prob + @multiply # 強化成功的場合
        if $data_weapons[equip.id].next # 下個武器存在的場合
          XPVX.gain_item($data_weapons[equip.id], -1)
          XPVX.gain_item($data_weapons[equip.next], 1)
          return true
        end
        new_id = sword73_weapon(weapon_id,
        $scene.is_a?(Sword_Strengyhen) ? $scene.ability[0] : nil) # 獲得浮動武器
        @sword73_retain[0] += [equip.id] # 保留裝備資料
        XPVX.gain_item($data_weapons[equip.id], -1)
        $data_weapons[new_id].level = equip.level + 1 # 武器等級增加
        $data_weapons[new_id].name = $data_weapons[ # 強化後的武器名設定
        $data_weapons[new_id].original_id].name + "+#{$data_weapons[new_id].level}"
        $data_weapons[new_id].before = equip.id # 紀錄之前武器
        Sword20_Fixed ? @sword20_equip[0][[weapon_id, $data_weapons[new_id].level]] =
        new_id : @sword20_equip[0][[weapon_id, $data_weapons[new_id].level]] += [new_id]
        $data_weapons[equip.id].next = new_id if Sword20_Fixed # 紀錄之後的武器
        if $Sword_VX
          $data_weapons[new_id].atk += $data_weapons[$data_weapons[
          new_id].before].atk - $data_weapons[weapon_id].atk # 攻擊力
          $data_weapons[new_id].def += $data_weapons[$data_weapons[
          new_id].before].def - $data_weapons[weapon_id].def # 防禦力
          $data_weapons[new_id].spi += $data_weapons[$data_weapons[
          new_id].before].spi - $data_weapons[weapon_id].spi # 精神力
          $data_weapons[new_id].agi += $data_weapons[$data_weapons[
          new_id].before].agi - $data_weapons[weapon_id].agi # 敏捷性
          $data_weapons[new_id].hit += $data_weapons[$data_weapons[
          new_id].before].hit - $data_weapons[weapon_id].hit # 命中率
          $data_weapons[new_id].price += $data_weapons[$data_weapons[
          new_id].before].price - $data_weapons[weapon_id].price # 價錢
        else
          $data_weapons[new_id].atk += $data_weapons[$data_weapons[
          new_id].before].atk - $data_weapons[weapon_id].atk # 攻擊力
          $data_weapons[new_id].pdef += $data_weapons[$data_weapons[
          new_id].before].pdef - $data_weapons[weapon_id].pdef # 物理防禦
          $data_weapons[new_id].mdef += $data_weapons[$data_weapons[
          new_id].before].mdef - $data_weapons[weapon_id].mdef # 魔法防禦
          $data_weapons[new_id].str_plus += $data_weapons[$data_weapons[
          new_id].before].str_plus - $data_weapons[weapon_id].str_plus # 力量
          $data_weapons[new_id].dex_plus += $data_weapons[$data_weapons[
          new_id].before].dex_plus - $data_weapons[weapon_id].dex_plus # 靈巧
          $data_weapons[new_id].agi_plus += $data_weapons[$data_weapons[
          new_id].before].agi_plus - $data_weapons[weapon_id].agi_plus # 速度
          $data_weapons[new_id].int_plus += $data_weapons[$data_weapons[
          new_id].before].int_plus - $data_weapons[weapon_id].int_plus # 魔力
          $data_weapons[new_id].price += $data_weapons[$data_weapons[
          new_id].before].price - $data_weapons[weapon_id].price # 價錢
        end
        true
      else # 武器強化失敗的場合
        return false if Sword20_Reduce == 0 # 不夠裝備等級就中斷
        Sword20_Reduce.times do
          unless Sword20_Fixed # 移除裝備資料
            @sword73_retain[0] -= [equip.id]
            @sword20_equip[0][[equip.original_id, equip.level]] -= [equip.id]
          end
          if equip.level == 0 # 武器等級為0時(尚未強化的場合)
            XPVX.gain_item($data_weapons[equip.id], -1) if Sword20_Detonate # 武器爆掉
            break
          else ; XPVX.gain_item($data_weapons[equip.id], -1) # 捨棄目前等級武器
          end
          if equip.before == 0 # 沒有前個武器的話就在產生
            equip = $data_armors[sword20_gain_weapon(equip.original_id, equip.level - 1, 1)[0]]
          else # 獲得前個等級的武器
            XPVX.gain_item($data_weapons[equip.before], 1) # 獲取前個等級武器
            equip = $data_weapons[equip.before] # 下次循環採用該武器
          end
        end
        false
      end
    elsif equip.is_a?(RPG::Armor) # 強化防具的場合
      armor_id = Sword.original_id20(equip)
      return nil unless prob = Sword.strengyhen20(2, armor_id)[equip.level] # 無機率就中斷
      if rand(100) < prob + @multiply # 強化成功的場合
        if $data_armors[equip.id].next # 下個防具存在的場合
          XPVX.gain_item($data_armors[equip.id], -1)
          XPVX.gain_item($data_armors[equip.next], 1)
          return true
        end
        new_id = sword73_armor(armor_id,
        $scene.is_a?(Sword_Strengyhen) ? $scene.ability[1] : nil) # 獲得浮動武器
        @sword73_retain[1] += [equip.id] # 保留裝備資料
        XPVX.gain_item($data_armors[equip.id], -1)
        $data_armors[new_id].level = equip.level + 1 # 防具等級增加
        $data_armors[new_id].name = $data_armors[ # 強化後的武器名設定
        $data_armors[new_id].original_id].name + "+#{$data_armors[new_id].level}"
        $data_armors[new_id].before = equip.id # 紀錄之前防具
        Sword20_Fixed ? @sword20_equip[1][[armor_id, $data_armors[new_id].level]] =
        new_id : @sword20_equip[1][[armor_id, $data_armors[new_id].level]] += [new_id]
        $data_armors[equip.id].next = new_id if Sword20_Fixed # 紀錄之後的防具
        if $Sword_VX
          $data_armors[new_id].atk += $data_armors[$data_armors[
          new_id].before].atk - $data_armors[armor_id].atk # 攻擊力
          $data_armors[new_id].def += $data_armors[$data_armors[
          new_id].before].def - $data_armors[armor_id].def # 防禦力
          $data_armors[new_id].spi += $data_armors[$data_armors[
          new_id].before].spi - $data_armors[armor_id].spi # 精神力
          $data_armors[new_id].agi += $data_armors[$data_armors[
          new_id].before].agi - $data_armors[armor_id].agi # 敏捷性
          $data_armors[new_id].eva += $data_armors[$data_armors[
          new_id].before].eva - $data_armors[armor_id].eva # 迴避率
          $data_armors[new_id].price += $data_armors[$data_armors[
          new_id].before].price - $data_armors[armor_id].price # 價錢
        else
          $data_armors[new_id].eva += $data_armors[$data_armors[
          new_id].before].eva - $data_armors[armor_id].eva # 迴避修正
          $data_armors[new_id].pdef += $data_armors[$data_armors[
          new_id].before].pdef - $data_armors[armor_id].pdef # 物理防禦
          $data_armors[new_id].mdef += $data_armors[$data_armors[
          new_id].before].mdef - $data_armors[armor_id].mdef # 魔法防禦
          $data_armors[new_id].str_plus += $data_armors[$data_armors[
          new_id].before].str_plus - $data_armors[armor_id].str_plus # 力量
          $data_armors[new_id].dex_plus += $data_armors[$data_armors[
          new_id].before].dex_plus - $data_armors[armor_id].dex_plus # 靈巧
          $data_armors[new_id].agi_plus += $data_armors[$data_armors[
          new_id].before].agi_plus - $data_armors[armor_id].agi_plus # 速度
          $data_armors[new_id].int_plus += $data_armors[$data_armors[
          new_id].before].int_plus - $data_armors[armor_id].int_plus # 魔力
          $data_armors[new_id].price += $data_armors[$data_armors[
          new_id].before].price - $data_armors[armor_id].price # 價錢
        end
        true
      else # 防具強化失敗的場合
        return false if Sword20_Reduce == 0 # 不夠裝備等級就中斷
        Sword20_Reduce.times do
          unless Sword20_Fixed # 移除裝備資料
            @sword73_retain[1] -= [equip.id]
            @sword20_equip[1][[equip.original_id, equip.level]] -= [equip.id]
          end
          if equip.level == 0 # 防具等級為0時(尚未強化的場合)
            XPVX.gain_item($data_armors[equip.id], -1) if Sword20_Detonate # 武器爆掉
            break
          else ; XPVX.gain_item($data_armors[equip.id], -1) # 捨棄目前等級武器
          end
          if equip.before == 0 # 沒有前個防具的話就在產生
            equip = $data_armors[sword20_gain_armor(equip.original_id, equip.level - 1, 1)[0]]
          else # 獲得前個等級的防具
            XPVX.gain_item($data_armors[equip.before], 1) # 獲取前個等級武器
            equip = $data_armors[equip.before] # 下次循環採用該武器
          end
        end
        false
      end
    end
  end
  #-------------------------------------------------------------
  #● 增減武器(武器編號, 武器等級, 增減數量)
  def sword20_gain_weapon(number, rank, amount = nil)
    if amount ; return if Sword20_Neglect[0].include?(number) ; if Sword20_Fixed
      XPVX.gain_item($data_weapons[@sword20_equip[0][[number, rank]]], amount)
      return $data_weapons[@sword20_equip[0][[number, rank]]]
    elsif amount > 0 ; a = [] ; amount.times{
      new_id = sword73_weapon(Sword.original_id20($data_weapons[number]))
      a += [new_id]
      $data_weapons[new_id].level = rank
      $data_weapons[new_id].name =
      $data_weapons[$data_weapons[new_id].original_id].name + "+{rank}"
      @sword20_equip[0][[number, rank]] += [new_id]} ; return a
    elsif amount < 0 ; a = [] ; amount.abs.times{
      d = @sword20_equip[0][[number, rank]][rand(@sword20_equip[0][[number, rank]].size)]
      return a unless d # 沒有裝備可移除就中斷
      a += [d]
      @sword20_equip[0][[number, rank]] -= [d]
      XPVX.gain_item($data_weapons[d], -1)} ; return a
    end ; end
    rank > 0 ? @sword20_equip[0][[number, rank]] : (Sword20_Fixed ? number : [number])
  end
  #-------------------------------------------------------------
  #● 增減防具(防具編號, 防具等級, 增減數量)
  def sword20_gain_armor(number, rank, amount = nil)
    if amount ; return if Sword20_Neglect[1].include?(number)  ; if Sword20_Fixed
      XPVX.gain_item($data_armors[@sword20_equip[1][[number, rank]]], amount)
      return $data_armors[@sword20_equip[1][[number, rank]]]
    elsif amount > 0 ; a = [] ; amount.times{
      new_id = sword73_armor(Sword.original_id20($data_armors[number]))
      a += [new_id]
      $data_armors[new_id].level = rank
      $data_armors[new_id].name =
      $data_armors[$data_armors[new_id].original_id].name + "+#{rank}"
      @sword20_equip[1][[number, rank]] += [new_id]} ; return a
    elsif amount < 0 ; a = [] ; amount.abs.times{
      d = @sword20_equip[1][[number, rank]][rand(@sword20_equip[1][[number, rank]].size)]
      return unless d # 沒有裝備可移除就中斷
      a += [d]
      @sword20_equip[1][[number, rank]] -= [d]
      XPVX.gain_item($data_armors[d], -1)} ; return a
    end ; end
    rank > 0 ? @sword20_equip[1][[number, rank]] : (Sword20_Fixed ? number : [number])
  end
  #-------------------------------------------------------------
  #● 獲取強化機率(裝備)
  def sword20_probability(equip)
    equip_id = Sword.original_id20(equip)
    [equip.is_a?(RPG::Weapon) ? Sword.strengyhen20(1, equip_id)[equip.level] :   
    Sword.strengyhen20(2, equip_id)[equip.level], @multiply]
  end
end
#=======================================
#■ 強化武器選擇窗口
class WSword_Strengyhen < Window_Selectable
  include Sword # 連接自定設置
  #-------------------------------------------------------------
  #● 初始化物件
  def initialize
    @xpvx = [XPVX.width, XPVX.height] + ($Sword_VX ? [WLH + 32] : [64])
    super(0, @xpvx[2], @xpvx[0], @xpvx[1] - @xpvx[2] * 2)
    @column_max = 2 ; refresh ; self.index = 0
  end
  #-------------------------------------------------------------
  #● 獲取物品
  def item ; return @data[self.index] ; end
  #-------------------------------------------------------------
  #● 更新內容
  def refresh
    (self.contents.dispose ; self.contents = nil) if self.contents != nil ; @data = []
    (1...$data_weapons.size).each{|i| # 生成武器列表
    next if Sword20_Neglect[0].include?(i) or ! $data_weapons
    @data.push($data_weapons) if XPVX.item_number($data_weapons) > 0}
    (1...$data_armors.size).each{|i| # 生成防具列表
    next if Sword20_Neglect[1].include?(i) or ! $data_armors
    @data.push($data_armors) if XPVX.item_number($data_armors) > 0}
    @item_max = @data.size
    self.contents = Bitmap.new(width - 32, (row_max == 0 ? 32 : row_max * 32))
    (0...@item_max).each{|i| draw_item(i)} if @item_max > 0
  end
  #-------------------------------------------------------------
  #● 描繪項目
  def draw_item(index)
    item = @data[index]
    number = $Sword_VX ? $game_party.item_number($data_weapons[item.id]) :
    $game_party.weapon_number(item.id) if item.is_a?(RPG::Weapon) # 武器的場合
    number = $Sword_VX ? $game_party.item_number($data_armors[item.id]) :
    $game_party.armor_number(item.id) if item.is_a?(RPG::Armor) # 防具的場合
    self.contents.font.color = normal_color
    if $Sword_VX
      rect = item_rect(index) ; rect.width -= 4
      draw_item_name(item, rect.x, rect.y)
      self.contents.draw_text(rect, sprintf(":%2d", number), 2)
    else
      x, y = 4 + index % 2 * (288 + 32), index / 2 * 32 # 計算顯示座標
      rect = Rect.new(x, y, self.width / @column_max - 32, 32)
      self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
      bitmap = RPG::Cache.icon(item.icon_name)
      self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
      self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
      self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
      self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
    end
  end
  #-------------------------------------------------------------
  #● 更新說明文字
  def update_help
    @help_window.set_text(self.item == nil ? "" : self.item.description)
  end
end
#=======================================
#■ 剩餘強化次數或成功率窗口
class WSword_StrengyhenSurplus < Window_Base
  include Sword # 連接自定設置
  #-------------------------------------------------------------
  #● 初始化物件
  def initialize
    @xpvx = [XPVX.width, XPVX.height] + ($Sword_VX ? [WLH + 32] : [64])
    super(0, @xpvx[1] - @xpvx[2], @xpvx[0] / 2, @xpvx[2])
    self.contents = Bitmap.new(width - 32, height - 32)
  end
  #-------------------------------------------------------------
  #● 更新內容(道具)
  def refresh(properties)
    self.contents.clear
    if properties.is_a?(RPG::Item) # 顯示該裝備成功率
      self.contents.font.color = system_color
      self.contents.draw_text(0,0,self.width - 32,@xpvx[2] - 32,Sword20_Surp1)
      self.contents.font.color = normal_color
      self.contents.draw_text(0, 0, self.width - 32, @xpvx[2] - 32,
      XPVX.item_number(properties).to_s, 2)
    else # 顯示強化剩餘次數
      self.x = @xpvx[0] / 2
      self.contents.font.color = system_color
      self.contents.draw_text(0,0,self.width - 32,@xpvx[2] - 32,Sword20_Surp2)
      self.contents.font.color = normal_color
      a = properties ? $game_party.sword20_probability(properties) : [0, 0]
      if a[0] # 未強化到頂的場合
        case Sword20_Surr2
        when 0 ; text = [[a[0], 100].min, 0].max.to_s # 原機率
        when 1 ; text = [[a[0] + a[1], 100].min, 0].max.to_s # 總機率
        when 2 ; a = [[[a[0], 100].min, 0].max, [[a[1], 100].min, 0].max] # 原機率+總機率
          cx = contents.text_size("+#{a[1]}%").width + 3
          self.contents.draw_text(-cx,0,self.width - 32,@xpvx[2] - 32,"#{a[0]}", 2)
          cx = contents.text_size("%").width + 1
          self.contents.font.color = Color.new(255, 255, 0)
          self.contents.draw_text(-cx,0,self.width - 32,@xpvx[2] - 32,"+#{a[1]}",2)
          self.contents.font.color = normal_color
          text = ""
        end
        self.contents.draw_text(0, 0, self.width - 32, @xpvx[2] - 32, text + '%',2)
      else # 強化到頂的場合
        self.contents.font.color = Color.new(255, 255, 255, 128)
        self.contents.draw_text(0, 0, self.width - 32, @xpvx[2] - 32,
        Sword20_Smax2,2)
      end
    end
  end
end
#=======================================
#■ 是否合成提示窗口
class WSword_StrengyhenONOFF < Window_Base
  include Sword # 連接自定設置
  attr_accessor  :index
  #-------------------------------------------------------------
  #● 初始化物件
  def initialize
    @xpvx = [XPVX.width, XPVX.height]
    contents = Bitmap.new(@xpvx[0], 32)
    @width = contents.text_size(Sword20_Whether).width
    @width = 32 if @width  == 0
    super((@xpvx[0] - @width) / 2 - 16,  (@xpvx[1] - (Font.default_size + 10) * 4) / 2,
    @width + 32, (Font.default_size + 10) * 4)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.z = 400 ; @index = 1 ; refresh
  end
  #-------------------------------------------------------------
  #● 更新內容
  def refresh
    self.contents.draw_text(0, 0, 640, 32, Sword20_Whether)
    self.contents.draw_text(0, 32, @width, 32, '是', 1)
    self.contents.draw_text(0, 64, @width, 32, '否', 1)
    self.cursor_rect.set(@width / 2 - (Font.default_size * 5 / 2),
    @index * 32 + 32, Font.default_size * 5, 32)
  end
  #-------------------------------------------------------------
  #● 更新游標
  def update_cursor_rect
    $Sword_VX ? Sound.play_cursor : $game_system.se_play($data_system.cursor_se)
    @index == 0 ? @index = 1 : @index = 0
    self.cursor_rect.set(@width / 2 - (Font.default_size * 5 / 2),
    @index * 32 + 32, Font.default_size * 5, 32)
  end
end
#=======================================
#■ 強化狀況窗口
class WSword_StrengyhenState < Window_Base
  include Sword
  #-------------------------------------------------------------
  #● 初始化物件
  def initialize
    @xpvx = [XPVX.width, XPVX.height] + ($Sword_VX ? [WLH + 32] : [64])
    super(0, @xpvx[1] / 2 - 16, 64, @xpvx[2])
    self.contents, self.z = Bitmap.new(width - 32, height - 32), 410
    refresh
  end
  #-------------------------------------------------------------
  #● 更新內容
  def refresh(help = nil, color = nil)
    return if help == nil
    self.contents.clear ; (self.x = 2000 ; return) if help.empty? # 沒指定文字時
    self.x = (@xpvx[0] - contents.text_size(help).width) / 2 - 16
    self.width = contents.text_size(help).width + 32
    self.contents = Bitmap.new(self.width - 32, self.height - 32)
    self.contents.font.color = color
    self.contents.draw_text(0, 0, self.width, @xpvx[2] - 32, help)
  end
end
#=======================================
#■ 標題畫面
class Scene_Title
  #-------------------------------------------------------------
  #● 新的遊戲
  alias sword20_command_new_game command_new_game
  def command_new_game
    sword20_command_new_game
    (1...$data_weapons.size).each{|i| $data_weapons.level, map_id = 0, nil
    next if ! Sword::Sword20_Fixed or Sword::Sword20_Neglect[0].include?(i)
    Sword.strengyhen20(1, i).size.times{
    $game_party.sword20_strengthen($data_weapons[map_id ? map_id : i])
    map_id = $data_weapons[-1].id
    $game_party.sword73_retain[0] += [map_id]
    XPVX.gain_item($data_weapons[-1], -1)}}
    (1...$data_armors.size).each{|i| $data_armors.level, map_id = 0, nil
    next if ! Sword::Sword20_Fixed or Sword::Sword20_Neglect[1].include?(i)
    Sword.strengyhen20(2, i).size.times{
    $game_party.sword20_strengthen($data_armors[map_id ? map_id : i])
    map_id = $data_armors[-1].id
    $game_party.sword73_retain[1] += [map_id]
    XPVX.gain_item($data_armors[-1], -1)}}
  end
end
#=======================================
#■ 強化武器畫面
class Sword_Strengyhen
  include Sword # 連接自定設置
  attr_reader    :ability # [武器強化能力類型, 防具強化能力類型]
  #-------------------------------------------------------------
  #● 初始化物件(物品編號, 強化機率加乘, 武器強化能力類型, 防具強化能力類型)
  def initialize(consumption = 0, multiply = 0, ability1 = nil, ability2 = nil)
    @consumption, @multiply, $game_party.multiply, @ability =
    consumption, multiply, multiply, [ability1, ability2]
  end
  #-------------------------------------------------------------
  #● 主處理
  def main
    #○ 產生窗口
    @help_window = Window_Help.new # 產生幫助視窗
    @strengyhen_wsword = WSword_Strengyhen.new # 產生強化武器窗口
    @strengyhen_wsword.help_window = @help_window
    @strengyhenstate_wsword = WSword_StrengyhenState.new # 產生強化狀況窗口
    @strengyhenstate_wsword.visible = false
    @strengyhensurplus_wsword = WSword_StrengyhenSurplus.new # 產生剩餘次數窗口
    @strengyhensurplus_wsword.refresh($data_items[@consumption])
    @strengyhensurplus2_wsword = WSword_StrengyhenSurplus.new # 產生成功率窗口
    @strengyhensurplus2_wsword.refresh(@strengyhen_wsword.item)
    @strengyhenonoff_wsword = WSword_StrengyhenONOFF.new # 提示窗口
    @strengyhenonoff_wsword.visible = false
    Graphics.transition
    loop {Graphics.update ; Input.update ; update ; break if $scene != self} # 主循環
    Graphics.freeze
    @help_window.dispose ; @strengyhen_wsword.dispose
    @strengyhenstate_wsword.dispose ; @strengyhensurplus_wsword.dispose
    @strengyhensurplus2_wsword.dispose ; @strengyhenonoff_wsword.dispose
  end
  #-------------------------------------------------------------
  #● 更新畫面
  def update
    @strengyhen_wsword.update
    if Input.trigger?(Input::B) # 返回地圖或選單
      $Sword_VX ? Sound.play_cancel : $game_system.se_play($data_system.cancel_se)
      $scene = Sword20_Mame == 0 ? Scene_Map.new : Scene_Menu.new(Sword20_Mame)
    elsif Input.trigger?(Input::UP) or Input.trigger?(Input::DOWN) or
    Input.trigger?(Input::LEFT) or Input.trigger?(Input::RIGHT) # 更新機率
      @strengyhensurplus2_wsword.refresh(@strengyhen_wsword.item)
    elsif Input.trigger?(Input::C) # 強化開始
      return XPVX.se_buzzer unless @strengyhen_wsword.item # 沒有裝備選擇的場合
      if XPVX.item_number($data_items[@consumption]) > 0 # 有強化石的場合
        item = @strengyhen_wsword.item
        if item.level >= Sword.strengyhen20(item.is_a?(RPG::Weapon) ? 1 : 2,
        Sword.original_id20(item)).size # 已達上限場合
          @strengyhenstate_wsword.visible = true # 顯示已達強化上限提示
          @strengyhenstate_wsword.refresh(Sword20_Cond2[0], Sword20_Cond2[1])
          Sword20_Wait2.times{Graphics.update ; @strengyhen_wsword.update}
          return @strengyhenstate_wsword.visible = false # 隱藏已達強化上限提示
        end
        @strengyhenonoff_wsword.visible = true # 顯示是否強化窗口
        @strengyhenonoff_wsword.index = 0
        @strengyhenonoff_wsword.update_cursor_rect
        loop{Graphics.update ; Input.update ; @strengyhenonoff_wsword.update
        if Input.trigger?(Input::C) ; break
        elsif Input.trigger?(Input::B) ; @strengyhenonoff_wsword.visible = false
          XPVX.se_cancel ; return
        elsif Input.trigger?(Input::UP) or Input.trigger?(Input::DOWN)
          @strengyhenonoff_wsword.update_cursor_rect
        end} # 更新與處理是否強化提示窗口
        @strengyhenonoff_wsword.visible = false # 隱藏是否強化窗口
        (XPVX.se_cancel ; return) if @strengyhenonoff_wsword.index == 1 # 選擇否就中斷
        result = $game_party.sword20_strengthen(item) # 執行強化
        XPVX.gain_item($data_items[@consumption], -1) # 消耗強化石
        @strengyhenstate_wsword.visible = true # 顯示正在強化中提示
        @strengyhenstate_wsword.refresh(Sword20_Cond3[0], Sword20_Cond3[1])
        if Sword20_SE == '' or Sword20_SE == 0 ; 0 # 不演奏SE
        elsif Sword20_SE.is_a?(Integer) # 指定動畫SE
          searr = []
          $data_animations[Sword20_SE].timings.size.times{|i|
          searr.push($data_animations[Sword20_SE].timings.frame)}
          $data_animations[Sword20_SE].frame_max.times do |i|
            Graphics.update ; @strengyhen_wsword.update
            Graphics.update ; @strengyhen_wsword.update
            (Graphics.update ; @strengyhen_wsword.update) if $Sword_VX # 配合VX的幀數
            next unless searr.index(i)
            se = $data_animations[Sword20_SE].timings[searr.index(i)].se
            next if se.name == ''
            Audio.se_play("Audio/SE/#{se.name}", se.volume, se.pitch)
          end
        elsif Sword20_SE.is_a?(String) ; Audio.se_play("Audio/SE/#{SWORD_SYNT_SE}")
        end
        Sword20_Wait1.times{Graphics.update ; @strengyhen_wsword.update} unless
        Sword20_SE.is_a?(Integer) # 如果強化中SE是使用動畫就無效設置的延遲
        if result ; @strengyhenstate_wsword.refresh(Sword20_Cond5[0], Sword20_Cond5[1])
        else ; @strengyhenstate_wsword.refresh(Sword20_Cond4[0], Sword20_Cond4[1])
        end
        Sword20_Wait2.times{Graphics.update ; @strengyhen_wsword.update}
        @strengyhenstate_wsword.visible = false # 隱藏正在強化中提示
        @strengyhen_wsword.refresh
        @strengyhensurplus_wsword.refresh($data_items[@consumption])
        @strengyhensurplus2_wsword.refresh(@strengyhen_wsword.item)
      else # 沒有強化石的場合
        @strengyhenstate_wsword.visible = true # 顯示強化石不足提示
        @strengyhenstate_wsword.refresh(Sword20_Cond1[0], Sword20_Cond1[1])
        Sword20_Wait2.times{Graphics.update ; @strengyhen_wsword.update}
        @strengyhenstate_wsword.visible = false # 隱藏強化石不足提示
      end
    end
  end
end
梦石
1
星屑
2088
在线时间
920 小时
注册时间
2012-10-18
回帖
416

开拓者

发表于 2014-9-25 20:51:56 | 显示全部楼层
话说推荐LZ把脚本放进脚本框中方便他人帮助你检查脚本
经过测试,窗口并没有出现像附图那样窗口大小不足的情况,所以应该是其他脚本影响这窗口的描绘,还请LZ如果方便的话可否把工程发上?

还有2L的上贺茂润,如果你是真的要帮助他人的话还请拿出你认真的态度,
我记得似乎已经多次见到你在各个技术区胡言乱语误导提问者,甚至有时连提问者的问题都没好好看清就回答,
虽然当中有几次是正确的(注:这次不正确,你根本没搞清楚问题吧),
但那样的回答对于提问者来说就像是无字天书看不懂不明觉厉,这种的回答态度倒不如不要回答对提问者会更好

评分

参与人数 2星屑 +101 收起 理由
Luciffer + 100 认可蕾子
VIPArcher + 1 我很赞同

查看全部评分

回复

使用道具 举报

梦石
0
星屑
782
在线时间
3431 小时
注册时间
2011-6-10
回帖
6325
发表于 2014-9-24 19:46:00 | 显示全部楼层
本帖最后由 上贺茂润 于 2014-9-25 21:53 编辑

妈蛋 这年头回答错了还要被扣分还要被指指点点,真是倒霉到家了

评分

参与人数 1星屑 -50 收起 理由
怪蜀黍 -50 请别误导LZ

查看全部评分

长名公主玩家群:372588926 攻略娱乐应有尽有
了解更多新RM游戏,游戏制作请加入RPGmaker支援群:113622890
回复

使用道具 举报

梦石
0
星屑
65
在线时间
99 小时
注册时间
2014-8-7
回帖
48
 楼主| 发表于 2014-9-24 20:05:13 | 显示全部楼层
上贺茂润 发表于 2014-9-24 19:46
换行符/n

在哪里插入啊大大?不太明白的说... 能够解释的话就太感激不尽了。O_O
回复

使用道具 举报

梦石
0
星屑
65
在线时间
99 小时
注册时间
2014-8-7
回帖
48
 楼主| 发表于 2014-9-25 21:55:13 | 显示全部楼层
芙蕾娅 发表于 2014-9-25 20:51
话说推荐LZ把脚本放进脚本框中方便他人帮助你检查脚本
经过测试,窗口并没有出现像附图那样窗口大小不足的 ...

不是工程能不能呢... 因为我的游戏是加密后上传的...
(话说大大的头像容易让人意YN啊,好邪恶的说 Σ(゚Д゚||))

点评

好的,谢谢你们两人... 我马上弄个工程出来  发表于 2014-9-25 22:26
即【最简工程】——包含了所有必要素材及必要脚本的问题工程  发表于 2014-9-25 22:05
其实最好给别人的是不是原工程(太大不想接。我更希望给的是出一样问题的范例、  发表于 2014-9-25 22:02
可以私传给大大,大大不会公开的~  发表于 2014-9-25 21:59
回复

使用道具 举报

梦石
0
星屑
985
在线时间
3 小时
注册时间
2014-10-23
回帖
1
发表于 2014-10-25 15:09:53 | 显示全部楼层
你那个武器名有颜色的脚本能不能给我,求
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部