#----------------------------#
# 取得屬性、狀態、說明之副本 #
#----------------------------#
element_set = equipment.element_set.clone
state_set = equipment.state_set.clone
description = equipment.description.clone
phrase = @phrase
#----------------------------#
# 過濾不顯示的屬性與狀態描述 #
#----------------------------#
element_set -= @unshow_elements
state_set -= @unshow_states
#----------------#
# 初始化數據設定 #
#----------------#
x, h, move = 0, 0, 0
#------------------#
# 取得特殊效果數據 #
#------------------#
special = []
gifts = [] if gifts.nil?
s = [
]
for g in gifts
special << s[g.type].sub(/\[s\]/) {g.value}
end
#------------------------------------------------------------------------
# ● 確定背景圖片的高度
#------------------------------------------------------------------------
h += (description.size/3/@word)
h += 1 if (description.size/3%@word) > 0
now_h = h
h += 1 #價格
h += 1 unless equipment.atk.zero? #攻擊力
h += 1 unless equipment.def.zero? #防禦力
h += 1 unless equipment.spi.zero? #精神力
h += 1 unless equipment.agi.zero? #敏捷力
h += element_set.size + 1 if element_set.size > 0 #屬性
h += state_set.size + 1 if state_set.size > 0 #狀態
h += special.size + 2 if special.size > 0 #特殊效果
#------------------------------------------------------------------------
# ● 圖片顯示保證高度
#------------------------------------------------------------------------
#h = 6 + now_h if (h - now_h) < 6
#------------------------------------------------------------------------
# ● 換算高度
#------------------------------------------------------------------------
self.height = h * @size + @name_size + 32
#------------------------------------------------------------------------
# ● 生成背景
#------------------------------------------------------------------------
self.contents = Bitmap.new(self.width - 32, self.height - 32)
self.contents.clear
#------------------------------------------------------------------------
# ● 名字描繪
#------------------------------------------------------------------------
text = equipment.name
self.contents.font.color = normal_color
self.contents.font.size = @name_size
if text.nil?
self.visible = false
else
self.visible = true
###self.contents.draw_text(0, 0, text.size*7, @name_size, text, 0)
self.contents.draw_text(0, 0, contents.width-4, @name_size, text)
end
#------------------------------------------------------------------------
# ● 圖標描繪
#------------------------------------------------------------------------
#bitmap = Cache.system("Iconset")
#rect = Rect.new(equipment.icon_index % 16 * 24, equipment.icon_index / 16 * 24, 24, 24)
#self.contents.blt(0, y*size + 20, bitmap, rect, 255)
#------------------------------------------------------------------------
# ● 價格描繪
#------------------------------------------------------------------------
unless equipment.price.zero?
text = phrase[:price] + ":" + equipment.price.to_s
draw_text(text, 1, move)
end
#------------------------------------------------------------------------
# ● 攻擊力
#------------------------------------------------------------------------
unless equipment.atk.zero?
text = $data_system.terms.atk + ":" + equipment.atk.to_s
draw_text(text, 1, move)
end
#------------------------------------------------------------------------
# ● 防禦力
#------------------------------------------------------------------------
unless equipment.def.zero?
text = $data_system.terms.def + ":" + equipment.def.to_s
draw_text(text, 1, move)
end
#------------------------------------------------------------------------
# ● 精神力
#------------------------------------------------------------------------
unless equipment.spi.zero?
text = $data_system.terms.spi + ":" + equipment.spi.to_s
draw_text(text, 1, move)
end
#------------------------------------------------------------------------
# ● 敏捷力
#------------------------------------------------------------------------
unless equipment.agi.zero?
text = $data_system.terms.agi + ":" + equipment.agi.to_s
draw_text(text, 1, move)
end
#------------------------------------------------------------------------
# ● 屬性 #不显示,删了.
#------------------------------------------------------------------------
# if element_set.size > 0
# case equipment
# when RPG::Weapon
# text=phrase[:elements]+":"
# when RPG::Armor
# text=phrase[:guard_elements]+":"
# end
# draw_text(text, 1, move)
# element_set.each do |i|
# text = $data_system.elements
# draw_text(text, 1, move + @size)
# end
# end
#------------------------------------------------------------------------
# ● 狀態
#------------------------------------------------------------------------
# if state_set.size > 0
# case equipment
# when RPG::Weapon
# text=phrase[:states]+":"
# when RPG::Armor
# text=phrase[:guard_states]+":"
# end
# draw_text(text, 1, move)
# state_set.each do |i|
# text = $data_states.name
# draw_text(text, 1, move + @size)
# end
# end
#------------------------------------------------------------------------
# ● 特殊效果
#------------------------------------------------------------------------
if special.size > 0
text = phrase[:special]+":"
draw_text(text, 1, move,2)
special.each {|text| draw_text(text, 1, move + @size,4)}
end
#------------------#
# 取得特殊效果數據 #
#------------------#
special = []
special << phrase[:physical_attack] if item.physical_attack #物理攻撃
special << phrase[:damage_to_mp] if item.damage_to_mp #MPにダメージ
special << phrase[:absorb_damage] if item.absorb_damage #ダメージを吸収
special << phrase[:ignore_defense] if item.ignore_defense #防御力無視
#------------------------------------------------------------------------
# ● 確定背景圖片的高度
#------------------------------------------------------------------------
h += (description.size/3/@word)
h += 1 if (description.size/3%@word) > 0
now_h = h
h += 2 #効果範囲,價格
h += 1 if item.consumable #消耗品
h += 1 unless item.speed.zero? #速度補正値
h += 1 unless item.hp_recovery_rate==0 and item.hp_recovery==0 #HP 回復
h += 1 unless item.mp_recovery_rate==0 and item.mp_recovery==0 #MP 回復
h += 1 unless item.parameter_type.zero? #能力値
h += 1 unless item.base_damage.zero? #基本ダメージ
h += element_set.size + 1 if element_set.size > 0 #屬性
h += plus_state_set.size + 1 if plus_state_set.size > 0 #附加狀態
h += minus_state_set.size + 1 if minus_state_set.size > 0 #解除狀態
h += special.size + 1 if special.size > 0 #特殊效果
#------------------------------------------------------------------------
# ● 圖片顯示保證高度
#------------------------------------------------------------------------
#h = 6 + now_h if (h - now_h) < 6
#------------------------------------------------------------------------
# ● 換算高度
#------------------------------------------------------------------------
self.height = h * @size + @name_size + 32
#------------------------------------------------------------------------
# ● 生成背景
#------------------------------------------------------------------------
self.contents = Bitmap.new(self.width - 32, self.height - 32)
self.contents.clear
#------------------------------------------------------------------------
# ● 名字描繪
#------------------------------------------------------------------------
text = item.name
self.contents.font.color = normal_color#顔色腳本
self.contents.font.size = @name_size
if text.nil?
self.visible = false
else
self.visible = true
self.contents.draw_text(0,0, text.size*7, 20, text, 0)
end
#------------------------------------------------------------------------
# ● 說明描繪
#------------------------------------------------------------------------
x = 0
@y += 1
while ((text = description.slice!(/./m)) != nil)
self.contents.font.color = text_color(1)
self.contents.font.size = @size
self.contents.draw_text(x*@size, @y*@size+5, @size, @size, text, 0)
x+=1
if x == @word
x = 0
@y += 1
end
end
#------------------------------------------------------------------------
# ● 圖標描繪
#------------------------------------------------------------------------
#bitmap = Cache.system("Iconset")
#rect = Rect.new(item.icon_index % 16 * 24, equipment.icon_index / 16 * 24, 24, 24)
#self.contents.blt(0, y*size + 20, bitmap, rect, 255)
#------------------------------------------------------------------------
# ● 效果範圍
#------------------------------------------------------------------------
text = phrase[:scope] +":"
draw_text(text, 1, move)
text = scope[item.scope]
draw_text(text, 1, move + @size)
#------------------------------------------------------------------------
# ● 價格
#------------------------------------------------------------------------
text = phrase[:price] + item.price.to_s
draw_text(text, 1, move)
#------------------------------------------------------------------------
# ● 消耗品
#------------------------------------------------------------------------
if item.consumable
text = phrase[:consumable]
draw_text(text, 1, move)
end
#------------------------------------------------------------------------
# ● 速度補正値
#------------------------------------------------------------------------
unless item.speed.zero?
text = phrase[:speed]
draw_text(text, 1, move)
end
#------------------------------------------------------------------------
# ● HP回復
#------------------------------------------------------------------------
unless item.hp_recovery_rate.zero? and item.hp_recovery.zero?
if item.hp_recovery_rate > 0 and item.hp_recovery > 0
text = " + "
else
text = ""
end
unless item.hp_recovery_rate.zero?
text = item.hp_recovery_rate.to_s + "%" + text
end
unless item.hp_recovery.zero?
text += item.hp_recovery.to_s
end
text = phrase[:recover] +":" + phrase[:hp] + text
draw_text(text, 1, move)
end
#------------------------------------------------------------------------
# ● SP回復
#------------------------------------------------------------------------
unless item.mp_recovery_rate.zero? and item.mp_recovery.zero?
if item.mp_recovery_rate > 0 and item.mp_recovery > 0
text = " + "
else
text = ""
end
unless item.mp_recovery_rate.zero?
text = item.mp_recovery_rate.to_s + "%" + text
end
unless item.mp_recovery.zero?
text += item.mp_recovery.to_s
end
text = phrase[:recover] +":" + phrase[:mp] + text
draw_text(text, 1, move)
end
#------------------------------------------------------------------------
# ● 能力值增加
#------------------------------------------------------------------------
unless item.parameter_type.zero?
text= parameter_type[item.parameter_type]+" +"+item.parameter_points.to_s
draw_text(text, 1, move)
end
#------------------------------------------------------------------------
# ● 基本ダメージ
#------------------------------------------------------------------------
unless item.base_damage.zero?
text = phrase[:base_damage] +":" + item.base_damage.to_s
draw_text(text, 1, move)
end
#------------------------------------------------------------------------
# ● 屬性
#------------------------------------------------------------------------
if element_set.size > 0
text = phrase[:elements]+":"
draw_text(text, 1, move)
element_set.each do |i|
text = $data_system.elements
draw_text(text, 1, move + @size)
end
end
#------------------------------------------------------------------------
# ● 添加狀態
#------------------------------------------------------------------------
unless plus_state_set.empty?
text = phrase[:plus_states]+":"
draw_text(text, 1, move)
plus_state_set.each do |i|
text = $data_states.name
draw_text(text, 1, move + @size)
end
end
#------------------------------------------------------------------------
# ● 解除狀態
#------------------------------------------------------------------------
unless minus_state_set.empty?
text = phrase[:minus_states]+":"
draw_text(text, 1, move)
minus_state_set.each do |i|
text = $data_states.name
draw_text(text, 1, move + @size)
end
end
#------------------------------------------------------------------------
# ● 特殊效果
#------------------------------------------------------------------------
if special.size > 0
text = phrase[:special]+":"
draw_text(text, 1, move)
special.each {|text| draw_text(text, 1, move + @size)}
end
end
#////////////////////////////////////////////////////////////////////////////
#--------------------------------------------------------------------------
# ● 技能帮助窗口
#--------------------------------------------------------------------------
def set_skill_text(skill)
#----------------------------#
# 取得屬性、狀態、說明之副本 #
#----------------------------#
description = skill.description.clone
element_set = skill.element_set.clone
plus_state_set = skill.plus_state_set.clone
minus_state_set = skill.minus_state_set.clone
# 過濾不顯示的描述
element_set -= @unshow_elements
plus_state_set -= @unshow_states
minus_state_set -= @unshow_states
# 初始化設定
x ,h, move = 0, 0, 0
phrase = @phrase
scope = @scope
#------------------#
# 取得特殊效果數據 #
#------------------#
special = []
special << phrase[:physical_attack] if skill.physical_attack #物理攻撃
special << phrase[:damage_to_mp] if skill.damage_to_mp #MPにダメージ
special << phrase[:absorb_damage] if skill.absorb_damage #ダメージを吸収
special << phrase[:ignore_defense] if skill.ignore_defense #防御力無視
#------------------------------------------------------------------------
# ● 確定背景圖片的高度
#------------------------------------------------------------------------
h += (description.size/3/@word)
h += 1 if (description.size/3%@word) > 0
now_h = h
h += 4 #効果範囲,消費MP,命中率
h += 1 unless skill.speed.zero? #速度補正値
h += 1 unless skill.base_damage.zero? #基本ダメージ
h += element_set.size + 1 if element_set.size > 0 #屬性
h += plus_state_set.size + 1 if plus_state_set.size > 0 #附加狀態
h += minus_state_set.size + 1 if minus_state_set.size > 0 #解除狀態
h += special.size + 1 if special.size > 0 #特殊效果
#------------------------------------------------------------------------
# ● 換算高度
#------------------------------------------------------------------------
self.height=h * @size + @name_size + 32
self.contents = Bitmap.new(self.width - 32,self.height - 32)
self.contents.clear
#------------------------------------------------------------------------
# ● 名字描述
#------------------------------------------------------------------------
text = skill.name
self.contents.font.color = Color.new(255, 255, 128, 255)
self.contents.font.size = @name_size
if text!=nil
self.visible = true
self.contents.draw_text(0,0, text.size*7, @name_size, text, 0)
else
self.visible = false
end
#------------------------------------------------------------------------
# ● 說明描述
#------------------------------------------------------------------------
x = 0
@y += 1
text = description
while ((text = description.slice!(/./m)) != nil)
self.contents.font.color = normal_color
self.contents.font.size = @size
self.contents.draw_text(x*@size, @y*@size+5, @size, @size, text, 0)
x+=1
if x==@word
x = 0
@y += 1
end
end
#------------------------------------------------------------------------
# ● 攻擊範圍
#------------------------------------------------------------------------
text = phrase[:scope] +":"
draw_text(text, 1, move)
text = scope[skill.scope]
draw_text(text, 1, move + @size)
#------------------------------------------------------------------------
# ● 基本ダメージ
#------------------------------------------------------------------------
unless skill.base_damage .zero?
text = skill.base_damage > 0 ? phrase[:base_damage] : phrase[:recovery]
text += ":" + skill.base_damage.abs.to_s
draw_text(text, 1, move)
end
#------------------------------------------------------------------------
# ● 消費SP描述
#------------------------------------------------------------------------
text = phrase[:mp_cost] +":"+ skill.mp_cost.to_s
draw_text(text, 1, move)
#------------------------------------------------------------------------
# ● 命中率描述
#------------------------------------------------------------------------
text = phrase[:hit] + ":" + skill.hit.to_s + "%"
draw_text(text, 1, move)
#------------------------------------------------------------------------
# ● 攻击力相关描述
#------------------------------------------------------------------------
# text = "攻击力相关: " + skill.atk_f.to_s + "%"
# draw_text(text, 1, move)
#------------------------------------------------------------------------
# ● 精神力相关描述
#------------------------------------------------------------------------
# text = "精神力相关: " + skill.spi_f.to_s + "%"
# draw_text(text, 1, move)
#------------------------------------------------------------------------
# ● 屬性
#------------------------------------------------------------------------
if element_set.size > 0
text = phrase[:elements]+":"
draw_text(text, 1, move)
element_set.each do |i|
text = $data_system.elements
draw_text(text, 1, move + @size)
end
end
#------------------------------------------------------------------------
# ● 添加狀態
#------------------------------------------------------------------------
unless plus_state_set.empty?
text = phrase[:plus_states]+":"
draw_text(text, 1, move)
plus_state_set.each do |i|
text = $data_states.name
draw_text(text, 1, move + @size)
end
end
#------------------------------------------------------------------------
# ● 解除狀態
#------------------------------------------------------------------------
unless minus_state_set.empty?
text = phrase[:minus_states]+":"
draw_text(text, 1, move)
minus_state_set.each do |i|
text = $data_states.name
draw_text(text, 1, move + @size)
end
end
#------------------------------------------------------------------------
# ● 特殊效果
#------------------------------------------------------------------------
if special.size > 0
text = phrase[:special]+":"
draw_text(text, 1, move,3)
special.each {|text| draw_text(text, 1, move + @size,3)}
end
end
end