AccueilAccueil  PortailPortail  FAQFAQ  RechercherRechercher  MembresMembres  GroupesGroupes  S'enregistrerS'enregistrer  ConnexionConnexion  




Partagez | 
 

 [VX] Monster cataloque

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Citadin Lv.7
Citadin Lv.7
avatar


Masculin Age : 21
Inscrit le : 09/01/2010
Messages : 219

MessageSujet: [VX] Monster cataloque   Ven 29 Jan 2010 - 19:32

Bonsoir,Bonsoir!
Je vien de trouver un scripte qui peut etre tres utile!

Nom: Monster catalogue
Auteur: modern algebra
Description: Ce script est en faite un "Bestiaire".
Pour ceux qui ne savent pas ce que c'est,c'est une fenetre ou il y'a afficher les principaux information sur les monstres tués.
Scene:

Instruction:
-Vous appeller le scripte avec cette comande:
$scene = Scene_Catalogue.new (20)
-----------Les commandes qui vont suivre sont a placer dans la boite a note de votre monstre------------
-Pour ajouté un monstre sans l'avoir combatue,faite cette commande:
encounter_monster (monster_id)
en remplacent monster_id par l'ID du monstre dans la data base.
-Vous pouvez modificer "L'espece" de monstre en inserent:
\species[""]
\species_icon[""]

Dans la boite a note de votre monstre en remplacer name par le nouveau nom du monstre et index par l'icone du monstre.
Exemple:
\species[Loup]
\species_icon[112]

-Il y'a aussi la commande:
\icon[]
Qui permet de changer l'icone du monstre qui sera afficher dans la liste.
Remplacer par le nimero de l'icon
-Pour ajouter une description a un monstre:
\description[]
Remplacer par la nouvelle description du monstre.
Exemple:
\description[Ce grand méchant loup
déteste les ptits chaperon rouge]


Require:
Code:
#==============================================================================
#    Catalogue Base
#    Version: 1.1
#    Author: modern algebra (rmrk.net)
#    Date: October 6, 2009
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Description:

#    This script acts as a base script for my catalogue scripts, and it is
#  required for each of those scripts. It has a number of shared classes and
#  methods that thereby reduce unnecessary coding for those scripts.
#
#    It is, however, strictly a support script. It has no useful purpose on
#  its own.
#==============================================================================

#==============================================================================
# ** Data Catalogues
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  This class handles catalogues. It's a wrapper for the built-in class Array
#==============================================================================

class Data_Catalogues
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Object Initialization
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def initialize
    @data = []
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Get Catalogue
  #    catalogue_id : ID of the catalogue
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def [](catalogue_id)
    if @data[catalogue_id] == nil
      return Catalogue_Base.new
    else
      return @data[catalogue_id]
    end
  end
end

#==============================================================================
# ** Catalogue_Base
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#  This is the base to all Catalogue Groups.
#==============================================================================

class Catalogue_Base
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Public Instance Variables
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  attr_reader  :name
  attr_reader  :objects
  attr_accessor :visible_objects
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Object Initialization
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def initialize (name = 'Catalogue', objects = [], show_all = false)
    # Set variables
    @name = name
    @objects = objects
    @visible_objects = []
    @show_all = show_all
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Card
  #``````````````````````````````````````````````````````````````````````````
  #  This method returns the Card Window for a Catalogue, and should be
  # overwritten by any subclasses
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def card
    return Window_CatalogueCard
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Include?
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def include? (index)
    return true
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Enable?
  #    index : the index of object in objects array
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def enable? (index)
    return true
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Object
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def object (index)
    return @objects[index]
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Object Icon
  #    index : The index of the object in objects array
  #``````````````````````````````````````````````````````````````````````````
  #  This returns an icon to show in Window_CatalogueCommand. By default, it
  # will return the output of the object method icon_index. It must be
  # overwritten if the object class has no icon_index method
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def object_icon (index)
    return index < @objects.size ? object (index).icon_index : 0
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Object Name
  #    index : The index of the object in objects array
  #``````````````````````````````````````````````````````````````````````````
  #  This returns a name to show in Window_CatalogueCommand. By default, it
  # will return the output of the object method name. It must be overwritten
  # if the object class has no name method
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def object_name (index)
    return index < @objects.size ? object (index).name : ''
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Object Help Text
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def object_help_text (index)
    return ''
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * C Disabled?
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def c_disabled
    return true
  end
