RMRK is retiring.
Registration is disabled. The site will remain online, but eventually become a read-only archive. More information.

RMRK.net has nothing to do with Blockchains, Cryptocurrency or NFTs. We have been around since the early 2000s, but there is a new group using the RMRK name that deals with those things. We have nothing to do with them.
NFTs are a scam, and if somebody is trying to persuade you to buy or invest in crypto/blockchain/NFT content, please turn them down and save your money. See this video for more information.
The Final Day of Resources!

Poll

Choose your favorite resource!

Three Pretty Gifts   (icon set)
2 (15.4%)
Futuristic Gunz   (icon set)
0 (0%)
Starfyre   (song track)
0 (0%)
Organic Heights   (song track)
0 (0%)
Two   (song track)
1 (7.7%)
Frozen   (song track)
2 (15.4%)
Nocturne No. 2   (song track)
0 (0%)
Nocturne No. 3   (song track)
1 (7.7%)
Nocturne No. 4   (song track)
1 (7.7%)
Vigil   (song track)
0 (0%)
Whiten Target Enemy   (script)
0 (0%)
Shopping Item Variance   (script)
0 (0%)
ATS: Special Message Codes   (script)
1 (7.7%)
Website Launch from Title   (script)
0 (0%)
Icon Hues   (script)
0 (0%)
Drop Options   (script)
0 (0%)
Mage Portrait
0 (0%)
Mage Faceset
0 (0%)
Female Knight Portrait
0 (0%)
Female Knight Faceset
0 (0%)
Male Knight Portrait
0 (0%)
Male Knight Faceset
0 (0%)
Priestess Portrait
0 (0%)
Priestess Faceset
0 (0%)
Naia Faceset 1
0 (0%)
Naia Faceset 2
0 (0%)
Naia Cut-In 1
1 (7.7%)
Naia Cut-In 2
0 (0%)
Elicia Faceset 1
0 (0%)
Elicia Faceset 2
0 (0%)
Elicia Cut-In 1
2 (15.4%)
Elicia Cut-In 2
0 (0%)
Terrence Cut-In 1
0 (0%)
Terrence Cut-In 2
0 (0%)
Unnamed Cut-In 1
0 (0%)
Unnamed Cut-In 2
0 (0%)
Yuyubabe Charset   (sprite)
0 (0%)
Dark Cyrus   (sprite)
0 (0%)
Masked Fighter   (sprite)
0 (0%)
Miss Kneesocks   (sprite)
0 (0%)
Ralph Battler
2 (15.4%)
Goddess Battler
0 (0%)

Total Members Voted: 13

0 Members and 2 Guests are viewing this topic.

********
Furry Philosopher
Rep:
Level 94
Rawr?
2013 Best RPG Maker User (Creativity)Randomizer - GIAW 11Gold - GIAW 11 (Hard)Secret Santa 2013 ParticipantFor frequently finding and reporting spam and spam bots2012 Best RPG Maker User (Mapping)2012 Best RPG Maker User (Programming)Secret Santa 2012 ParticipantGold - GIAW 9Project of the Month winner for September 2008For taking a crack at the RMRK Wiki2011 Best RPG Maker User (Programming)2011 Best Veteran2011 Kindest Member2010 Best RPG Maker User (Story)2010 Best RPG Maker User (Events)
The twelfth and final poll in the Twelve Days of Resources Contest!


At the beginning of the contest, we asked participants to hit us with whatever resources they could come up with, and we managed to collect a whopping total of 42 acceptable submissions. The first eleven days in the contest were elimination rounds to see how long these resources would last when competing against each other. Honestly, some that I expected to go far ended rather early, while some I never expected to last long made it nearly to the end. Now that we're at the end, four of the contestants are walking away with special awards:

HaloOfTheSun - Best Music for his song track "Frozen".
Modern Algebra - Best Scripting for his script "ATS: Special Message Codes".
IAMFORTE - Best Pixel Art for his "Yuyubabe Charset" sprite.
Nessiah - Best Portrait Art for her "Elicia Cut-In 1" picture.


The ultimate winning resource turned out to be Halo's song "Frozen"!
An extra congratulations to him and all of our other finalists!


And now for the final day's poll, we're bringing back all of the eliminated resources again for one more uber poll and giving everyone one last vote. This time though, everyone has infinite time to vote and see how popular their submissions remain as we travel along a new year. Thanks to everyone who participated in the Twelve Days of Resources contest, and have a safe new year until next Christmas!



Spoiler for Submitted Resources Part 1:


Three Pretty Gifts by Gracie






Futuristic Gunz by IAMFORTE






Starfyre by Malson

Download http://k002.kiwi6.com/hotlink/349kc74y01/starfyre.mp3




Organic Heights by Irock

Download http://k002.kiwi6.com/hotlink/wxbl7v08s4/organic_heights.mp3




Two by Malson

Download http://k002.kiwi6.com/hotlink/lbvrlolfqo/two.mp3




Frozen by HaloOfTheSun

Download http://k002.kiwi6.com/hotlink/76g67k2j3o/frozen.mp3




Nocturne No. 2 by Pacman

Download http://k002.kiwi6.com/hotlink/lz4wttrdzd/nocturne_no_2.mp3




Nocturne No. 3 by Pacman

Download http://k002.kiwi6.com/hotlink/664p9q3xjj/nocturne_no_3.mp3




Nocturne No. 4 by Pacman

Download http://k002.kiwi6.com/hotlink/7iiaghrmx8/nocturne_no_4.mp3




Vigil by Malson

Download http://k002.kiwi6.com/hotlink/91hguq5jvy/vigil.mp3




Whiten Target Enemy by cozziekuns

Code: [Select]
#===============================================================================
# Whiten Target Enemy
#-------------------------------------------------------------------------------
# Version: 1.0
# Author: cozziekuns (rmrk)
# Last Date Updated: 12/04/2011 (MM/DD/YYYY)
#===============================================================================
# Description:
#-------------------------------------------------------------------------------
# Changes the targeting system to include the whitening of the enemy, and the
# potential to remove the targeting window.
#===============================================================================
# Updates
# ------------------------------------------------------------------------------
# o 12/04/2011 - Started Script
#===============================================================================
# To-do List
#-------------------------------------------------------------------------------
# o Nothing! Suggest some features.
#===============================================================================
# Instructions
#-------------------------------------------------------------------------------
# Copy and paste this script above Main but below Materials, and edit the
# modules to your liking.
#===============================================================================

module COZZIEKUNS
 
  module ENEMY_WHITEN
   
    HIDE_TARGETENEMY_WINDOW = true  # Whether or not you want to hide the enemy
                                    # targeting window with all the target names
   
  end
 
end

#==============================================================================
# ** Window_EnemyHelp
#==============================================================================

class Window_EnemyHelp < Window_Help
  #----------------------------------------------------------------------------
  # * Object Initialization
  #----------------------------------------------------------------------------
  def initialize(line_number = 1)
    super
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    contents.clear
    contents.draw_text(4, 0, 544, 24, @text, 1)
  end
end

#==============================================================================
# ** Window_BattleEnemy
#==============================================================================

