| 赞 | 0 |
| VIP | |
| 好人卡 | |
| 积分 | 1 |
| 经验 | |
| 最后登录 | 2021-1-8 |
| 在线时间 | 99 小时 |
- 梦石
- 0
- 星屑
- 65
- 在线时间
- 99 小时
- 注册时间
- 2014-8-7
- 回帖
- 48
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有账号?注册会员
×
框框够不到底,本来想不管的... 但本能不允许... 就是想改正它,
有没有大师能够帮帮我,拜了...
附上脚本:
资料转换#=======================================
#★ 魔劍工舖 - 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 |
|