end

#==============================================================================
# ** Window Base
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    new method - cb_outline_rect
#==============================================================================

class Window_Base
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Outline_Rect
  #    x, y, width, height : rect to outline around
  #    colour              : the colour object for this box
  #    t                  : thickness of the edges
  #    type                : 0 => rounded rectangle; 1 => rectangle
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def cb_outline_rect (x, y, width, height, colour = system_color, t = 2, type = 0)
    # If fill round, check if possible
    if type == 0
      if !contents.methods.include? ("fill_rounded_rect")
        type = 1
      else
        contents.fill_rounded_rect (Rect.new (x, y, width, height), colour)
        rect = Rect.new (x + t, y + t, width - (2*t), height - (2*t))
        contents.fill_rounded_rect (rect, Color.new (0,0,0,0))
      end
    end
    # Otherwise, draw rectangle
    if type == 1
      # Draw Horizontal
      contents.fill_rect (x, y, width, t, colour)
      contents.fill_rect (x, y + height - t, width, t, colour)
      # Draw Vertical
      contents.fill_rect (x, y + t, t, height - (2*t), colour)
      contents.fill_rect (x + width - t, y + t, t, height - (2*t), colour)
    end
  end
end

#==============================================================================
# ** Window_CatalogueCard
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#  This window display information on objects in the catalogue
#==============================================================================

class Window_CatalogueCard < Window_Base
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Initialize
  #    catalogue : the catalogue information this card shows
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def initialize (catalogue)
    super (224, 0, Graphics.width - 224, Graphics.height - 32 - WLH)
    @catalogue = catalogue
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Refresh (index)
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def refresh (index = nil)
    contents.clear
    return false if index == nil
    @object = @catalogue.object (index)
  end
end

#==============================================================================
# ** Window Catalogue Label
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  This window displays the name of the Catalogue
#==============================================================================

class Window_CatalogueLabel < Window_Base
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Object Initialization
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def initialize (x, y, width, height, name)
    super (x, y, width, height)
    contents.font.color = system_color
    contents.draw_text (0, 0, contents.width, contents.height, name, 1)
  end
end

#==============================================================================
# ** Window Catalogue Command
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  This window lists all available objects from the catalogue
#==============================================================================

class Window_CatalogueCommand < Window_Command
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Object Initialization
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def initialize (width, catalogue, *args)
    @catalogue = catalogue
    super (width, Array.new (@catalogue.visible_objects.size), 1)
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Draw Item
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def draw_item (window_index)
    # Get real object Index
    cat_index = @catalogue.visible_objects[window_index]
    enabled = @catalogue.enable? (cat_index)
    rect = item_rect(window_index)
    self.contents.clear_rect(rect)
    # Draw Icon
    draw_icon (@catalogue.object_icon (cat_index), rect.x, rect.y, enabled)
    rect.x += 28
    rect.width -= 28
    self.contents.font.color = normal_color
    self.contents.font.color.alpha = enabled ? 255 : 128
    self.contents.draw_text(rect, @catalogue.object_name (cat_index))
  end
end

#==============================================================================
# ** Scene Title
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    aliased methods - load_database; load_bt_database
#==============================================================================

class Scene_Title
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Load Database
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias mdnabalg_ctlge_base_lddata_5hv9 load_database
  def load_database (*args)
    mdnabalg_ctlge_base_lddata_5hv9 (*args) # Run Original Method
    $data_catalogues = Data_Catalogues.new
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Load Battle Test Database
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias algebramodern_catalogues_btdatabselod_3hb7 load_bt_database
  def load_bt_database (*args)
    algebramodern_catalogues_btdatabselod_3hb7 (*args) # Run Original Method
    $data_catalogues = Data_Catalogues.new
  end
end

#==============================================================================
# ** Scene Catalogue
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  This scene handles processing for a catalogue scene
#==============================================================================