class Window_BattleEnemy < Window_Selectable
  #----------------------------------------------------------------------------
  # * Object Initialization
  #----------------------------------------------------------------------------
  alias coz_enemyflash_wbe_initialize initialize
  def initialize(*args)
    coz_enemyflash_wbe_initialize(*args)
    @hidden = true
  end
  #----------------------------------------------------------------------------
  # * Frame Update
  #----------------------------------------------------------------------------
  def update
    super
    if enemy
      enemy.sprite_effect_type = :whiten if active
      if @hidden and COZZIEKUNS::ENEMY_WHITEN::HIDE_TARGETENEMY_WINDOW
        self.visible = false
        @info_viewport.rect.width = Graphics.width if @info_viewport
      end
      @help_window.set_text(enemy.name)
    end
  end
  if COZZIEKUNS::ENEMY_WHITEN::HIDE_TARGETENEMY_WINDOW
    #----------------------------------------------------------------------------
    # * Cursor Down
    #----------------------------------------------------------------------------
    def cursor_down(*args)
    end
    #----------------------------------------------------------------------------
    # * Cursor Up
    #----------------------------------------------------------------------------
    def cursor_up(*args)
    end
    #--------------------------------------------------------------------------
    # * Cursor Right
    #--------------------------------------------------------------------------
    def cursor_right(*args)
      select((index + 1) % item_max)
    end
    #--------------------------------------------------------------------------
    # * Cursor Left
    #--------------------------------------------------------------------------
    def cursor_left(*args)
      select((index - 1 + item_max) % item_max)
    end
  end
  #----------------------------------------------------------------------------
  # * Show Window
  #----------------------------------------------------------------------------
  alias coz_enemyflash_wbe_show show
  def show
    @help_window.show
    coz_enemyflash_wbe_show
  end
  #----------------------------------------------------------------------------
  # * Hide Window
  #----------------------------------------------------------------------------
  alias coz_enemyflash_wbe_hide hide
  def hide
    @help_window.hide
    coz_enemyflash_wbe_hide
  end
end

#==============================================================================
# ** Scene_Battle
#==============================================================================

class Scene_Battle < Scene_Base
  #--------------------------------------------------------------------------
  # * Create Enemy Window
  #--------------------------------------------------------------------------
  alias coz_enemyflash_sb_create_enemy_window create_enemy_window
  def create_enemy_window
    coz_enemyflash_sb_create_enemy_window
    @enemy_window.help_window = Window_EnemyHelp.new
    @enemy_window.help_window.visible = false
  end
  #--------------------------------------------------------------------------
  # * Select Enemy Selection
  #--------------------------------------------------------------------------
  alias coz_enemyflash_sb_select_enemy_selection select_enemy_selection
  def select_enemy_selection
    @skill_window.visible = false
    @skill_window.help_window.visible = false
    @item_window.visible = false
    @item_window.help_window.visible = false
    coz_enemyflash_sb_select_enemy_selection
  end
  #--------------------------------------------------------------------------
  # * On Enemy Cancel
  #--------------------------------------------------------------------------
  alias coz_enemyflash_sb_on_enemy_cancel on_enemy_cancel
  def on_enemy_cancel
    case @actor_command_window.current_symbol
    when :skill
      @skill_window.visible = true
      @skill_window.help_window.visible = true
    when :item
      @item_window.visible = true
      @item_window.help_window.visible = true
    end
    coz_enemyflash_sb_on_enemy_cancel
  end
end




Shopping Item Variance by cozziekuns

Code: [Select]
#==============================================================================
# ** Shopping Item Variance
#-------------------------------------------------------------------------------
# Version: 1.0
# Author: cozziekuns (rmrk)
# Last Date Updated: 12/06/2011 (MM/DD/YYYY)
#===============================================================================
# Description:
#-------------------------------------------------------------------------------
# Changes the shopping system to account for Modern Algebra's lovely script,
# Item Instances Base, by allowing multiple instances of items to be shown in
# a shop at a given time, giving the player knowledge of which items are above
# average and allowing for an easy picking of said item.
#===============================================================================
# Updates
# ------------------------------------------------------------------------------
# o 12/06/2011 - Started Script
#===============================================================================
# To-do List
#-------------------------------------------------------------------------------
# o Nothing! Suggest some features.
#===============================================================================
# Instructions
#-------------------------------------------------------------------------------
# Copy and paste this script above Main but below Materials, and edit the
# modules to your liking.
#===============================================================================

module COZZIEKUNS
 
  module SIV
   
    NUMBER_OF_ITEMS = [4, 6] # Min and max number of items of an item in the
                             # store at one time
    REMOVE_ON_PURCHASE = true # Remove the item stock on purchase
   
  end
 
end

#==============================================================================
# ** RPG::BaseItem
#==============================================================================

class RPG::BaseItem
 
  MA_INSTANCE_CHECKS.push (/\\SHOP_NUMBER\[\d+\]/i)
  #--------------------------------------------------------------------------
  # * Shop Number
  #--------------------------------------------------------------------------
  def shop_number
    unless @shop_number
      @shop_number = 0
      @shop_number = $1.to_i if self.note[/\\SHOP_NUMBER\[(\d+)\]/i]
    end
    return @shop_number
  end
end

#==============================================================================
# ** Window_ShopBuy
#==============================================================================

class Window_ShopBuy < Window_Selectable
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  alias coz_csi_wsb_initialize initialize
  def initialize(*args)
    init_goods = $game_temp.shop_goods.clone
    init_goods.each do |i|
      case i[0]
      when 0
        item = $data_items[i[1]]
      when 1
        item = $data_weapons[i[1]]
      when 2
        item = $data_armors[i[1]]
      end
      coz_num = COZZIEKUNS::SIV::NUMBER_OF_ITEMS
      num = ((coz_num[0] + 1) + rand(coz_num[1] - coz_num[0] + 1))
      if item.instance_based?
        num = item.shop_number > 0 ? item.shop_number : num
        num.times do
          $game_temp.shop_goods.push(i)
        end
      else
        $game_temp.shop_goods.push(i)
      end
      $game_temp.shop_goods.shift
    end
    coz_csi_wsb_initialize(*args)
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    @data = []
    index = 0
    for goods_item in @shop_goods
      case goods_item[0]
      when 0
        item = $data_items[goods_item[1]]
      when 1
        item = $data_weapons[goods_item[1]]
      when 2
        item = $data_armors[goods_item[1]]
      end
      if item.instance_based?
        case item
        when RPG::Item then data_type, type_id = $data_items, 0
        when RPG::Weapon then data_type, type_id = $data_weapons, 1
        when RPG::Armor then data_type, type_id = $data_armors, 2
        end
        new_item = data_type.create_instance(item)
        item = new_item
      end
      if item != nil
        if item.instance_based?
          @data.push([item, index])
        else
          @data.push(item)
        end
      end
      index += 1
    end
    @item_max = @data.size
    create_contents
    for i in 0...@item_max
      draw_item(i)
    end
  end
  #--------------------------------------------------------------------------
  # * Draw Item
  #--------------------------------------------------------------------------
  alias coz_csi_ssh_draw_item draw_item
  def draw_item(index, *args)
    if (@data[index]).is_a?(Array)
      item = @data[index][0]
      number = $game_party.item_number(item)
      enabled = (item.price <= $game_party.gold and number < 99)
      rect = item_rect(index)
      self.contents.clear_rect(rect)
      draw_item_name(item, rect.x, rect.y, enabled)
      rect.width -= 4
      self.contents.draw_text(rect, item.price, 2)
    else
      coz_csi_ssh_draw_item(index, *args) 
    end
  end
  #--------------------------------------------------------------------------
  # * Delete Item
  #--------------------------------------------------------------------------
  def delete_item(item)
    @shop_goods.delete_at(item)
  end
  #--------------------------------------------------------------------------
  # * Help Text Update
  #--------------------------------------------------------------------------
  alias coz_csi_ssh_update_help update_help
  def update_help
    if item.is_a?(Array)
      @help_window.set_text(item[0] == nil ? "" : item[0].description)
    else
      coz_csi_ssh_update_help
    end
  end
end

#==============================================================================
# ** Scene_Shop
#==============================================================================

