#============================================================================== # ■ 世界樹の迷宮風戦闘画面 # 情報表示方法拡張&MPをオーバードライブに # @version 0.01 10/01/04 # @author さば缶 #------------------------------------------------------------------------------ ##============================================================================== module Saba module Sekaiju OD_TEXT = "O" end end class Scene_Battle alias saba_sekaiju_ex_update_actor_command_selection update_actor_command_selection def update_actor_command_selection return if update_state_window_visible_type1 saba_sekaiju_ex_update_actor_command_selection end def start_state_mode @state_window = Window_State.new @state_mode = true @status_window.show_all_states @enemy_state_sprite.visible = true end def update_state_window if Input.trigger?(Input::B) close_state_window end if Input.trigger?(Input::C) close_state_window end end def close_state_window return unless @state_mode if @state_window != nil @state_window.dispose @state_window = nil @status_window.hide_all_states @enemy_state_sprite.visible = false end @state_mode = false end #-------------------------------------------------------------------------- # ● 情報表示ビューポートの更新 #-------------------------------------------------------------------------- alias saba_sekaiju_ex_update_info_viewport update_info_viewport def update_info_viewport if @state_mode return end saba_sekaiju_ex_update_info_viewport end end module ActorStatus def refresh_states @canvas.clear_rect(self.x, self.y, CELL_WIDTH, CELL_HEIGHT) x = 10 y = 7 count = 0 draw_actor_atk(@canvas, 10, 7, 75) draw_actor_def(@canvas, 95, 7, 75) draw_actor_spi(@canvas, 10, 30, 75) draw_actor_agi(@canvas, 95, 30, 75) end #-------------------------------------------------------------------------- # ● 精神力を描画します。 #-------------------------------------------------------------------------- def draw_actor_spi(bitmap, x, y, width = 120) bitmap.font.color = system_color bitmap.draw_text(x + self.x, y + self.y, 40, WLH, Vocab::spi) bitmap.font.color = normal_color xr = x + width bitmap.draw_text(xr - 40 + self.x, y + self.y, 40, WLH, @actor.spi, 2) end #-------------------------------------------------------------------------- # ● 素早さを描画します。 #-------------------------------------------------------------------------- def draw_actor_agi(bitmap, x, y, width = 120) bitmap.font.color = system_color bitmap.draw_text(x + self.x, y + self.y, 40, WLH, Vocab::agi) bitmap.font.color = normal_color xr = x + width bitmap.draw_text(xr - 40 + self.x, y + self.y, 40, WLH, @actor.agi, 2) end end module ActorStatus def save_parameters return if @dummy @hp = @actor.hp @overdrive = @actor.overdrive end #-------------------------------------------------------------------------- # ● 状態異常アイコンの表示を更新します。 #-------------------------------------------------------------------------- def update_contents return if @dummy @frame += 1 if Saba::Sekaiju::DAMADE_ANIMATIONS_DURATION < @frame @frame = 0 next_state end if @hp != @actor.hp || @overdrive != @actor.overdrive refresh save_parameters end end def refresh_normal @canvas.clear_rect(self.x, self.y, CELL_WIDTH, CELL_HEIGHT) @canvas.font.color = hp_color(@actor) @canvas.draw_text(self.x + 40, self.y + 7, 128, WLH, @actor.name) @canvas.font.color = normal_color draw_actor_hp_gauge(@canvas, 10, 30, CELL_WIDTH / 2 - 15) draw_actor_od_gauge(@canvas, CELL_WIDTH / 2 + 4, 30, CELL_WIDTH / 2 - 15) draw_actor_hp(@canvas, 10, 30, CELL_WIDTH / 2 - 15) draw_actor_od_gauge_value(@canvas, CELL_WIDTH / 2 + 4, 30, CELL_WIDTH / 2 - 15) draw_actor_state(@canvas, 10, 7) end #-------------------------------------------------------------------------- # ○ ドライブゲージの通常時の色 1 の取得 #-------------------------------------------------------------------------- def od_gauge_normal_color1 color = KGC::OverDrive::GAUGE_NORMAL_START_COLOR return (color.is_a?(Integer) ? text_color(color) : color) end #-------------------------------------------------------------------------- # ○ ドライブゲージの通常時の色 2 の取得 #-------------------------------------------------------------------------- def od_gauge_normal_color2 color = KGC::OverDrive::GAUGE_NORMAL_END_COLOR return (color.is_a?(Integer) ? text_color(color) : color) end #-------------------------------------------------------------------------- # ○ ドライブゲージの最大時の色 1 の取得 #-------------------------------------------------------------------------- def od_gauge_max_color1 color = KGC::OverDrive::GAUGE_MAX_START_COLOR return (color.is_a?(Integer) ? text_color(color) : color) end #-------------------------------------------------------------------------- # ○ ドライブゲージの最大時の色 2 の取得 #-------------------------------------------------------------------------- def od_gauge_max_color2 color = KGC::OverDrive::GAUGE_MAX_END_COLOR return (color.is_a?(Integer) ? text_color(color) : color) end def draw_actor_od_gauge(bitmap, x, y, width = 120) #return unless @actor.od_gauge_visible? n = @actor.overdrive % KGC::OverDrive::GAUGE_MAX n = KGC::OverDrive::GAUGE_MAX if actor.overdrive_max? if KGC::OverDrive::ENABLE_GENERIC_GAUGE && $imported["GenericGauge"] # 汎用ゲージ file = (@actor.overdrive_max? ? KGC::OverDrive::GAUGE_MAX_IMAGE : KGC::OverDrive::GAUGE_IMAGE) draw_gauge(file, x, y, width, n, KGC::OverDrive::GAUGE_MAX, KGC::OverDrive::GAUGE_OFFSET, KGC::OverDrive::GAUGE_LENGTH, KGC::OverDrive::GAUGE_SLOPE) else # デフォルトゲージ gw = width * n / KGC::OverDrive::GAUGE_MAX gc1 = (gw == width ? od_gauge_max_color1 : od_gauge_normal_color1) gc2 = (gw == width ? od_gauge_max_color2 : od_gauge_normal_color2) bitmap.fill_rect(x + self.x, y + self.y + WLH - 8, width, 6, gauge_back_color) bitmap.gradient_fill_rect( x + self.x, y + self.y+ WLH - 8, gw, 6, gc1, gc2) end end #-------------------------------------------------------------------------- # ○ ドライブゲージ蓄積量の描画 # actor : アクター # x : 描画先 X 座標 # y : 描画先 Y 座標 # width : 幅 #-------------------------------------------------------------------------- def draw_actor_od_gauge_value(bitmap, x, y, width = 120) #return unless @actor.od_gauge_visible? bitmap.font.color = system_color bitmap.draw_text(x + self.x, y + self.y, 30, WLH, Saba::Sekaiju::OD_TEXT) bitmap.font.color = normal_color text = "" value = @actor.overdrive * 100.0 / KGC::OverDrive::GAUGE_MAX case KGC::OverDrive::GAUGE_VALUE_STYLE when KGC::OverDrive::ValueStyle::IMMEDIATE text = @actor.overdrive.to_s when KGC::OverDrive::ValueStyle::RATE text = sprintf("%d%%", actor.overdrive * 100 / KGC::OverDrive::GAUGE_MAX) when KGC::OverDrive::ValueStyle::RATE_DETAIL1 text = sprintf("%0.1f%%", value) when KGC::OverDrive::ValueStyle::RATE_DETAIL2 text = sprintf("%0.2f%%", value) when KGC::OverDrive::ValueStyle::NUMBER text = "#{actor.overdrive / KGC::OverDrive::GAUGE_MAX}" else return end last_font_size = bitmap.font.size new_font_size = KGC::OverDrive::GAUGE_VALUE_FONT_SIZE bitmap.font.size = new_font_size bitmap.draw_text( x + self.x, y + self.y, width, WLH, text, 2) bitmap.font.size = last_font_size end end class FaceSprite def draw @update_flag = false draw_face(Cache.picture("Actor" + @actor_index.to_s)) if Saba::Sekaiju::SHOW_ACTOR_IMAGE end end