class Scene_Catalogue < Scene_Base
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Object Initialization
  #    catalogue_id : the ID of the catalogue to be opened
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def initialize(catalogue_id)
    @catalogue = $data_catalogues[catalogue_id]
    # Get all included and visible objects
    for i in 0...@catalogue.objects.size
      if @catalogue.include? (i)
        @catalogue.visible_objects.push (i)
      end
    end
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Start
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def start
    super
    wlh = Window_Base::WLH
    # Create Label Window
    height = (Graphics.height - 96 - 2*wlh) % wlh
    height += 32 + wlh
    create_label_window (0, 0, 224, height)
    # Create Command Window
    height = Graphics.height - @label_window.height - 32 - wlh
    create_command_window (0, @label_window.height, 224, height)
    create_card_window
    create_help_window (0, Graphics.height - 32 - wlh, Graphics.width, 32 + wlh)
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Terminate Scene
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def terminate
    super
    @catalogue.visible_objects.clear
    # Dispose all windows
    @label_window.dispose unless @label_window.nil? || @label_window.disposed?
    @command_window.dispose unless @command_window.nil? || @command_window.disposed?
    @card_window.dispose unless @card_window.nil? || @card_window.disposed?
    @help_window.dispose unless @help_window.nil? || @help_window.disposed?
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Frame Update
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def update
    super
    if @command_window.active
      update_command
    end
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Create Label Window
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def create_label_window (x, y, width, height)
    @label_window = Window_CatalogueLabel.new (x, y, width, height, @catalogue.name)
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Create Command Window
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def create_command_window (x, y, width, height)
    @command_window = Window_CatalogueCommand.new (width, @catalogue)
    @command_window.x, @command_window.y = x, y
    @command_window.height = height
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Create Card Window
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def create_card_window
    # X, Y, Width, Height set in the window itself, which has to be altered.
    @card_window = @catalogue.card.new (@catalogue)
    @card_window.refresh (@catalogue.visible_objects[0])
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Create Help Window
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def create_help_window (x, y, width, height)
    @help_window = Window_Help.new
    @help_window.width, @help_window.height = width, height
    @help_window.create_contents
    @help_window.x, @help_window.y = x, y
    @help_window.set_text (@catalogue.object_help_text (@catalogue.visible_objects[0]))
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Update Command Window
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def update_command
    old_index = @command_window.index
    @command_window.update
    # Get catalogue index for selected object
    cat_index = @catalogue.visible_objects[@command_window.index]
    # If cursor has moved
    if old_index != @command_window.index
      # Update Card Window
      @card_window.refresh (cat_index)
      @help_window.set_text (@catalogue.object_help_text (cat_index))
    end
    if Input.trigger? (Input::B)
      Sound.play_cancel
      return_scene
    elsif Input.trigger? (Input::C)
      if @catalogue.c_disabled || !@catalogue.enable? (cat_index)
        Sound.play_buzzer
      else
        process_button_c
      end
    end
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Processing if Button C is pressed and valid
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def process_button_c
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Return Scene
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def return_scene
    $scene = Scene_Map.new
  end
end
script:
Code:
#==============================================================================
#    Monster Catalogue
#    Version: 1.0b
#    Author: modern algebra (rmrk.net)
#    Date: August 21, 2009
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Description:
#
#    This script allows you to create a monster catalogue that shows a small
#  information window on any monsters you have encountered (if you have auto
#  encounter ON. You could also manually alter which monsters have been
#  "encountered" if you wish to set different conditions on their inclusion in
#  the catalogues. As with all my Catalogue scripts, you can make many
#  many different catalogues. Want a catalogue that shows all monsters? That
#  can be done. Want a catalogue that only shows Undead monsters? That can be
#  done too.
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Instructions:
#
#    This script REQUIRES the Catalogue_Base script, and Bitmap Addons is
#  recommended. Both can be found in the RMVX scripts Database of RMRK.
#
#    Place this script above Main and below Catalogue Base (which should itself
#  be below Materials). For instructions on setting up new catalogues and
#  other configuration options, please see the editable regions at lines 122,
#  157, and 252.
#
#    To call a catalogue screen, use this code:
#
#      $scene = Scene_Catalogue.new (id)
#
#    By default, the all enemies catalogue has an ID of 20, and this is because
#  I didn't want it to interfere if you also have the Items Catalogue. Remember
#  that NO catalogue can have the same ID as another, even if they are
#  different scripts. So, by default, to call the all enemies catalogue, the
#  code is:
#
#      $scene = Scene_Catalogue.new (20)
#
#  To manually "encounter" an enemy without having to actually fight the
# monster, you can use the code in a Call script:
#
#    encounter_monster (monster_id)
#      monster_id : the ID of the monster to encounter
#
#    Some Enemy data can be set in the notebox.
#
#      SPECIES
#  In order to make monster collection a little more interesting, it is
# possible to give an enemy a species now. It is purely cosmetic. If you wish
# to get rid of it altogether, then go down to lines 163 and 127 and change
# the name to "" and icon to 0. Those are the default species settings.
# However, you can change species settings on an individual enemy basis by
# putting these codes in the note box of the enemy:
#
#    \species["<name>"]
#      name : the name of the species.
#    \species_icon[<index>]
#      index : the icon index for the species
#
#  Example:
#    \species[Undead]
#    \species_icon[112]
#
#      ICON
#  In order to make the monster list a little more interesting looking, you can
# give them individual icons to show up in that list. If you do not give them
# an individual icon, then it will default to showing the species icon. The
# code to put in the notes box is:
#
#    \icon[<index>]
#      index : the index of the icon you want to use.
#
#  Example:
#    \icon[1]
#
#  Note: if you want to keep a species icon, but don't want any icons to show
#  up next to the monster's name in the list, than you can manually set the
#  icon to blank with the code: \icon[0]
#
#      DEscriptION
#  Another feature to make the screens a little more interesting is that you
# can give monsters individual descriptions. If you don't give them a
# description, than it will default to the value at line 166. The code to put in
# the note box is:
#
#    \description[<text>]
#      text : the description text. Don't worry about extending past one line.
#
#  Example:
#    \description[It may be blind,
#    but it's still a dangerous
#    foe]
#
#      CATALOGUE Y
#  This is something purely cosmetic. By default, the monster battler is drawn
# at about 48 pixels in the catalogue window. This allows you to change that
# y value if you so desire. It can make for a nice effect with maybe flying
# creatures appearing a little over the border, for instance, or anything like
# that really. It's very unnecessary though, and I recommend you not altering
# it. The code to put in the note box is:

#    \cat_y[<new_y>]
#      new_y : the y position for the battler in the catalogue window
#
#  Example:
#    \cat_y[16]
#==============================================================================\

#==============================================================================
# *** ModernAlgebra
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    new constants - CM_DEFAULT_SPECIES_ICON
#==============================================================================

module ModernAlgebra
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # ** CONSTANTS
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  #\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
  #  EDITABLE REGION A
  #``````````````````````````````````````````````````````````````````````````
  #  Read the instructions surrounding each constant to see what it does.
  #||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
  # The icon for whatever you set as the default species
  CM_DEFAULT_SPECIES_ICON = 196
  # Truth value of whether monsters should be visible once they are first
  #  fought against or whether it should be done manually.
  CM_AUTO_ENCOUNTER_MONSTERS = true
  # All colours set up as: [Red, Green, Blue[, Alpha]]
  CM_MONSTERSPECIES_COLOUR = [160, 160, 160] # Colour of Monster Race
  CM_MONSTERCARD_RIM_COLOUR = [105, 105, 255, 255] # Colour of Card Border
  CM_MONSTERCARD_RIMSHADOW_COLOUR = [0, 0, 0] # Shadow of Card Border
  #  Icons to represent elements of items in the Item Card. Every element MUST
  # have an icon. If you have set this up in CI_ITEM_ELEMENT_ICONS, you can
  # delete it here.
  CI_ITEM_ELEMENT_ICONS = [132, 2, 4, 14, 16, 12, 138, 137, 104, 105, 106, 107,
                          108, 109, 110, 111]
  #||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
  #  END EDITABLE REGION A
  #//////////////////////////////////////////////////////////////////////////
end

#==============================================================================
# *** Vocab
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    new constants : GI_EVASION; GI_HIT_RATIO; CM_DEFAULT_RACE
#==============================================================================

module Vocab
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # ** CONSTANTS
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  #\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
  #  EDITABLE REGION B
  #``````````````````````````````````````````````````````````````````````````
  #  Read the instructions surrounding each constant to see what it does.
  #||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
  # If a species name is not set in the enemy's note box, it will show up
  #  as the following for defualt.
  CM_DEFAULT_SPECIES_NAME = "Monster"
  # If a description is not set in an enemy's note box, this is the description
  #  it will have.
  CM_DEFAULT_MONSTER_DEscriptION = "A fearsome foe"
  # These are the letter ranks for a monster's element efficiency.
  CM_ELEMENT_RANKS = ["A", "B", "C", "D", "E", "F"]
  # All constants prefaced by GI are also present in the Grid Inventory script
  #  and in the Item & Skill Catalogue script; if you have either of those
  #  scripts, it is recommended that you delete any of the constants with GI
  #  preface in this script (Monster Catalogue).
  # THe label for stats
  GI_STATS = "Stats"
  # The label for the evasion stat of armors
  GI_EVASION = "Evasion"
  # The label for the hit stat of skills & weapons
  GI_HIT_RATIO = "Hit Ratio"
  #||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
  #  END EDITABLE REGION B
  #//////////////////////////////////////////////////////////////////////////