class Scene_Shop < Scene_Base
  #--------------------------------------------------------------------------
  # * Update Buy Item Selection
  #--------------------------------------------------------------------------
  alias coz_csi_ssh_update_buy_selection update_buy_selection
  def update_buy_selection
    rop = COZZIEKUNS::SIV::REMOVE_ON_PURCHASE
    if @buy_window.item.is_a?(Array)
      @status_window.item = @buy_window.item[0]
      if Input.trigger?(Input::B)
        Sound.play_cancel
        @command_window.active = true
        @dummy_window.visible = true
        @buy_window.active = false
        @buy_window.visible = false
        @status_window.visible = false
        @status_window.item = nil
        @help_window.set_text("")
        return
      end
      if Input.trigger?(Input::C)
        @item = @buy_window.item[0]
        number = $game_party.item_number(@item)
        if @item == nil or @item.price > $game_party.gold or number == 99
          Sound.play_buzzer
        else
          Sound.play_shop
          $game_party.lose_gold(@item.price)
          $game_party.gain_item(@item)
          @buy_window.delete_item(@buy_window.item[1]) if rop
          @gold_window.refresh
          @buy_window.refresh
          @status_window.refresh
          @buy_window.active = true
          @buy_window.visible = true
        end
      end
    else
      coz_csi_ssh_update_buy_selection
    end
  end
end





********
Furry Philosopher
Rep:
Level 94
Rawr?
2013 Best RPG Maker User (Creativity)Randomizer - GIAW 11Gold - GIAW 11 (Hard)Secret Santa 2013 ParticipantFor frequently finding and reporting spam and spam bots2012 Best RPG Maker User (Mapping)2012 Best RPG Maker User (Programming)Secret Santa 2012 ParticipantGold - GIAW 9Project of the Month winner for September 2008For taking a crack at the RMRK Wiki2011 Best RPG Maker User (Programming)2011 Best Veteran2011 Kindest Member2010 Best RPG Maker User (Story)2010 Best RPG Maker User (Events)
Spoiler for Submitted Resources Part 2:


ATS: Special Message Codes by modern algebra

Code: [Select]
#==============================================================================
#    ATS: Special Message Codes [VXA]
#    Version: 1.0
#    Author: modern algebra (rmrk.net)
#    Date: December 11, 2011
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Description:
#
#    This script allows you to use a number of additional special codes in the
#   message system, which will function similar to the default codes like
#   \v[n], \c[n], etc. Please see the list of special message codes starting at
#   line 54 for a full idea of what is added. Basically, it gives you greater
#   control over the delivery of a message, allows you to make use of font
#   effects like bolding and italicizing, and allows you to retrieve and
#   display useful data like the names of weapons and armors.
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  ATS Series:
#
#    This script is part of the Advanced Text System series of scripts. These
#   scripts are based off the Advanced Text System for RMVX, but since RMVX Ace
#   has a much more sensibly designed message system, it is no longer necessary
#   that it be one large script. For that reason, and responding to feedback on
#   the ATS, I have split the ATS into multiple different scripts so that you
#   only need to pick up the components for the features that you want. It is
#   therefore easier to customize and configure.
#
#    To find more scripts in the ATS Series, please visit:
#      http://rmrk.net/index.php/topic,44525.0.html
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Instructions:
#
#    This script is not difficult to use or configure. There are only two
#   configuration options for this script. These are:
#
#      :message_speed
#      :show_fast_speed
#
#   :message_speed allows you to set the default number of frames to wait
#   between drawing each letter in the message window. :show_fast_speed allows
#   you to control the amount it speeds up when the player presses enter. You
#   can gain instructions on setting the default value for both at line 180.
#
#    As with other ATS scripts, you can change the value of these options in
#   game with the following codes in a script call:
#
#      ats_next(:message_option, x)
#      ats_all(:message_option, x)
#
#   Where :message_option is the symbol you want (:message_speed or
#   :show_fast_speed) and x is the value you want to change it to. ats_next
#   will only change it for the very next message, while ats_all will change it
#   for every message to follow.
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  List of Special Message Codes:
#
#    The default message codes are retained, and this script adds a number of
#   other desirable features. The following is a complete list of the message
#   codes at your disposal. Simply insert them into a Display Message command,
#   Choice Branches, or any other message related system.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#  Font Effects:
#
# \fn[fontname] - Change the font to fontname. If you put multiple fontnames
#     separated by commas, then it will take the first one the user has installed
# \fs[n] - Change the font size to n.
# \{ - Increase the font size by 8.
# \} - Decrease the font size by 8.
# \c[n] - Set the colour of the text being drawn to the nth colour of the
#     Windowskin palette. 0 is the normal color and 16 is the system color.
# \hc[RRGGBB] or \c[#RRGGBB] - Set the colour of the text being drawn to any
#     colour, using hexadecimal values. You can set each colour (red, green,
#     blue) to anything from 0-255 (00-FF). You must use hexadecimal values. If
#     so desired, you can add an additional hex value from 00-FF to change the
#     alpha.
# \b     - Turn bold on. Text drawn after this code will be bolded.
# /b     - Turn bold off.
# \i     - Turn italic on. Text drawn after this code will be italicized.
# /i     - Turn italic off.
# \o     - Turn outline on.
# /o     - Turn outline off.
# \s     - Turn shadow on. Text drawn after this code will have a shadow.
# /s     - Turn shadow off.
# \u     - Turn underline on. Text drawn after this code will be underlined.
# /u     - Turn underline off.
# \hl[n] - Turn highlight on. Text drawn after this code will be highlighted
#     with colour n + 1 from the windowskin palette
# /hl OR \hl[0] - Turn highlight off.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#  Message Control:
#
# \s[n] - Sets the message speed to wait n frames between drawing every letter.
#     0 is instant.
# \s[+n] - Sets the message speed to wait an additional n frames between drawing
#     every letter.
# \s[-n] - Sets the message speed to wait n less frames between drawing every
#     letter.
# \. - Wait 15 frames before drawing the next character
# \| - Wait 60 frames before drawing the next character
# \w[n] - Wait n frames before drawing the next character
# \! - Pause text and wait for player to press Enter
# \^ - Skip Pause; allows you to close a message window without requiring player
#     input.
# \> - Show line fast.
# \< - Stop showing line fast.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#  Replacement Codes:
#
# \p[n] - Draw the name of the actor in the xth position in the party. 1 is
#     the party leader, 2 is the second member, etc.
# \n[n] - Draw the name of the actor with ID n
# \nn[n] - Draw the nickname of the actor with ID n.
# \pid[n] - Draw the ID of the actor in the nth position in the party.
# \ac[n] - Draw the class name of the actor with ID n.
# \al[n] - Draw the level of the actor with ID n.
# \ni[n] - Draw the name of the item with ID n.
# \nw[n] - Draw the name of the weapon with ID n.
# \na[n] - Draw the name of the armor with ID n.
# \ns[n] - Draw the name of the skill with ID n.
# \nt[n] - Draw the name of the state with ID n.
# \nc[n] - Draw the name of the class with ID n.
# \ne[n] - Draw the name of the event with ID n on the current map.
# \nm[n] - Draw the name of the enemy with ID n.
# \nv[n] - Draw the name of the variable with ID n.
# \nsw[n] - Draw the name of the switch with ID n.
# \nl[n] - Draw the name of the element with ID n.
# \nwt[n] - Draw the name of the weapon type with ID n.
# \nat[n] - Draw the name of the armor type with ID n.
# \nst[n] - Draw the name of the skill type with ID n.
# \np[n] - Draw the name of the actor in the nth position in the party.
# \map   - Draw the name of the map the player is currently on.
# \map[n] - Draw the name of the map with ID n.
# \pg - Draws the amount of money the party has.
# \g - Draws the unit of currency.
# \vocab[method] - Will draw whatever Vocab.method returns, if it is a valid
#     method call. Suitable values for method are: level, level_a, hp, hp_a,
#     mp, mp_a, tp, tp_a, fight, escape, attack, guard, item, skill, equip,
#     status, formation, save, game_end, weapon, armor, key_item, equip2,
#     optimize, clear, new_game, continue, shutdown, to_title, cancel,
#     currency_unit
# \vocab[param, n] - Will draw the label for parameter with ID n. 0 => Max HP;
#     1 => Max MP; 2 => Attack; 3 => Defence; 4 => Magic; 5 => Magic Defence;
#     6 => Agility; 7 => Luck
# \vocab[etype, n] - Will draw the label for equipment type with ID n.
#     0 => Weapon; 1 => Shield; 2 => Head; 3 => Body; 4 => Accessory
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#  Other Effects:
#
# \$ - Opens a window which shows the party's gold.
# \n - line break
# \i[n] - Draw icon with index n.
# \ii[n] - Draw icon of the item with ID n.
# \iw[n] - Draw icon of the weapon with ID n.
# \ia[n] - Draw icon of the armor with ID n.
# \is[n] - Draw icon of the skill with ID n.
# \it[n] - Draw icon of the state with ID n.
# \x[n] - Draw next character at pixel n of the window contents.
# \s[n,text] - Will only draw text only if the switch with ID n is ON.
# \s![n,text] - Will only draw text only if the switch with ID n is OFF.
# \#{code} - This will evaluate code. So, if you know scipting, you can place
#     any code there and it will draw whatever is returned by it. For instance:
#     \#{$game_system.save_count} would draw the number of times the player has
#     saved the current game.
#==============================================================================

