FIRST_VARIABLE = 1 SECOND_VARIABLE = 2 THRID_VARIABLE = 3 #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # < Clive's Gradient Bars [Starts] = #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= #============================================================================== # ** Window_Base #------------------------------------------------------------------------------ # This class is for all in-game windows. #============================================================================== class Window_Base < Window alias raz_bars_base_exp draw_actor_exp alias raz_bars_base_parameter draw_actor_parameter def draw_map_image(x, y) bitmap = RPG::Cache.picture("Map_"+$game_map.map_id.to_s) cw = bitmap.width ch = bitmap.height src_rect = Rect.new(0, 0, cw, ch) self.contents.blt(x, y, bitmap, src_rect) end #========================================================================== # * Draw Slant Bar(by Sephiroth Spawn) #========================================================================== def draw_slant_bar(x, y, min, max, width = 152, height = 6, bar_color = Color.new(150, 0, 0, 255), end_color = Color.new(255, 255, 60, 255)) # Draw Border for i in 0..height self.contents.fill_rect(x + i, y + height - i, width + 1, 1, Color.new(50, 50, 50, 255)) end # Draw Background for i in 1..(height - 1) r = 100 * (height - i) / height + 0 * i / height g = 100 * (height - i) / height + 0 * i / height b = 100 * (height - i) / height + 0 * i / height a = 255 * (height - i) / height + 255 * i / height self.contents.fill_rect(x + i, y + height - i, width, 1, Color.new(r, b, g, a)) end # Draws Bar for i in 1..( (min / max.to_f) * width - 1) for j in 1..(height - 1) r = bar_color.red * (width - i) / width + end_color.red * i / width g = bar_color.green * (width - i) / width + end_color.green * i / width b = bar_color.blue * (width - i) / width + end_color.blue * i / width a = bar_color.alpha * (width - i) / width + end_color.alpha * i / width self.contents.fill_rect(x + i + j, y + height - j, 1, 1, Color.new(r, g, b, a)) end end end #========================================================================== # * Draw HP # actor : actor # x : draw spot x-coordinate # y : draw spot y-coordinate # width : draw spot width #========================================================================== alias :draw_actor_hp_hpsp :draw_actor_hp def draw_actor_hp(actor, x, y, width = 144) # Calculate if there is draw space for MaxHP if width - 32 >= 108 hp_x = x + width - 108 flag = true elsif width - 32 >= 48 hp_x = x + width - 48 flag = false end if $game_temp.in_battle bar_width = hp_x - x + 50 else bar_width = hp_x - x + 100 end # Draw HP draw_slant_bar(x, y + 12, actor.hp, actor.maxhp, bar_width, 6, bar_color = Color.new(150, 0, 0, 255), end_color = Color.new(255, 255, 60, 255)) self.contents.font.color = system_color self.contents.draw_text(x, y, 32, 32, $data_system.words.hp) self.contents.font.color = actor.hp == 0 ? knockout_color : actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color self.contents.draw_text(hp_x, y, 48, 32, actor.hp.to_s, 2) # Draw MaxHP if flag self.contents.font.color = normal_color self.contents.draw_text(hp_x + 48, y, 12, 32, "/", 1) self.contents.draw_text(hp_x + 60, y, 48, 32, actor.maxhp.to_s) end draw_actor_hp_hpsp(actor, x, y, width) end #========================================================================== # * Draw SP # actor : actor # x : draw spot x-coordinate # y : draw spot y-coordinate # width : draw spot width #========================================================================== alias :draw_actor_sp_hpsp :draw_actor_sp def draw_actor_sp(actor, x, y, width = 144) # Calculate if there is draw space for MaxHP if width - 32 >= 108 sp_x = x + width - 108 flag = true elsif width - 32 >= 48 sp_x = x + width - 48 flag = false end if $game_temp.in_battle bar_width = sp_x - x + 50 else bar_width = sp_x - x + 100 end # Draw SP draw_slant_bar(x, y + 12, actor.sp, actor.maxsp, bar_width, 6, bar_color = Color.new(0, 0, 155, 255), end_color = Color.new(255, 255, 255, 255)) # Draw "SP" text string self.contents.font.color = system_color self.contents.draw_text(x, y, 32, 32, $data_system.words.sp) self.contents.font.color = actor.sp == 0 ? knockout_color : actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color self.contents.draw_text(sp_x, y, 48, 32, actor.sp.to_s, 2) # Draw MaxSP if flag self.contents.font.color = normal_color self.contents.draw_text(sp_x + 48, y, 12, 32, "/", 1) self.contents.draw_text(sp_x + 60, y, 48, 32, actor.maxsp.to_s) end end #========================================================================== # * Draw EXP # actor : actor # x : draw spot x-coordinate # y : draw spot y-coordinate #========================================================================== def draw_actor_exp(actor, x, y) if actor.level == 99 draw_slant_bar(x, y + 18, 1, 1, 190, 6, bar_color = Color.new(0, 100, 0, 255), end_color = Color.new(0, 255, 0, 255)) else draw_slant_bar(x, y + 18, actor.now_exp, actor.next_exp, 190, 6, bar_color = Color.new(0, 100, 0, 255), end_color = Color.new(255, 255, 255, 255)) end raz_bars_base_exp(actor, x, y) end #========================================================================== # * Draw Parameter # actor : actor # x : draw spot x-coordinate # y : draw spot y-coordinate # type : parameter type (0-6) #========================================================================== def draw_actor_parameter(actor, x, y, type) case type when 0 para_color1 = Color.new(100,0,0) para_color2 = Color.new(255,0,0) para_begin = actor.atk when 1 para_color1 = Color.new(100,100,0) para_color2 = Color.new(255,255,0) para_begin = actor.pdef when 2 para_color1 = Color.new(100,0,100) para_color2 = Color.new(255,0,255) para_begin = actor.mdef when 3 para_color1 = Color.new(50,0,100) para_color2 = Color.new(50,0,255) para_begin = actor.str when 4 para_color1 = Color.new(0,100,0) para_color2 = Color.new(0,255,0) para_begin = actor.dex when 5 para_color1 = Color.new(50,0,50) para_color2 = Color.new(255,0,255) para_begin = actor.agi when 6 para_color1 = Color.new(0,100,100) para_color2 = Color.new(0,255,255) para_begin = actor.int end draw_slant_bar(x, y + 18, para_begin, 999, 155, 4, bar_color = para_color1, end_color = para_color2) raz_bars_base_parameter(actor, x, y, type) end #========================================================================= # * Draw Actor ATG # actor : Actor # x : draw spot x-coordinate # y : draw spot y-coordinate # width : draw spot width #========================================================================= def draw_actor_atg(actor, x, y, width = 144, height = 5) if @at_gauge == nil # plus_x: revised x-coordinate # rate_x: revised X-coordinate as (%) # plus_y: revised y-coordinate # plus_width: revised width # rate_width: revised width as (%) # height: Vertical width # align1: Type 1 ( 0: left justify 1: center justify 2: right justify ) # align2: Type 2 ( 0: Upper stuffing 1: Central arranging 2:Lower stuffing ) # align3: Gauge type 0:Left justify 1: Right justify @plus_x = 0 @rate_x = 0 @plus_y = 16 @plus_width = 0 @rate_width = 100 @width = @plus_width + width * @rate_width / 100 @height = 5 @align1 = 0 @align2 = 1 @align3 = 0 # Gradation settings: grade1: Empty gauge grade2:Actual gauge # (0:On side gradation 1:Vertically gradation 2: Slantedly gradation) grade1 = 1 grade2 = 0 # Color setting. color1: Outermost framework, color2: Medium framework # color3: Empty framework dark color, color4: Empty framework light/write color color1 = Color.new(0, 0, 0) color2 = Color.new(255, 255, 192) color3 = Color.new(0, 0, 0, 192) color4 = Color.new(0, 0, 64, 192) # Color setting of gauge # Usually color setting of the time color5 = Color.new(0, 64, 80) color6 = Color.new(255, 255, 255)#(0, 128, 160) # When gauge is MAX, color setting color7 = Color.new(80, 0, 0) color8 = Color.new(255, 255,255) #(240,0,0) # Color setting at time of cooperation skill use color9 = Color.new(80, 64, 32) color10 = Color.new(255, 255, 255) #(240, 192, 96) # Color setting at time of skill permanent residence color11 = Color.new(80, 0, 64) color12 = Color.new(255,255, 255) #(240, 0, 192) # Drawing of gauge gauge_rect_at(@width, @height, @align3, color1, color2, color3, color4, color5, color6, color7, color8, color9, color10, color11, color12, grade1, grade2) end # Variable at substituting the width of the gauge which is drawn if actor.rtp == 0 at = (width + @plus_width) * actor.atp * @rate_width / 10000 else at = (width + @plus_width) * actor.rt * @rate_width / actor.rtp / 100 end # AT Width Check if at > width at = width end # Revision such as the left stuffing central posture of gauge case @align1 when 1 x += (@rect_width - width) / 2 when 2 x += @rect_width - width end case @align2 when 1 y -= @height / 2 when 2 y -= @height end # Draw Border for i in 0..height self.contents.fill_rect(x + 1.5 + i, y + 12 + height - i, width - 2 , 3, Color.new(50, 50, 50, 255)) end # Draw Background for i in 1..(height - 1) r = 100 * (height - i) / height + 0 * i / height g = 100 * (height - i) / height + 0 * i / height b = 100 * (height - i) / height + 0 * i / height a = 255 * (height - i) / height + 255 * i / height self.contents.fill_rect(x + 1.5 + i, y + 12 + height - i, width - 3, 3, Color.new(r, b, g, a)) end # Rect_X control if @align3 == 0 rect_x = 0 else x += @width - at - 1 rect_x = @width - at - 1 end # Color setting of gauge if at == width #Gauge drawing at the time of MAX for i in 0..height self.contents.blt(x + i + @plus_x + @width * @rate_x / 100, y -i + @plus_y, @at_gauge, Rect.new(rect_x, @height * 2, at, @height)) end else if actor.rtp == 0 for i in 0..height # Usually gauge drawing of the time self.contents.blt(x + i + @plus_x + @width * @rate_x / 100, y- i + @plus_y, @at_gauge,Rect.new(rect_x, @height, at, @height)) end else if actor.spell == true for i in 0..height #Gauge drawing at time of cooperation skill use self.contents.blt(x + i + @plus_x + @width * @rate_x / 100, y - i + @plus_y, @at_gauge, Rect.new(rect_x, @height * 3, at, @height)) end else for i in 0..height # Gauge drawing at time of skill permanent residence self.contents.blt(x + i + @plus_x + @width * @rate_x / 100, y - i + @plus_y, @at_gauge, Rect.new(rect_x, @height * 4, at, @height)) end end end end end end #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # < Clive's Gradient Bars [Ends] = #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= class Window_Hud < Window_Base #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize super(0, 0, 142, 129) self.contents = Bitmap.new(width - 32, height - 32) refresh end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear self.contents.font.size = 16 self.contents.draw_text(4, 0 - 5, 80, 32, "Text:") #Edit This text self.contents.draw_text(4, 28 - 5, 80, 32, "Text:") #Edit this text self.contents.draw_text(4, 52 - 5, 80, 32, "Text:") #Edit this text draw_slant_bar(1, 82, $game_variables[8], 200, width = 98, height = 10, bar_color = Color.new(150, 0, 0, 255), end_color = Color.new(255, 255, 60, 255)) self.contents.draw_text(8, 71, 140, 32, "Alignment: " + $game_variables[8].to_s,3) self.contents.font.color = normal_color self.contents.draw_text(65, 0 - 5, 80, 32, $game_variables[FIRST_VARIABLE].to_s,3) #Edit This variable self.contents.draw_text(65, 28 - 5, 80, 32, $game_variables[SECOND_VARIABLE].to_s,3) #Edit this variable self.contents.draw_text(65, 52 - 5, 80, 32, $game_variables[THRID_VARIABLE].to_s,3) #Edit this variable end end #============================================================================== # ** Scene_Map #------------------------------------------------------------------------------ # This class performs map screen processing. #============================================================================== class Scene_Map #-------------------------------------------------------------------------- # * Main Processing #-------------------------------------------------------------------------- def main # Make sprite set @spriteset = Spriteset_Map.new # Make message window @message_window = Window_Message.new @hud = Window_Hud.new @variable1beforechange = $game_variables[FIRST_VARIABLE] @variable2beforechange = $game_variables[SECOND_VARIABLE] @variable3beforechange = $game_variables[THRID_VARIABLE] @variable8beforechange = $game_variables[8] # Transition run Graphics.transition # Main loop loop do # Update game screen Graphics.update # Update input information Input.update # Frame update update # Abort loop if screen is changed if $scene != self break end end # Prepare for transition Graphics.freeze # Dispose of sprite set @hud.dispose @spriteset.dispose # Dispose of message window @message_window.dispose # If switching to title screen if $scene.is_a?(Scene_Title) # Fade out screen Graphics.transition Graphics.freeze end end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update # Loop loop do # Update map, interpreter, and player order # (this update order is important for when conditions are fulfilled # to run any event, and the player isn't provided the opportunity to # move in an instant) $game_map.update $game_system.map_interpreter.update $game_player.update @hud.update # Update system (timer), screen $game_system.update $game_screen.update # Abort loop if player isn't place moving unless $game_temp.player_transferring break end # Run place move @hud.update transfer_player # Abort loop if transition processing if $game_temp.transition_processing break end end # Update sprite set @hud.update @spriteset.update # Update message window @message_window.update if $game_variables[FIRST_VARIABLE] > @variable1beforechange @variable1beforechange = $game_variables[FIRST_VARIABLE] @variable2beforechange = $game_variables[SECOND_VARIABLE] @variable3beforechange = $game_variables[THRID_VARIABLE] @hud.dispose return @hud= Window_Hud.new end if $game_variables[FIRST_VARIABLE] < @variable1beforechange @variable1beforechange = $game_variables[FIRST_VARIABLE] @variable2beforechange = $game_variables[SECOND_VARIABLE] @variable3beforechange = $game_variables[THRID_VARIABLE] @hud.dispose return @hud= Window_Hud.new end if $game_variables[SECOND_VARIABLE] > @variable2beforechange @variable1beforechange = $game_variables[FIRST_VARIABLE] @variable2beforechange = $game_variables[SECOND_VARIABLE] @variable3beforechange = $game_variables[THRID_VARIABLE] @hud.dispose return @hud= Window_Hud.new end if $game_variables[SECOND_VARIABLE] < @variable2beforechange @variable1beforechange = $game_variables[FIRST_VARIABLE] @variable2beforechange = $game_variables[SECOND_VARIABLE] @variable3beforechange = $game_variables[THRID_VARIABLE] @hud.dispose return @hud= Window_Hud.new end if $game_variables[THRID_VARIABLE] > @variable3beforechange @variable1beforechange = $game_variables[FIRST_VARIABLE] @variable2beforechange = $game_variables[SECOND_VARIABLE] @variable3beforechange = $game_variables[THRID_VARIABLE] @hud.dispose return @hud= Window_Hud.new end if $game_variables[THRID_VARIABLE] < @variable3beforechange @variable1beforechange = $game_variables[FIRST_VARIABLE] @variable2beforechange = $game_variables[SECOND_VARIABLE] @variable3beforechange = $game_variables[THRID_VARIABLE] @hud.dispose return @hud = Window_Hud.new end if $game_variables[8] < @variable8beforechange @variable1beforechange = $game_variables[FIRST_VARIABLE] @variable2beforechange = $game_variables[SECOND_VARIABLE] @variable3beforechange = $game_variables[THRID_VARIABLE] @variable8beforechange = $game_variables[8] @hud.dispose return @hud = Window_Hud.new end if $game_variables[8] > @variable8beforechange @variable1beforechange = $game_variables[FIRST_VARIABLE] @variable2beforechange = $game_variables[SECOND_VARIABLE] @variable3beforechange = $game_variables[THRID_VARIABLE] @variable8beforechange = $game_variables[8] @hud.dispose return @hud = Window_Hud.new end # If game over if $game_temp.gameover # Switch to game over screen $scene = Scene_Gameover.new return end # If returning to title screen if $game_temp.to_title # Change to title screen $scene = Scene_Title.new return end # If transition processing if $game_temp.transition_processing # Clear transition processing flag $game_temp.transition_processing = false # Execute transition if $game_temp.transition_name == "" Graphics.transition(20) else Graphics.transition(40, "Graphics/Transitions/" + $game_temp.transition_name) end end # If showing message window if $game_temp.message_window_showing return end # If encounter list isn't empty, and encounter count is 0 if $game_player.encounter_count == 0 and $game_map.encounter_list != [] # If event is running or encounter is not forbidden unless $game_system.map_interpreter.running? or $game_system.encounter_disabled # Confirm troop n = rand($game_map.encounter_list.size) troop_id = $game_map.encounter_list[n] # If troop is valid if $data_troops[troop_id] != nil # Set battle calling flag $game_temp.battle_calling = true $game_temp.battle_troop_id = troop_id $game_temp.battle_can_escape = true $game_temp.battle_can_lose = false $game_temp.battle_proc = nil end end end # If B button was pressed if Input.trigger?(Input::B) # If event is running, or menu is not forbidden unless $game_system.map_interpreter.running? or $game_system.menu_disabled # Set menu calling flag or beep flag $game_temp.menu_calling = true $game_temp.menu_beep = true end end # If debug mode is ON and F9 key was pressed if $DEBUG and Input.press?(Input::F9) # Set debug calling flag $game_temp.debug_calling = true end # If player is not moving unless $game_player.moving? # Run calling of each screen if $game_temp.battle_calling call_battle elsif $game_temp.shop_calling call_shop elsif $game_temp.name_calling call_name elsif $game_temp.menu_calling call_menu elsif $game_temp.save_calling call_save elsif $game_temp.debug_calling call_debug end end end #-------------------------------------------------------------------------- # * Battle Call #-------------------------------------------------------------------------- def call_battle # Clear battle calling flag $game_temp.battle_calling = false # Clear menu calling flag $game_temp.menu_calling = false $game_temp.menu_beep = false # Make encounter count $game_player.make_encounter_count # Memorize map BGM and stop BGM $game_temp.map_bgm = $game_system.playing_bgm $game_system.bgm_stop # Play battle start SE $game_system.se_play($data_system.battle_start_se) # Play battle BGM $game_system.bgm_play($game_system.battle_bgm) # Straighten player position $game_player.straighten # Switch to battle screen $scene = Scene_Battle.new end #-------------------------------------------------------------------------- # * Shop Call #-------------------------------------------------------------------------- def call_shop # Clear shop call flag $game_temp.shop_calling = false # Straighten player position $game_player.straighten # Switch to shop screen $scene = Scene_Shop.new end #-------------------------------------------------------------------------- # * Name Input Call #-------------------------------------------------------------------------- def call_name # Clear name input call flag $game_temp.name_calling = false # Straighten player position $game_player.straighten # Switch to name input screen $scene = Scene_Name.new end #-------------------------------------------------------------------------- # * Menu Call #-------------------------------------------------------------------------- def call_menu # Clear menu call flag $game_temp.menu_calling = false # If menu beep flag is set if $game_temp.menu_beep # Play decision SE $game_system.se_play($data_system.decision_se) # Clear menu beep flag $game_temp.menu_beep = false end # Straighten player position $game_player.straighten # Switch to menu screen $scene = Scene_Menu.new end #-------------------------------------------------------------------------- # * Save Call #-------------------------------------------------------------------------- def call_save # Straighten player position $game_player.straighten # Switch to save screen $scene = Scene_Save.new end #-------------------------------------------------------------------------- # * Debug Call #-------------------------------------------------------------------------- def call_debug # Clear debug call flag $game_temp.debug_calling = false # Play decision SE $game_system.se_play($data_system.decision_se) # Straighten player position $game_player.straighten # Switch to debug screen $scene = Scene_Debug.new end #-------------------------------------------------------------------------- # * Player Place Move #-------------------------------------------------------------------------- def transfer_player # Clear player place move call flag $game_temp.player_transferring = false # If move destination is different than current map if $game_map.map_id != $game_temp.player_new_map_id # Set up a new map $game_map.setup($game_temp.player_new_map_id) end # Set up player position $game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y) # Set player direction case $game_temp.player_new_direction when 2 # down $game_player.turn_down when 4 # left $game_player.turn_left when 6 # right $game_player.turn_right when 8 # up $game_player.turn_up end # Straighten player position $game_player.straighten # Update map (run parallel process event) $game_map.update # Remake sprite set @spriteset.dispose @spriteset = Spriteset_Map.new # If processing transition if $game_temp.transition_processing # Clear transition processing flag $game_temp.transition_processing = false # Execute transition Graphics.transition(20) end # Run automatic change for BGM and BGS set on the map $game_map.autoplay # Frame reset Graphics.frame_reset # Update input information Input.update end end