# [XP] 傷害字型自定義顯示
# [url]http://members.jcom.home.ne.jp/cogwheel/[/url]
class Scene_Battle
alias :main_damage :main
def main
for path in ["num", "critical", "miss"]
RPG::Cache.numeric(path)
end
main_damage
end
end
module RPG
class Sprite < ::Sprite
WIDTH = 23 # 傷害字型寬度
HEIGHT = 20 # 傷害字型高度
def damage(value, critical)
dispose_damage
if value.is_a?(Numeric)
damage_string = value.abs.to_s
else
damage_string = value.to_s
end
if value.is_a?(Numeric)
damage_string = value.abs.to_s
else
damage_string = value.to_s
end
if value.is_a?(Numeric)
if value >= 0
if critical
d_bitmap = draw_damage(value, 1)
else
d_bitmap = draw_damage(value, 0)
end
else
d_bitmap = draw_damage(value, 2)
end
else
d_bitmap = draw_damage(value, 3)
end
@_damage_sprite = ::Sprite.new
@_damage_sprite.bitmap = d_bitmap
@_damage_sprite.ox = d_bitmap.width / 2
@_damage_sprite.oy = d_bitmap.height / 2
@_damage_sprite.x = self.x + self.viewport.rect.x
@_damage_sprite.y = self.y - self.oy / 2 + self.viewport.rect.y
@_damage_sprite.z = 3000
@_damage_duration = 40
end
def draw_damage(value, element)
width = 0
if value.is_a?(Numeric)
value = value.abs
fig = value.to_s.size - 1
#==========================傷害顯示的樣式============================
if $game_switches[3628] == false
file = RPG::Cache.numeric("num") #
else
file = RPG::Cache.numeric("num_actor") #角色受傷害用的傷害字型
end
#===========================自定義數字間隔距離1==========================
if $game_switches[3628] == false
d_width = WIDTH * fig + file.rect.width / 10 #
else
d_width = WIDTH * fig + file.rect.width / 10 #角色受傷害用的傷害字型
end
#==========================爆擊特效顯示===============================
if element == 1
if $game_switches[3628] == false
critical = RPG::Cache.numeric("critical") #
else
critical = RPG::Cache.numeric("critical") #角色受傷害用的傷害字型
end
#=======================================================================
d_width = [d_width, critical.rect.width].max
d_bitmap = Bitmap.new(d_width, HEIGHT + file.rect.height / 3)
d_x = (d_width - critical.rect.width) / 2
d_bitmap.blt(d_x, 0, critical, critical.rect)
else
d_bitmap = Bitmap.new(d_width, HEIGHT + file.rect.height / 3)
end
#=========================自定義數字間隔距離2===========================
if $game_switches[3628] == false
d_x = ((d_width) - (WIDTH * fig + file.rect.width / 10)) / 2 #
else
d_x = ((d_width) - (WIDTH * fig + file.rect.width / 10)) / 2 #角色受傷害用的傷害字型
end
#======================================================================
while fig >= 0
d_bitmap.blt(d_x, HEIGHT, file, Rect.new((value / (10 ** fig)) *
file.rect.width / 10, element * file.rect.height / 3,
file.rect.width / 10, file.rect.height / 3))
#=========================自定義數字間隔距離3==========================
if $game_switches[3628] == false
d_x += WIDTH #
else
d_x += WIDTH #角色受傷害用的傷害字型
end
#======================================================================
value %= 10 ** fig
fig -= 1
end
else
case value
when ""
return Bitmap.new(1, 1)
#===========================傷害未命中顯示=============================
when "Miss"
if $game_switches[3628] == false
file = RPG::Cache.numeric("miss").dup #
else
file = RPG::Cache.numeric("miss_actor").dup #角色受傷害用的傷害字型
end
#======================================================================
else
file = RPG::Cache.numeric(value).dup
end
d_bitmap = file
end
return d_bitmap
end
end
module Cache
def self.numeric(filename)
self.load_bitmap("Graphics/DamageSkin/", filename)
end
end
end