end

#==============================================================================
# ** RPG::Enemy
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    new method - ma_species
#==============================================================================

class RPG::Enemy
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Species Name
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def ma_species_name
    if @species_name == nil
      @species_name = self.note[/\\SPECIES\[(.*?)\]/i] != nil ? $1 : Vocab::CM_DEFAULT_SPECIES_NAME
    end
    return @species_name
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Species Icon
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def ma_species_icon
    if @species_icon == nil
      @species_icon = self.note[/\\SPECIES_ICON\[(\d+)\]/i] != nil ? $1.to_i : ModernAlgebra::CM_DEFAULT_SPECIES_ICON
    end
    return @species_icon
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * ICON
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def icon_index
    if @ma_icon == nil
      @ma_icon = self.note[/\\ICON\[(\d+)\]/i] != nil ? $1.to_i : ma_species_icon
    end
    return @ma_icon
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * ICON
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def description
    if @ma_desc == nil
      @ma_desc = self.note[/\\DEscriptION\[(.*?)\]/i] != nil ? $1 : Vocab::CM_DEFAULT_MONSTER_DEscriptION
    end
    return @ma_desc
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Catalogue Y
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def catalogue_y
    @ma_cat_y = (self.note[/\\CAT_Y\[(\d+)\]/i] != nil ? $1.to_i : 32) if @ma_cat_y == nil
    return @ma_cat_y
  end
end

#==============================================================================
# ** Data Catalogues
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    aliased method - initialize
#==============================================================================

class Data_Catalogues
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Object Initialization
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias malgbr_monstcatlg_intlz_5bc2 initialize
  def initialize (*args)
    malgbr_monstcatlg_intlz_5bc2 (*args) # Run Original Method
    #\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
    #  EDITABLE REGION C
    #``````````````````````````````````````````````````````````````````````
    #  These are the setup options for making catalogues. It can be sort of
    # complicated, so I will go into detail here.
    #
    #  A catalogue object can be made with the following code:
    #
    #    @data[<id>] = Catalogue_Monster.new ("<name>", [<objects>], <show_all>)
    #      id      : this is the ID of this catalogue. When you open a
    #        catalogue, this is how you reference the catalogue you want to
    #        open. No two catalogues can EVER possess the same ID.
    #      name    : this is the name of the catalogue, as it appears in the
    #        catalogue scene when you open this catalogue. Defaults to
    #        "Catalogue"
    #      objects  : this is the array of monster IDs that  belong to this
    #        catalogue and will show up (if encountered) when the catalogue is
    #        open.  Defaults to []
    #      show_all : this is the truth value on whether encountered arrays
    #        are ignored. If true, then all objects in the catalogue,
    #        regardless of whether they've been encountered, will show up
    #        when this particular catalogue is opened. Note that it will
    #        show all objects of THIS catalogue, which is to say that it
    #        will only show them if they are set as objects belonging. It
    #        DOESN'T mean that all monsters ever will show up, unless those
    #        are the objects setup. Defaults to false
    #
    #  The default monster catalogues are:
    #
    #    20 => Name: Enemies; Objects: All enemiesin database; shows only
    #      encountered enemies in its group. It is called by:
    #
    #            $scene = Scene_Catalogue.new (20)
    #``````````````````````````````````````````````````````````````````````
    # * EXAMPLES
    #    monsters = [1, 2, 3, 4, 7, 8, 9]
    #    @data[22] = Catalogue_Monster.new ("Random Baddies", monsters, true)
    #
    #      this will make a catalogue that will include the enemies with IDs
    #    1, 2, 3, 4, 7, 8, & 9. It is named "Random Baddies", and it will
    #    always show all the monsters it includes regardless of whether
    #    they have been encountered because show_all is true. It's ID is 22,
    #    so it can be called by:
    #              $scene = Scene_Catalogue.new (22)
    #
    #    monsters = [2, 3, 6, 11, 14, 15, 18, 19, 27]
    #    @data[23] = Catalogue_Monster.new ("Flying Enemies", monsters)
    #
    #      this will make a catalogue that will include the enemies with IDs
    #    2, 3, 6, 11, 14, 15, 18, 19, & 27. It is named "Flying Enemies",
    #    and it will only show the monsters it includes if they have been
    #    encountered by the party. It's ID is 23, so it can be called by:
    #              $scene = Scene_Catalogue.new (23)
    #||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
    all_monsters = []
    for i in 1...$data_enemies.size do all_monsters.push (i) end
    @data[20] = Catalogue_Monster.new ("Enemies", all_monsters)
    undead = [11, 12, 17, 26]
    @data[21] = Catalogue_Monster.new ("Undead", undead)
    #||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
    #  END EDITABLE REGION C
    #//////////////////////////////////////////////////////////////////////
  end
