(ACE) using script calls in yanfly's system options script

● ARCHIVED · READ-ONLY
Started by Shion Kreth 1 posts View original ↗
  1. I'm not sure if there's a way to do what I want here, but it seems like it should be plausible. Basically what I want is to use either the two switch turning options or two variable adjusting options included in the script ro run script calls for me. It's very easy doing it once, as an autonrun event can be tied to turning a switch on, but then I can't have another autorun event running a separate script call for when the switch is turned off(?). Basically what I want is for one option to be script call 1 or script call 2(so when it's on it performs script call 1, and when off performs script call 2) and the other option to be another 2 script calls; so script call 3 when off and script call 4 when on. I'm wracking my brain but I can't figure out how I could accomplish this.

    Here's Yanfly's system option script:

    Spoiler
    #==============================================================================



    # ▼ Yanfly Engine Ace - System Options v1.00

    # -- Last Updated: 2012.01.01

    # -- Level: Normal

    # -- Requires: n/a



    #==============================================================================

     

    $imported = {} if $imported.nil?

    $imported["YEA-SystemOptions"] = true

     

    #==============================================================================

    # ▼ Updates

    # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

    # 2012.01.01 - Started Script and Finished.



    #==============================================================================

    # ▼ Introduction

    # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

    # This script replaces the "Game End" option in the Main Menu with a "System"

    # menu where the player can adjust various settings in the game. Of them, the

    # player can change the window colour, the volume for BGM, BGS, SFX, set

    # automatic dashing, message text to display instantly, and speed up battles by

    # hiding battle animations.



    #==============================================================================

    # ▼ 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.



    # -----------------------------------------------------------------------------

    # Script Calls - These commands are used with script calls.

    # -----------------------------------------------------------------------------

    # $game_system.volume_change:)bgm, x)

    # $game_system.volume_change:)bgs, x)

    # $game_system.volume_change:)sfx, x)

    # Unlike the previous Yanfly Engines, this version does not bind volume to a

    # variable. Use the script call to change the bgm, bgs, or sfx sound rate by

    # x increment. Use a negative value to lower the volume.



    # $game_system.set_autodash(true)

    # $game_system.set_autodash(false)

    # Turns autodash on (true) or off (false).



    # $game_system.set_instantmsg(true)

    # $game_system.set_instantmsg(false)

    # Turns instant messages on (true) or off (false).



    # $game_system.set_animations(true)

    # $game_system.set_animations(false)

    # Turns battle animations on (true) or off (false).



    #==============================================================================

    # ▼ 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 SYSTEM

        

        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

        # - General Setting -

        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

        # These are the general settings that govern the System settings. This will

        # change the "Game End" vocab, and disable or enable autodash, instant

        # messages, or animations by default.

        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

        COMMAND_NAME = "System"      # Command name used to replace Game End.

        DEFAULT_AUTODASH   = false    # Enable automatic dashing by default?

        DEFAULT_INSTANTMSG = false   # Enable instant message text by default?

        DEFAULT_ANIMATIONS = true    # Enable battle animations by default?

        

        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

        # - Command Settings -

        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

        # These settings adjust the commands shown in the command list. Add, remove

        # or rearrange the commands as you see fit. Here's a list of which commands

        # do what:

        # 

        # -------------------------------------------------------------------------

        # :command         Description

        # -------------------------------------------------------------------------

        # :blank           Inserts an empty blank space.

        # 

        # :window_red      Changes the red tone for all windows.

        # :window_grn      Changes the green tone for all windows.

        # :window_blu      Changes the blue tone for all windows.

        # 

        # :volume_bgm      Changes the BGM volume used.

        # :volume_bgs      Changes the BGS volume used.

        # :volume_sfx      Changes the SFX volume used.

        # 

        # :autodash        Sets the player to automatically dash.

        # :instantmsg      Sets message text to appear instantly.

        # :animations      Enables battle animations or disables them.

        # 

        # :to_title        Returns to the title screen.

        # :shutdown        Shuts down the game.

        # 

        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

        COMMANDS =[

          :window_red,   # Changes the red tone for all windows.

          :window_grn,   # Changes the green tone for all windows.

          :window_blu,   # Changes the blue tone for all windows.

          :volume_bgm,   # Changes the BGM volume used.

          :volume_bgs,   # Changes the BGS volume used.

          :volume_sfx,   # Changes the SFX volume used.

          :blank,

          :autodash,     # Sets the player to automatically dash.

          :instantmsg,   # Sets message text to appear instantly.

          :animations,   # Enables battle animations or disables them.

        # :switch_1,     # Custom Switch 1. Adjust settings below.

        # :switch_2,     # Custom Switch 2. Adjust settings below.

        # :variable_1,   # Custom Variable 1. Adjust settings below.

        # :variable_2,   # Custom Variable 2. Adjust settings below.

          :blank,

          :to_title,     # Returns to the title screen.

          :shutdown,     # Shuts down the game.

        ] # Do not remove this.

        

        #--------------------------------------------------------------------------

        # - Custom Switches -

        # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

        # If you want your game to have system options other than just the ones

        # listed above, you can insert custom switches here to produce such an

        # effect. Adjust the settings here as you see fit.

        #--------------------------------------------------------------------------

        CUSTOM_SWITCHES ={

        # -------------------------------------------------------------------------

        # :switch    => [switch, Name, Off Text, On Text, 

        #                Help Window Description

        #               ], # Do not remove this.

        # -------------------------------------------------------------------------

          :switch_1  => [ 1, "Custom Switch 1", "OFF", "ON",

                         "Help description used for custom switch 1."

                        ],

        # -------------------------------------------------------------------------

          :switch_2  => [ 2, "Custom Switch 2", "OFF", "ON",

                         "Help description used for custom switch 2."

                        ],

        # -------------------------------------------------------------------------

        } # Do not remove this.

        

        #--------------------------------------------------------------------------

        # - Custom Variables -

        # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

        # If you want your game to have system options other than just the ones

        # listed above, you can insert custom variables here to produce such an

        # effect. Adjust the settings here as you see fit.

        #--------------------------------------------------------------------------

        CUSTOM_VARIABLES ={

        # -------------------------------------------------------------------------

        # :variable   => [switch, Name, Colour1, Colour2, Min, Max,

        #                 Help Window Description

        #                ], # Do not remove this.

        # -------------------------------------------------------------------------

          :variable_1 => [ 1, "Custom Variable 1", 9, 1, -100, 100,

                          "Help description used for custom variable 1."

                         ],

        # -------------------------------------------------------------------------

          :variable_2 => [ 2, "Custom Variable 2", 10, 2, -10, 10,

                          "Help description used for custom variable 2."

                         ],

        # -------------------------------------------------------------------------

        } # Do not remove this.

        

        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

        # - Vocab Settings -

        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

        # This hash adjusts the vocab used for both the commands and the help

        # description that appears above the command window. Note that for the

        # command help descriptions, you may use text codes. Use \n to linebreak.

        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

        COMMAND_VOCAB ={

        # -------------------------------------------------------------------------

        # :command    => [Command Name, Option1, Option2

        #                 Help Window Description,

        #                ], # Do not remove this.

        # -------------------------------------------------------------------------

          :blank      => ["", "None", "None",

                          ""

                         ], # Do not remove this.

        # -------------------------------------------------------------------------

          :window_red => ["Window Red", "None", "None",

                          "Change the red colour tone for windows.\n" +

                          "Hold SHIFT to change increment by 10."

                         ], # Do not remove this.

        # -------------------------------------------------------------------------

          :window_grn => ["Window Green", "None", "None",

                          "Change the green colour tone for windows.\n" +

                          "Hold SHIFT to change increment by 10."

                         ], # Do not remove this.

        # -------------------------------------------------------------------------

          :window_blu => ["Window Blue", "None", "None",

                          "Change the blue colour tone for windows.\n" +

                          "Hold SHIFT to change increment by 10."

                         ], # Do not remove this.

        # -------------------------------------------------------------------------

          :volume_bgm => ["BGM Volume", 12, 4, # Options 1 & 2 are Gauge Colours.

                          "Change the volume used for background music.\n" +

                          "Hold SHIFT to change increment by 10."

                         ], # Do not remove this.

        # -------------------------------------------------------------------------

          :volume_bgs => ["BGS Volume", 13, 5, # Options 1 & 2 are Gauge Colours.

                          "Change the volume used for background sound.\n" +

                          "Hold SHIFT to change increment by 10."

                         ], # Do not remove this.

        # -------------------------------------------------------------------------

          :volume_sfx => ["SFX Volume", 14, 6, # Options 1 & 2 are Gauge Colours.

                          "Change the volume used for sound effects.\n" +

                          "Hold SHIFT to change increment by 10."

                         ], # Do not remove this.

        # -------------------------------------------------------------------------

          :autodash   => ["Auto-Dash", "Walk", "Dash",

                          "Automatically dash without holding the run button."

                         ], # Do not remove this.

        # -------------------------------------------------------------------------

          :instantmsg => ["Instant Text", "Normal", "Instant",

                          "Set message text to appear one-by-one or instantly."

                         ], # Do not remove this.

        # -------------------------------------------------------------------------

          :animations => ["Battle Animations", "Hide", "Show",

                          "Hide animations during battle to speed up battles?"

                         ], # Do not remove this.

        # -------------------------------------------------------------------------

          :to_title   => ["Return to Title Screen", "None", "None",

                          "Go back to the title screen."

                         ], # Do not remove this.

        # -------------------------------------------------------------------------

          :shutdown   => ["Shutdown Game", "None", "None",

                          "Turns off the game."

                         ], # Do not remove this.

        # -------------------------------------------------------------------------

        } # Do not remove this.

        

      end # SYSTEM

    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.

    #==============================================================================

     

    #==============================================================================

    # ■ Vocab

    #==============================================================================

     

    module Vocab

      

      #--------------------------------------------------------------------------

      # overwrite method: self.game_end

      #--------------------------------------------------------------------------

      def self.game_end

        return YEA::SYSTEM::COMMAND_NAME

      end

      

    end # Vocab

     

    #==============================================================================

    # ■ RPG::BGM

    #==============================================================================

     

    class RPG::BGM < RPG::AudioFile

      

      #--------------------------------------------------------------------------

      # overwrite method: play

      #--------------------------------------------------------------------------

      def play(pos = 0)

        if @name.empty?

          Audio.bgm_stop

          @@last = RPG::BGM.new

        else

          volume = @volume

          volume *= $game_system.volume:)bgm) * 0.01 unless $game_system.nil?

          Audio.bgm_play('Audio/BGM/' + @name, volume, @pitch, pos)

          @@last = self.clone

        end

      end

      

    end # RPG::BGM

     

    #==============================================================================

    # ■ RPG::ME

    #==============================================================================

     

    class RPG::ME < RPG::AudioFile

      

      #--------------------------------------------------------------------------

      # overwrite method: play

      #--------------------------------------------------------------------------

      def play

        if @name.empty?

          Audio.me_stop

        else

          volume = @volume

          volume *= $game_system.volume:)bgm) * 0.01 unless $game_system.nil?

          Audio.me_play('Audio/ME/' + @name, volume, @pitch)

        end

      end

      

    end # RPG::ME

     

    #==============================================================================

    # ■ RPG::BGS

    #==============================================================================

     

    class RPG::BGS < RPG::AudioFile

      

      #--------------------------------------------------------------------------

      # overwrite method: play

      #--------------------------------------------------------------------------

      def play(pos = 0)

        if @name.empty?

          Audio.bgs_stop

          @@last = RPG::BGS.new

        else

          volume = @volume

          volume *= $game_system.volume:)bgs) * 0.01 unless $game_system.nil?

          Audio.bgs_play('Audio/BGS/' + @name, volume, @pitch, pos)

          @@last = self.clone

        end

      end

      

    end # RPG::BGS

     

    #==============================================================================

    # ■ RPG::SE

    #==============================================================================

     

    class RPG::SE < RPG::AudioFile

      

      #--------------------------------------------------------------------------

      # overwrite method: play

      #--------------------------------------------------------------------------

      def play

        unless @name.empty?

          volume = @volume

          volume *= $game_system.volume:)sfx) * 0.01 unless $game_system.nil?

          Audio.se_play('Audio/SE/' + @name, volume, @pitch)

        end

      end

      

    end # RPG::SE

     

    #==============================================================================

    # ■ Game_System

    #==============================================================================

     

    class Game_System

      

      #--------------------------------------------------------------------------

      # alias method: initialize

      #--------------------------------------------------------------------------

      alias game_system_initialize_so initialize

      def initialize

        game_system_initialize_so

        init_volume_control

        init_autodash

        init_instantmsg

        init_animations

      end

      

      #--------------------------------------------------------------------------

      # new method: init_volume_control

      #--------------------------------------------------------------------------

      def init_volume_control

        @volume = {}

        @volume[:bgm] = 100

        @volume[:bgs] = 100

        @volume[:sfx] = 100

      end

      

      #--------------------------------------------------------------------------

      # new method: volume

      #--------------------------------------------------------------------------

      def volume(type)

        init_volume_control if @volume.nil?

        return [[@volume[type], 0].max, 100].min

      end

      

      #--------------------------------------------------------------------------

      # new method: volume_change

      #--------------------------------------------------------------------------

      def volume_change(type, increment)

        init_volume_control if @volume.nil?

        @volume[type] += increment

        @volume[type] = [[@volume[type], 0].max, 100].min

      end

      

      #--------------------------------------------------------------------------

      # new method: init_autodash

      #--------------------------------------------------------------------------

      def init_autodash

        @autodash = YEA::SYSTEM::DEFAULT_AUTODASH

      end

      

      #--------------------------------------------------------------------------

      # new method: autodash?

      #--------------------------------------------------------------------------

      def autodash?

        init_autodash if @autodash.nil?

        return @autodash

      end

      

      #--------------------------------------------------------------------------

      # new method: set_autodash

      #--------------------------------------------------------------------------

      def set_autodash(value)

        @autodash = value

      end

      

      #--------------------------------------------------------------------------

      # new method: init_instantmsg

      #--------------------------------------------------------------------------

      def init_instantmsg

        @instantmsg = YEA::SYSTEM::DEFAULT_INSTANTMSG

      end

      

      #--------------------------------------------------------------------------

      # new method: instantmsg?

      #--------------------------------------------------------------------------

      def instantmsg?

        init_instantmsg if @instantmsg.nil?

        return @instantmsg

      end

      

      #--------------------------------------------------------------------------

      # new method: set_instantmsg

      #--------------------------------------------------------------------------

      def set_instantmsg(value)

        @instantmsg = value

      end

      

      #--------------------------------------------------------------------------

      # new method: init_animations

      #--------------------------------------------------------------------------

      def init_animations

        @animations = YEA::SYSTEM::DEFAULT_ANIMATIONS

      end

      

      #--------------------------------------------------------------------------

      # new method: animations?

      #--------------------------------------------------------------------------

      def animations?

        init_animations if @animations.nil?

        return @animations

      end

      

      #--------------------------------------------------------------------------

      # new method: set_animations

      #--------------------------------------------------------------------------

      def set_animations(value)

        @animations = value

      end

      

    end # Game_System

     

    #==============================================================================

    # ■ Game_Player

    #==============================================================================

     

    class Game_Player < Game_Character

      

      #--------------------------------------------------------------------------

      # alias method: dash?

      #--------------------------------------------------------------------------

      alias game_player_dash_so dash?

      def dash?

        if $game_system.autodash?

          return false if @move_route_forcing

          return false if $game_map.disable_dash?

          return false if vehicle

          return !Input.press?:)A)

        else

          return game_player_dash_so

        end

      end

      

    end # Game_Player

     

    #==============================================================================

    # ■ Scene_Battle

    #==============================================================================

     

    class Scene_Battle < Scene_Base

      

      #--------------------------------------------------------------------------

      # alias method: show_fast?

      #--------------------------------------------------------------------------

      alias scene_battle_show_fast_so show_fast?

      def show_fast?

        return true unless $game_system.animations?

        return scene_battle_show_fast_so

      end

      

      #--------------------------------------------------------------------------

      # alias method: show_normal_animation

      #--------------------------------------------------------------------------

      alias scene_battle_show_normal_animation_so show_normal_animation

      def show_normal_animation(targets, animation_id, mirror = false)

        return unless $game_system.animations?

        scene_battle_show_normal_animation_so(targets, animation_id, mirror)

      end

      

    end # Scene_Battle

     

    #==============================================================================

    # ■ Window_Message

    #==============================================================================

     

    class Window_Message < Window_Base

      

      #--------------------------------------------------------------------------

      # alias method: clear_flags

      #--------------------------------------------------------------------------

      alias window_message_clear_flags_so clear_flags

      def clear_flags

        window_message_clear_flags_so

        @show_fast = true if $game_system.instantmsg?

      end

      

    end # Window_Message

     

    #==============================================================================

    # ■ Window_SystemOptions

    #==============================================================================

     

    class Window_SystemOptions < Window_Command

      

      #--------------------------------------------------------------------------

      # initialize

      #--------------------------------------------------------------------------

      def initialize(help_window)

        @help_window = help_window

        super(0, @help_window.height)

        refresh

      end

      

      #--------------------------------------------------------------------------

      # window_width

      #--------------------------------------------------------------------------

      def window_width; return Graphics.width; end

      

      #--------------------------------------------------------------------------

      # window_height

      #--------------------------------------------------------------------------

      def window_height; return Graphics.height - @help_window.height; end

      

      #--------------------------------------------------------------------------

      # update_help

      #--------------------------------------------------------------------------

      def update_help

        if current_symbol == :custom_switch || current_symbol == :custom_variable

          text = @help_descriptions[current_ext]

        else

          text = @help_descriptions[current_symbol]

        end

        text = "" if text.nil?

        @help_window.set_text(text)

      end

      

      #--------------------------------------------------------------------------

      # ok_enabled?

      #--------------------------------------------------------------------------

      def ok_enabled?

        return true if [:to_title, :shutdown].include?(current_symbol)

        return false

      end

      

      #--------------------------------------------------------------------------

      # make_command_list

      #--------------------------------------------------------------------------

      def make_command_list

        @help_descriptions = {}

        for command in YEA::SYSTEM::COMMANDS

          case command

          when :blank

            add_command(YEA::SYSTEM::COMMAND_VOCAB[command][0], command)

            @help_descriptions[command] = YEA::SYSTEM::COMMAND_VOCAB[command][3]

          when :window_red, :window_grn, :window_blu

            add_command(YEA::SYSTEM::COMMAND_VOCAB[command][0], command)

            @help_descriptions[command] = YEA::SYSTEM::COMMAND_VOCAB[command][3]

          when :volume_bgm, :volume_bgs, :volume_sfx

            add_command(YEA::SYSTEM::COMMAND_VOCAB[command][0], command)

            @help_descriptions[command] = YEA::SYSTEM::COMMAND_VOCAB[command][3]

          when :autodash, :instantmsg, :animations

            add_command(YEA::SYSTEM::COMMAND_VOCAB[command][0], command)

            @help_descriptions[command] = YEA::SYSTEM::COMMAND_VOCAB[command][3]

          when :to_title, :shutdown

            add_command(YEA::SYSTEM::COMMAND_VOCAB[command][0], command)

            @help_descriptions[command] = YEA::SYSTEM::COMMAND_VOCAB[command][3]

          else

            process_custom_switch(command)

            process_custom_variable(command)

          end

        end

      end

      

      #--------------------------------------------------------------------------

      # process_custom_switch

      #--------------------------------------------------------------------------

      def process_custom_switch(command)

        return unless YEA::SYSTEM::CUSTOM_SWITCHES.include?(command)

        name = YEA::SYSTEM::CUSTOM_SWITCHES[command][1]

        add_command(name, :custom_switch, true, command)

        @help_descriptions[command] = YEA::SYSTEM::CUSTOM_SWITCHES[command][4]

      end

      

      #--------------------------------------------------------------------------

      # process_custom_variable

      #--------------------------------------------------------------------------

      def process_custom_variable(command)

        return unless YEA::SYSTEM::CUSTOM_VARIABLES.include?(command)

        name = YEA::SYSTEM::CUSTOM_VARIABLES[command][1]

        add_command(name, :custom_variable, true, command)

        @help_descriptions[command] = YEA::SYSTEM::CUSTOM_VARIABLES[command][6]

      end

      

      #--------------------------------------------------------------------------

      # draw_item

      #--------------------------------------------------------------------------

      def draw_item(index)

        reset_font_settings

        rect = item_rect(index)

        contents.clear_rect(rect)

        case @list[index][:symbol]

        when :window_red, :window_grn, :window_blu

          draw_window_tone(rect, index, @list[index][:symbol])

        when :volume_bgm, :volume_bgs, :volume_sfx

          draw_volume(rect, index, @list[index][:symbol])

        when :autodash, :instantmsg, :animations

          draw_toggle(rect, index, @list[index][:symbol])

        when :to_title, :shutdown

          draw_text(item_rect_for_text(index), command_name(index), 1)

        when :custom_switch

          draw_custom_switch(rect, index, @list[index][:ext])

        when :custom_variable

          draw_custom_variable(rect, index, @list[index][:ext])

        end

      end

      

      #--------------------------------------------------------------------------

      # draw_window_tone

      #--------------------------------------------------------------------------

      def draw_window_tone(rect, index, symbol)

        name = @list[index][:name]

        draw_text(0, rect.y, contents.width/2, line_height, name, 1)

        #---

        dx = contents.width / 2

        tone = $game_system.window_tone

        case symbol

        when :window_red

          rate = (tone.red + 255.0) / 510.0

          colour1 = Color.new(128, 0, 0)

          colour2 = Color.new(255, 0, 0)

          value = tone.red.to_i

        when :window_grn

          rate = (tone.green + 255.0) / 510.0

          colour1 = Color.new(0, 128, 0)

          colour2 = Color.new(0, 255, 0)

          value = tone.green.to_i

        when :window_blu

          rate = (tone.blue + 255.0) / 510.0

          colour1 = Color.new(0, 0, 128)

          colour2 = Color.new(0, 0, 255)

          value = tone.blue.to_i

        end

        draw_gauge(dx, rect.y, contents.width - dx - 48, rate, colour1, colour2)

        draw_text(dx, rect.y, contents.width - dx - 48, line_height, value, 2)

      end

      

      #--------------------------------------------------------------------------

      # draw_volume

      #--------------------------------------------------------------------------

      def draw_volume(rect, index, symbol)

        name = @list[index][:name]

        draw_text(0, rect.y, contents.width/2, line_height, name, 1)

        #---

        dx = contents.width / 2

        case symbol

        when :volume_bgm

          rate = $game_system.volume:)bgm)

        when :volume_bgs

          rate = $game_system.volume:)bgs)

        when :volume_sfx

          rate = $game_system.volume:)sfx)

        end

        colour1 = text_color(YEA::SYSTEM::COMMAND_VOCAB[symbol][1])

        colour2 = text_color(YEA::SYSTEM::COMMAND_VOCAB[symbol][2])

        value = sprintf("%d%%", rate)

        rate *= 0.01

        draw_gauge(dx, rect.y, contents.width - dx - 48, rate, colour1, colour2)

        draw_text(dx, rect.y, contents.width - dx - 48, line_height, value, 2)

      end

      

      #--------------------------------------------------------------------------

      # draw_toggle

      #--------------------------------------------------------------------------

      def draw_toggle(rect, index, symbol)

        name = @list[index][:name]

        draw_text(0, rect.y, contents.width/2, line_height, name, 1)

        #---

        dx = contents.width / 2

        case symbol

        when :autodash

          enabled = $game_system.autodash?

        when :instantmsg

          enabled = $game_system.instantmsg?

        when :animations

          enabled = $game_system.animations?

        end

        dx = contents.width/2

        change_color(normal_color, !enabled)

        option1 = YEA::SYSTEM::COMMAND_VOCAB[symbol][1]

        draw_text(dx, rect.y, contents.width/4, line_height, option1, 1)

        dx += contents.width/4

        change_color(normal_color, enabled)

        option2 = YEA::SYSTEM::COMMAND_VOCAB[symbol][2]

        draw_text(dx, rect.y, contents.width/4, line_height, option2, 1)

      end

      

      #--------------------------------------------------------------------------

      # cursor_right

      #--------------------------------------------------------------------------

      def draw_custom_switch(rect, index, ext)

        name = @list[index][:name]

        draw_text(0, rect.y, contents.width/2, line_height, name, 1)

        #---

        dx = contents.width / 2

        enabled = $game_switches[YEA::SYSTEM::CUSTOM_SWITCHES[ext][0]]

        dx = contents.width/2

        change_color(normal_color, !enabled)

        option1 = YEA::SYSTEM::CUSTOM_SWITCHES[ext][2]

        draw_text(dx, rect.y, contents.width/4, line_height, option1, 1)

        dx += contents.width/4

        change_color(normal_color, enabled)

        option2 = YEA::SYSTEM::CUSTOM_SWITCHES[ext][3]

        draw_text(dx, rect.y, contents.width/4, line_height, option2, 1)

      end

      

      #--------------------------------------------------------------------------

      # draw_custom_variable

      #--------------------------------------------------------------------------

      def draw_custom_variable(rect, index, ext)

        name = @list[index][:name]

        draw_text(0, rect.y, contents.width/2, line_height, name, 1)

        #---

        dx = contents.width / 2

        value = $game_variables[YEA::SYSTEM::CUSTOM_VARIABLES[ext][0]]

        colour1 = text_color(YEA::SYSTEM::CUSTOM_VARIABLES[ext][2])

        colour2 = text_color(YEA::SYSTEM::CUSTOM_VARIABLES[ext][3])

        minimum = YEA::SYSTEM::CUSTOM_VARIABLES[ext][4]

        maximum = YEA::SYSTEM::CUSTOM_VARIABLES[ext][5]

        rate = (value - minimum).to_f / [(maximum - minimum).to_f, 0.01].max

        dx = contents.width/2

        draw_gauge(dx, rect.y, contents.width - dx - 48, rate, colour1, colour2)

        draw_text(dx, rect.y, contents.width - dx - 48, line_height, value, 2)

      end

      

      #--------------------------------------------------------------------------

      # cursor_right

      #--------------------------------------------------------------------------

      def cursor_right(wrap = false)

        cursor_change:)right)

        super(wrap)

      end

      

      #--------------------------------------------------------------------------

      # cursor_left

      #--------------------------------------------------------------------------

      def cursor_left(wrap = false)

        cursor_change:)left)

        super(wrap)

      end

      

      #--------------------------------------------------------------------------

      # cursor_change

      #--------------------------------------------------------------------------

      def cursor_change(direction)

        case current_symbol

        when :window_red, :window_blu, :window_grn

          change_window_tone(direction)

        when :volume_bgm, :volume_bgs, :volume_sfx

          change_volume(direction)

        when :autodash, :instantmsg, :animations

          change_toggle(direction)

        when :custom_switch

          change_custom_switch(direction)

        when :custom_variable

          change_custom_variables(direction)

        end

      end

      

      #--------------------------------------------------------------------------

      # change_window_tone

      #--------------------------------------------------------------------------

      def change_window_tone(direction)

        Sound.play_cursor

        value = direction == :left ? -1 : 1

        value *= 10 if Input.press?:)A)

        tone = $game_system.window_tone.clone

        case current_symbol

        when :window_red; tone.red += value

        when :window_grn; tone.green += value

        when :window_blu; tone.blue += value

        end

        $game_system.window_tone = tone

        draw_item(index)

      end

      

      #--------------------------------------------------------------------------

      # change_window_tone

      #--------------------------------------------------------------------------

      def change_volume(direction)

        Sound.play_cursor

        value = direction == :left ? -1 : 1

        value *= 10 if Input.press?:)A)

        case current_symbol

        when :volume_bgm

          $game_system.volume_change:)bgm, value)

          RPG::BGM::last.play

        when :volume_bgs

          $game_system.volume_change:)bgs, value)

          RPG::BGS::last.play

        when :volume_sfx

          $game_system.volume_change:)sfx, value)

        end

        draw_item(index)

      end

      

      #--------------------------------------------------------------------------

      # change_toggle

      #--------------------------------------------------------------------------

      def change_toggle(direction)

        value = direction == :left ? false : true

        case current_symbol

        when :autodash

          current_case = $game_system.autodash?

          $game_system.set_autodash(value)

        when :instantmsg

          current_case = $game_system.instantmsg?

          $game_system.set_instantmsg(value)

        when :animations

          current_case = $game_system.animations?

          $game_system.set_animations(value)

        end

        Sound.play_cursor if value != current_case

        draw_item(index)

      end

      

      #--------------------------------------------------------------------------

      # change_custom_switch

      #--------------------------------------------------------------------------

      def change_custom_switch(direction)

        value = direction == :left ? false : true

        ext = current_ext

        current_case = $game_switches[YEA::SYSTEM::CUSTOM_SWITCHES[ext][0]]

        $game_switches[YEA::SYSTEM::CUSTOM_SWITCHES[ext][0]] = value

        Sound.play_cursor if value != current_case

        draw_item(index)

      end

      

      #--------------------------------------------------------------------------

      # change_custom_variables

      #--------------------------------------------------------------------------

      def change_custom_variables(direction)

        Sound.play_cursor

        value = direction == :left ? -1 : 1

        value *= 10 if Input.press?:)A)

        ext = current_ext

        var = YEA::SYSTEM::CUSTOM_VARIABLES[ext][0]

        minimum = YEA::SYSTEM::CUSTOM_VARIABLES[ext][4]

        maximum = YEA::SYSTEM::CUSTOM_VARIABLES[ext][5]

        $game_variables[var] += value

        $game_variables[var] = [[$game_variables[var], minimum].max, maximum].min

        draw_item(index)

      end

      

    end # Window_SystemOptions

     

    #==============================================================================

    # ■ Scene_Menu

    #==============================================================================

     

    class Scene_Menu < Scene_MenuBase

      

      #--------------------------------------------------------------------------

      # overwrite method: command_game_end

      #--------------------------------------------------------------------------

      def command_game_end

        SceneManager.call(Scene_System)

      end

      

    end # Scene_Menu

     

    #==============================================================================

    # ■ Scene_System

    #==============================================================================

     

    class Scene_System < Scene_MenuBase

      

      #--------------------------------------------------------------------------

      # start

      #--------------------------------------------------------------------------

      def start

        super

        create_help_window

        create_command_window

      end

      

      #--------------------------------------------------------------------------

      # create_command_window

      #--------------------------------------------------------------------------

      def create_command_window

        @command_window = Window_SystemOptions.new(@help_window)

        @command_window.set_handler:)cancel, method:)return_scene))

        @command_window.set_handler:)to_title, method:)command_to_title))

        @command_window.set_handler:)shutdown, method:)command_shutdown))

      end

      

      #--------------------------------------------------------------------------

      # command_to_title

      #--------------------------------------------------------------------------

      def command_to_title

        fadeout_all

        SceneManager.goto(Scene_Title)

      end

      

      #--------------------------------------------------------------------------

      # command_shutdown

      #--------------------------------------------------------------------------

      def command_shutdown

        fadeout_all

        SceneManager.exit

      end

      

    end # Scene_System

     

    #==============================================================================



    # ▼ End of File



    #==============================================================================
     

    If my description is confusing like this but with the options somehow producing script calls: