class Window_Help < Window_Base
#--------------------------------------------------------------------------
# ● 初始化对象
#--------------------------------------------------------------------------
def initialize(line_number = 0)
super(0, 0, 210, fitting_height(line_number))
self.z = 150
contents.font.size = 14
hide
end
#--------------------------------------------------------------------------
# ● 设置内容
#--------------------------------------------------------------------------
def set_text(text)
if text != @text
@text = text
refresh
end
end
#--------------------------------------------------------------------------
# ● 清除
#--------------------------------------------------------------------------
def clear
set_text("")
end
#--------------------------------------------------------------------------
# ● 更新帮助位置
#--------------------------------------------------------------------------
def uppos(index,rect,window)
self.height = fitting_height2(Help.getline(@xtext,13))
create_contents
contents.font.size = 14
rect.x -= window.ox
rect.y -= window.oy
ax = rect.x + rect.width + 10
ax = rect.x - self.width + 10 if ax + self.width > window.width + 10
ax += window.x
ax = 0 if ax < 0
ay = rect.y + rect.height
ay = rect.y - self.height if ay + self.height > window.height
ay += window.y
ay = 0 if ay < 0
self.x = ax
self.y = ay
set_text(@xtext)
show
end
#--------------------------------------------------------------------------
# ● 设置物品
# item : 技能、物品等
#--------------------------------------------------------------------------
def set_item(item)
if item == nil
set_text("")
return
end
@xtext = ""
@xtext = "名称:" + item.name + "\n"
@xtext += "介绍:" + item.description + "\n"
@xtext += "价格:" + item.price.floor.to_s + "\n" if item.is_a?(RPG::EquipItem) || item.is_a?(RPG::Item)
@xtext += Help.getequiphelp(item) if item.is_a?(RPG::EquipItem)
@xtext = @xtext[0,@text.size - 2] if @xtext[@xtext.size - 2,2] == "\n"
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
contents.clear
hide if @text == ""
draw_text_ex(4, 0, @text,width,40,false)
end
end
class Window_Base < Window
#--------------------------------------------------------------------------
# ● 计算窗口显示指定行数时的应用高度2*************************
#--------------------------------------------------------------------------
def fitting_height2(line_number)
line_number * contents.font.size + standard_padding * 2
end
#~ draw_text_ex的增强,使其可以自动换行 原作者:叶子 修改:wyongcan
#--------------------------------------------------------------------------
# ● 绘制带有控制符的文本内容
# 如果传递了width参数的话,会自动换行
#--------------------------------------------------------------------------
def draw_text_ex(x, y, text, width = nil,textwidth = nil,normalfont = true)
reset_font_settings if normalfont == true
text = convert_escape_characters(text)
pos = {:x => x, :y => y, :new_x => x, :height => calc_line_height(text)}
if width != nil
pos[:height] = contents.font.size
pos[:width] = width
pos[:textwidth] = textwidth
end
process_character(text.slice!(0, 1), text, pos) until text.empty?
end
#--------------------------------------------------------------------------
# ● 文字的处理
# c : 文字
# text : 绘制处理中的字符串缓存(字符串可能会被修改)
# pos : 绘制位置 {:x, :y, :new_x, :height}
#--------------------------------------------------------------------------
def process_character(c, text, pos)
case c
when "\r" # 回车
return
when "\n" # 换行
process_new_line(text, pos)
when "\f" # 翻页
process_new_page(text, pos)
when "\e" # 控制符
process_escape_character(obtain_escape_code(text), text, pos)
else # 普通文字
pos[:textwidth] == nil ? text_width = text_size(c).width : text_width = pos[:textwidth]
if pos[:width] != nil && pos[:x] - pos[:new_x] + text_width > pos[:width]
process_new_line(text, pos)
end
process_normal_character(c, pos)
end
end
end
class Window_ItemList < Window_Selectable
#--------------------------------------------------------------------------
# ● 更新帮助内容
#--------------------------------------------------------------------------
def update_help
@help_window.set_item(item)
@help_window.uppos(index,item_rect(index),self) if index != -1 && item != nil
end
end
class Window_SkillList < Window_Selectable
#--------------------------------------------------------------------------
# ● 更新帮助内容
#--------------------------------------------------------------------------
def update_help
@help_window.set_item(item)
@help_window.uppos(index,item_rect(index),self) if index != -1 && item != nil
end
end
class Window_ShopBuy < Window_Selectable
#--------------------------------------------------------------------------
# ● 更新帮助内容
#--------------------------------------------------------------------------
def update_help
@help_window.set_item(item) if @help_window
@help_window.uppos(index,item_rect(index),self) if index != -1 && item != nil && @help_window
@status_window.item = item if @status_window
end
end
class Window_EquipSlot < Window_Selectable
#--------------------------------------------------------------------------
# ● 更新帮助内容
#--------------------------------------------------------------------------
def update_help
super
@help_window.set_item(item) if @help_window
@help_window.uppos(index,item_rect(index),self) if index != -1 && item != nil && @help_window
@status_window.set_temp_actor(nil) if @status_window
end
end
class Scene_Shop < Scene_MenuBase
alias on_sell_ok_old on_sell_ok
def on_sell_ok
on_sell_ok_old
@help_window.hide
end
alias on_buy_ok_old on_buy_ok
def on_buy_ok
on_buy_ok_old
@help_window.hide
end
alias on_number_ok_old on_number_ok
def on_number_ok
on_number_ok_old
@help_window.refresh
@help_window.show
end
alias on_number_cancel_old on_number_cancel
def on_number_cancel
on_number_cancel_old
@help_window.refresh
@help_window.show
end
end
class Scene_Title < Scene_Base
alias start_old start
def start
start_old
Help.ready
end
end
class Window_Base < Window
alias old_process_new_line process_new_line
def process_new_line(text, pos)
old_process_new_line(text, pos)
pos[:height] = contents.font.size if pos[:width] != nil
end
end
class Scene_ItemBase < Scene_MenuBase
alias old_on_actor_cancel on_actor_cancel
def on_actor_cancel
old_on_actor_cancel
@help_window.refresh
end
alias old_on_actor_ok on_actor_ok
def on_actor_ok
old_on_actor_ok
@help_window.refresh
end
end
class Scene_Battle < Scene_Base
def create_help_window
@help_window = Window_Help2.new
@help_window.visible = false
end
end
[/pre]
def qiangxz_cancel
@wu_window.show
@qiangxz_window.hide
@qiangxz_window.deactivate
if $wufang == true
@wu_window.activate
else
@fang_window.activate
end
$当前使用宝石加成率 = 0
$usegem = false
@command_window.deactivate
end
def qianging
i = 0
while i < 20
i += 1
text = "\n"
text += "█" * i + " " * (20 - i)
text = text + "\n强化中,请等待……"
@qianghelp_window.set_text(text)
Graphics.wait(6)
end
end
end
class RPG::EquipItem < RPG::BaseItem
alias old initialize
def initialize
old
@up = 0 #装备强化次数
end
attr_accessor :up
end
#==============================================================================
# ■ Window_Qiangwu
#------------------------------------------------------------------------------
# 强化系统_武器强化窗口
#==============================================================================
class Window_Qiangwu < Window_ItemList
#--------------------------------------------------------------------------
# ● 初始化对象
#--------------------------------------------------------------------------
def initialize(qianghelp,xuanze)
super(0, 0, Graphics.width, fitting_height(8))
self.openness = 0
deactivate
@qianghelp = qianghelp
@xuanze = xuanze
end
#--------------------------------------------------------------------------
# ● 开始输入的处理
#--------------------------------------------------------------------------
def start
self.category = :weapon
refresh
select(0)
open
activate
end
#--------------------------------------------------------------------------
# ● 查询此物品是否可用
#--------------------------------------------------------------------------
def enable?(item)
return false unless item != nil
Qiang.weaponupable?(item.id)
end
#--------------------------------------------------------------------------
# ● 确定强化武器
#--------------------------------------------------------------------------
def qiangwu_ok
result = item ? item.id : 0
end
#--------------------------------------------------------------------------
# ● 更新帮助内容
#--------------------------------------------------------------------------
def update_help
return unless item != nil
@help_window.set_item(item)
needmoney = 0
Qiang.weaponupable?(item.id)
qitemname = Qiang.lostitem.name
if item.up >= $强化哈希表["最高等级"]
qitemname = "无法继续升级"
end
temp = []
$usegem == true ? temp.push("●") : temp.push("○")
temp.push($data_items[$强化哈希表["特殊物品"][0]].name)
$fangb == true ? temp.push("●") : temp.push("○")
temp.push($data_items[$强化哈希表["特殊物品"][1]].name)
$fangj == true ? temp.push("●") : temp.push("○")
cgl = ($强化哈希表["每级概率"][item.up] + $当前使用宝石加成率).to_s
xxlv=($强化哈希表["消失几率"][item.up]).to_s
jjlv=($强化哈希表["降级几率"][item.up]).to_s
if item.up == 0
min = (item.params[2] * (100 + $强化哈希表["提升能力"][item.up])).floor
min /= 100
max = min + 5
else
if item.up >= $强化哈希表["最高等级"]
min = item.params[2].to_int
max = min
else
min = (item.params[2] * (100 + $强化哈希表["提升能力"][item.up])).floor
min /= 100
max = min + item.up * 3
end
end
text = "当前强化等级:" + item.up.to_s + " 强化需要:" + qitemname
text = text + "\n" + "强化宝石:" + temp [0] + " " + temp[1] + ":" + temp[2]+ " " + temp[3] + ":" + temp[4]
text = text + "\n" + "成功率:" + cgl + "% " + "强化后攻击力范围:" + min.to_s + "~" + max.to_s
text = text + "\n" + "消失率:" + xxlv + "% " + "降级率:" + jjlv+"% "+ " 需" + Vocab::currency_unit + ":" + Qiang.needmoney.to_s
@qianghelp.set_text(text)
end
#--------------------------------------------------------------------------
# ● 获取当前武器等级
#--------------------------------------------------------------------------
def getweaponup
Qiang.weaponupisnil(item.id)
item.up
end
def itemid
item.id
end
#--------------------------------------------------------------------------
# ● 选择项目
#--------------------------------------------------------------------------
def select(index)
self.index = index if index
update_help
end
end
#==============================================================================
# ■ Window_Qiangfang
#------------------------------------------------------------------------------
# 强化系统_防具强化窗口
#==============================================================================
class Window_Qiangfang < Window_ItemList
#--------------------------------------------------------------------------
# ● 初始化对象
#--------------------------------------------------------------------------
def initialize(qianghelp,xuanze)
super(0, 0, Graphics.width, fitting_height(8))
self.openness = 0
deactivate
@qianghelp = qianghelp
@xuanze = xuanze
end
#--------------------------------------------------------------------------
# ● 开始输入的处理
#--------------------------------------------------------------------------
def start
self.category = :armor
refresh
select(0)
open
activate
end
#--------------------------------------------------------------------------
# ● 查询此物品是否可用
#--------------------------------------------------------------------------
def enable?(item)
return false unless item != nil
Qiang.armorupable?(item.id)
end
#--------------------------------------------------------------------------
# ● 确定强化防具
#--------------------------------------------------------------------------
def qiangfang_ok
result = item ? item.id : 0
end
#--------------------------------------------------------------------------
# ● 更新帮助内容
#--------------------------------------------------------------------------
def update_help
return unless item != nil
@help_window.set_item(item)
needmoney = 0
Qiang.armorupable?(item.id)
qitemname = Qiang.lostitem.name
if item.up >= $强化哈希表["最高等级"]
qitemname = "无法继续升级"
end
temp = []
$usegem == true ? temp.push("●") : temp.push("○")
temp.push($data_items[$强化哈希表["特殊物品"][0]].name)
$fangb == true ? temp.push("●") : temp.push("○")
temp.push($data_items[$强化哈希表["特殊物品"][1]].name)
$fangj == true ? temp.push("●") : temp.push("○")
cgl = ($强化哈希表["每级概率"][item.up] + $当前使用宝石加成率).to_s
xxlv=($强化哈希表["消失几率"][item.up]).to_s
jjlv=($强化哈希表["降级几率"][item.up]).to_s
if item.up == 0
min = (item.params[3] * (100 + $强化哈希表["提升能力"][item.up])).floor
min /= 100
max = min + 5
else
if item.up >= $强化哈希表["最高等级"]
min = item.params[3].to_int
max = min
else
min = (item.params[3] * (100 + $强化哈希表["提升能力"][item.up])).floor
min /= 100
max = min + item.up * 3
end
end
text = "当前强化等级:" + item.up.to_s + " 强化需要:" + qitemname
text = text + "\n" + "强化宝石:" + temp [0] + " " + temp[1] + ":" + temp[2]+ " " + temp[3] + ":" + temp[4]
text = text + "\n" + "成功率:" + cgl + "% " + "强化后防御范围:" + min.to_s + "~" + max.to_s
text = text + "\n" + "消失率:" + xxlv + "% " + "降级率:" + jjlv+"% "+ " 需" + Vocab::currency_unit + ":" + Qiang.needmoney.to_s
@qianghelp.set_text(text)
end
#--------------------------------------------------------------------------
# ● 获取当前防具等级
#--------------------------------------------------------------------------
def getarmorup
Qiang.armorupisnil(item.id)
item.up
end
def itemid
item.id
end
#--------------------------------------------------------------------------
# ● 选择项目
#--------------------------------------------------------------------------
def select(index)
self.index = index if index
update_help
end
end
#==============================================================================
# ■ Window_QiangCommand
#------------------------------------------------------------------------------
# 强化系统中,处理命令选择的窗口。
#==============================================================================
class Window_Qianghelp < Window_Base
#--------------------------------------------------------------------------
# ● 初始化对象
#--------------------------------------------------------------------------
def initialize
super(0, 0, window_width, fitting_height(4) + 8)
refresh
end
#--------------------------------------------------------------------------
# ● 获取窗口的宽度
#--------------------------------------------------------------------------
def window_width
return 544
end
#--------------------------------------------------------------------------
# ● 获取持有金钱
#--------------------------------------------------------------------------
def value
$game_party.gold
end
#--------------------------------------------------------------------------
# ● 获取货币单位
#--------------------------------------------------------------------------
def currency_unit
Vocab::currency_unit
end
#--------------------------------------------------------------------------
# ● 设置内容
#--------------------------------------------------------------------------
def set_text(text)
if text != @text
@text = text
refresh
end
end
#--------------------------------------------------------------------------
# ● 清除
#--------------------------------------------------------------------------
def clear
set_text("")
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
contents.clear
draw_text_ex(4, 0, @text)
end
end
#==============================================================================
# ■ Window_Qiangxz
#------------------------------------------------------------------------------
# 强化系统中,选择强化方式的窗口。
#==============================================================================
class Window_Qiangxz < Window_Command
@havegem = false
@havefangb = false
@havefangj = false
#--------------------------------------------------------------------------
# ● 初始化对象
#--------------------------------------------------------------------------
def initialize
super(0, 0)
index = 0
update_placement
self.openness = 0
open
end
#--------------------------------------------------------------------------
# ● 获取窗口的宽度
#--------------------------------------------------------------------------
def window_width
return 180
end
#--------------------------------------------------------------------------
# ● 更新窗口的位置
#--------------------------------------------------------------------------
def update_placement
self.x = (Graphics.width - width) / 2
self.y = (Graphics.height - height) / 2
end
#--------------------------------------------------------------------------
# ● 检查可用
#--------------------------------------------------------------------------
def haveitem
@havegem = false
@havefangb = false
@havefangj = false
for i in $强化哈希表["宝石效果"]
if $game_party.has_item?($data_items[i[0]])
@havegem = true
end
end
@havefangb = $game_party.has_item?($data_items[$强化哈希表["特殊物品"][0]])
@havefangj = $game_party.has_item?($data_items[$强化哈希表["特殊物品"][1]])
end
#--------------------------------------------------------------------------
# ● 生成指令列表
#--------------------------------------------------------------------------
def make_command_list
haveitem
add_command("宝石", :gem, @havegem)
add_command(Qiang.idgetitem($强化哈希表["特殊物品"][0]).name, :fangb, @havefangb)
add_command(Qiang.idgetitem($强化哈希表["特殊物品"][1]).name, :fangj, @havefangj)
add_command("开始强化", :start)
add_command("取消强化", :cancel)
end
end
#==============================================================================
# ■ Window_Base
#------------------------------------------------------------------------------
# 游戏中所有窗口的父类
#==============================================================================
class Window_Base < Window
#--------------------------------------------------------------------------
# ● 绘制物品名称
# enabled : 有效的标志。false 的时候使用半透明效果绘制
#--------------------------------------------------------------------------
def draw_item_name(item, x, y, enabled = true, width = 172)
return unless item
draw_icon(item.icon_index, x, y, enabled)
change_color(normal_color, enabled)
if item.is_a?(RPG::EquipItem)
n = item.note
a = n.split{/<(?:Quality|品质)\s*(.+)>/i}
c = a[1].to_i
if c <= 1
color = PS0::Window_Base_Itemcolor::Color1
elsif c == 2
color = PS0::Window_Base_Itemcolor::Color2
elsif c == 3
color = PS0::Window_Base_Itemcolor::Color3
elsif c == 4
color = PS0::Window_Base_Itemcolor::Color4
elsif c == 5
color = PS0::Window_Base_Itemcolor::Color5
elsif c == 6
color = PS0::Window_Base_Itemcolor::Color6
elsif c == 7
color = PS0::Window_Base_Itemcolor::Color7
else
color = Color.new(0, 0, 0, 0)
end
self.contents.fill_rect(x, y, 24, 1, color)
self.contents.fill_rect(x, y, 1, 24, color)
self.contents.fill_rect(x, y+23, 24, 1, color)
self.contents.fill_rect(x+23, y, 1, 24, color)
draw_icon(item.icon_index, x, y, enabled)
change_color(color, enabled)
draw_text(x + 24, y, width, line_height, item.name)
if item.up != nil && item.up != 0
draw_text(x + 24, y, width, line_height, item.name + " +" + item.up.to_s)
else
draw_text(x + 24, y, width, line_height, item.name)
end
else
draw_text(x + 24, y, width, line_height, item.name)
end
end
end
class Window_ItemList
#--------------------------------------------------------------------------
# ● 查询列表中是否含有此物品
#--------------------------------------------------------------------------
def include?(item)
case @category
when :item
item.is_a?(RPG::Item) && !item.key_item?
when :weapon
item.is_a?(RPG::Weapon)
when :armor
item.is_a?(RPG::Armor)
when :key_item
item.is_a?(RPG::Item) && item.key_item?
when :gem
itemid = item ? item.id : 0
itemid != 0 ? isgem(itemid) : false
else
false
end
end
def isgem(itemid)
for i in $强化哈希表["宝石效果"]
return true if i[1] == itemid
end
false
end
end
#==============================================================================
# ■ Window_Choosegem
#------------------------------------------------------------------------------
# 选择强化使用的宝石
#==============================================================================