#============================================================================== # # ▼ Yanfly Engine Ace - Ace Menu Engine v1.10 # -- Modified by: Doogy, The_Fireplace, rstp14 # -- Last Updated: 2018.02.27 # -- Level: Normal, Hard # -- Requires: n/a # #============================================================================== $imported = {} if $imported.nil? $imported["YEA-AceMenuEngine"] = true #============================================================================== # ▼ Updates # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # 2018.02.27 - Made it possible to draw the JP bar # 2018.01.25 - Fixed drawing bug where the HP bar was drawn over the MP bar # - Made it possible to draw the MP bar if the TP bar is disabled # 2016.01.17 - Fixed drawing bug found on the latest update, where the MP bar was drawn behind the HP bar. # 2015.01.17 - Display update MP gauge behave the same way as TP gauge (hidden if no skill use it). # 2012.01.03 - Compatibility Update: Ace Item Menu # 2012.01.01 - Compatibility Update: Kread-EX's Synthesis # - Compatibility Update: Kread-EX's Grathnode Install # - Compatibility Update: Yami's Slot Battle # 2011.12.23 - Script efficiency optimized. # 2011.12.19 - Compatibility Update: Class System # 2011.12.15 - Updated for better menu MP/TP gauge management. # 2011.12.13 - Compatibility Update: Ace Equip Engine # 2011.12.07 - Update to allow for switches to also hide custom commands. # 2011.12.06 - Started Script and Finished. # #============================================================================== # ▼ Introduction # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # The menu system in RPG Maker VX Ace is great. However, it lacks the user # customization that RPG Maker 2003 allowed. With this script, you can add, # remove, and rearrange menu commands as you see fit. In addition to that, you # can add in menu commands that lead to common events or even custom commands # provided through other scripts. # # This script also provides window appearance management such as setting almost # all command windows to be center aligned or changing the position of the # help window. You can also opt to show the TP Gauge in the main menu as well # as in the skill menu. # #============================================================================== # ▼ 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. # # Edit the settings in the module below as you see fit. # #============================================================================== # ▼ Compatibility # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # This script is made strictly for RPG Maker VX Ace. It is highly unlikely that # it will run with RPG Maker VX without adjusting. # #============================================================================== module YEA module MENU #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - General Menu Settings - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # This changes the way menus appear in your game. You can change their # alignment, and the location of the help window, Note that any non-Yanfly # Engine Ace scripts may not conform to these menu styles. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- HELP_WINDOW_LOCATION = 0 # 0-Top, 1-Middle, 2-Bottom. COMMAND_WINDOW_ALIGN = 1 # 0-Left, 1-Middle, 2-Right. # These settings below adjust the visual appearance of the main menu. # Change the settings as you see fit. MAIN_MENU_ALIGN = 0 # 0-Left, 1-Middle, 2-Right. MAIN_MENU_RIGHT = false # false-Left, true-Right. MAIN_MENU_ROWS = 10 # Maximum number of rows for main menu. DRAW_TP_GAUGE = true # If true, draws TP in the main menu. DRAW_MP_GAUGE = true # If true, draws MP in the main menu. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - Main Menu Settings - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # These settings adjust the main menu, the order at which commands appear, # what text is displayed, and what the commands are linked to. Here's a # list of which commands do what: # # ------------------------------------------------------------------------- # :command Description # ------------------------------------------------------------------------- # :item Opens up the item menu. Default menu item. # :skill Opens up the skill menu. Default menu item. # :equip Opens up the equip menu. Default menu item. # :status Opens up the status menu. Default menu item. # :formation Lets player manage party. Default menu item. # :save Opens up the save menu. Default menu item. # :game_end Opens up the shutdown menu. Default menu item. # # :class Requires YEA - Class System # # :gogototori Requires Kread-EX's Go Go Totori! Synthesis # :grathnode Requires Kread-EX's Grathnote Install # :sslots Requires Yami's YSA - Slot Battle #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- COMMANDS =[ :item, # Opens up the item menu. Default menu item. :skill, # Opens up the skill menu. Default menu item. :equip, # Opens up the equip menu. Default menu item. :class, # Requires YEA - Class System. :status, # Opens up the status menu. Default menu item. :formation, # Lets player manage party. Default menu item. # :event_1, # Launches Common Event 1. Common Event Command. # :event_2, # Launches Common Event 2. Common Event Command. # :debug, # Opens up debug menu. Custom Command. # :shop, # Opens up a shop to pawn items. Custom Command. :save, # Opens up the save menu. Default menu item. :game_end, # Opens up the shutdown menu. Default menu item. ] # Do not remove this. #-------------------------------------------------------------------------- # - Common Event Commands - # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # If you insert one of the following commands into the COMMANDS array, the # player can trigger a common event to launch. You can disable certain # commands in the menu by binding them to a switch. If you don't want to # disable them, set the switch to 0 and it will always be enabled. The # ShowSwitch will prevent a command from appear if that switch is false. # Set it to 0 for it to have no impact. #-------------------------------------------------------------------------- COMMON_EVENT_COMMANDS ={ # :command => ["Display Name", EnableSwitch, ShowSwitch, Event ID], :event_1 => [ "Camp", 11, 0, 1], :event_2 => [ "Synthesis", 0, 0, 2], } # Do not remove this. #-------------------------------------------------------------------------- # - Custom Commands - # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # For those who use scripts that may lead to other menu scenes, use this # hash to manage custom commands that run specific script calls. You can # disable certain commands in the menu by binding them to a switch. If you # don't want to disable them, set the switch to 0. The ShowSwitch will # prevent a command from appear if that switch is false. Set it to 0 for # it to have no impact. #-------------------------------------------------------------------------- CUSTOM_COMMANDS ={ # :command => ["Display Name", EnableSwitch, ShowSwitch, Handler Method], :debug => [ "Debug", 0, 0, :command_debug], :shop => [ "Shop", 12, 0, :command_shop], :gogototori => ["Synthesis", 0, 0, :command_totori], :grathnode => [ "Grathnode", 0, 0, :command_install], } # Do not remove this. end # MENU end # YEA #============================================================================== # ▼ Editting anything past this point may potentially result in causing # computer damage, incontinence, explosion of user's head, coma, death, and/or # halitosis so edit at your own risk. #============================================================================== #============================================================================== # ■ Window_MenuCommand #------------------------------------------------------------------------------ # This class is kept towards the top of the script to provide easier access. #============================================================================== class Window_MenuCommand < Window_Command #-------------------------------------------------------------------------- # overwrite method: make_command_list #-------------------------------------------------------------------------- def make_command_list for command in YEA::MENU::COMMANDS case command #--- Default Commands --- when :item add_command(Vocab::item, :item, main_commands_enabled) when :skill add_command(Vocab::skill, :skill, main_commands_enabled) when :equip add_command(Vocab::equip, :equip, main_commands_enabled) when :status add_command(Vocab::status, :status, main_commands_enabled) when :formation add_formation_command when :save add_original_commands add_save_command when :game_end add_game_end_command #--- Yanfly Engine Ace Commands --- when :class next unless $imported["YEA-ClassSystem"] add_class_command #--- Imported Commands --- when :sslots next unless $imported["YSA-SlotBattle"] add_sslots_command when :grathnode next unless $imported["KRX-GrathnodeInstall"] process_custom_command(command) when :gogototori next unless $imported["KRX-AlchemicSynthesis"] process_custom_command(command) #--- Imported Commands --- else process_common_event_command(command) process_custom_command(command) end end end #-------------------------------------------------------------------------- # new method: process_common_event_command #-------------------------------------------------------------------------- def process_common_event_command(command) return unless YEA::MENU::COMMON_EVENT_COMMANDS.include?(command) show = YEA::MENU::COMMON_EVENT_COMMANDS[command][2] continue = show <= 0 ? true : $game_switches[show] return unless continue text = YEA::MENU::COMMON_EVENT_COMMANDS[command][0] switch = YEA::MENU::COMMON_EVENT_COMMANDS[command][1] ext = YEA::MENU::COMMON_EVENT_COMMANDS[command][3] enabled = switch <= 0 ? true : $game_switches[switch] add_command(text, command, enabled, ext) end #-------------------------------------------------------------------------- # new method: process_custom_command #-------------------------------------------------------------------------- def process_custom_command(command) return unless YEA::MENU::CUSTOM_COMMANDS.include?(command) show = YEA::MENU::CUSTOM_COMMANDS[command][2] continue = show <= 0 ? true : $game_switches[show] return unless continue text = YEA::MENU::CUSTOM_COMMANDS[command][0] switch = YEA::MENU::CUSTOM_COMMANDS[command][1] enabled = switch <= 0 ? true : $game_switches[switch] add_command(text, command, enabled) end end # Window_MenuCommand #============================================================================== # ■ Menu #============================================================================== module Menu #-------------------------------------------------------------------------- # self.help_window_location #-------------------------------------------------------------------------- def self.help_window_location return YEA::MENU::HELP_WINDOW_LOCATION end #-------------------------------------------------------------------------- # self.command_window_align #-------------------------------------------------------------------------- def self.command_window_align return YEA::MENU::COMMAND_WINDOW_ALIGN end #-------------------------------------------------------------------------- # self.main_menu_align #-------------------------------------------------------------------------- def self.main_menu_align return YEA::MENU::MAIN_MENU_ALIGN end #-------------------------------------------------------------------------- # self.main_menu_right #-------------------------------------------------------------------------- def self.main_menu_right return YEA::MENU::MAIN_MENU_RIGHT end end # Menu #============================================================================== # ■ Game_Actor #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # new method: draw_mp? #-------------------------------------------------------------------------- def draw_mp? for skill in skills next unless added_skill_types.include?(skill.stype_id) return true if skill.mp_cost > 0 end return false end #-------------------------------------------------------------------------- # new method: draw_tp? #-------------------------------------------------------------------------- def draw_tp? return false unless $data_system.opt_display_tp for skill in skills next unless added_skill_types.include?(skill.stype_id) return true if skill.tp_cost > 0 end return false end end # Game_Actor #============================================================================== # ■ Window_Base #============================================================================== class Window_Base < Window #-------------------------------------------------------------------------- # overwrite method: draw_actor_simple_status #-------------------------------------------------------------------------- def draw_actor_simple_status(actor, dx, dy) dy -= line_height / 2 draw_actor_name(actor, dx, dy) draw_actor_level(actor, dx, dy + line_height * 1) draw_actor_icons(actor, dx, dy + line_height * 2) dw = contents.width - dx - 124 draw_actor_class(actor, dx + 120, dy, dw) draw_actor_hp(actor, dx + 120, dy + line_height * 1, dw) if YEA::MENU::DRAW_TP_GAUGE && actor.draw_tp? && (!actor.draw_mp? || !YEA::MENU::DRAW_MP_GAUGE) draw_actor_tp(actor, dx + 120, dy + line_height * 2, dw) elsif YEA::MENU::DRAW_TP_GAUGE && YEA::MENU::DRAW_MP_GAUGE && actor.draw_tp? && actor.draw_mp? if $imported["YEA-BattleEngine"] draw_actor_tp(actor, dx + 120, dy + line_height * 2, dw/2 - 1) draw_actor_mp(actor, dx + 120 + dw/2, dy + (line_height * 2), dw/2 + 1) else draw_actor_mp(actor, dx + 120, dy + line_height * 2, dw/2 - 1) draw_actor_tp(actor, dx + 120 + dw/2, dy + line_height * 2, dw/2 + 1) end elsif YEA::MENU::DRAW_MP_GAUGE && actor.draw_mp? draw_actor_mp(actor, dx + 120, dy + line_height * 2, dw) end return unless $imported["YEA-JPManager"] draw_actor_jp(actor, dx + 120, dy, dw) end end # Window_Base #============================================================================== # ■ Window_Command #============================================================================== class Window_Command < Window_Selectable #-------------------------------------------------------------------------- # overwrite method: alignment #-------------------------------------------------------------------------- def alignment return Menu.command_window_align end end # Window_Command #============================================================================== # ■ Window_MenuCommand #============================================================================== class Window_MenuCommand < Window_Command #-------------------------------------------------------------------------- # alias method: init_command_position #-------------------------------------------------------------------------- class <