$imported = {} unless $imported
$imported[:ATS_SpecialMessageCodes] = true

#==============================================================================
# ** Game_ATS
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    new public instance variables - message_speed; special_message_codes
#==============================================================================

class Game_ATS
  CONFIG = {} unless $imported[:AdvancedTextSystem]
  CONFIG[:special_message_codes] = {
    special_message_codes:true,
    #\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
    #  EDITABLE REGION
      #||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
    #   :message_speed => x,
    #      Changing the value of x determines the default number of frames to
    #     wait between drawing letters in a message window. 0 is instant.
    :message_speed =>   1,
    #   :show_fast_speed => x
    #      Changing the value of x determines the number of frames to wait
    #     between drawing letters when the player is holding enter. 0 is
    #     instant
      :show_fast_speed => 0           
      #||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
    #  END EDITABLE REGION
    #////////////////////////////////////////////////////////////////////////
  }
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Public Instance Variables
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  CONFIG[:special_message_codes].keys.each { |key| attr_accessor key }
end

#==============================================================================
#  Initialize Common ATS Data if no other ATS script interpreted first
#==============================================================================

if !$imported[:AdvancedTextSystem]
  #============================================================================
  # *** DataManager
  #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  #  Summary of Changes:
  #    aliased method - create_game_objects; make_save_contents;
  #      extract_save_contents
  #============================================================================
  module DataManager
    class << self
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      # * Create Game Objects
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      alias modb_ats_crtgmobj_6yh7 create_game_objects
      def create_game_objects(*args, &block)
        modb_ats_crtgmobj_6yh7(*args, &block)
        $game_ats = Game_ATS.new
        $game_ats.init_new_installs
      end
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      # * Make Save Contents
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      alias mlba_ats_mksave_5tg9 make_save_contents
      def make_save_contents(*args, &block)
        contents = mlba_ats_mksave_5tg9(*args, &block)
        contents[:ats] = $game_ats
        contents
      end
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      # * Extract Save Contents
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      alias ma_ats_extrcsvcon_8uj2 extract_save_contents
      def extract_save_contents(contents, *args, &block)
        ma_ats_extrcsvcon_8uj2(contents, *args, &block)
        $game_ats = contents[:ats] ? contents[:ats] : Game_ATS.new
        $game_ats.init_new_installs
      end
    end
  end
 
  #============================================================================
  # ** Game_ATS
  #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  #  This class holds the default data for all scripts in the ATS series
  #============================================================================
 
  class Game_ATS
    def initialize; reset; end
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # * Reset any or all installed ATS scripts
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    def reset(script_name = nil)
      if script_name.is_a? (Symbol) # If script to reset specified
        CONFIG[script_name].each_pair { |key, value|
          self.send("#{key}=".to_sym, value)
          $game_message.send("#{key}=".to_sym, value)
        }
      else                          # Reset all ATS scripts
        CONFIG.keys.each { |script| reset(script) }
      end
    end
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # * Initialize any newly installed ATS scripts
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    def init_new_installs
      CONFIG.keys.each { |script| reset(script) unless self.send(script) }
    end
  end
 
  #============================================================================
  # ** Game_Message
  #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  #  Summary of Changes:
  #    aliased method - clear
  #============================================================================
 
  class Game_Message
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # * Clear
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    alias mlb_ats_clrats_5tv1 clear
    def clear(*args, &block)
      mlb_ats_clrats_5tv1(*args, &block) # Run Original Method
      return if !$game_ats
      Game_ATS::CONFIG.values.each { |installed|
        installed.keys.each { |key| self.send("#{key}=".to_sym, $game_ats.send(key)) }
      }
    end
  end
 
  #============================================================================
  # ** Game_Interpreter
  #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  #  Summary of Changes:
  #    new methods - ats_all; ats_next
  #============================================================================
 
  class Game_Interpreter
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # * ATS All
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    def ats_all(sym, *args, &block)
      $game_ats.send("#{sym}=".to_sym, *args, &block)
      ats_next(sym, *args, &block)
    end
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # * ATS Next
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    def ats_next(sym, *args, &block)
      $game_message.send("#{sym}=".to_sym, *args, &block)
    end
  end
end

$imported[:AdvancedTextSystem] = true

class Game_Message
  Game_ATS::CONFIG[:special_message_codes].keys.each { |key| attr_accessor key }
end

#==============================================================================
# ** Game_Event
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    new method - name
#==============================================================================

class Game_Event
  def name
    return @event ? @event.name : ""
  end
end

#==============================================================================
# ** Window_Base
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    aliased methods - initialize; convert_escape_characters; calc_line_height;
#      process_escape_character; process_normal_character; reset_font_settings
#==============================================================================