end

#==============================================================================
# ** Game_Party
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    aliased method - initialize
#    new public instance variable - encountered_monsters
#==============================================================================

class Game_Party
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Public Instance Variables
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  attr_reader  :encountered_monsters
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Object Initialization
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias algbamorn_init_monstrcatlg_6jb1 initialize
  def initialize (*args)
    @encountered_monsters = []
    algbamorn_init_monstrcatlg_6jb1 (*args) # Run Original Method
  end
end

#==============================================================================
# ** Game Interpreter
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    new method - encounter_monster
#==============================================================================

class Game_Interpreter
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Encounter Monster
  #    monster_id : the ID of the monster to encounter
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def encounter_monster (monster_id)
    $game_party.encountered_monsters.push (monster_id) unless $game_party.encountered_monsters.include? (monster_id)
  end
end

#==============================================================================
# ** Catalogue_Monster
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    modified super methods - card; object; object_help_text; include?
#==============================================================================

class Catalogue_Monster < Catalogue_Base
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Card
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def card
    return Window_MonsterCard
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Object
  #    index : index of the object in @objects
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def object (index)
    return nil if index == nil || @objects[index] == nil
    return $data_enemies[@objects[index]]
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Object Help Text
  #    index : index of the object in @objects
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def object_help_text (index)
    return "" if object (index) == nil
    return object (index).description
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Include?
  #    index : index of the object in @objects
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def include? (index)
    return true if @show_all
    return $game_party.encountered_monsters.include? (@objects[index])
  end
end

#==============================================================================
# ** Window MonsterCard
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  This window displays all relevant information about a monster
#==============================================================================

