==============================================================================
# ?RGSS2
# STR15_????HP??? v0.9 08/01/22
#
# ·?????HP??????????
# ·??????????????????·???????????????
# ??????HP?????????????
#
#------------------------------------------------------------------------------
#
# ????
# ?0.8?0.9
# ?????
# ???????????????
# ????
#
#==============================================================================
# ¦ Sprite_Battler
#==============================================================================
class Sprite_Battler < Sprite_Base
# ???????????
GAUGE_M = "??????"
# ???????? [???, ????]
GAUGE_BC = [Color.new(0,0,0), Color.new(32,48,64)]
# ???????????? [?, ?]
GAUGE_GC = [Color.new(64,128,96), Color.new(96,192,160)]
#
GAUGE_W = 96 # ????
GAUGE_H = 6 # ?????
GAUGE_S = 8 # ??????? 2 ?????
GAUGE_T = 640 # ???????
GAUGE_O = 16 # ??????????
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
alias initialize_str15 initialize
def initialize(viewport, battler = nil)
initialize_str15(viewport, battler)
@gauge_visible = true
@gauge_visible = (battler.strnote.include?(GAUGE_M)) if @battler.is_a?(Game_Enemy)
unless @gauge_visible
b = GAUGE_BC
c = GAUGE_GC
# ?????
bitmap = Bitmap.new(GAUGE_W, GAUGE_H * 2)
bitmap.fill_rect(0, 0, GAUGE_W, GAUGE_H, b[0])
bitmap.fill_rect(1, 1, GAUGE_W - 2, GAUGE_H - 2, b[1])
bitmap.gradient_fill_rect(1, GAUGE_H + 1, GAUGE_W - 2, GAUGE_H - 2, c[0], c[1])
# ??????????
@hp_gauge_a = Sprite.new
s = @hp_gauge_a
s.bitmap = bitmap
s.src_rect.set(0, 0, GAUGE_W, GAUGE_H)
s.viewport = self.viewport
s.x = @battler.screen_x
s.y = @battler.screen_y - 8
s.z += 200
s.ox = GAUGE_W / 2
s.oy = GAUGE_H / 2
s.opacity = 0
@hp_gauge_b = Sprite.new
s = @hp_gauge_b
s.bitmap = bitmap
s.src_rect.set(0, GAUGE_H, GAUGE_W, GAUGE_H)
s.viewport = self.viewport
s.x = @battler.screen_x
s.y = @battler.screen_y - 8
s.z += 220
s.ox = GAUGE_W / 2
s.oy = GAUGE_H / 2
s.opacity = 0
@hp = @battler.hp
@gauge_w = GAUGE_W + 1
@gauge_o = 0
end
end
alias dispose_str15 dispose
def dispose
# ?????
unless @gauge_visible
@hp_gauge_a.bitmap.dispose
@hp_gauge_a.dispose
@hp_gauge_b.dispose
end
dispose_str15
end
alias update_str15 update
def update
update_str15
# ?????
unless @gauge_visible
if @hp != @battler.hp# and @battler.strgauge_update
@gauge_w = ((GAUGE_W * (@battler.hp / (@battler.maxhp * 1.0))) + 1).truncate
@gauge_o = GAUGE_T
@hp = @battler.hp
@battler.strgauge_update = false
end
# ?
nw = @hp_gauge_b.src_rect.width
sp = GAUGE_S
sr = @hp_gauge_b.src_rect
sr.width = (@gauge_w + (nw * (sp - 1))) / sp
if sr.width != @gauge_w
if sr.width > @gauge_w
sr.width -= 1
else
sr.width += 1
end
end
sr.width = 2 if sr.width <= 1 and @hp > 0
# ???
@hp_gauge_a.opacity = @gauge_o
@hp_gauge_b.opacity = @gauge_o
@gauge_o -= GAUGE_O
# ??
#~ s = @hp_gauge_a
#~ s.x = @battler.screen_x
#~ s.y = @battler.screen_y - 8
#~ s.x = s.ox + 2 if s.x < s.ox + 2
#~ s.x = 542 - s.ox if s.x > 542 - s.ox
#~ s = @hp_gauge_b
#~ s.x = @battler.screen_x
#~ s.y = @battler.screen_y - 8
#~ s.x = s.ox + 2 if s.x < s.ox + 2
#~ s.x = 544 - s.ox if s.x > 544 - s.ox
end
end
end
#==============================================================================
# ¦ Game_Battler
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
attr_accessor :strgauge_update
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
alias clear_sprite_effects_str15 clear_sprite_effects
def clear_sprite_effects
clear_sprite_effects_str15
@strgauge_update = false
end
end
#==============================================================================
# ¦ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
attr_reader :strnote
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
alias initialize_str15 initialize
def initialize(index, enemy_id)
initialize_str15(index, enemy_id)
@strnote = enemy.note
end
end
#==============================================================================
# ¦ Scene_Battle
#==============================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
alias display_hp_damage_str15 display_hp_damage
def display_hp_damage(target, obj = nil)
target.strgauge_update = true if target.hp_damage != 0
display_hp_damage_str15(target, obj)
end
end
Credits gehen an star. Einfügen bei Materials.