class Window_Base
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Object Initialization
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias mlgb_atssmc_init_3do9 initialize
  def initialize(*args, &block)
    mlgb_atssmc_init_3do9(*args, &block) # Run Original Method
    @underline = false
    @highlight = -1
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Convert Escape Characters
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias ma_atssmc_convesc_4rc1 convert_escape_characters
  def convert_escape_characters(*args, &block)
    result = ma_atssmc_convesc_4rc1(*args, &block) # Run Original Method
    # Party
    result.gsub!(/\ePID\[(\d+)\]/i) { $1.to_i >= 1 ? $game_party.members[$1.to_i - 1].id.to_s : "1" }
    result.gsub!(/\ePG/i) { $game_party.gold }
    # Message Speed
    result.gsub!(/\eS\[([\+-]?\d+)\]/i) { "\eMS\[#{$1}\]" }
    result.gsub!(/\e%/)             { "\eDS%"}
    # Hex Colour
    result.gsub!(/\eC\[#/i)         { "\eHC[" }
    # Icons
    result.gsub!(/\eII\[(\d+)\]/i)  { "\eI\[#{$data_items[$1.to_i].icon_index}\]" rescue "" }
    result.gsub!(/\eIW\[(\d+)\]/i)  { "\eI\[#{$data_weapons[$1.to_i].icon_index}\]" rescue "" }
    result.gsub!(/\eIA\[(\d+)\]/i)  { "\eI\[#{$data_armors[$1.to_i].icon_index}\]" rescue "" }
    result.gsub!(/\eIS\[(\d+)\]/i)  { "\eI\[#{$data_skills[$1.to_i].icon_index}\]" rescue "" }
    result.gsub!(/\eIT\[(\d+)\]/i)  { "\eI\[#{$data_states[$1.to_i].icon_index}\]" rescue "" }
    # Actor Stats
    result.gsub!(/\eAC\[(\d+)\]/i)  { $data_classes[$game_actors[$1.to_i].class_id].name }
    result.gsub!(/\eAL\[(\d+)\]/i)  { $game_actors[$1.to_i].level.to_s }
    # Names
    result.gsub!(/\eMAP\[(\d+)\]/i) { load_data(sprintf("Data/Map%03d.rvdata2", $1.to_i)).display_name rescue "" }
    result.gsub!(/\eMAP/i)          { $game_map.display_name rescue "" }
    result.gsub!(/\eNE\[(\d+)\]/i)  { $game_map.events[$1.to_i].name }
    result.gsub!(/\eNN\[(\d+)\]/i)  { $game_actors[$1.to_i].nickname }
    result.gsub!(/\eNI\[(\d+)\]/i)  { $data_items[$1.to_i].name rescue "" }
    result.gsub!(/\eNW\[(\d+)\]/i)  { $data_weapons[$1.to_i].name rescue "" }
    result.gsub!(/\eNA\[(\d+)\]/i)  { $data_armors[$1.to_i].name rescue "" }
    result.gsub!(/\eNS\[(\d+)\]/i)  { $data_skills[$1.to_i].name rescue "" }
    result.gsub!(/\eNT\[(\d+)\]/i)  { $data_states[$1.to_i].name rescue "" }
    result.gsub!(/\eNM\[(\d+)\]/i)  { $data_enemies[$1.to_i].name rescue "" }
    result.gsub!(/\eNC\[(\d+)\]/i)  { $data_classes[$1.to_i].name rescue "" }
    result.gsub!(/\eNV\[(\d+)\]/i)  { $data_system.variables[$1.to_i] }
    result.gsub!(/\eNSW\[(\d+)\]/i) { $data_system.switches[$1.to_i] }
    result.gsub!(/\eNWT\[(\d+)\]/i) { $data_system.weapon_types[$1.to_i] }
    result.gsub!(/\eNAT\[(\d+)\]/i) { $data_system.armor_types[$1.to_i] }
    result.gsub!(/\eNST\[(\d+)\]/i) { $data_system.skill_types[$1.to_i] }
    result.gsub!(/\eNL\[(\d+)\]/i)  { $data_system.elements[$1.to_i] }
    # Vocab
    result.gsub!(/\eVOCAB\[(\w+),\s*(\d+)\s*\]/i) { Vocab.send($1.downcase, $2.to_i) rescue "" }
    result.gsub!(/\eVOCAB\[(\w+)\]/i) { Vocab.send($1.downcase) rescue "" }
    # Font Settings
    result.gsub!(/\eB/i)            { "\eFE[0]" } # Bold On
    result.gsub!(/\/B/i)            { "\eFE[1]" } # Bold Off
    result.gsub!(/\eI([^\[])/i)     { "\eFE[2]#{$1}" } # Italics On
    result.gsub!(/\/I/i)            { "\eFE[3]" } # Italics Off
    result.gsub!(/\eO/i)            { "\eFE[4]" } # Outline On
    result.gsub!(/\/O/i)            { "\eFE[5]" } # Outline Off
    result.gsub!(/\eS([^\[!])/i)    { "\eFE[6]#{$1}" } # Shadow On
    result.gsub!(/\/S/i)            { "\eFE[7]" } # Shadow Off
    result.gsub!(/\eU/i)            { "\eFE[8]" } # Underline On
    result.gsub!(/\/U/i)            { "\e\FE[9]" } # Underline Off
    result.gsub!(/\eHL\[(\d+)\]/i)  { "\eHL[#{$1.to_i}]" } # Highlight On: custom colour
    result.gsub!(/\eHL([^\[])/i)    { "\eHL[17]#{$1}" }# Highlight On: system colour
    result.gsub!(/\/HL/i)           { "\eHL[0]" } # Hightlight Off
    result.gsub!(/\/FN/i)           { "\eFN[]" }  # Default Font
    result.gsub!(/\/FS/i)           { "\eFS[#{Font.default_size}]" } # Default Font
    # Conditional Text
    result.gsub!(/\eS\[(\d+)[,;:](.+?)\]/i) { $game_switches[$1.to_i] ? $2 : "" }
    result.gsub!(/\eS!\[(\d+)[,;:](.+?)\]/i) { $game_switches[$1.to_i] ? "" : $2 }
    # Evaluation
    result.gsub!(/\e#\{(.+?)\}/im)  { (eval($1)).to_s rescue "" }
    # Do resubstitutions if requested
    if result.sub!(/\eRESUB/i, "") != nil
      result = convert_escape_characters(result, *args, &block)
    end
    result.gsub!(/\eN/i, "\n") # Line Break
    result # Return result
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Calculate Line Height
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias ma_atssmc_clclnhght_3ek9 calc_line_height
  def calc_line_height(text, *args, &block)
    res = ma_atssmc_clclnhght_3ek9(text, *args, &block) # Run Original Method
    text.slice(/^.*$/).scan(/\eFS\[(\d+)\]/i) { |num| res = [res, num[0].to_i].max }
    res
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Process Normal Character
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias mlra_atssmc_procnorm_5fg2 process_normal_character
  def process_normal_character(c, pos, *args, &block)
    draw_highlight_underline(c, pos) if @underline || @highlight
    mlra_atssmc_procnorm_5fg2(c, pos, *args, &block) # Run Original Method
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Process Escape Character
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias ma_atssmc_procesc_7gv1 process_escape_character
  def process_escape_character(code, text, pos, *args, &block)
    case code.upcase
    when 'X' then pos[:x] = obtain_escape_param(text)
    when 'HC' # Hex Colour
      hex = text.slice!(/^\[([ABCDEF\d]+)\]/i)
      rgb = $1.scan(/../).map { |hex| hex.to_i(16) }
      change_color(Color.new(*rgb)) if rgb.size.between?(3,4)
    when 'FE' # Font Settings
      param = obtain_escape_param(text)
      case param / 2
      when 0 then contents.font.bold = ((param % 2) == 0)     # Bold
      when 1 then contents.font.italic = ((param % 2) == 0)   # Italic
      when 2 then contents.font.outline = ((param % 2) == 0)  # Outline
      when 3 then contents.font.shadow = ((param % 2) == 0)   # Shadow
      when 4 then @underline = ((param % 2) == 0)             # Underline
      end
    when 'HL' then @highlight = obtain_escape_param(text) - 1 # Highlight
    when 'FN' # Font Name
      text.slice!(/^\[(.*?\])/)
      param = $1
      if param.nil? || param == ']'
        contents.font.name = Font.default_name
      else
        ary = []
        while param.slice!(/\s*(.+?)\s*[,;:\]]/) != nil do ary.push($1) end
        contents.font.name = ary
      end
    when 'FS' # Font Size
      text.slice!(/^\[(\d+)\]/)
      contents.font.size = [[$1.to_i, 16].max, 64].min
    else
      ma_atssmc_procesc_7gv1(code, text, pos, *args, &block) # Run Original Method
    end
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Reset Font Settings
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias ma_atssmc_resetfont_8jb5 reset_font_settings
  def reset_font_settings(*args, &block)
    ma_atssmc_resetfont_8jb5(*args, &block) # Run Original Method
    contents.font.outline = Font.default_outline
    contents.font.shadow = Font.default_shadow
    @underline = false
    @highlight = -1
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Draw Highlighting and Underlining
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def draw_highlight_underline(c, pos)
    text_width = text_size(c).width
    y_space = (pos[:height] - contents.font.size) / 2
    if @underline      # Underlining
      y = pos[:y] + pos[:height]
      y -= [2, y_space].max
      contents.fill_rect(pos[:x], y, text_width, 2, contents.font.color)
    end
    if @highlight >= 0 # Highlighting
      y = pos[:y]
      y += y_space - 1 if y_space > 0
      text_height = [contents.font.size + 2, pos[:height]].min
      colour = text_color(@highlight)
      colour.alpha = 128 if colour.alpha > 128
      contents.fill_rect(pos[:x], y, text_width, text_height, colour)
    end
  end
end

#===============================================================================
# ** Window_Message
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    aliased method - clear_instance_variables; process_escape_character;
#      update_show_fast; wait_for_one_character
#===============================================================================

class Window_Message
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Clear Instance Variables
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias ma_atssmc_clrinsvar_3dq9 clear_instance_variables
  def clear_instance_variables(*args, &block)
    ma_atssmc_clrinsvar_3dq9(*args, &block) # Run Original Method
    @skip_disabled = false
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Process Escape Character
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias mnaa_atssmc_escchar_3dr9 process_escape_character
  def process_escape_character(code, text, pos, *args, &block)
    case code.upcase
    when 'MS' # Set Message Speed
      if !text[/^\[([+-])/].nil?
        text.sub!(/^\[([\+-])/, '[' )
        sign = $1
      else
        sign = ""
      end
      param = obtain_escape_param(text)
      sign.empty? ? $game_message.message_speed = param : $game_message.message_speed += "#{sign}#{param}".to_i
      when 'DS'
        text.slice!(/^%/) # Delete buffer to ensure code isn't overextended
        @skip_disabled = !@skip_disabled
      when 'W' then wait(obtain_escape_param(text))
    else
      mnaa_atssmc_escchar_3dr9(code, text, pos, *args, &block) # Run Original Method
    end
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Update Show Fast
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias mlg_atssmc_updshwfast_7yb1 update_show_fast
  def update_show_fast(*args, &block)
    mlg_atssmc_updshwfast_7yb1(*args, &block)
    @show_fast = Input.press? (Input::C) if $game_message.show_fast_speed > 0
    @show_fast = false if @skip_disabled
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Wait for One Character
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias mdrnl_smcats_waitonechar_5rf1 wait_for_one_character
  def wait_for_one_character(*args, &block)
    mdrnl_smcats_waitonechar_5rf1(*args, &block) # Run Original Method
    if (@show_fast || @line_show_fast) && $game_message.show_fast_speed > 0
      wait($game_message.show_fast_speed)
    elsif $game_message.message_speed > 1
      wait($game_message.message_speed - 1)
    end
  end
end




Website Launch from Title by modern algebra

Code: [Select]
#==============================================================================
#    Website Launch from Title [VXA]
#    Version: 1.0
#    Author: modern algebra (rmrk.net)
#    Date: December 11, 2011
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Description:
#
#    This simple script adds the option to launch website from a command on
#   the title screen. Only works in Windows, but RMVXA only runs in Windows
#   anyway, so that shouldn't be a problem. With this script, you can add
#   multiple commands that open different websites.
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Instructions:
#
#    Paste this script into its own slot above Main and below Materials.
#
#    Just go down to the configurable constants area at line 27 and read the
#   instructions there to see how to set up a new website launch command.
#==============================================================================

$imported = {} unless $imported
$imported[:MAWebsiteLaunchTitle] = true

MAWLT_TITLE_WEBSITE_COMMANDS = [
#\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
#  EDITABLE REGION
#``````````````````````````````````````````````````````````````````````````````
#    For each website launching command you want to include, simply add an
#   array at line 45 with the following data, in the following order:
#
#      ["Command Name", index, "url address"]
#
#    "Command Name" is what will show up in the command window itself.
#    index is an integer and it determines in what order the command appears
#    "url address" is the URL opened when the command is pressed.
#
#    If you wish to add more than one website command, you may, but remember to
#   add a comma after all but the last array. It would look like this:
#
#      ["Command Name 1", index, "url address 1"],
#      ["Command Name 2", index, "url address 2"],
#      ["Command Name 3", index, "url address 3"]
#||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
  ["RMRK", 2, "http://rmrk.net"]
#||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#  END EDITABLE REGION
#//////////////////////////////////////////////////////////////////////////////
]

#==============================================================================
# ** Window_TitleCommand
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    aliased method - make_command_list; update_placement
#==============================================================================

class Window_TitleCommand
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Make Command List
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias ma_wlft_mkcommands_7yh8 make_command_list
  def make_command_list(*args, &block)
    ma_wlft_mkcommands_7yh8(*args, &block) # Run Original Method
    MAWLT_TITLE_WEBSITE_COMMANDS.each_index { |i|
      website = MAWLT_TITLE_WEBSITE_COMMANDS[i]
      add_command(website[0], "website_launch_#{i}".to_sym)
      @list.insert(website[1], @list.pop)
    }
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Update Placement
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias ma_wlft_updplace_5fh2 update_placement
  def update_placement(*args, &block)
    ma_wlft_updplace_5fh2(*args, &block) # Run Original Method
    # Make sure title window doesn't go off screen
    self.y = Graphics.height - height if self.y + height > Graphics.height
  end
end

#==============================================================================
# ** Scene_Title
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    aliased method - create_command_window
#==============================================================================

class Scene_Title
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Create Command Window
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias ma_wlft_crtcmmndwin_3kj9 create_command_window
  def create_command_window(*args, &block)
    ma_wlft_crtcmmndwin_3kj9(*args, &block) # Run Original Method
    MAWLT_TITLE_WEBSITE_COMMANDS.each_index { |i|
      website = MAWLT_TITLE_WEBSITE_COMMANDS[i]
      @command_window.set_handler("website_launch_#{i}".to_sym,
        lambda {
          Thread.new { system("start #{website[2]}") }
          @command_window.activate
        })
    }
  end
end




Icon Hues by modern algebra

Code: [Select]
#==============================================================================
#    Icon Hues
#    Version: 1.0
#    Author: modern algebra (rmrk.net)
#    Date: December 18, 2011
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Description:
#
#    This script allows you to specify a hue for the icons of individual items,
#   weapons, armors, skills, and states. This way you can use the same icon for
#   various items, only changing the hue. This script also permits you to show
#   icons with shifted hues in any message window.
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Instructions:
#
#    Place this script above Main and below default scripts in the Script
#   Editor. Put it above all other custom scripts.
#
#    To specify a hue for an icon, simply put the following in the note field
#   of an item, weapon, armor, skill, or state:
#     
#        \icon_hue[x]
#          x: the hue you want. It can be any integer between 0 and 359.
#
#    EXAMPLES:
#      \icon_hue[65]
#      \icon_hue[320]
#``````````````````````````````````````````````````````````````````````````````
#    Additionally, this script introduces six new message commands that you can
#   use to display a hue-altered icon in any message window.
#
#        \IH[n, x]
#          n: the index of the icon you want to show. The index of an icon must
#            be an integer and is discernible by looking at the bottom left
#            corner when selecting icons.
#          x: the hue you want - it can be any integer between 0 and 359.
#
#    You can also use the following commands:
#        \II[n] - Draws hue-shifted icon of the item with ID n.
#        \IW[n] - Draws hue-shifted icon of the weapon with ID n.
#        \IA[n] - Draws hue-shifted icon of the armor with ID n.
#        \IS[n] - Draws hue-shifted icon of the skill with ID n.
#        \IT[n] - Draws hue-shifted icon of the state with ID n.
#
#    EXAMPLES:
#        \IH[14, 250] - Draws Icon 14 with a hue change of 250.
#        \IW[4] - Draws the hue-shifted icon of the weapon with ID 4.
#        \IT[64] - Draws the hue-shifted icon of the state with ID 64.
#``````````````````````````````````````````````````````````````````````````````
#  Compatibility with: YEA Command Window Icons
#
#    This script also works with Yanfly's YEA Command Window Icons script,
#   found at the following link:
#
#     http://yanflychannel.wordpress.com/rmvxa/menu-scripts/command-window-icons/
#
#    All you need to do is make sure that the Icon Hue script is below the
#   YEA Command Window Script in the Script List (but still above Main). Then,
#   in the configuration for YEA Command Window Icons, you just need to set the
#   command as an array in the following format:
#      "Command"      => [n, x],
#        n: the index of the icon you want to show.
#        x: the hue of the icon - it can be any integer between 0 and 359.
#   
#    EXAMPLES:
#      "New Game"      => [224, 65],
#
#    To reiterate, the configuration must be done in the YEA Command Window
#   Icons Script, not this one. The configuration section of that script starts
#   at line 55. Also note that if you do not want to set the hue, then you do
#   not need to put it in an array; the default configuration will still work.
#==============================================================================

$imported = {} unless $imported
$imported[:MAIcon_Hue] = true

#==============================================================================
# ** RPG::BaseItem
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    new method - icon_hue
#==============================================================================

class RPG::BaseItem
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Icon Hue
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def icon_hue
    if @icon_hue.nil?
      @icon_hue = self.note[/\\ICON[ _]HUE\[(\d+)\]/i].nil? ? 0 : $1.to_i
    end
    @icon_hue
  end
end

#==============================================================================
# ** Window_Base
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    aliased methods - draw_item_name; draw_actor_icons; draw_icon;
#      convert_escape_character; process_escape_character
#    new method - draw_icon_with_hue
#==============================================================================

class Window_Base
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Draw Item Name
  #     item    : Item (skill, weapon, armor are also possible)
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias modra_ichue_dritm_8ik2 draw_item_name
  def draw_item_name(item, *args)
    @maih_icon_hue = item.icon_hue if item != nil
    modra_ichue_dritm_8ik2(item, *args) # Run Original Method
    @maih_icon_hue = nil
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Draw State
  #    actor : Game_Actor object
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias malg_icnhue_dstat_7uj3 draw_actor_icons
  def draw_actor_icons(actor, *args)
    @maih_icon_hue = []
    for state in actor.states do @maih_icon_hue.push (state.icon_hue) end
    # Don't need to do buffs since all the same anyway
    malg_icnhue_dstat_7uj3(actor, *args) # Run Original Method
    @maih_icon_hue = nil
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Draw Icon
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias modrn_drwicn_hue_6yh1 draw_icon
  def draw_icon(icon_index, x, y, enabled = true, *args)
    hue = @maih_icon_hue.is_a?(Array) ? @maih_icon_hue.shift : @maih_icon_hue
    if !hue || hue == 0
      # Run Original Method
      modrn_drwicn_hue_6yh1(icon_index, x, y, enabled, *args)
    else
      draw_icon_with_hue(icon_index, hue, x, y, enabled)
    end
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Draw Icon With Hue
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def draw_icon_with_hue(icon_index, icon_hue, x, y, enabled = true)
    bitmap = Cache.system("Iconset")
    rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
    # Draw Icon onto small and independent bitmap
    icon_bmp = Bitmap.new(24, 24)
    icon_bmp.blt(0, 0, bitmap, rect)
    icon_bmp.hue_change(icon_hue) # Change hue of icon
    rect.x, rect.y = 0, 0
    self.contents.blt(x, y, icon_bmp, rect, enabled ? 255 : translucent_alpha)
    icon_bmp.dispose # Dispose Icon Bitmap
  end
  #\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
  #  Compatibility with ATS Special Message Codes
  #//////////////////////////////////////////////////////////////////////////
  if $imported[:ATS_SpecialMessageCodes]
    alias ma_icnhue_convertesc_8ib6 ma_atssmc_convesc_4rc1
  else
    alias ma_icnhue_convertesc_8ib6 convert_escape_characters
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Convert Escape Characters
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def convert_escape_characters(*args, &block)
    result = ma_icnhue_convertesc_8ib6(*args, &block) # Run Original Method
    result.gsub!(/\eIH\[/i, "\eHI\[") # Change \IH to \HI
    result.gsub!(/\eII\[(\d+)\]/i) { "\eHI\[#{$data_items[$1.to_i].icon_index},#{$data_items[$1.to_i].icon_hue}\]" rescue "" }
    result.gsub!(/\eIW\[(\d+)\]/i) { "\eHI\[#{$data_weapons[$1.to_i].icon_index},#{$data_weapons[$1.to_i].icon_hue}\]" rescue "" }
    result.gsub!(/\eIA\[(\d+)\]/i) { "\eHI\[#{$data_armors[$1.to_i].icon_index},#{$data_armors[$1.to_i].icon_hue}\]" rescue "" }
    result.gsub!(/\eIS\[(\d+)\]/i) { "\eHI\[#{$data_skills[$1.to_i].icon_index},#{$data_skills[$1.to_i].icon_hue}\]" rescue "" }
    result.gsub!(/\eIT\[(\d+)\]/i) { "\eHI\[#{$data_states[$1.to_i].icon_index},#{$data_states[$1.to_i].icon_hue}\]" rescue "" }
    result
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Process Escape Character
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias malg_icnhu_procescchar_5tc1 process_escape_character
  def process_escape_character(code, text, pos, *args, &block)
    if code.upcase == 'HI' # Icon with Hue
      text.slice!(/^\[\s*(\d+)\s*[,:;]?\s*(\d*)\s*\]/)
      @maih_icon_hue = $2.to_i
      process_draw_icon($1.to_i, pos)
      @maih_icon_hue = nil
    else
      malg_icnhu_procescchar_5tc1(code, text, pos, *args, &block) # Run Original Method
    end
  end
end

#\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
#  Compatibility with YEA - Command Window Icons
#//////////////////////////////////////////////////////////////////////////////

if $imported["YEA-CommandWindowIcons"]
  #============================================================================
  # ** Window_Command
  #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  #  Summary of Changes:
  #    aliased methods - command_icon; draw_icon_with_text
  #    new method - use_icon_hue?
  #============================================================================

  class Window_Command
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # * Command Icon
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    if self.method_defined?(:command_icon)
      alias ma_ih_cmndicn_6uj7 command_icon
      def command_icon(*args, &block)
        result = ma_ih_cmndicn_6uj7(*args, &block) # Run Original Method
        return result[0] if result.is_a?(Array)
        result
      end
    end
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # * Draw Icon Text
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    if self.method_defined?(:draw_icon_text)
      alias ma_icnh_drwicntext_4rk9 draw_icon_text
      def draw_icon_text(rect, text, *args, &block)
        icn_a = ma_ih_cmndicn_6uj7(text)
        if icn_a.is_a?(Array)
          @maih_icon_hue = icn_a.size > 1 ? icn_a[1] : 0
        end
        result = ma_icnh_drwicntext_4rk9(rect, text, *args, &block) # Run Original Method
        @maih_icon_hue = nil
        result
      end
    end
  end
end





********
Furry Philosopher
Rep:
Level 94
Rawr?
2013 Best RPG Maker User (Creativity)Randomizer - GIAW 11Gold - GIAW 11 (Hard)Secret Santa 2013 ParticipantFor frequently finding and reporting spam and spam bots2012 Best RPG Maker User (Mapping)2012 Best RPG Maker User (Programming)Secret Santa 2012 ParticipantGold - GIAW 9Project of the Month winner for September 2008For taking a crack at the RMRK Wiki2011 Best RPG Maker User (Programming)2011 Best Veteran2011 Kindest Member2010 Best RPG Maker User (Story)2010 Best RPG Maker User (Events)
Spoiler for Submitted Resources Part 3:


Drop Options by modern algebra

Code: [Select]
#==============================================================================
#    Drop Options [VXA]
#    Version: 1.0
#    Author: modern algebra (rmrk.net)
#    Date: December 19, 2011
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Description:
#
#    This script is very simple. All it does is allow you to make item drops a
#   little less static in some very simple ways:
#
#     (a) you can make more than three drops for each enemy, so enemies can
#       drop a greater variety of loot;
#     (b) you can place a cap on the amount of these extra drops, so if you
#       want a boss to have a 100% chance of dropping one of three items, but 
#       only one, then you can do that;
#     (c) you can use percentile rather than denominator based drops; and
#     (d) you can randomize the amount of gold dropped by setting a range
#       within which it can fall.
#
#    If you are using any scripts that show loot drops of enemies (such as a
#   bestiary), the effects of this script will not be correctly reflected in
#   that without direct modifications. If you are using such a script, please
#   feel free to post a link to it in this script's thread in RMRK and I will
#   write a patch for it.
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Instructions:
#
#    Place this script above Main and below any other scripts in the Script
#   Editor (F11).
#
#    All configuration happens in the note boxes of enemies. If you wish to add
#   a new drop, place this code in a note box for the enemy:
#
#      \drop[type id, probability]
#        type        : the type, either I (for Item), W (for Weapon), or A (for
#                     Armor).
#        id          : This is the ID of the item, weapon, or armor.
#        probability : This is the probability the item, weapon, or armor will
#                     drop. If you put a % sign after the number, then it will
#                     drop that percentage of the time. If not, then the number
#                     you put here will be the denominator, same as with
#                     regular drops. The number has to be an integer.
#    EXAMPLES:
#      \drop[i1, 65%]
#          This will mean that the item with ID 1 (Potion by default) will drop
#         65% of the time when you kill this enemy.
#      \drop[a5, 8]
#          This will mean that the armor with ID 5 (Mithril Shield by default)
#         will drop 1/8 times you kill this enemy.
#
#    To set a maximum on the number of extra drops (note that this only applies
#   to extra drops set up in the note field - the two default drops are exempt
#   from this cap), you can use the code:
#
#      \max_drop[x]
#         x : the maximum amount of extra drops that you want.
#   EXAMPLE:
#    If an enemy is set up like this:
#      \drop[w3, 100%]
#      \drop[w4, 100%]
#      \max_drop[1]
#    Then that means that the enemy will definitely drop either Weapon 3
#   (Spear) or Weapon 4 (Short Sword), but will not drop both since
#   the \max_drop code prevents it from dropping more than one of the notebox
#   drops.
#
#    To randomize the amount of gold an enemy drops, place the following code
#   in its note box:
#
#      \gold[variance]
#        variance : this is an integer, and the amount of gold dropped is
#          calculated by randomly selecting a number between 0 and this value,
#          and then adding it to the regular gold drop you set in the database.
#    EXAMPLE:
#      If an enemy has 5 gold set as its drop in the database, then the
#     following note:
#        \gold[12]
#      will mean that the enemy will drop anywhere between 5 and 17 gold upon
#     its death.
#==============================================================================

$imported = {} unless $imported
$imported[:MADropOptions] = true

#==============================================================================
# ** RPG::Enemy
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    aliased method - gold
#    new method - random_gold; extra_drops; max_drop
#==============================================================================

class RPG::Enemy
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Gold
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias ma_drpopt_gold_2go9 gold
  def gold(*args, &block)
    (rand(ma_random_gold + 1)) + ma_drpopt_gold_2go9(*args, &block)
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Random Gold
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def ma_random_gold
    (@ma_rand_gold = self.note[/\\GOLD\[(\d+)\]/i] != nil ? $1.to_i : 0) if !@ma_rand_gold
    @ma_rand_gold
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Extra Drops
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def ma_extra_drops
    if @ma_extra_drops.nil?
      @ma_extra_drops = []
      self.note.scan(/\\DROP\[\s*([IWA])\s*(\d+),?\s*(\d+)(%?)\s*\]/i).each { |match|
        drop = RPG::Enemy::DropItem.new
        i = ['I', 'W', 'A'].index(match[0].upcase)
        drop.kind = i.nil? ? 0 : i + 1
        drop.data_id = match[1].to_i
        drop.denominator = match[3].empty? ? match[2].to_i : match[2].to_f
        @ma_extra_drops.push(drop)
      }
    end
    @ma_extra_drops
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Max Drops
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def ma_max_drops
    if !@ma_max_drops
      @ma_max_drops = self.note[/\\MAX[ _]DROPS?\[(\d+)\]/i].nil? ? 999 : $1.to_i
    end
    @ma_max_drops
  end
end

#==============================================================================
# ** Game_Enemy
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    aliased method - make_drop_items
#    new method - ma_make_extra_drops
#==============================================================================

class Game_Enemy
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Make Drop Items
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias mlg_dropopt_makedrops_5rx9 make_drop_items
  def make_drop_items(*args, &block)
    # Run Original Method and add the new drops
    mlg_dropopt_makedrops_5rx9(*args, &block) + ma_make_extra_drops
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Make Extra Drops
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def ma_make_extra_drops
    result = []
    enemy.ma_extra_drops.each { |di|
      if di.kind > 0
        bool = di.denominator.is_a?(Integer) ? (rand * di.denominator < drop_item_rate) : (rand(100) < (di.denominator * drop_item_rate))
        result.push(item_object(di.kind, di.data_id)) if bool
      end
    }
    while result.size > enemy.ma_max_drops
      result.delete_at(rand(result.size))
    end
    result
  end
end





Mage Portrait by Yuyubabe






Mage Faceset by Yuyubabe






Female Knight Portrait by Yuyubabe






Female Knight Faceset by Yuyubabe






Male Knight Portrait by Yuyubabe






Male Knight Faceset by Yuyubabe






Priestess Portrait by Yuyubabe






Priestess Faceset by Yuyubabe






Naia Faceset 1 by Nessiah






Naia Faceset 2 by Nessiah






Naia Cut-In 1 by Nessiah






Naia Cut-In 2 by Nessiah






Elicia Faceset 1 by Nessiah






Elicia Faceset 2 by Nessiah






Elicia Cut-In 1 by Nessiah






Elicia Cut-In 2 by Nessiah






Terrence Cut-In 1 by Nessiah






Terrence Cut-In 2 by Nessiah






Unnamed Cut-In 1 by Nessiah






Unnamed Cut-In 2 by Nessiah






Yuyubabe Charsets by IAMFORTE






Dark Cyrus by Zylos






Masked Fighter by Zylos






Miss Kneesocks by Gracie






Ralph Battler by Nessiah






Goddess Battler by Nessiah