class Window_MonsterCard < Window_CatalogueCard
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Refresh
  #    placement : the item placement
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def refresh (index)
    super
    draw_border
    return if @object == nil
    draw_monster_name (8, 4)
    draw_monster_species (8, 32)
    # Calculate room all other stats will take
    item_stats, stat_names = get_monster_stats
    y = draw_stats_box (6, contents.width - 12, item_stats.size)
    height = y - @object.catalogue_y
    draw_monster_battler (0, @object.catalogue_y, contents.width, height)
    draw_stats_signifier (30, y)
    draw_monster_stats (12, y + (WLH / 2), contents.width - 24, item_stats, stat_names)
    draw_monster_elements (contents.width - 32, 4)
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Draw Border
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def draw_border
    # Choose Colours for Frame
    rim = Color.new(*ModernAlgebra::CM_MONSTERCARD_RIM_COLOUR)
    shadow = Color.new(*ModernAlgebra::CM_MONSTERCARD_RIMSHADOW_COLOUR)
    # Draw the frame
    cb_outline_rect (1, 1, contents.width - 1, contents.height - 1, shadow, 1, 1)
    cb_outline_rect (0, 0, contents.width - 1, contents.height - 1, rim, 1, 1)
    # Other Lines
    contents.fill_rect (1, 31, contents.width - 2, 1, rim)
    contents.fill_rect (2, 32, contents.width - 4, 1, shadow)
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Draw Monster Name
  #    x, y : the coordinates to draw on
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def draw_monster_name (x, y)
    contents.font.color = normal_color
    contents.draw_text (x, y, 200, WLH, @object.name)
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Draw Monster Species
  #    x, y : the coordinates to draw on
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def draw_monster_species (x, y)
    # Draw the species icon
    draw_icon (@object.ma_species_icon, x, y)
    contents.font.color = Color.new (*ModernAlgebra::CM_MONSTERSPECIES_COLOUR)
    contents.draw_text (x + 24, y, contents.width / 2, WLH, @object.ma_species_name)
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Draw Stats Box
  #    x    : the x coordinate for the stats
  #    width : the amount of space it can take horizontally
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def draw_stats_box (x, width, size)
    # Draw Box
    box_size = ((size / 2) + 1)*WLH
    y = contents.height - 8 - box_size
    cb_outline_rect (x, y, contents.width - 2*x, box_size)
    return y
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Draw Stats Signifier
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def draw_stats_signifier (x, y)
    # Clear place for signifier
    tw = contents.text_size (Vocab::GI_STATS).width
    contents.clear_rect (x, y, tw + 4, 2)
    contents.font.color = system_color
    contents.draw_text (x + 2, y - (WLH / 2), tw + 2, WLH, Vocab::GI_STATS)
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Draw Monster Stats
  #    x    : the x coordinate for the stats
  #    width : the amount of space it can take horizontally
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def draw_monster_stats (x, y, width, item_stats, stat_names)
    room_width = (contents.width - x*2 - 10) / 2
    for i in 0...item_stats.size
      tw = contents.text_size (item_stats[i].to_s).width
      x_actual = x + (room_width + 10)*(i % 2)
      # Draw Signifier Text
      contents.font.color = system_color
      contents.draw_text (x_actual, y + (i / 2)*WLH, room_width - tw - 4, WLH, stat_names[i])
      contents.font.color = normal_color
      contents.draw_text (x_actual, y + (i / 2)*WLH, room_width, WLH, item_stats[i].to_s, 2)
    end
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Draw Monster Battler
  #    x, y    : the coordinates to draw on
  #    enabled : truth value of whether it should be drawn opaque or not
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def draw_monster_battler (x, y, width, height)
    bmp = Cache.battler (@object.battler_name, @object.battler_hue)
    src_rect = bmp.rect.dup
    opac_rect = Rect.new (0, 0, src_rect.width, 0)
    draw_opac_rect = false
    # If it will overlap
    # Take the centre of the bitmap if too large
    if width < src_rect.width
      src_rect.x = (src_rect.width - width) / 2
      opac_rect.x = src_rect.x
      src_rect.width = width
    else # Centre battler
      x += (width - src_rect.width) / 2
    end
    # Take the centre of the bitmap if too large
    if height < src_rect.height
      opac_rect.y = height
      opac_rect.height = src_rect.height - height
      src_rect.height = height
      draw_opac_rect = true
    else # Centre battler
      y += (height - src_rect.height) / 2
    end
    contents.blt (x, y, bmp, src_rect)
    contents.blt (x, y + opac_rect.y, bmp, opac_rect, 128) if draw_opac_rect
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Draw Monster Elements
  #    x, y : coordinates to draw onto
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def draw_monster_elements (x, y)
    contents.font.color = system_color
    for i in 1...@object.element_ranks.xsize
      next if @object.element_ranks[i] == 3
      draw_icon (ModernAlgebra::CI_ITEM_ELEMENT_ICONS[i - 1], x, y, false)
      # Draw Rank
      rank = Vocab::CM_ELEMENT_RANKS[@object.element_ranks[i] - 1]
      contents.draw_text (x, y, 24, 24, rank, 1)
      x -= 24
    end
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Get Monster Stats
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def get_monster_stats
    item_stats, stat_names = [], []
    # HP and MP
    item_stats.push (@object.maxhp, @object.maxmp)
    stat_names.push (Vocab.hp, Vocab.mp)
    # Get all parameters
    item_stats.push (@object.atk, @object.def, @object.agi, @object.spi)
    stat_names.push (Vocab.atk, Vocab.def, Vocab.agi, Vocab.spi)
    item_stats.push (@object.hit, @object.eva)
    stat_names.push (Vocab::GI_HIT_RATIO, Vocab::GI_EVASION)
    return item_stats, stat_names
  end
end

#==============================================================================
# ** Scene Battle
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    aliased method - initialize
#==============================================================================

class Scene_Battle
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Object Initialization
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias malgbra_catmonster_start_5hg2 start
  def start (*args)
    if ModernAlgebra::CM_AUTO_ENCOUNTER_MONSTERS
      array = $game_party.encountered_monsters
      $game_troop.members.each { |enemy| array.push (enemy.enemy_id) unless array.include? (enemy.enemy_id) }
    end
    malgbra_catmonster_start_5hg2 (*args) # Run Original Method
  end
