Midnite Reaper 2 Report post Posted January 29, 2011 After a quick search on this site, I found that these scripts weren't here, so I have decided to give a link. NOTE: I claim no credits for these scripts. The melody scripts - Credit should go to Yanfly The shanghai scripts - Credit not due but do not claim as own. Terms of use: Melody: Status Menu Melody along with other Yanfly Engine scripts may be used for both non-commercial and commercial games. Providing credit is not necessary, but please do not claim credit. Shanghai: This script can be used for both non-commercial and commercial games. Credit does not need to be due for a Shanghai Simple Script. The scripts: Melody Main Menu Melody Status Menu Melody Battle Engine Shanghai Status Menu Shanghai Main Menu Script and required images are in the link. Alternatively, the scripts are in the spoiler. Melody Main Menu #=============================================================================== # # Yanfly Engine Melody - Main Menu Melody # Last Date Updated: 2010.06.13 # Level: Normal, Hard, Lunatic # # This script allows for menu item reordering along with importing in custom # script scenes with ease so that there becomes little need to change the base # menu script in order to add in a few items. This is a YEM version of the # popular KGC Custom Menu Command. No credits will be taken on part of my own # behalf for the work KGC did. All I merely did was use it to extend the # capabilities of adding in common events, imported commands, and beefed up # engine efficiency. # #=============================================================================== # Updates # ----------------------------------------------------------------------------- # o 2010.06.13 - Bugfix regarding imported commands and common events. # o 2010.05.15 - Conversion to Yanfly Engine Melody. #=============================================================================== # Instructions # ----------------------------------------------------------------------------- # To install this script, open up your script editor and copy/paste this script # to an open slot below ▼ Materials but above ▼ Main. Considering the special # nature of this script, it is highly recommended that you place this script # above all non-core scripts. Remember to save. # # Scroll down and edit the module as you see fitting for your game. # # ----------------------------------------------------------------------------- # Debug Shortcuts - Only during $TEST and $BTEST mode # ----------------------------------------------------------------------------- # During testplay mode, pressing F5 while the main menu is active will fill # all party members' HP and MP to full. #=============================================================================== $imported = {} if $imported == nil $imported["MainMenuMelody"] = true module YEM module MENU #=========================================================================== # Section I. Menu Commands # ------------------------------------------------------------------------- # Adjust the following hash to modify which commands will appear where. Use # the following table to input in the commands as you see fit. # # :items ............Default Item Menu # :skill ............Default Skill Menu # :equip ............Default Equip menu # :status ...........Default Status Menu # :save .............Default Save Menu # :system ...........Default Game End Menu # # For those that have imported KGC scripts. # # :kgc_largeparty ...Requires KGC's Large Party # :kgc_apviewer .....Requires KGC's Equip Learn Skill # :kgc_skillcp ......Requires KGC's Skill CP System # :kgc_difficulty ...Requires KGC's Battle Difficulty # :kgc_distribute ...Requires KGC's Distribute Parameter # :kgc_enemyguide ...Requires KGC's Enemy Guide # :kgc_outline ......Requires KGC's Outline # # For those who are still attached to the YERD scripts. # # :yerd_classchange .Requires YERD Subclass Selection System # :yerd_learnskill ..Requires YERD Subclass Selection System # :yerd_equipslots ..Requires YERD Equip Skill Slots # :yerd_bestiary ....Requires YERD Bestiary + Scanned Enemy #=========================================================================== MENU_COMMANDS =[ # Follow the instructions above. :items, # Default Item Menu :status, # Default Status Menu :skill, # Default Skill Menu :equip, # Default Equip menu :event2, # Common Event :save, # Default Save Menu :system, # Default Game End Menu ] # Do not remove this. # This will determine whether or not your menu uses icons. USE_ICONS = true # If you're using icons, adjust the following hash to bind the right icons # to the right command. MENU_ICONS ={ # If an icon is not present, it will use the unused icon. :unused => 176, :items => 144, :skill => 159, :equip => 44, :status => 137, :save => 149, :system => 134, } # Do not remove this. # This is the maximum number of rows to be displayed before the command # box will be cut off. MAX_ROWS = 10 # Set the alignment for the text in your menu. By default, alignment is 0. # 0..Left Align, 1..Center Align, 2..Right Align ALIGN = 0 # Setting this to true will cause the menu to shift to the right side of # the screen while moving the party status window over to the left side. MENU_RIGHT_SIDE = true # If this is set to true, the menu will not obscure the map until actor # selection is required. Events on the map will be frozen in place. ON_SCREEN_MENU = true #=========================================================================== # Section II.A. Custom Menu Command - Lunatic Mode - Common Events # ------------------------------------------------------------------------- # For those who would like to launch command events from the main menu, # modify this hash here to fit your liking. Then, add in the newly added # method to the MENU_COMMANDS array above. # # HideSw - This is the hide switch. Set to nil to not use a switch. # DisbSw - This is the disable switch. Set to nil to not use a switch. # Debug? - This item will only appear if it's $TEST mode. # CEvent - This is the common event that will launch. # Icon - This is the icon used if the option is given. # Title - This is the text that will appear. #=========================================================================== COMMON_EVENTS ={ # Follow the instructions above. # Method => [HideSw, DisbSw, Debug?, CEvent, Icon, Title Name] :event1 => [ nil, nil, true, 11, 101, "Debug"], :event2 => [ nil, nil, false, 12, 117, "Camp"], } # Do not remove this. #=========================================================================== # Section II.B. Custom Menu Command - Lunatic Mode - Imported Commands # ------------------------------------------------------------------------- # The following is what KGC originally was going to have in his script but # was actually missing it in his publicized script. This will regain # functionality and also lift the "limit" of only 100 extra commands. The # following will explain how to set up the individual options. # # HideSw - Switch used to hide the command. Set to nil if not used. # DisbSw - Switch used to disable the command. Set to nil if not used. # Actor? - Does this select an actor. Set to true if it does. # Icon - Determines what icon will be used for this item. # Title - The title text that appears for the event. # Scene - The scene used to launch the respective scene. # # Note that this does not automatically detect what will and will not # disable the command ingame. You must understand and create a work # around with them (if they do disable the commands) with switches. # After binding your imported commands, go back to MENU_COMMANDS and # insert the proper command ID at the proper location. #=========================================================================== IMPORTED_COMMANDS ={ # Follow the instructions above. # Method => [HideSw, DisbSw, Actor?, Icon, Title Name, Scene Name.new] :quests => [ 8, 9, false, 99, "Quests", "Scene_Quest"], :faction => [ 10, 11, false, 100, "Factions", "Scene_Factions"], :row => [ nil, nil, false, 101, "Rows", "Scene_Row"], :record => [ nil, nil, false, 102, "Records", "Scene_Record"], :craft => [ nil, nil, false, 103, "Crafting", "Scene_Crafting"], } # Do not remove this. #=========================================================================== # Section III.A. Multi Variable Window # ------------------------------------------------------------------------- # Imported straight from Scene Menu ReDux, this alters the gold window at # the bottom to display variables, time, steps, etc. This window appears # at the bottom of the screen. #=========================================================================== USE_MULTI_VARIABLE_WINDOW = true # Variables will be shown in this order. Use 0 to show gold. Adjust the # following information as seen necessary. VARIABLES_SHOWN = [-5, -1, -2, 0] VARIABLES_ICONS = true VARIABLES_HASH ={ # Note that value zero must exist. # VarID => [icon, Text] -5 => [ 153, "Map"], -2 => [ 48, "Steps"], -1 => [ 188, "Time"], 0 => [ 205, "Gold"], 1 => [ 200, "Jewels"], }# Do not remove this. end # MENU end # YEM #=============================================================================== # Editting anything past this point may potentially result in causing computer # damage, incontinence, explosion of user's head, coma, death, and/or halitosis. # Therefore, edit at your own risk. #=============================================================================== #=============================================================================== # Scene_Menu #=============================================================================== class Scene_Menu < Scene_Base #-------------------------------------------------------------------------- # new method: create_command_list #-------------------------------------------------------------------------- def create_command_list vocab = [] commands = [] icons = [] index_list = {} YEM::MENU::MENU_COMMANDS.each_with_index { |c,i| case c when :items index_list[:items] = commands.size vocab.push(Vocab.item) when :skill # Skills index_list[:skill] = commands.size vocab.push(Vocab.skill) when :equip # Equip index_list[:equip] = commands.size vocab.push(Vocab.equip) when :status # Status index_list[:status] = commands.size vocab.push(Vocab.status) when :save # Save index_list[:save] = commands.size vocab.push(Vocab.save) when :system # System index_list[:system] = commands.size vocab.push(Vocab.game_end) #----- KGC Imported Scripts ----- when :kgc_largeparty # KGC's Large Party next unless $imported["LargeParty"] index_list[:partyform] = commands.size @__command_partyform_index = commands.size vocab.push(Vocab.partyform) when :kgc_apviewer # KGC's AP Viewer next unless $imported["EquipLearnSkill"] index_list[:ap_viewer] = commands.size @__command_ap_viewer_index = commands.size vocab.push(Vocab.ap_viewer) when :kgc_skillcp # KGC's CP Skill System next unless $imported["SkillCPSystem"] index_list[:set_battle_skill] = commands.size @__command_set_battle_skill_index = commands.size vocab.push(Vocab.set_battle_skill) when :kgc_difficulty # KGC's Battle Difficulty next unless $imported["BattleDifficulty"] index_list[:set_difficulty] = commands.size @__command_set_difficulty_index = commands.size vocab.push(KGC::BattleDifficulty.get[:name]) when :kgc_distribute # KGC's Distribute Parameter next unless $imported["DistributeParameter"] index_list[:distribute_parameter] = commands.size @__command_distribute_parameter_index = commands.size vocab.push(Vocab.distribute_parameter) when :kgc_enemyguide # KGC's Enemy Guide next unless $imported["EnemyGuide"] index_list[:enemy_guide] = commands.size @__command_enemy_guide_index = commands.size vocab.push(Vocab.enemy_guide) when :kgc_outline # KGC's Outline next unless $imported["Outline"] index_list[:outline] = commands.size @__command_outline_index = commands.size vocab.push(Vocab.outline) #----- YERD Imported Scripts ----- when :yerd_classchange # Yanfly Subclass Class Change next unless $imported["SubclassSelectionSystem"] next unless YE::SUBCLASS::MENU_CLASS_CHANGE_OPTION next unless $game_switches[YE::SUBCLASS::ENABLE_CLASS_CHANGE_SWITCH] index_list[:classchange] = commands.size @command_class_change = commands.size vocab.push(YE::SUBCLASS::MENU_CLASS_CHANGE_TITLE) when :yerd_learnskill # Yanfly Subclass Learn Skill next unless $imported["SubclassSelectionSystem"] next unless YE::SUBCLASS::USE_JP_SYSTEM and YE::SUBCLASS::LEARN_SKILL_OPTION next unless $game_switches[YE::SUBCLASS::ENABLE_LEARN_SKILLS_SWITCH] index_list[:learnskill] = commands.size @command_learn_skill = commands.size vocab.push(YE::SUBCLASS::LEARN_SKILL_TITLE) when :yerd_equipslots # Yanfly Equip Skill System next unless $imported["EquipSkillSlots"] next unless $game_switches[YE::EQUIPSKILL::ENABLE_SLOTS_SWITCH] index_list[:equipskill] = commands.size @command_equip_skill = commands.size vocab.push(YE::EQUIPSKILL::MENU_TITLE) when :yerd_bestiary # Yanfly Bestiary next unless $imported["DisplayScannedEnemy"] next unless $game_switches[YE::MENU::MONSTER::BESTIARY_SWITCH] index_list[:bestiary] = commands.size @command_bestiary = commands.size vocab.push(YE::MENU::MONSTER::BESTIARY_TITLE) else # ---- Custom Commands ---- if YEM::MENU::COMMON_EVENTS.include?© common_event = YEM::MENU::COMMON_EVENTS[c] next if !$TEST and common_event[2] next if common_event[0] != nil and $game_switches[common_event[0]] index_list[c] = commands.size vocab.push(common_event[5]) elsif YEM::MENU::IMPORTED_COMMANDS.include?© command_array = YEM::MENU::IMPORTED_COMMANDS[c] next if command_array[0] != nil and $game_switches[command_array[0]] index_list[c] = commands.size vocab.push(command_array[4]) else; next end end commands.push© icons.push(menu_icon©) } # YEM::MENU::MENU_COMMANDS.each_with_index $game_temp.menu_command_index = index_list @menu_array = [vocab, commands, icons] end #-------------------------------------------------------------------------- # new method: menu_icon #-------------------------------------------------------------------------- def menu_icon(command) if YEM::MENU::MENU_ICONS.include?(command) return YEM::MENU::MENU_ICONS[command] elsif YEM::MENU::COMMON_EVENTS.include?(command) return YEM::MENU::COMMON_EVENTS[command][4] elsif YEM::MENU::IMPORTED_COMMANDS.include?(command) return YEM::MENU::IMPORTED_COMMANDS[command][3] else return YEM::MENU::MENU_ICONS[:unused] end end #-------------------------------------------------------------------------- # overwrite method: create_command_window #-------------------------------------------------------------------------- def create_command_window create_command_list @command_window = Window_MenuCommand.new(@menu_array) @command_window.height = [@command_window.height, YEM::MENU::MAX_ROWS * 24 + 32].min @command_window.index = [@menu_index, @menu_array[0].size - 1].min end #-------------------------------------------------------------------------- # overwrite method: update_command_selection #-------------------------------------------------------------------------- def update_command_selection if Input.trigger?(Input::B) check_debug_enable Sound.play_cancel $scene = Scene_Map.new elsif $TEST and Input.trigger?(Input::F5) # Debug Refresh Party Sound.play_recovery for member in $game_party.members member.hp += member.maxhp member.mp += member.maxmp end @status_window.refresh elsif Input.trigger?(Input::C) command = @command_window.method case command when :items # Item Command Sound.play_decision $scene = Scene_Item.new when :skill, :equip, :status # Skill, Equip, and Status Commands Sound.play_decision start_actor_selection when :save # Save Command if $game_system.save_disabled Sound.play_buzzer else Sound.play_decision $game_temp.menu_command_index[:save] $scene = Scene_File.new(true, false, false) end when :system # System Command Sound.play_decision $scene = Scene_End.new else # Custom Commands if YEM::MENU::COMMON_EVENTS.include?(command) array = YEM::MENU::COMMON_EVENTS[command] if array[1] != nil and $game_switches[array[1]] Sound.play_buzzer else Sound.play_decision $game_temp.common_event_id = array[3] $scene = Scene_Map.new end elsif YEM::MENU::IMPORTED_COMMANDS.include?(command) array = YEM::MENU::IMPORTED_COMMANDS[command] if array[1] != nil and $game_switches[array[1]] Sound.play_buzzer else Sound.play_decision if array[2] start_actor_selection else $scene = eval(array[5] + ".new") end end end end # if case check end # end if end # end update_command_selection #-------------------------------------------------------------------------- # overwrite method: update_actor_selection #-------------------------------------------------------------------------- def update_actor_selection if Input.trigger?(Input::B) Sound.play_cancel end_actor_selection @status_window.close if YEM::MENU::ON_SCREEN_MENU elsif $TEST and Input.trigger?(Input::F5) # Debug Refresh Party Sound.play_recovery for member in $game_party.members member.hp += member.maxhp member.mp += member.maxmp end @status_window.refresh elsif Input.trigger?(Input::C) $game_party.last_actor_index = @status_window.index Sound.play_decision command = @command_window.method case command when :skill # Skill Command $scene = Scene_Skill.new(@status_window.index) when :equip # Equip Command $scene = Scene_Equip.new(@status_window.index) when :status # Status Command $scene = Scene_Status.new(@status_window.index) else # Custom Commands if YEM::MENU::IMPORTED_COMMANDS.include?(command) array = YEM::MENU::IMPORTED_COMMANDS[command] $scene = eval(array[5] + ".new(@status_window.index)") end end end end #-------------------------------------------------------------------------- # overwrite method: start #-------------------------------------------------------------------------- def start super create_menu_background create_command_window if YEM::MENU::USE_MULTI_VARIABLE_WINDOW @gold_window = Window_MultiVariableWindow.new else @gold_window = Window_Gold.new(0, 360) end @status_window = Window_MenuStatus.new(160, 0) @right_side = YEM::MENU::MENU_RIGHT_SIDE if YEM::MENU::ON_SCREEN_MENU @gold_window.y = @command_window.height @status_window.openness = 0 @right_side = true if $game_player.screen_x <= 176 @right_side = false if $game_player.screen_x >= 368 $game_temp.on_screen_menu = false end if @right_side @status_window.x = 0 @command_window.x = 384 @gold_window.x = 384 end end #-------------------------------------------------------------------------- # alias method: start_actor_selection #-------------------------------------------------------------------------- alias start_actor_selection_mmz start_actor_selection unless $@ def start_actor_selection if YEM::MENU::ON_SCREEN_MENU @status_window.open end start_actor_selection_mmz end #-------------------------------------------------------------------------- # new method: create_menu_background #-------------------------------------------------------------------------- if YEM::MENU::ON_SCREEN_MENU def create_menu_background @menuback_sprite = Spriteset_Map.new end end end # Scene_Menu #============================================================================== # Imported from KGC's Custom Menu Command # to improve compatibility amongst KGC scripts #============================================================================== $imported["CustomMenuCommand"] = true class Game_Temp attr_accessor :menu_command_index attr_accessor :next_scene_actor_index attr_accessor :on_screen_menu alias initialize_KGC_CustomMenuCommand initialize unless $@ def initialize initialize_KGC_CustomMenuCommand @menu_command_index = {} @next_scene_actor_index = 0 end end module KGC module Commands module_function def call_item return if $game_temp.in_battle $game_temp.next_scene = :menu_item $game_temp.next_scene_actor_index = 0 $game_temp.menu_command_index = {} end def call_skill(actor_index = 0) return if $game_temp.in_battle $game_temp.next_scene = :menu_skill $game_temp.next_scene_actor_index = actor_index $game_temp.menu_command_index = {} end def call_equip(actor_index = 0) return if $game_temp.in_battle $game_temp.next_scene = :menu_equip $game_temp.next_scene_actor_index = actor_index $game_temp.menu_command_index = {} end def call_status(actor_index = 0) return if $game_temp.in_battle $game_temp.next_scene = :menu_status $game_temp.next_scene_actor_index = actor_index $game_temp.menu_command_index = {} end end end class Game_Interpreter include KGC::Commands end class Scene_Map < Scene_Base alias update_scene_change_KGC_CustomMenuCommand update_scene_change unless $@ def update_scene_change return if $game_player.moving? case $game_temp.next_scene when :menu_item call_menu_item when :menu_skill call_menu_skill when :menu_equip call_menu_equip when :menu_status call_menu_status else update_scene_change_KGC_CustomMenuCommand end end alias call_menu_mmz call_menu unless $@ def call_menu $game_temp.on_screen_menu = true if YEM::MENU::ON_SCREEN_MENU call_menu_mmz end def call_menu_item $game_temp.next_scene = nil $scene = Scene_Item.new end def call_menu_skill $game_temp.next_scene = nil $scene = Scene_Skill.new($game_temp.next_scene_actor_index) $game_temp.next_scene_actor_index = 0 end def call_menu_equip $game_temp.next_scene = nil $scene = Scene_Equip.new($game_temp.next_scene_actor_index) $game_temp.next_scene_actor_index = 0 end def call_menu_status $game_temp.next_scene = nil $scene = Scene_Status.new($game_temp.next_scene_actor_index) $game_temp.next_scene_actor_index = 0 end end class Scene_Menu < Scene_Base def check_debug_enable return unless Input.press?(Input::F5) return unless Input.press?(Input::F9) $TEST = true end end class Scene_Item < Scene_Base def return_scene if $game_temp.menu_command_index.has_key?(:items) $scene = Scene_Menu.new($game_temp.menu_command_index[:items]) else $scene = Scene_Map.new end end end class Scene_Skill < Scene_Base def return_scene if $game_temp.menu_command_index.has_key?(:skill) $scene = Scene_Menu.new($game_temp.menu_command_index[:skill]) else $scene = Scene_Map.new end end end class Scene_Equip < Scene_Base def return_scene if $game_temp.menu_command_index.has_key?(:equip) $scene = Scene_Menu.new($game_temp.menu_command_index[:equip]) else $scene = Scene_Map.new end end end class Scene_Status < Scene_Base def return_scene if $game_temp.menu_command_index.has_key?(:status) $scene = Scene_Menu.new($game_temp.menu_command_index[:status]) else $scene = Scene_Map.new end end end class Scene_File < Scene_Base alias return_scene_KGC_CustomMenuCommand return_scene unless $@ def return_scene if @from_title || @from_event return_scene_KGC_CustomMenuCommand elsif $game_temp.menu_command_index.has_key?(:save) $scene = Scene_Menu.new($game_temp.menu_command_index[:save]) else $scene = Scene_Map.new end end end class Scene_End < Scene_Base def return_scene if $game_temp.menu_command_index.has_key?(:system) $scene = Scene_Menu.new($game_temp.menu_command_index[:system]) else $scene = Scene_Map.new end end end #=============================================================================== # Game_Map #=============================================================================== class Game_Map #-------------------------------------------------------------------------- # map name #-------------------------------------------------------------------------- unless method_defined?(:map_name) def map_name data = load_data("Data/MapInfos.rvdata") text = data[@map_id].name.gsub(/\[.*\]/) { "" } return text end end end # Game_Map #=============================================================================== # Game_Actor #=============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # new method: now_exp #-------------------------------------------------------------------------- def now_exp return @exp - @exp_list[@level] end #-------------------------------------------------------------------------- # new method: next_exp #-------------------------------------------------------------------------- def next_exp return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0 end end # Game_Actor #=============================================================================== # Window_MultiVariableWindow #=============================================================================== class Window_MultiVariableWindow < Window_Selectable #-------------------------------------------------------------------------- # initialize #-------------------------------------------------------------------------- def initialize dh = 32 + 24 * YEM::MENU::VARIABLES_SHOWN.size dy = Graphics.height - dh super(0, dy, 160, dh) refresh end #-------------------------------------------------------------------------- # refresh #-------------------------------------------------------------------------- def refresh @data = [] for i in YEM::MENU::VARIABLES_SHOWN next unless YEM::MENU::VARIABLES_HASH.include?(i) @time_index = @data.size if i == -1 @data.push(i) end @item_max = @data.size create_contents for i in 0...@item_max draw_item(i) end end #-------------------------------------------------------------------------- # draw_item #-------------------------------------------------------------------------- def draw_item(index) rect = item_rect(index) sw = self.width - 32 dy = WLH * index self.contents.clear_rect(rect) i = @data[index] case i when -5 # Draw Map Name self.contents.draw_text(0, dy, sw, WLH, $game_map.map_name, 1) when -2 # Draw Steps if YEM::MENU::VARIABLES_ICONS text = $game_party.steps self.contents.draw_text(0, dy, sw-24, WLH, text, 2) draw_icon(YEM::MENU::VARIABLES_HASH[-2][0], sw-24, dy) else text = YEM::MENU::VARIABLES_HASH[-2][1] value = $game_party.steps cx = contents.text_size(text).width self.contents.font.color = normal_color self.contents.draw_text(0, dy, sw-cx-2, WLH, value, 2) self.contents.font.color = system_color self.contents.draw_text(0, dy, sw, WLH, text, 2) end when -1 # Draw Time if YEM::MENU::VARIABLES_ICONS text = game_time self.contents.draw_text(0, dy, sw-24, WLH, text, 2) draw_icon(YEM::MENU::VARIABLES_HASH[-1][0], sw-24, dy) else self.contents.font.color = normal_color text = game_time self.contents.draw_text(0, dy, sw, WLH, text, 1) end when 0 # Draw Gold if YEM::MENU::VARIABLES_ICONS text = $game_party.gold self.contents.draw_text(0, dy, sw-24, WLH, text, 2) draw_icon(YEM::MENU::VARIABLES_HASH[0][0], sw-24, dy) else draw_currency_value($game_party.gold, 4, dy, 120) end else # Draw Variables if YEM::MENU::VARIABLES_ICONS text = $game_variables self.contents.draw_text(0, dy, sw-24, WLH, text, 2) draw_icon(YEM::MENU::VARIABLES_HASH[0], sw-24, dy) else text = YEM::MENU::VARIABLES_HASH[1] value = $game_variables cx = contents.text_size(text).width self.contents.font.color = normal_color self.contents.draw_text(0, dy, sw-cx-2, WLH, value, 2) self.contents.font.color = system_color self.contents.draw_text(0, dy, sw, WLH, text, 2) end end end #-------------------------------------------------------------------------- # game_time #-------------------------------------------------------------------------- def game_time gametime = Graphics.frame_count / Graphics.frame_rate hours = gametime / 3600 minutes = gametime / 60 % 60 seconds = gametime % 60 result = sprintf("%d:%02d:%02d", hours, minutes, seconds) return result end #-------------------------------------------------------------------------- # update #-------------------------------------------------------------------------- if YEM::MENU::VARIABLES_SHOWN.include?(-1) def update if game_time != (Graphics.frame_count / Graphics.frame_rate) draw_item(@time_index) end super end end end # Window_MultiVariableWindow #=============================================================================== # Window_MenuCommand #=============================================================================== class Window_MenuCommand < Window_Command #-------------------------------------------------------------------------- # initialize #-------------------------------------------------------------------------- def initialize(array) @data = array[1] @icons = array[2] super(160, array[0]) end #-------------------------------------------------------------------------- # refresh #-------------------------------------------------------------------------- def refresh create_contents for i in 0...@item_max draw_item(i) end end #-------------------------------------------------------------------------- # method #-------------------------------------------------------------------------- def method; return @data[self.index]; end #-------------------------------------------------------------------------- # draw_item #-------------------------------------------------------------------------- def draw_item(index, enabled = true) rect = item_rect(index) rect.x += 4 rect.width -= 8 self.contents.clear_rect(rect) self.contents.font.color = normal_color #--- text = @commands[index] icon = @icons[index] case @data[index] when :items, :skill, :equip, :status, :kgc_apviewer, :kgc_skillcp, :kgc_distribute, :yerd_classchange, :yerd_learnskill, :yerd_equipslots enabled = ($game_party.members.size == 0 ? false : true) when :save enabled = !$game_system.save_disabled when :kgc_largeparty enabled = ($game_party.members.size == 0 ? false : true) enabled = false if !$game_party.partyform_enable? else if YEM::MENU::COMMON_EVENTS.include?(@data[index]) if YEM::MENU::COMMON_EVENTS[@data[index]][1] != nil switch_id = YEM::MENU::COMMON_EVENTS[@data[index]][1] enabled = !$game_switches[switch_id] end elsif YEM::MENU::IMPORTED_COMMANDS.include?(@data[index]) if YEM::MENU::IMPORTED_COMMANDS[@data[index]][1] != nil switch_id = YEM::MENU::IMPORTED_COMMANDS[@data[index]][1] enabled = !$game_switches[switch_id] end end end #--- self.contents.font.color.alpha = enabled ? 255 : 128 dx = rect.x; dy = rect.y; dw = rect.width if YEM::MENU::USE_ICONS and icon.is_a?(Integer) draw_icon(icon, 0, dy, enabled) dx += 20; dw -= 20 end self.contents.draw_text(dx, dy, dw, WLH, text, YEM::MENU::ALIGN) end end # Window_MenuCommand #=============================================================================== # # END OF FILE # #=============================================================================== Melody Status Menu #=============================================================================== # # Yanfly Engine Melody - Status Menu Melody # Last Date Updated: 2010.06.19 # Level: Normal, Hard # # The status menu doesn't appear to help much at all in the default RPG Maker VX # scripts. Instead, it's been altered to a centralized single actor management # screen regarding stats. Here, the player can apply stat boosters, elemental # resistance boosters, and more. # #=============================================================================== # Updates # ----------------------------------------------------------------------------- # o 2010.06.19 - Compatibility update for Equipment Overhaul. # o 2010.06.03 - General stats window refresh bugfix. # o 2010.05.24 - HECO stats are now drawn properly. # o 2010.05.19 - Finished Script. # o 2010.05.17 - Started Script. #=============================================================================== # Instructions # ----------------------------------------------------------------------------- # To install this script, open up your script editor and copy/paste this script # to an open slot below ▼ Materials but above ▼ Main. Remember to save. # # ----------------------------------------------------------------------------- # Item Tags - For Items only. # ----------------------------------------------------------------------------- # <stat growth: +x> or <stat growth: -x> # This will increase or decrease the target's base stat by x amount. Just like # items normally would in the database editor regarding MaxHP, MaxMP, ATK, DEF, # SPI, and AGI, increasing by +x will raise the maximum by that value. However, # what wasn't possible before was decreasing base stats. This function is now # added within this script. # #=============================================================================== $imported = {} if $imported == nil $imported["StatusMenuMelody"] = true module YEM module STATUS #=========================================================================== # Section I. Main Settings # ------------------------------------------------------------------------- # This section adjusts what items appear for the command window in the upper # left corner and how it appears as far as vocabulary is concerned. This # section also adjusts how the EXP gauge appears in the upper right actor # mini-status window. #=========================================================================== # This array determines what items will appear in the status scene and # what order they appear in. Remove them if you wish for them to not appear. COMMANDS =[ :general, # Displays general actor information. :boosters, # Displays the actor's parameters and item boosts. :elements, # Displays the actor's elemental affinities. :states, # Displays the actor's status effect resistances. ] # Do not remove this. # This hash determines how the vocabulary appears in your game. Modify them # as you see fit if you wish to rename certain aspects. COMMAND_VOCAB ={ :general => "General", :boosters => "Boosters", :elements => "Elements", :states => "Ailments", } # Do not remove this. # This determines the colour of the EXP bars used for the actor's exp # gauge in the status menu. EXP_TEXT = "EXP" # Text used for EXP PERCENT_EXP = "%1.2f%%" # Text format used for EXP percentage EXP_GAUGE_1 = 28 # Colour 1 for the EXP Gauge EXP_GAUGE_2 = 29 # Colour 2 for the EXP Gauge # This arrow appears in the stat comparison windows. ARROW = "→" #=========================================================================== # Section II.A. General Window # ------------------------------------------------------------------------- # This section adjusts the general window and how it appears. The general # window displays basic information for the player regarding the actor. #=========================================================================== # This array shows the stats for the left side of the window. Simply remove # a stat from this list if you don't want it to appear or reaarnage them as # you see fit. You may place other stats here, too. Note that stats that # require special scripts won't appear unless that script is installed. # Legal Stats: # :hp, :mp, :atk, :def, :spi, :res, :dex, :agi, :hit, :eva, :cri, :odds SHOWN_STATS = [:hp, :mp, :atk, :def, :spi, :res, :dex, :agi] # This constant adjusts the category column title for general page. PARAMETERS = "Parameters" EQUIPMENT = "Equipment" # Some of the more unusual stats do not have defined vocabulary to go # along with it. Adjust the following hash to give them names. STAT_VOCAB ={ :hit => "HIT", # Stat that modifies hit rate. :eva => "EVA", # Stat that modifies evasion rate. :cri => "CRI", # Stat that modifies critical rate. :odds => "AGR", # Stat that modifies aggro rate. } # Do not remove this. #=========================================================================== # Section II.B. Booster Windows # ------------------------------------------------------------------------- # This section adjusts the booster window, elements window, and status # windows. These windows provide power up opportunities for the player # and a forecast of how the new stat changes will appear. #=========================================================================== # Even if the player doesn't have the boost item, if this option is enabled # then all the boost items in the game will be revealed to the player. SHOW_ALL_BOOSTS = true # For those who would like to change the font size of the booster windows, # adjust this constant. BOOSTER_FONT_SIZE = 16 # This array contains all of the elements you want displayed and in which # order to display them in. You can display them as individual integers or # as number ranges. SHOWN_ELEMENTS = [3, 4, 5, 6..10] # Since elements do not have icons innately, use the following hash below # adjust and apply icons to them. ELEMENT_ICONS ={ 3 => 104, # Fire element. 4 => 105, # Ice element. 5 => 106, # Volt element. 6 => 108, # Earth element. 7 => 107, # Water element. 8 => 109, # Air element. 9 => 110, # Light element. 10 => 111, # Dark element. } # Do not remove this. # This array contains all of the states you want displayed and in which # order to display them in. You can display them as individual integers or # as number ranges. SHOWN_STATES = [1, 2, 3, 4..8] end # STATUS end # YEM #=============================================================================== # Editting anything past this point may potentially result in causing computer # damage, incontinence, explosion of user's head, coma, death, and/or halitosis. # Therefore, edit at your own risk. #=============================================================================== module YEM module REGEXP module ITEM STAT_GROW = /<(.*)[ ](?:BOOST|growth):[ ]([\+\-]\d+)>/i end # ITEM end # REGEXP module STATUS module_function #-------------------------------------------------------------------------- # convert_integer_array #-------------------------------------------------------------------------- def convert_integer_array(array) result = [] array.each { |i| case i when Range; result |= i.to_a when Integer; result |= end } return result end #-------------------------------------------------------------------------- # converted_contants #-------------------------------------------------------------------------- SHOWN_ELEMENTS = convert_integer_array(SHOWN_ELEMENTS) SHOWN_STATES = convert_integer_array(SHOWN_STATES) end # STATUS end # YEM #=============================================================================== # RPG::Item #=============================================================================== class RPG::Item < RPG::UsableItem #-------------------------------------------------------------------------- # public instance variables #-------------------------------------------------------------------------- attr_accessor :stat_growth #-------------------------------------------------------------------------- # common cache: yem_cache_item_smm #-------------------------------------------------------------------------- def yem_cache_item_smm return if @cached_item_smm; @cached_item_smm = true @stat_growth = {} if @stat_growth == nil case @parameter_type when 1; @stat_growth[:hp] = @parameter_points when 2; @stat_growth[:mp] = @parameter_points when 3; @stat_growth[:atk] = @parameter_points when 4; @stat_growth[:def] = @parameter_points when 5; @stat_growth[:spi] = @parameter_points when 6; @stat_growth[:agi] = @parameter_points end @parameter_points = 0 #--- self.note.split(/[\r\n]+/).each { |line| case line #--- when YEM::REGEXP::ITEM::STAT_GROW case $1.upcase when "HP", "MAXHP" type = :hp when "MP", "MAXMP", "SP", "MAXSP" type = :mp when "ATK", "ATTACK" type = :atk when "DEF", "DEFENSE" type = :def when "SPI", "INT", "SPIRIT", "INTELLIGENCE" type = :spi when "AGI", "AGILITY" type = :agi else; next end @stat_growth[type] = $2.to_i end } # self.note.split end # yem_cache_item_smm end # RPG::Item #=============================================================================== # Scene_Title #=============================================================================== class Scene_Title < Scene_Base #-------------------------------------------------------------------------- # alias method: load_bt_database #-------------------------------------------------------------------------- alias load_bt_database_smm load_bt_database unless $@ def load_bt_database load_bt_database_smm load_smm_cache end #-------------------------------------------------------------------------- # alias method: load_database #-------------------------------------------------------------------------- alias load_database_smm load_database unless $@ def load_database load_database_smm load_smm_cache end #-------------------------------------------------------------------------- # new method: load_smm_cache #-------------------------------------------------------------------------- def load_smm_cache groups = [$data_items] for group in groups for obj in group next if obj == nil obj.yem_cache_item_smm if obj.is_a?(RPG::Item) end end end end # Scene_Title #=============================================================================== # Vocab #=============================================================================== module Vocab #-------------------------------------------------------------------------- # new method: self.exp #-------------------------------------------------------------------------- def self.exp; return YEM::STATUS::EXP_TEXT; end #-------------------------------------------------------------------------- # new method: self.exp_format #-------------------------------------------------------------------------- def self.exp_format; return YEM::STATUS::PERCENT_EXP; end #-------------------------------------------------------------------------- # self.hit #-------------------------------------------------------------------------- def self.hit; return YEM::STATUS::STAT_VOCAB[:hit]; end #-------------------------------------------------------------------------- # self.eva #-------------------------------------------------------------------------- def self.eva; return YEM::STATUS::STAT_VOCAB[:eva]; end #-------------------------------------------------------------------------- # self.cri #-------------------------------------------------------------------------- def self.cri; return YEM::STATUS::STAT_VOCAB[:cri]; end #-------------------------------------------------------------------------- # self.odds #-------------------------------------------------------------------------- def self.odds; return YEM::STATUS::STAT_VOCAB[:odds]; end end # Vocab #=============================================================================== # module Icon #=============================================================================== if !$imported["BattleEngineMelody"] and !$imported["IconModuleLibrary"] module Icon #-------------------------------------------------------------------------- # self.element #-------------------------------------------------------------------------- def self.element(element_id) icon = YEM::STATUS::ELEMENT_ICONS[element_id] return (icon == nil) ? 0 : icon end #-------------------------------------------------------------------------- # self.stat #-------------------------------------------------------------------------- def self.stat(actor, item); return 0; end end # Icon end # !$imported["BattleEngineMelody"] and !$imported["IconModuleLibrary"] #=============================================================================== # Game_Temp #=============================================================================== class Game_Temp #-------------------------------------------------------------------------- # public instance variables #-------------------------------------------------------------------------- attr_accessor :last_status_index attr_accessor :status_oy #-------------------------------------------------------------------------- # new method: booster_items #-------------------------------------------------------------------------- def booster_items return @booster_items if @booster_items != nil @booster_items = [] for item in $data_items next if item == nil next if item.stat_growth == {} @booster_items.push(item) end return @booster_items end #-------------------------------------------------------------------------- # new method: element_growth_items #-------------------------------------------------------------------------- def element_growth_items return @element_growth_items if @element_growth_items != nil @element_growth_items = [] return @element_growth_items unless $imported["BattleEngineMelody"] for item in $data_items next if item == nil next if item.element_growth == {} @element_growth_items.push(item) end return @element_growth_items end #-------------------------------------------------------------------------- # new method: state_growth_items #-------------------------------------------------------------------------- def state_growth_items return @state_growth_items if @state_growth_items != nil @state_growth_items = [] return @state_growth_items unless $imported["BattleEngineMelody"] for item in $data_items next if item == nil next if item.state_growth == {} @state_growth_items.push(item) end return @state_growth_items end end # Game_Temp #=============================================================================== # Game_Battler #=============================================================================== class Game_Battler #-------------------------------------------------------------------------- # alias method: item_test #-------------------------------------------------------------------------- alias item_test_smm item_test unless $@ def item_test(user, item) return true if item.stat_growth != {} return item_test_smm(user, item) end #-------------------------------------------------------------------------- # alias method: item_growth_effect #-------------------------------------------------------------------------- alias item_growth_effect_smm item_growth_effect unless $@ def item_growth_effect(user, item) item_growth_effect_smm(user, item) create_actor_boosts if actor? if item.stat_growth != {} for key in item.stat_growth stat = key[0]; value = key[1] case stat when :hp @maxhp_plus += value if !actor? @boost_maxhp += value if actor? when :mp @maxmp_plus += value if !actor? @boost_maxmp += value if actor? when :atk @atk_plus += value if !actor? @boost_atk += value if actor? when :def @def_plus += value if !actor? @boost_def += value if actor? when :spi @spi_plus += value if !actor? @boost_spi += value if actor? when :agi @agi_plus += value if !actor? @boost_agi += value if actor? end end end end #-------------------------------------------------------------------------- # new method: create_actor_boosts #-------------------------------------------------------------------------- def create_actor_boosts @boost_maxhp = 0 if @boost_maxhp == nil @boost_maxmp = 0 if @boost_maxmp == nil @boost_atk = 0 if @boost_atk == nil @boost_def = 0 if @boost_def == nil @boost_spi = 0 if @boost_spi == nil @boost_agi = 0 if @boost_agi == nil end end # Game_Battler #=============================================================================== # Game_Actor #=============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # new method: now_exp #-------------------------------------------------------------------------- def now_exp return @exp - @exp_list[@level] end #-------------------------------------------------------------------------- # new method: next_exp #-------------------------------------------------------------------------- def next_exp return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0 end #-------------------------------------------------------------------------- # alias method: base_maxhp #-------------------------------------------------------------------------- alias base_maxhp_smm base_maxhp unless $@ def base_maxhp create_actor_boosts if @boost_maxhp == nil return base_maxhp_smm + @boost_maxhp end #-------------------------------------------------------------------------- # alias method: base_maxmp #-------------------------------------------------------------------------- alias base_maxmp_smm base_maxmp unless $@ def base_maxmp create_actor_boosts if @boost_maxmp == nil return base_maxmp_smm + @boost_maxmp end #-------------------------------------------------------------------------- # alias method: base_atk #-------------------------------------------------------------------------- alias base_atk_smm base_atk unless $@ def base_atk create_actor_boosts if @boost_atk == nil return base_atk_smm + @boost_atk end #-------------------------------------------------------------------------- # alias method: base_def #-------------------------------------------------------------------------- alias base_def_smm base_def unless $@ def base_def create_actor_boosts if @boost_def == nil return base_def_smm + @boost_def end #-------------------------------------------------------------------------- # alias method: base_spi #-------------------------------------------------------------------------- alias base_spi_smm base_spi unless $@ def base_spi create_actor_boosts if @boost_spi == nil return base_spi_smm + @boost_spi end #-------------------------------------------------------------------------- # alias method: base_agi #-------------------------------------------------------------------------- alias base_agi_smm base_agi unless $@ def base_agi create_actor_boosts if @boost_agi == nil return base_agi_smm + @boost_agi end end # Game_Actor #=============================================================================== # Window_Base #=============================================================================== class Window_Base < Window #-------------------------------------------------------------------------- # new method: draw_actor_exp #-------------------------------------------------------------------------- def draw_actor_exp(actor, x, y, width = 120) draw_actor_exp_gauge(actor, x, y, width) self.contents.font.color = system_color self.contents.draw_text(x, y, 30, WLH, Vocab.exp) self.contents.font.color = normal_color last_font_size = self.contents.font.size xr = x + width if actor.next_exp == 0 text = sprintf(Vocab.exp_format, 100.0) else text = sprintf(Vocab.exp_format, actor.now_exp * 100.0 / actor.next_exp) end self.contents.draw_text(x, y, width, WLH, text, 2) end #-------------------------------------------------------------------------- # new method: draw_actor_exp_gauge #-------------------------------------------------------------------------- def draw_actor_exp_gauge(actor, x, y, width = 120) gc0 = gauge_back_color gc1 = text_color(YEM::STATUS::EXP_GAUGE_1) gc2 = text_color(YEM::STATUS::EXP_GAUGE_2) gh = $imported["CoreFixesUpgradesMelody"] ? YEM::UPGRADE::GAUGE_HEIGHT : 6 gh += 2 if $imported["CoreFixesUpgradesMelody"] and YEM::UPGRADE::OUTLINE gy = y + WLH - 8 - (gh - 6) self.contents.fill_rect(x, gy, width, gh, gc0) if $imported["CoreFixesUpgradesMelody"] and YEM::UPGRADE::OUTLINE gy += 1 gh -= 2 width -= 2 end if actor.next_exp == 0 gbw = width else gbw = width * actor.now_exp / [actor.next_exp, 1].max end x += 1 if $imported["CoreFixesUpgradesMelody"] and YEM::UPGRADE::OUTLINE self.contents.gradient_fill_rect(x, gy, gbw, gh, gc1, gc2) end end # Window_Base #=============================================================================== # Window_Command_Centered #=============================================================================== class Window_Command_Centered < Window_Command #-------------------------------------------------------------------------- # new method: draw_item #-------------------------------------------------------------------------- def draw_item(index, enabled = true) rect = item_rect(index) rect.x += 4 rect.width -= 8 self.contents.clear_rect(rect) self.contents.font.color = normal_color self.contents.font.color.alpha = enabled ? 255 : 128 self.contents.draw_text(rect, @commands[index],1) end end # Window_Command_Centered #=============================================================================== # Window_Actor_Status #=============================================================================== class Window_Actor_Status < Window_Base #-------------------------------------------------------------------------- # initialize #-------------------------------------------------------------------------- def initialize(actor) super(160, 0, Graphics.width - 160, 128) @actor = actor refresh end #-------------------------------------------------------------------------- # actor= #-------------------------------------------------------------------------- def actor=(new_actor) @actor = new_actor refresh end #-------------------------------------------------------------------------- # refresh #-------------------------------------------------------------------------- def refresh self.contents.clear draw_actor_face(@actor, 0, 0) dx = 108; dy = 0 draw_actor_name(@actor, dx, dy) draw_actor_class(@actor, dx + 120, dy) draw_actor_level(@actor, dx, dy + WLH * 1) draw_actor_state(@actor, dx, dy + WLH * 2) draw_actor_hp(@actor, dx + 120, dy + WLH * 1) draw_actor_mp(@actor, dx + 120, dy + WLH * 2) draw_actor_exp(@actor, dx + 120, dy + WLH * 3) end end # Window_Actor_Status #=============================================================================== # Window_Status_General #=============================================================================== class Window_Status_General < Window_Base #-------------------------------------------------------------------------- # initialize #-------------------------------------------------------------------------- def initialize(actor) super(0, 128, Graphics.width, Graphics.height - 128) @actor = actor refresh end #-------------------------------------------------------------------------- # actor= #-------------------------------------------------------------------------- def actor=(new_actor) @actor = new_actor refresh end #-------------------------------------------------------------------------- # refresh #-------------------------------------------------------------------------- def refresh self.contents.clear draw_parameters(24, 0) draw_exp_info(contents.width/2, 0) draw_equipments(contents.width/2, WLH*4) end #-------------------------------------------------------------------------- # draw_parameters #-------------------------------------------------------------------------- def draw_parameters(dx, dy) self.contents.font.size = Font.default_size self.contents.font.color = system_color text = YEM::STATUS::PARAMETERS self.contents.draw_text(dx + 24, dy, contents.width/3, WLH, text, 1) dy += WLH*2 for stat in YEM::STATUS::SHOWN_STATS icon = Icon.stat(@actor, stat) case stat when :hp name = Vocab.hp stat = @actor.maxhp when :mp name = Vocab.mp stat = @actor.maxmp when :atk name = Vocab.atk stat = @actor.atk when :def name = Vocab.def stat = @actor.def when :spi name = Vocab.spi stat = @actor.spi when :res next unless $imported["RES Stat"] name = Vocab.res stat = @actor.res when :dex next unless $imported["DEX Stat"] name = Vocab.dex stat = @actor.dex when :agi name = Vocab.agi stat = @actor.agi when :hit name = Vocab.hit stat = @actor.hit stat = sprintf("%d%%", stat) when :eva name = Vocab.eva stat = @actor.eva stat = sprintf("%d%%", stat) when :cri name = Vocab.cri stat = @actor.cri stat = sprintf("%d%%", stat) when :odds name = Vocab.odds stat = @actor.odds else; next end draw_icon(icon, dx+24, dy) self.contents.font.color = system_color self.contents.draw_text(dx+48, dy, 48, WLH, name) self.contents.font.color = normal_color self.contents.draw_text(dx+96, dy, 84, WLH, stat, 2) dy += WLH end end #-------------------------------------------------------------------------- # draw_exp_info #-------------------------------------------------------------------------- def draw_exp_info(dx, dy) s1 = @actor.exp_s s2 = @actor.next_rest_exp_s s_next = sprintf(Vocab::ExpNext, Vocab::level) self.contents.font.color = system_color self.contents.draw_text(dx, dy + WLH * 0, 180, WLH, Vocab::ExpTotal) self.contents.draw_text(dx, dy + WLH * 2, 180, WLH, s_next) self.contents.font.color = normal_color self.contents.draw_text(dx, dy + WLH * 1, 180, WLH, s1, 2) self.contents.draw_text(dx, dy + WLH * 3, 180, WLH, s2, 2) end #-------------------------------------------------------------------------- # draw_equipments #-------------------------------------------------------------------------- def draw_equipments(dx, dy) self.contents.font.color = system_color self.contents.draw_text(dx, dy, 120, WLH, YEM::STATUS::EQUIPMENT) maximum = $imported["EquipmentOverhaul"] ? 4+@actor.extra_armor_number : 4 if maximum > 5 dx += 24 fx = dx dy += WLH for equip in @actor.equips draw_icon(equip.icon_index, dx, dy) unless equip == nil dx += 24 next unless dx >= fx + 24 * 5 dx = fx dy += WLH end else for i in 0..4 draw_item_name(@actor.equips, dx, dy + WLH * (i + 1)) end end end end # Window_Status_General #=============================================================================== # Window_Status_Booster #=============================================================================== class Window_Status_Booster < Window_Selectable #-------------------------------------------------------------------------- # initialize #-------------------------------------------------------------------------- def initialize(actor, help_window) @actor = actor @help_window = help_window dy = @help_window.y + @help_window.height super(0, dy, Graphics.width - 240, Graphics.height - dy) self.active = false self.index = 0 refresh end #-------------------------------------------------------------------------- # actor= #-------------------------------------------------------------------------- def actor=(new_actor) @actor = new_actor refresh end #-------------------------------------------------------------------------- # item #-------------------------------------------------------------------------- def item; return @data[self.index]; end #-------------------------------------------------------------------------- # refresh #-------------------------------------------------------------------------- def refresh @data = [] if YEM::STATUS::SHOW_ALL_BOOSTS @data = $game_temp.booster_items.clone else for item in $game_temp.booster_items next if item == nil next unless $game_party.item_number(item) > 0 @data.push(item) end end @item_max = @data.size self.index = [[self.index, @item_max-1].min, 0].max create_contents for i in 0...@item_max; draw_item(i); end end #-------------------------------------------------------------------------- # draw_item #-------------------------------------------------------------------------- def draw_item(index) rect = item_rect(index) self.contents.clear_rect(rect) item = @data[index] return if item == nil enabled = enable?(item) draw_obj_name(item, rect.clone, enabled) draw_obj_charges(item, rect.clone, enabled) draw_obj_total(item, rect.clone, enabled) end #-------------------------------------------------------------------------- # enable? #-------------------------------------------------------------------------- def enable?(item) return false if item == nil return false if $game_party.item_number(item) <= 0 clone = @actor.clone clone.item_growth_effect(clone, item) for key in item.stat_growth case key[0] when :hp return true if clone.maxhp != @actor.maxhp when :mp return true if clone.maxmp != @actor.maxmp when :atk return true if clone.atk != @actor.atk when :def return true if clone.def != @actor.def when :spi return true if clone.spi != @actor.spi when :res next unless $imported["RES Stat"] return true if clone.res != @actor.res when :dex next unless $imported["DEX Stat"] return true if clone.dex != @actor.dex when :agi return true if clone.agi != @actor.agi else; next end end return false end #-------------------------------------------------------------------------- # new method: draw_obj_name #-------------------------------------------------------------------------- def draw_obj_name(obj, rect, enabled) draw_icon(obj.icon_index, rect.x, rect.y, enabled) self.contents.font.size = Font.default_size self.contents.font.color = normal_color self.contents.font.color.alpha = enabled ? 255 : 128 rect.width -= 48 self.contents.draw_text(rect.x+24, rect.y, rect.width-24, WLH, obj.name) end #-------------------------------------------------------------------------- # new method: draw_obj_charges #-------------------------------------------------------------------------- def draw_obj_charges(obj, rect, enabled) return unless $imported["BattleEngineMelody"] return unless obj.is_a?(RPG::Item) return unless obj.consumable return if obj.charges <= 1 $game_party.item_charges = {} if $game_party.item_charges == nil $game_party.item_charges[obj.id] = obj.charges if $game_party.item_charges[obj.id] == nil charges = $game_party.item_charges[obj.id] dx = rect.x; dy = rect.y + WLH/3 self.contents.font.size = YEM::BATTLE_ENGINE::ITEM_SETTINGS[:charge] self.contents.font.color = normal_color self.contents.font.color.alpha = enabled ? 255 : 128 self.contents.draw_text(dx, dy, 24, WLH * 2/3, charges, 2) self.contents.font.size = Font.default_size end #-------------------------------------------------------------------------- # new method: draw_obj_total #-------------------------------------------------------------------------- def draw_obj_total(obj, rect, enabled) if $imported["BattleEngineMelody"] hash = YEM::BATTLE_ENGINE::ITEM_SETTINGS else hash ={ :text => ":%d", :size => Font.default_size, :colour => 0 } end number = $game_party.item_number(obj) dx = rect.x + rect.width - 36; dy = rect.y; dw = 32 text = sprintf(hash[:text], number) self.contents.font.size = hash[:size] self.contents.font.color = text_color(hash[:colour]) self.contents.font.color.alpha = enabled ? 255 : 128 self.contents.draw_text(dx, dy, dw, WLH, text, 2) end #-------------------------------------------------------------------------- # update_help #-------------------------------------------------------------------------- def update_help @help_window.set_text(item == nil ? "" : item.description) end end # Window_Status_Booster #=============================================================================== # Window_Status_Elements #=============================================================================== class Window_Status_Elements < Window_Status_Booster #-------------------------------------------------------------------------- # refresh #-------------------------------------------------------------------------- def refresh @data = [] if YEM::STATUS::SHOW_ALL_BOOSTS @data = $game_temp.element_growth_items.clone else for item in $game_temp.element_growth_items next if item == nil next unless $game_party.item_number(item) > 0 @data.push(item) end end @item_max = @data.size self.index = [[self.index, @item_max-1].min, 0].max create_contents for i in 0...@item_max; draw_item(i); end end #-------------------------------------------------------------------------- # enable? #-------------------------------------------------------------------------- def enable?(item) return false if item == nil return false if $game_party.item_number(item) <= 0 @actor.create_affinity_bonus former_rates = @actor.bonus_element_affinity.clone clone = @actor.clone clone.item_growth_effect(clone, item) @actor.bonus_element_affinity = former_rates for key in item.element_growth id = key[0] return true if @actor.element_rate(id) != clone.element_rate(id) end return false end end # Window_Status_Elements #=============================================================================== # Window_Status_States #=============================================================================== class Window_Status_States < Window_Status_Booster #-------------------------------------------------------------------------- # refresh #-------------------------------------------------------------------------- def refresh @data = [] if YEM::STATUS::SHOW_ALL_BOOSTS @data = $game_temp.state_growth_items.clone else for item in $game_temp.state_growth_items next if item == nil next unless $game_party.item_number(item) > 0 @data.push(item) end end @item_max = @data.size self.index = [[self.index, @item_max-1].min, 0].max create_contents for i in 0...@item_max; draw_item(i); end end #-------------------------------------------------------------------------- # enable? #-------------------------------------------------------------------------- def enable?(item) return false if item == nil return false if $game_party.item_number(item) <= 0 @actor.create_affinity_bonus former_rates = @actor.bonus_state_affinity.clone clone = @actor.clone clone.item_growth_effect(clone, item) @actor.bonus_state_affinity = former_rates for key in item.state_growth id = key[0] return true if @actor.state_probability(id) != clone.state_probability(id) end return false end end # Window_Status_States #=============================================================================== # Window_Status_Booster_Stats #=============================================================================== class Window_Booster_Stats < Window_Base #-------------------------------------------------------------------------- # initialize #-------------------------------------------------------------------------- def initialize(actor, main_window) @actor = actor @main_window = main_window dx = @main_window.x + @main_window.width dy = @main_window.y super(dx, dy, Graphics.width - dx, Graphics.height - dy) self.contents.font.size = YEM::STATUS::BOOSTER_FONT_SIZE refresh end #-------------------------------------------------------------------------- # actor= #-------------------------------------------------------------------------- def actor=(new_actor) @actor = new_actor refresh end #-------------------------------------------------------------------------- # refresh #-------------------------------------------------------------------------- def refresh self.contents.clear @item = @main_window.item draw_parameters end #-------------------------------------------------------------------------- # draw_parameters #-------------------------------------------------------------------------- def draw_parameters dx = 0; dy = 0; arrow = YEM::STATUS::ARROW clone = @actor.clone if @item != nil and $game_party.has_item?(@item) clone.item_growth_effect(clone, @item) end for stat in YEM::STATUS::SHOWN_STATS icon = Icon.stat(@actor, stat) case stat when :hp name = Vocab.hp stat1 = @actor.maxhp stat2 = clone.maxhp when :mp name = Vocab.mp stat1 = @actor.maxmp stat2 = clone.maxmp when :atk name = Vocab.atk stat1 = @actor.atk stat2 = clone.atk when :def name = Vocab.def stat1 = @actor.def stat2 = clone.def when :spi name = Vocab.spi stat1 = @actor.spi stat2 = clone.spi when :res next unless $imported["RES Stat"] name = Vocab.res stat1 = @actor.res stat2 = clone.res when :dex next unless $imported["DEX Stat"] name = Vocab.dex stat1 = @actor.dex stat2 = clone.dex when :agi name = Vocab.agi stat1 = @actor.agi stat2 = clone.agi else; next end draw_icon(icon, dx, dy); dx += 24 self.contents.font.color = system_color self.contents.draw_text(dx, dy, 60, WLH, name, 0); dx += 60 self.contents.font.color = normal_color self.contents.draw_text(dx, dy, 45, WLH, stat1, 2); dx += 45 self.contents.font.color = system_color self.contents.font.size = Font.default_size self.contents.draw_text(dx, dy, 30, WLH, arrow, 1); dx += 30 self.contents.font.size = YEM::STATUS::BOOSTER_FONT_SIZE if @item != nil if stat2 > stat1 self.contents.font.color = power_up_color elsif stat2 < stat1 self.contents.font.color = power_down_color else self.contents.font.color = normal_color end self.contents.draw_text(dx, dy, 45, WLH, stat2, 2) end dx = 0 dy += WLH end end end # Window_Booster_Stats #=============================================================================== # Window_Elements_Stats #=============================================================================== class Window_Elements_Stats < Window_Booster_Stats #-------------------------------------------------------------------------- # draw_parameters #-------------------------------------------------------------------------- def draw_parameters dx = 0; dy = 0; arrow = YEM::STATUS::ARROW @actor.create_affinity_bonus former_rates = @actor.bonus_element_affinity.clone clone = @actor.clone if @item != nil and $game_party.has_item?(@item) clone.item_growth_effect(clone, @item) end @actor.bonus_element_affinity = former_rates for element_id in YEM::STATUS::SHOWN_ELEMENTS icon = Icon.element(element_id) name = $data_system.elements[element_id] stat1 = @actor.element_rate(element_id) stat2 = clone.element_rate(element_id) text1 = sprintf("%s%%", stat1) text2 = sprintf("%s%%", stat2) draw_icon(icon, dx, dy); dx += 24 self.contents.font.color = system_color self.contents.draw_text(dx, dy, 60, WLH, name, 0); dx += 60 self.contents.font.color = normal_color self.contents.draw_text(dx, dy, 45, WLH, text1, 2); dx += 45 self.contents.font.color = system_color self.contents.font.size = Font.default_size self.contents.draw_text(dx, dy, 30, WLH, arrow, 1); dx += 30 self.contents.font.size = YEM::STATUS::BOOSTER_FONT_SIZE if @item != nil if stat2 < stat1 self.contents.font.color = power_up_color elsif stat2 > stat1 self.contents.font.color = power_down_color else self.contents.font.color = normal_color end self.contents.draw_text(dx, dy, 45, WLH, text2, 2) end dx = 0 dy += WLH end end end # Window_Elements_Stats #=============================================================================== # Window_States_Stats #=============================================================================== class Window_States_Stats < Window_Booster_Stats #-------------------------------------------------------------------------- # draw_parameters #-------------------------------------------------------------------------- def draw_parameters dx = 0; dy = 0; arrow = YEM::STATUS::ARROW @actor.create_affinity_bonus former_rates = @actor.bonus_state_affinity.clone clone = @actor.clone if @item != nil and $game_party.has_item?(@item) clone.item_growth_effect(clone, @item) end @actor.bonus_state_affinity = former_rates for state_id in YEM::STATUS::SHOWN_STATES state = $data_states[state_id] next if state == nil icon = state.icon_index name = state.name stat1 = @actor.state_probability(state_id) stat2 = clone.state_probability(state_id) text1 = sprintf("%s%%", stat1) text2 = sprintf("%s%%", stat2) draw_icon(icon, dx, dy); dx += 24 self.contents.font.color = system_color self.contents.draw_text(dx, dy, 60, WLH, name, 0); dx += 60 self.contents.font.color = normal_color self.contents.draw_text(dx, dy, 45, WLH, text1, 2); dx += 45 self.contents.font.color = system_color self.contents.font.size = Font.default_size self.contents.draw_text(dx, dy, 30, WLH, arrow, 1); dx += 30 self.contents.font.size = YEM::STATUS::BOOSTER_FONT_SIZE if @item != nil if stat2 < stat1 self.contents.font.color = power_up_color elsif stat2 > stat1 self.contents.font.color = power_down_color else self.contents.font.color = normal_color end self.contents.draw_text(dx, dy, 45, WLH, text2, 2) end dx = 0 dy += WLH end end end # Window_States_Stats #=============================================================================== # Scene_Status #=============================================================================== class Scene_Status < Scene_Base #-------------------------------------------------------------------------- # overwrite method: start #-------------------------------------------------------------------------- def start super create_menu_background @actor = $game_party.members[@actor_index] @status_window = Window_Actor_Status.new(@actor) @help_window = Window_Help.new @help_window.y = @status_window.height create_command_window end #-------------------------------------------------------------------------- # overwrite method: terminate #-------------------------------------------------------------------------- def terminate super dispose_menu_background @command_window.dispose @status_window.dispose @help_window.dispose for window in @windows; window.dispose unless window.disposed?; end end #-------------------------------------------------------------------------- # new method: create_command_window #-------------------------------------------------------------------------- def create_command_window @data = [] commands = [] @windows = [] for command in YEM::STATUS::COMMANDS case command when :general @general_window = Window_Status_General.new(@actor) @windows.push(@general_window) when :boosters @boosters_window = Window_Status_Booster.new(@actor, @help_window) @boosters_stats = Window_Booster_Stats.new(@actor, @boosters_window) @windows.push(@boosters_window) @windows.push(@boosters_stats) when :elements next unless $imported["BattleEngineMelody"] @elements_window = Window_Status_Elements.new(@actor, @help_window) @elements_stats = Window_Elements_Stats.new(@actor, @elements_window) @windows.push(@elements_window) @windows.push(@elements_stats) when :states next unless $imported["BattleEngineMelody"] @states_window = Window_Status_States.new(@actor, @help_window) @states_stats = Window_States_Stats.new(@actor, @states_window) @windows.push(@states_window) @windows.push(@states_stats) else; next end @data.push(command) commands.push(YEM::STATUS::COMMAND_VOCAB[command]) end @command_window = Window_Command_Centered.new(160, commands) @command_window.height = 128 @command_window.active = true #--- if $game_temp.last_status_index != nil @command_window.oy = $game_temp.status_oy @command_window.index = $game_temp.last_status_index end #--- update_visible_windows end #-------------------------------------------------------------------------- # overwrite method: next_actor #-------------------------------------------------------------------------- def next_actor @actor_index += 1 @actor_index %= $game_party.members.size set_new_actor end #-------------------------------------------------------------------------- # overwrite method: prev_actor #-------------------------------------------------------------------------- def prev_actor @actor_index += $game_party.members.size - 1 @actor_index %= $game_party.members.size set_new_actor end #-------------------------------------------------------------------------- # new method: set_new_actor #-------------------------------------------------------------------------- def set_new_actor $game_party.last_actor_index = @actor_index @actor = $game_party.members[@actor_index] @status_window.actor = @actor for window in @windows; window.actor = @actor; end end #-------------------------------------------------------------------------- # overwrite method: update #-------------------------------------------------------------------------- def update super update_menu_background if @command_window.active update_command_window elsif @boosters_window != nil and @boosters_window.active update_boosters_window elsif @elements_window != nil and @elements_window.active update_elements_window elsif @states_window != nil and @states_window.active update_states_window end end #-------------------------------------------------------------------------- # new method: update_command_window #-------------------------------------------------------------------------- def update_command_window @command_window.update if $game_temp.last_status_index != @command_window.index $game_temp.last_status_index = @command_window.index $game_temp.status_oy = @command_window.oy update_visible_windows end if Input.trigger?(Input::B) Sound.play_cancel return_scene $game_temp.last_status_index = nil $game_temp.status_oy = nil elsif Input.repeat?(Input::LEFT) Sound.play_cursor prev_actor elsif Input.repeat?(Input::RIGHT) Sound.play_cursor next_actor elsif Input.trigger?(Input::C) case @data[@command_window.index] when :boosters Sound.play_decision @boosters_window.active = true @command_window.active = false when :elements Sound.play_decision @elements_window.active = true @command_window.active = false when :states Sound.play_decision @states_window.active = true @command_window.active = false end end end #-------------------------------------------------------------------------- # new method: update_visible_windows #-------------------------------------------------------------------------- def update_visible_windows @help_window.y = Graphics.height * 8 for window in @windows; window.y = Graphics.height * 8; end case @data[@command_window.index] when :general @general_window.y = @command_window.height when :boosters @help_window.y = @command_window.height @boosters_window.y = @help_window.y + @help_window.height @boosters_stats.y = @help_window.y + @help_window.height @boosters_window.update_help when :elements @help_window.y = @command_window.height @elements_window.y = @help_window.y + @help_window.height @elements_stats.y = @help_window.y + @help_window.height @elements_window.update_help when :states @help_window.y = @command_window.height @states_window.y = @help_window.y + @help_window.height @states_stats.y = @help_window.y + @help_window.height @states_window.update_help end end #-------------------------------------------------------------------------- # new method: update_boosters_window #-------------------------------------------------------------------------- def update_boosters_window @boosters_window.update if @last_booster_index != @boosters_window.index @last_booster_index = @boosters_window.index @boosters_stats.refresh end if Input.trigger?(Input::B) Sound.play_cancel @boosters_window.active = false @command_window.active = true @general_window.refresh if @general_window != nil elsif Input.repeat?(Input::LEFT) Sound.play_cursor prev_actor elsif Input.repeat?(Input::RIGHT) Sound.play_cursor next_actor #--- Debug Commands --- elsif $TEST and Input.repeat?(Input::F8) Sound.play_equip for item in $game_temp.booster_items next if item == nil amount = Input.press?(Input::SHIFT) ? 10 : 1 + rand(3) $game_party.gain_item(item, amount) end @boosters_window.refresh elsif $TEST and Input.repeat?(Input::F7) Sound.play_equip for item in $game_temp.booster_items next if item == nil amount = Input.press?(Input::SHIFT) ? 10 : 1 + rand(3) $game_party.lose_item(item, amount) end @boosters_window.refresh elsif $TEST and Input.repeat?(Input::F6) item = @boosters_window.item return if item == nil Sound.play_equip amount = Input.press?(Input::SHIFT) ? 10 : 1 + rand(3) $game_party.gain_item(item, amount) @boosters_window.draw_item(@boosters_window.index) elsif $TEST and Input.repeat?(Input::F5) item = @boosters_window.item return if item == nil Sound.play_equip amount = Input.press?(Input::SHIFT) ? 10 : 1 + rand(3) $game_party.lose_item(item, amount) @boosters_window.draw_item(@boosters_window.index) #--- Debug Commands --- elsif Input.repeat?(Input::C) item = @boosters_window.item if @boosters_window.enable?(item) Sound.play_use_item @actor.item_growth_effect(@actor, item) $game_party.consume_item(item) @boosters_window.draw_item(@boosters_window.index) @boosters_stats.refresh if item.stat_growth.include?(:hp) or item.stat_growth.include?(:mp) @status_window.refresh end elsif Input.trigger?(Input::C) Sound.play_buzzer end end end #-------------------------------------------------------------------------- # new method: update_elements_window #-------------------------------------------------------------------------- def update_elements_window @elements_window.update if @last_elements_index != @elements_window.index @last_elements_index = @elements_window.index @elements_stats.refresh end if Input.trigger?(Input::B) Sound.play_cancel @elements_window.active = false @command_window.active = true @general_window.refresh if @general_window != nil elsif Input.repeat?(Input::LEFT) Sound.play_cursor prev_actor elsif Input.repeat?(Input::RIGHT) Sound.play_cursor next_actor #--- Debug Commands --- elsif $TEST and Input.repeat?(Input::F8) Sound.play_equip for item in $game_temp.element_growth_items next if item == nil amount = Input.press?(Input::SHIFT) ? 10 : 1 + rand(3) $game_party.gain_item(item, amount) end @elements_window.refresh elsif $TEST and Input.repeat?(Input::F7) Sound.play_equip for item in $game_temp.element_growth_items next if item == nil amount = Input.press?(Input::SHIFT) ? 10 : 1 + rand(3) $game_party.lose_item(item, amount) end @elements_window.refresh elsif $TEST and Input.repeat?(Input::F6) item = @elements_window.item return if item == nil Sound.play_equip amount = Input.press?(Input::SHIFT) ? 10 : 1 + rand(3) $game_party.gain_item(item, amount) @elements_window.draw_item(@elements_window.index) elsif $TEST and Input.repeat?(Input::F5) item = @elements_window.item return if item == nil Sound.play_equip amount = Input.press?(Input::SHIFT) ? 10 : 1 + rand(3) $game_party.lose_item(item, amount) @elements_window.draw_item(@elements_window.index) #--- Debug Commands --- elsif Input.repeat?(Input::C) item = @elements_window.item if @elements_window.enable?(item) Sound.play_use_item @actor.item_growth_effect(@actor, item) $game_party.consume_item(item) @elements_window.draw_item(@elements_window.index) @elements_stats.refresh elsif Input.trigger?(Input::C) Sound.play_buzzer end end end #-------------------------------------------------------------------------- # new method: update_states_window #-------------------------------------------------------------------------- def update_states_window @states_window.update if @last_states_index != @states_window.index @last_states_index = @states_window.index @states_stats.refresh end if Input.trigger?(Input::B) Sound.play_cancel @states_window.active = false @command_window.active = true @general_window.refresh if @general_window != nil elsif Input.repeat?(Input::LEFT) Sound.play_cursor prev_actor elsif Input.repeat?(Input::RIGHT) Sound.play_cursor next_actor #--- Debug Commands --- elsif $TEST and Input.repeat?(Input::F8) Sound.play_equip for item in $game_temp.state_growth_items next if item == nil amount = Input.press?(Input::SHIFT) ? 10 : 1 + rand(3) $game_party.gain_item(item, amount) end @states_window.refresh elsif $TEST and Input.repeat?(Input::F7) Sound.play_equip for item in $game_temp.state_growth_items next if item == nil amount = Input.press?(Input::SHIFT) ? 10 : 1 + rand(3) $game_party.lose_item(item, amount) end @states_window.refresh elsif $TEST and Input.repeat?(Input::F6) item = @states_window.item return if item == nil Sound.play_equip amount = Input.press?(Input::SHIFT) ? 10 : 1 + rand(3) $game_party.gain_item(item, amount) @states_window.draw_item(@states_window.index) elsif $TEST and Input.repeat?(Input::F5) item = @states_window.item return if item == nil Sound.play_equip amount = Input.press?(Input::SHIFT) ? 10 : 1 + rand(3) $game_party.lose_item(item, amount) @states_window.draw_item(@states_window.index) #--- Debug Commands --- elsif Input.repeat?(Input::C) item = @states_window.item if @states_window.enable?(item) Sound.play_use_item @actor.item_growth_effect(@actor, item) $game_party.consume_item(item) @states_window.draw_item(@states_window.index) @states_stats.refresh elsif Input.trigger?(Input::C) Sound.play_buzzer end end end end # Scene_Status #=============================================================================== # # END OF FILE # #=============================================================================== Shanghai Main Menu #=============================================================================== # # Shanghai Simple Script - Final Fantasy 13 Main Menu # Last Date Updated: 2010.06.02 # Level: Normal # # NOTE! This requires Yanfly Engine Melody's Main Menu Melody script to be # installed and located above this script to work. This makes your main menu # ordered like Final Fantasy 13's. #=============================================================================== # Instructions # ----------------------------------------------------------------------------- # To install this script, open up your script editor and copy/paste this script # to an open slot below ▼ Materials but above ▼ Main. Remember to save. # #=============================================================================== $imported = {} if $imported == nil $imported["FinalFantasy13Menu"] = true module SSS # This is the image file for the menu background. Place this inside of the # Graphics\System folder. MENU_BACK_IMAGE = "MenuBack" # This is the image file used for the back of each of the menu items. This # image must be 160x24 pixels and placed inside of the Graphics\System folder. MENU_BACK_ITEM_IMAGE = "MenuBackItem" # This sets the menu help window's text color. MENU_HELP_TEXT_COLOR = Color.new(0, 0, 0) # This is the text format used to write out the current map. MENU_LOCATION = "Location: %s" # This hash sets the image files for your actors. These images must be placed # inside of the Graphics\System folder and they have to be 104x288 pixels. MENU_ACTOR_IMAGES ={ 1 => "MenuRalph", 2 => "MenuUlrika", 3 => "MenuBennett", 4 => "MenuYlva", } # Remove this and perish. # This hash sets what colors belong to which class when drawn. MENU_CLASS_COLORS ={ 1 => 2, 2 => 6, 3 => 4, 4 => 5, } # Remove this and perish. # This sets the help window descripts for the menu commands. MENU_HELP_WINDOW ={ "Item" => "View and manage your party's items.", "Status" => "View a party member's status.", "Skill" => "Manage a party member's skills.", "Equip" => "Manage a party member's equipment.", "Save" => "Save your current progress.", "Game End" => "End the current game.", "System" => "Adjust the game's options.", } # Remove this and perish. end #============================================================================== # ** Window_Base #============================================================================== class Window_Base < Window #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- alias initialize_sss_ff13_menu_window_base initialize unless $@ def initialize(x, y, width, height) initialize_sss_ff13_menu_window_base(x, y, width, height) self.opacity = 0 if $scene.is_a?(Scene_Menu) end end #============================================================================== # ** Window_MenuHelp #============================================================================== class Window_MenuHelp < Window_Help #-------------------------------------------------------------------------- # * Set Text #-------------------------------------------------------------------------- def set_text(text, align = 0) if text != @text or align != @align self.contents.clear self.contents.font.shadow = false self.contents.font.color = SSS::MENU_HELP_TEXT_COLOR self.contents.draw_text(4, 0, self.width - 40, WLH, text, align) @text = text @align = align end end end #============================================================================== # ** Window_MainMenuParty #============================================================================== class Window_MainMenuParty < Window_Selectable #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize(x, y) super(x-24, y, Graphics.width-x+32, Graphics.height-y) self.active = false @column_max = [4, $game_party.members.size].max @spacing = 0 refresh end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear @data = $game_party.members @item_max = @data.size create_contents for i in 0...@item_max draw_item(i) end end #-------------------------------------------------------------------------- # * Draw Item #-------------------------------------------------------------------------- def draw_item(index) rect = item_rect(index) self.contents.clear_rect(rect) actor = @data[index] unless actor.nil? draw_actor_image(actor, rect) draw_actor_name(actor, rect) draw_actor_state(actor, rect.x, WLH*5/2, 96) draw_actor_class(actor, rect) draw_actor_level(actor, rect) draw_actor_hp(actor, rect) draw_actor_mp(actor, rect) end end #-------------------------------------------------------------------------- # * Draw Actor Image #-------------------------------------------------------------------------- def draw_actor_image(actor, rect) filename = SSS::MENU_ACTOR_IMAGES[actor.id] return if filename.nil? bitmap = Cache.system(filename) image_rect = Rect.new(2, 2, rect.width-4, 284) self.contents.blt(rect.x+2, rect.y+2, bitmap, image_rect) end #-------------------------------------------------------------------------- # * Draw Actor Name #-------------------------------------------------------------------------- def draw_actor_name(actor, rect) name = actor.name self.contents.font.size = Font.default_size self.contents.font.color = normal_color self.contents.draw_text(rect.x+4, WLH*3/2, rect.width-8, WLH, name) end #-------------------------------------------------------------------------- # * Draw Actor Class #-------------------------------------------------------------------------- def draw_actor_class(actor, rect) name = actor.class.name self.contents.font.size = Font.default_size - 4 color_id = SSS::MENU_CLASS_COLORS[actor.class.id].to_i self.contents.font.color = text_color(color_id) self.contents.draw_text(rect.x+4, WLH*0, rect.width-8, WLH, name, 2) end #-------------------------------------------------------------------------- # * Draw Actor Level #-------------------------------------------------------------------------- def draw_actor_level(actor, rect) self.contents.font.size = Font.default_size - 4 self.contents.font.color = power_up_color yy = 288 - WLH*7/2 - 8 self.contents.draw_text(rect.x+4, yy, rect.width-8, WLH, Vocab.level_a, 0) yy += WLH/2 self.contents.font.color = normal_color self.contents.font.size += 2 self.contents.draw_text(rect.x+4, yy, rect.width-8, WLH, actor.level, 2) end #-------------------------------------------------------------------------- # * Draw Actor HP #-------------------------------------------------------------------------- def draw_actor_hp(actor, rect) self.contents.font.size = Font.default_size - 4 self.contents.font.color = hp_gauge_color2 yy = 288 - WLH*5/2 - 4 self.contents.draw_text(rect.x+4, yy, rect.width-8, WLH, Vocab.hp, 0) yy += WLH/2 self.contents.font.color = normal_color self.contents.font.size += 2 self.contents.draw_text(rect.x+4, yy, rect.width-8, WLH, actor.hp, 2) end #-------------------------------------------------------------------------- # * Draw Actor MP #-------------------------------------------------------------------------- def draw_actor_mp(actor, rect) self.contents.font.size = Font.default_size - 4 self.contents.font.color = mp_gauge_color2 yy = 288 - WLH*3/2 self.contents.draw_text(rect.x+4, yy, rect.width-8, WLH, Vocab.mp, 0) yy += WLH/2 self.contents.font.color = normal_color self.contents.font.size += 2 self.contents.draw_text(rect.x+4, yy, rect.width-8, WLH, actor.mp, 2) end #-------------------------------------------------------------------------- # * Item Rect #-------------------------------------------------------------------------- def item_rect(index) rect = Rect.new(0, 0, 0, 0) rect.width = (contents.width + @spacing) / @column_max - @spacing rect.height = 288 rect.x = index % @column_max * (rect.width + @spacing) rect.y = index / @column_max * WLH return rect end end #============================================================================== # ** Window_MenuTimer #============================================================================== class Window_MenuTimer < Window_Base #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize super(0, Graphics.height - 60, 120, 56) self.contents.font.size = Font.default_size - 4 self.contents.font.shadow = false self.contents.font.color = SSS::MENU_HELP_TEXT_COLOR refresh end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear format = "%03d:%02d:%02d" @game_time = Graphics.frame_count / Graphics.frame_rate hours = @game_time / 3600 minutes = @game_time / 60 % 60 seconds = @game_time % 60 text = sprintf(format, hours, minutes, seconds) self.contents.draw_text(0, 0, contents.width-4, WLH, text, 2) end #-------------------------------------------------------------------------- # * Update #-------------------------------------------------------------------------- def update super refresh if @game_time != (Graphics.frame_count / Graphics.frame_rate) end end #============================================================================== # ** Window_MenuGold #============================================================================== class Window_MenuGold < Window_Base #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize super(100, Graphics.height - 60, 120, 56) self.contents.font.size = Font.default_size - 4 self.contents.font.shadow = false self.contents.font.color = SSS::MENU_HELP_TEXT_COLOR refresh end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear text = sprintf("%d%s", $game_party.gold, Vocab.gold) self.contents.draw_text(0, 0, contents.width-4, WLH, text, 0) end end #============================================================================== # ** Window_MenuLocation #============================================================================== class Window_MenuLocation < Window_Base #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize super(Graphics.width/2-16, Graphics.height - 60, Graphics.width/2+16, 56) self.contents.font.size = Font.default_size - 4 self.contents.font.shadow = false self.contents.font.color = SSS::MENU_HELP_TEXT_COLOR refresh end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear text = sprintf(SSS::MENU_LOCATION, $game_map.map_name) self.contents.draw_text(4, 0, contents.width, WLH, text, 0) end end #=============================================================================== # Override Main Menu Melody Settings #=============================================================================== YEM::MENU::USE_ICONS = false YEM::MENU::MENU_RIGHT_SIDE = false YEM::MENU::ON_SCREEN_MENU = false YEM::MENU::USE_MULTI_VARIABLE_WINDOW = false #============================================================================== # ** Scene_Menu #============================================================================== class Scene_Menu < Scene_Base #-------------------------------------------------------------------------- # * Start processing #-------------------------------------------------------------------------- alias start_sss_ff13_menu start unless $@ def start start_sss_ff13_menu start_ff13_menu_style end #-------------------------------------------------------------------------- # * Termination Processing #-------------------------------------------------------------------------- alias terminate_sss_ff13_menu terminate unless $@ def terminate @help_window.dispose @location_window.dispose @menu_timer_window.dispose @menubackitem_sprite.bitmap.dispose @menubackitem_sprite.dispose terminate_sss_ff13_menu end #-------------------------------------------------------------------------- # * Create Background for Menu Screen #-------------------------------------------------------------------------- def create_menu_background @menuback_sprite = Sprite.new @menuback_sprite.bitmap = Cache.system(SSS::MENU_BACK_IMAGE) update_menu_background end #-------------------------------------------------------------------------- # * Update Background for Menu Screen #-------------------------------------------------------------------------- def update_menu_background super @menubackitem_sprite.update unless @menubackitem_sprite.nil? @menu_timer_window.update unless @menu_timer_window.nil? end #-------------------------------------------------------------------------- # * Create Menu Back Items #-------------------------------------------------------------------------- def create_menu_back_items @menubackitem_sprite = Sprite.new width = 160 height = @command_window.height-32 @menubackitem_sprite.bitmap = Bitmap.new(width, height) bitmap = Cache.system(SSS::MENU_BACK_ITEM_IMAGE) rect = Rect.new(0, 0, 160, 24) y = 0 loop do break if y >= height @menubackitem_sprite.bitmap.blt(0, y, bitmap, rect) y += 24 end @menubackitem_sprite.y = @command_window.y+16 end #-------------------------------------------------------------------------- # * Start Final Fantasy 13 Menu Style #-------------------------------------------------------------------------- def start_ff13_menu_style @gold_window.dispose @gold_window = Window_MenuGold.new @menu_timer_window = Window_MenuTimer.new @location_window = Window_MenuLocation.new @help_window = Window_MenuHelp.new @help_window.x += 48 @help_window.width -= 48 @help_window.create_contents @help_window.contents.font.size = Font.default_size - 4 @command_window.y = @help_window.height - 9 @status_window.dispose x = @command_window.width y = @help_window.height-9 @status_window = Window_MainMenuParty.new(x, y) @command_window.x -= 4 @help_window.y += 12 update_help_window create_menu_back_items end #-------------------------------------------------------------------------- # * Update Command Selection #-------------------------------------------------------------------------- alias update_command_selection_sss_ff13_menu update_command_selection unless $@ def update_command_selection update_help_window update_command_selection_sss_ff13_menu end #-------------------------------------------------------------------------- # * Update Help Window #-------------------------------------------------------------------------- def update_help_window return if @help_window_index == @command_window.index @help_window_index = @command_window.index commands = @command_window.commands text = SSS::MENU_HELP_WINDOW[commands[@help_window_index]].to_s @help_window.set_text(text) end end #=============================================================================== # # END OF FILE # #=============================================================================== Images needed: MenuBack.png MenuBackItem.png MenuRalph.png MenuUlrika.png MenuBennet.png MenuYlva.png Shanghai Status Menu #=============================================================================== # # Shanghai Simple Script - Final Fantasy 13 Status Menu # Last Date Updated: 2010.06.26 # Level: Normal # # NOTE! This requires Yanfly Engine Melody's Status Menu Melody script to be # installed and located above this script to work. This makes your status menu # ordered like Final Fantasy 13's. #=============================================================================== # Instructions # ----------------------------------------------------------------------------- # To install this script, open up your script editor and copy/paste this script # to an open slot below ▼ Materials but above ▼ Main. Remember to save. # #=============================================================================== $imported = {} if $imported == nil $imported["FinalFantasy13StatusMenu"] = true module SSS # This is the image used for the header and footer of the profile scenes. # Must be 544x416 pixels or whatever resolution size you're using. MENU_BACK_PROFILE_IMAGE = "ProfileBack" # This is the image used for the item back image. Must be 286x24 pixels. MENU_BACK_PROFILE_ITEM = "ProfileItem" # This sets the menu help window's text color. MENU_HELP_TEXT_COLOR = Color.new(0, 0, 0) # This is the text format used to write out the current map. MENU_LOCATION = "Location: %s" # This hash sets the image files for your actors. These images must be placed # inside of the Graphics\System folder and they have to be 544x416 pixels or # whatever resolution size you're using. MENU_PROFILE_IMAGES ={ 1 => "ProfileRalph", 2 => "ProfileUlrika", 3 => "ProfileBennett", 4 => "ProfileYlva", } # Remove this and perish. # This is the text used to write out various status menu text items. MENU_STATUS_OPTIONS = "Options" MENU_STATUS_PARAM = "Parameters" MENU_STATUS_BOOSTER = "Boost Items" MENU_STATUS_ELEMENT = "Element Items" MENU_STATUS_STATES = "Status Items" end #============================================================================== # ** Game_Actor #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # * Public Instance Variables #-------------------------------------------------------------------------- attr_accessor :boost_dex attr_accessor :boost_res end #============================================================================== # ** Window_Base #============================================================================== class Window_Base < Window #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- alias initialize_sss_ff13_status_menu_window_base initialize unless $@ def initialize(x, y, width, height) initialize_sss_ff13_status_menu_window_base(x, y, width, height) self.opacity = 0 if $scene.is_a?(Scene_Status) end end #============================================================================== # ** Window_Actor_Status #============================================================================== class Window_Actor_Status < Window_Base #-------------------------------------------------------------------------- # refresh #-------------------------------------------------------------------------- def refresh self.contents.clear dx = 120; dy = 0 difference = contents.width-124-dx-4 draw_actor_name(@actor, dx, dy) draw_actor_class(@actor, contents.width-124, dy) draw_actor_level(@actor, dx, dy + WLH * 1) draw_actor_hp(@actor, contents.width-124, dy + WLH * 1) draw_actor_mp(@actor, contents.width-124, dy + WLH * 2) draw_actor_exp(@actor, dx, dy + WLH * 2, difference) end end #============================================================================== # ** Window_Underscore #============================================================================== class Window_Underscore < Window_Base #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize(align = 0) super(0, 0, Graphics.width, 56) @align = align refresh end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear self.contents.font.name = ["UmePlus Gothic", "Courier New"] self.contents.font.size += 4 text = "―――――――――――――――――――――――――――――――――――――――――――――――――――――――" self.contents.draw_text(0, 0, contents.width, WLH, text, @align) end end #============================================================================== # ** Window_MenuHelp #============================================================================== class Window_MenuHelp < Window_Help #-------------------------------------------------------------------------- # * Set Text #-------------------------------------------------------------------------- def set_text(text, align = 0) if text != @text or align != @align self.contents.clear self.contents.font.shadow = false self.contents.font.color = SSS::MENU_HELP_TEXT_COLOR self.contents.draw_text(4, 0, self.width - 40, WLH, text, align) @text = text @align = align end end end #============================================================================== # ** Window_MenuTimer #============================================================================== class Window_MenuTimer < Window_Base #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize super(0, Graphics.height - 60, 120, 56) self.contents.font.size = Font.default_size - 4 self.contents.font.shadow = false self.contents.font.color = SSS::MENU_HELP_TEXT_COLOR refresh end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear format = "%03d:%02d:%02d" @game_time = Graphics.frame_count / Graphics.frame_rate hours = @game_time / 3600 minutes = @game_time / 60 % 60 seconds = @game_time % 60 text = sprintf(format, hours, minutes, seconds) self.contents.draw_text(0, 0, contents.width-4, WLH, text, 2) end #-------------------------------------------------------------------------- # * Update #-------------------------------------------------------------------------- def update super refresh if @game_time != (Graphics.frame_count / Graphics.frame_rate) end end #============================================================================== # ** Window_MenuGold #============================================================================== class Window_MenuGold < Window_Base #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize super(100, Graphics.height - 60, 120, 56) self.contents.font.size = Font.default_size - 4 self.contents.font.shadow = false self.contents.font.color = SSS::MENU_HELP_TEXT_COLOR refresh end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear text = sprintf("%d%s", $game_party.gold, Vocab.gold) self.contents.draw_text(0, 0, contents.width-4, WLH, text, 0) end end #============================================================================== # ** Window_MenuLocation #============================================================================== class Window_MenuLocation < Window_Base #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize super(Graphics.width/2-16, Graphics.height - 60, Graphics.width/2+16, 56) self.contents.font.size = Font.default_size - 4 self.contents.font.shadow = false self.contents.font.color = SSS::MENU_HELP_TEXT_COLOR refresh end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear text = sprintf(SSS::MENU_LOCATION, $game_map.map_name) self.contents.draw_text(4, 0, contents.width, WLH, text, 0) end end #=============================================================================== # Override Status Menu Melody Settings #=============================================================================== YEM::STATUS::BOOSTER_FONT_SIZE = 16 YEM::STATUS::COMMANDS = [:boosters, :elements, :states] #============================================================================== # ** Scene_Status #============================================================================== class Scene_Status < Scene_Base #-------------------------------------------------------------------------- # public instance variables #-------------------------------------------------------------------------- attr_accessor :actor #-------------------------------------------------------------------------- # * Start processing #-------------------------------------------------------------------------- alias start_sss_ff13_status_menu start unless $@ def start for member in $game_party.members member.boost_dex = 0 if member.boost_dex == nil member.boost_res = 0 if member.boost_res == nil end start_sss_ff13_status_menu start_ff13_menu_style end #-------------------------------------------------------------------------- # * Start Final Fantasy 13 Menu Style #-------------------------------------------------------------------------- def start_ff13_menu_style @gold_window = Window_MenuGold.new @menu_timer_window = Window_MenuTimer.new @location_window = Window_MenuLocation.new @help_window.dispose @help_window = Window_MenuHelp.new @help_window.x += 48 @help_window.width -= 48 @help_window.create_contents @help_window.contents.font.size = Font.default_size - 4 for window in @windows next unless window.is_a?(Window_Selectable) window.help_window = @help_window end @command_window.y = @help_window.height+2 @command_window.height = 24*3+32 @command_window.x += (Graphics.width-240-@command_window.width-32)/2 @help_window.y += 12 @status_window.y = @command_window.y - 16 @status_window.x += 16 unless @boosters_window.nil? @boosters_window.x += 8 @boosters_window.width -= 16 @boosters_window.create_contents @boosters_window.refresh end unless @elements_window.nil? @elements_window.x += 8 @elements_window.width -= 16 @elements_window.create_contents @elements_window.refresh end unless @states_window.nil? @states_window.x += 8 @states_window.width -= 16 @states_window.create_contents @states_window.refresh end create_underscore_windows create_dummy_text_windows create_item_image update_visible_windows end #-------------------------------------------------------------------------- # * Create Underscore Windows #-------------------------------------------------------------------------- def create_underscore_windows @underscore_window1 = Window_Underscore.new(2) @underscore_window2 = Window_Underscore.new(0) @underscore_window3 = Window_Underscore.new(0) @underscore_window1.y = @command_window.y + @command_window.height - 40 @underscore_window1.x = -Graphics.width/3-60 @underscore_window2.y = @command_window.y + @command_window.height - 40 @underscore_window2.x = @underscore_window1.x + @underscore_window1.width-2 @underscore_window3.x = @underscore_window1.x @underscore_window3.y = @help_window.y + @help_window.height-24 end #-------------------------------------------------------------------------- # * Create Dummy Text Windows #-------------------------------------------------------------------------- def create_dummy_text_windows # Lower Left @dummy_stats1_window = Window_Base.new(0, 0, Graphics.width, 56) @dummy_stats1_window.contents.font.size = YEM::EQUIP::STAT_FONT_SIZE rect = Rect.new(0, 0, @dummy_stats1_window.contents.width, 24) text = SSS::MENU_STATUS_BOOSTER @dummy_stats1_window.contents.draw_text(rect, text, 2) @dummy_stats1_window.x = @underscore_window1.x-4 @dummy_stats1_window.y = @underscore_window1.y-8 # Lower Right @dummy_stats2_window = Window_Base.new(0, 0, Graphics.width, 56) @dummy_stats2_window.contents.font.size = YEM::EQUIP::STAT_FONT_SIZE rect = Rect.new(0, 0, @dummy_stats2_window.contents.width, 24) text = SSS::MENU_STATUS_PARAM @dummy_stats2_window.contents.draw_text(rect, text, 0) @dummy_stats2_window.x = @underscore_window2.x+4 @dummy_stats2_window.y = @underscore_window2.y-8 # Upper Left @dummy_stats3_window = Window_Base.new(0, 0, Graphics.width, 56) @dummy_stats3_window.contents.font.size = YEM::EQUIP::STAT_FONT_SIZE rect = Rect.new(0, 0, @dummy_stats3_window.contents.width, 24) text = SSS::MENU_STATUS_OPTIONS @dummy_stats3_window.contents.draw_text(rect, text, 2) @dummy_stats3_window.x = @underscore_window3.x-4 @dummy_stats3_window.y = @underscore_window3.y-8 end #-------------------------------------------------------------------------- # * Create Item Image #-------------------------------------------------------------------------- def create_item_image @item_back_sprite = Sprite.new bitmap_w = 286 item_window_height = @command_window.y + @command_window.height - 25 bitmap_h = @boosters_window.nil? ? 8 : (@boosters_window.height-32)/24 @item_back_sprite.bitmap = Bitmap.new(bitmap_w, bitmap_h*24) rect = Rect.new(0, 0, 286, 24) source = Cache.system(SSS::MENU_BACK_PROFILE_ITEM) yy = 0 bitmap_h.times do @item_back_sprite.bitmap.blt(0, yy, source, rect) yy += 24 end end #-------------------------------------------------------------------------- # * Termination Processing #-------------------------------------------------------------------------- alias terminate_sss_ff13_status_menu terminate unless $@ def terminate @gold_window.dispose @menu_timer_window.dispose @profile_back_sprite.bitmap.dispose @profile_back_sprite.dispose @location_window.dispose @underscore_window1.dispose @underscore_window2.dispose @underscore_window3.dispose @dummy_stats1_window.dispose @dummy_stats2_window.dispose @dummy_stats3_window.dispose @item_back_sprite.bitmap.dispose @item_back_sprite.dispose terminate_sss_ff13_status_menu end #-------------------------------------------------------------------------- # * Create Background for Menu Screen #-------------------------------------------------------------------------- def create_menu_background @menuback_sprite.dispose unless @menuback_sprite.nil? @menuback_sprite = Sprite.new @actor = $game_party.members[@actor_index] filename = SSS::MENU_PROFILE_IMAGES[@actor.id] filename = SSS::MENU_PROFILE_IMAGES[1] if filename.nil? @menuback_sprite.bitmap = Cache.system(filename) blur_times = 2 blur_times.times do @menuback_sprite.bitmap.blur end @menuback_sprite.color.set(16, 16, 16, 64) @profile_back_sprite.dispose unless @profile_back_sprite.nil? @profile_back_sprite = Sprite.new @profile_back_sprite.bitmap = Cache.system(SSS::MENU_BACK_PROFILE_IMAGE) update_menu_background end #-------------------------------------------------------------------------- # * Update Background for Menu Screen #-------------------------------------------------------------------------- def update_menu_background super @gold_window.update unless @gold_window.nil? @menu_timer_window.update unless @menu_timer_window.nil? @profile_back_sprite.update unless @profile_back_sprite.nil? end #-------------------------------------------------------------------------- # * Update Visible Windows #-------------------------------------------------------------------------- def update_visible_windows @help_window.y = Graphics.height * 8 for window in @windows; window.y = Graphics.height * 8; end @item_back_sprite.y = Graphics.height*8 unless @item_back_sprite.nil? item_window_height = @command_window.y + @command_window.height - 25 case @data[@command_window.index] when :general @general_window.y = @command_window.height when :boosters @help_window.y = 12 @boosters_window.y = item_window_height @boosters_stats.y = item_window_height @boosters_window.update_help unless @dummy_stats1_window.nil? @dummy_stats1_window.contents.clear rect = Rect.new(0, 0, @dummy_stats1_window.contents.width, 24) text = SSS::MENU_STATUS_BOOSTER @dummy_stats1_window.contents.draw_text(rect, text, 2) end unless @item_back_sprite.nil? @item_back_sprite.y = item_window_height+16 end when :elements @help_window.y = 12 @elements_window.y = item_window_height @elements_stats.y = item_window_height @elements_window.update_help unless @dummy_stats1_window.nil? @dummy_stats1_window.contents.clear rect = Rect.new(0, 0, @dummy_stats1_window.contents.width, 24) text = SSS::MENU_STATUS_ELEMENT @dummy_stats1_window.contents.draw_text(rect, text, 2) end unless @item_back_sprite.nil? @item_back_sprite.y = item_window_height+16 end when :states @help_window.y = 12 @states_window.y = item_window_height @states_stats.y = item_window_height @states_window.update_help unless @dummy_stats1_window.nil? @dummy_stats1_window.contents.clear rect = Rect.new(0, 0, @dummy_stats1_window.contents.width, 24) text = SSS::MENU_STATUS_STATES @dummy_stats1_window.contents.draw_text(rect, text, 2) end unless @item_back_sprite.nil? @item_back_sprite.y = item_window_height+16 end end end #-------------------------------------------------------------------------- # * Set New Actor #-------------------------------------------------------------------------- alias set_new_actor_sss_ff13_status_menu set_new_actor unless $@ def set_new_actor set_new_actor_sss_ff13_status_menu Graphics.freeze create_menu_background Graphics.transition(10) end end #=============================================================================== # # END OF FILE # #=============================================================================== Images needed: ProfileBack.png ProfileItem.png ProfileRaplph.png ProfileUlrika.png ProfileBennet.png ProfileYlva.png Note: To use the shanghai scripts, you must have the Melody scripts which correspond i.e. Melody Main Menu -> Shanghai Main Menu Melody Status Menu -> Shanghai Status Menu Note: The shanghai scripts must be under the melody scripts to work. Note: All images go in the Graphics/System folder. I strongly suggest looking at the links to see how to use and modify the scripts to suit. Share this post Link to post Share on other sites
rgangsta 43 Report post Posted January 29, 2011 Thanks for the post. I could use some of these scripts. Share this post Link to post Share on other sites
Midnite Reaper 2 Report post Posted January 29, 2011 Your welcome. I happened to come across these while looking for a windowskin... Share this post Link to post Share on other sites