end


Dernière édition par lecode234 le Ven 29 Jan 2010 - 19:54, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Maître des Duels
Maître des Duels
avatar


Masculin Age : 25
Inscrit le : 29/07/2009
Messages : 7838

MessageSujet: Re: [VX] Monster cataloque   Ven 29 Jan 2010 - 19:41

Tu devrais indiquer l'auteur.

De plus ce n'est pas posté au bon endroit. Un modo devrait surement déplacer ce sujet.
Sinon c'est sympa pour le partage.

_________________
Gimme a hell yeah.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Citadin Lv.7
Citadin Lv.7
avatar


Masculin Age : 21
Inscrit le : 09/01/2010
Messages : 219

MessageSujet: Re: [VX] Monster cataloque   Ven 29 Jan 2010 - 19:50

Ha Oui! Complètement oublier^^'
Sinon j'ai poster dans partage de script je voie pas pourquoi c'est au mauvais endroit xD
EDIT:OH! La merde que j'ai foutue.
Vraiment désoler je pensais être dans la catégorie Combat.
aie aie aie..
j'vais me ranger quelques jours...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Doyen
Doyen
avatar


Masculin Age : 39
Inscrit le : 20/08/2008
Messages : 2485

MessageSujet: Re: [VX] Monster cataloque   Ven 29 Jan 2010 - 20:33

Merci tout de même pour la partage, et lâche pas, on apprend de nos erreurs! ^^

_________________




Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Poulet carnivore Lv.2
Poulet carnivore Lv.2


Masculin Inscrit le : 10/07/2010
Messages : 23

MessageSujet: Re: [VX] Monster cataloque   Mer 14 Juil 2010 - 16:15

Désolé pour ce nécropost mais j'aimerais vraiment avoir ces scripts pour mon projet mais ca ne marche pas j'aimerais bien savoir où mettre ces scripts. s'il vous plait
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Vache Folle
Vache Folle
avatar


Masculin Age : 22
Inscrit le : 22/05/2010
Messages : 3004

MessageSujet: Re: [VX] Monster cataloque   Mer 14 Juil 2010 - 19:10

C'est simple, tu ouvres l'éditur de scripts(icone à droite de celui pour importer des ressurces ou touche f11) et tu fais clique droit,inserer. Tu te retrouves avec une page blanche. Tu fais copier coller du script que tu veux et c'est bon.
PS: TOUS les scripts doivent être placés au dessus du script main.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Poulet carnivore Lv.2
Poulet carnivore Lv.2


Masculin Inscrit le : 10/07/2010
Messages : 23

MessageSujet: Re: [VX] Monster cataloque   Jeu 15 Juil 2010 - 8:47

ok merci maintenant je m'en souviendrais où mettre les scripts ^^
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Va-nu-pieds Lv.4
Va-nu-pieds Lv.4
avatar


Masculin Age : 28
Inscrit le : 14/10/2010
Messages : 59

MessageSujet: Re: [VX] Monster cataloque   Jeu 9 Aoû 2012 - 10:22

Bonjour,

Ton script à l'air pas mal mais il ne fonctione pas sur mon jeu. quand je l'appelle il me met

Script 'nom du script' line 392: NoMethodError occurred
undefined method 'include?' for nil:NilClass

merci de m'aider
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Va-nu-pieds Lv.4
Va-nu-pieds Lv.4
avatar


Masculin Age : 28
Inscrit le : 14/10/2010
Messages : 59

MessageSujet: Re: [VX] Monster cataloque   Jeu 9 Aoû 2012 - 10:30

Re bonjour,

Quand je déclanche un combat il me met

Script 'nom du script' line 571: NoMethodError occurred
undefined method 'include?' for nil:NilClass

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: [VX] Monster cataloque   

Revenir en haut Aller en bas
 

[VX] Monster cataloque

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

 Sujets similaires

-
» Monster est grand, Monster est méchant (a)
» .Monster - Bonjour (aa)
» Cookiemonster in the place buddy =)
» Pourquoi j'ai choisi WordPress
» bonjour à tous

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Maker VX :: Entraide :: Scripts :: Scripts VX - RGSS2 :: Divers-
Créer un forum | © phpBB | Forum gratuit d'entraide | Signaler un abus | Forum gratuit