Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #===============================================================================
- #
- # Yanfly Engine RD - Bestiary + Display Scanned Enemy
- # Last Date Updated: 2009.06.13
- # Level: Easy, Normal, Hard, Lunatic
- #
- # Similar to the Display Skill Query script, I've made one for enemies. This was
- # mostly to replace my Display Target Data script, considering it didn't display
- # much data at all about the target. This one was also made on the account of
- # making a proper scan skill property in addition to different parts of enemy
- # data that it can scan.
- #
- # I've disliked scan systems where you would have to keep rescanning an enemy
- # to see its HP, MP, etc. It felt counterproductive on the player side since
- # valuable turns are wasted just to view some numbers. This system allows you to
- # pull up enemy data upon enemy selection (where I believe it matters most).
- # After all, providing convenience for the player is absolutely important since
- # it reduces metagaming, which is something that should never have to happen
- # for an RPG Maker project.
- #
- # For the users who fear giving too much information to their players, users can
- # disable parts of the script and prevent certain pages from appear at all. You
- # can limit how much and how little you want to show your players through <hide>
- # tags, too, for the enemies' noteboxes.
- #
- # Since the May 27th update, a bestiary option is created for the main menu.
- # You can access this menu and view all of the scanned data from the enemies
- # you've discovered. This option is accessible once the bestiary switch is on.
- #
- #===============================================================================
- # Updates:
- # ----------------------------------------------------------------------------
- # o 2009.06.10 - Compatibility added for Enemy Level Control.
- # o 2009.06.09 - Small fix to bestiary calculation for not requiring scan.
- # o 2009.05.27 - Bestiary added.
- # Monsters can now have more than one boss type.
- # o 2009.04.27 - MAJOR BUGFIX: Fixed a save game corrupting bug.
- # o 2009.04.21 - Finished and publicized.
- # o 2009.04.20 - Started script.
- #===============================================================================
- # How to Use: Normal Mode
- #===============================================================================
- #
- # To access the bestiary, make sure the switch governing the bestiary option
- # is on. Otherwise, it will not show. The bestiary will be accessible by default
- # at the start of a new game.
- #
- # ----------------------------------------------------------------------------
- # Placing these tags into a skill's notebox will reveal specific scan data. The
- # scan data will appear for all enemies of the same enemy type, but each indi-
- # vidual enemy will still possess their own modifiers.
- #
- # <scan whole>
- # Causes the skill to unlock all scan data about the target enemy.
- #
- # <scan hp mp>
- # Causes the skill to unlock only the HP and MP portion of the enemy data.
- # Note that even if HP and MP were unscanned, the gauge bars will still move up
- # and down as to give the player a general idea of how much health the enemy has
- # before giving the player more accurate information.
- #
- # <scan stats>
- # Causes the skill to unlock the ADSA and HECO stats for the target enemy scan
- # data. On the HECO stats side, you can hide certain stats from appear. Odds is
- # hidden by default with this script.
- #
- # <scan skills>
- # Causes the skill to unlock the skill page for the target enemy scan data. This
- # will list all of the skills the enemy will use in battle. Duplicate skills are
- # condensed and removed from the listing.
- #
- # <scan elements>
- # Causes the skill to unlock the elements page for the target enemy data. This
- # provides a chart of the enemy's elemental affinities as to what will damage
- # the enemy more or less.
- #
- # <scan status effects> or <scan states>
- # Causes the skill to unlock the status effects page for the target enemy data.
- # Like the elements page, this provides a listing of status effect chances to
- # occur for the enemy.
- #
- # <scan steal>
- # Only appears if you have KGC Steal. This page will reveal information about
- # items that can be stolen form the enemy along with their steal rates.
- #
- # <scan spoils>
- # Causes a skill to unlock the experience, gold, encounters page for target
- # enemy data. This is pretty much stuff that comes out of an enemy after a
- # battle is over. Can include drops (optional).
- #
- # <scan drops>
- # Causes a skill to unlock the drops page. Use this if you use KGC's Extra Drops
- # and if your enemies have huge drop lists. This will display way more.
- #
- # <scan description>
- # Causes a skill to unlock the extra description page where you can make your
- # own custom notes. Note that if you don't alter the Lunatic mode hash down
- # below, even if you scan the enemy, the extra page won't show unless there is
- # something to be shown.
- #
- #===============================================================================
- # How to Use: Hard Mode
- #===============================================================================
- #
- # <boss type x> or <boss type x,x>
- # This will determine the boss types available for that enemy. Boss types will
- # categorize enemies differently in the bestiary and also display certain parts
- # of the scan data differently.
- #
- # For those that would like to prevent certain pages from showing up on specific
- # enemies, you can use the following tags on those enemies to prevent those very
- # pages from appearing without completely disabling a part of the scan set.
- #
- # <hide whole>
- # Prevents everything from being shown at all for that enemy.
- #
- # <hide hp_mp>
- # Prevents HP and MP from being displayed for that enemy.
- #
- # <hide stats>
- # Prevents the ADSA and HECO stats from being displayed for that enemy.
- #
- # <hide skills>
- # Prevents skills from being displayed for that enemy.
- #
- # <hide elements>
- # Prevents element chart from being displayed for that enemy.
- #
- # <hide status effects> or <hide states>
- # Prevents status effect probability chart from being displayed for that enemy.
- #
- # <hide steal>
- # Prevents stolen items from being shown for that enemy.
- #
- # <hide spoils>
- # Prevents victory spoil information from being shown for that enemy.
- #
- # <hide drops>
- # Prevents drop information from being displayed for that enemy.
- #
- # If you might have noticed, there's no hide version for description. This is
- # because if you simply don't add the enemy extra notes description to the hash,
- # they won't appear at all. It's easier to manage that way instead.
- #
- #===============================================================================
- #
- # Compatibility
- # - Works With: KGC's ExtraDropItem, Steal
- # - Alias: Game_Battler, skill_effect
- # - Alias: Game_Enemy, initialize, transform, escape, perform_collapse
- # - Alias: Scene_Battle, create_info_viewport, update_target_enemy_selection
- #
- #===============================================================================
- # Credits:
- # KGC for Window_Command imports.
- #===============================================================================
- $imported = {} if $imported == nil
- $imported["DisplayScannedEnemy"] = true
- module YE
- module MENU
- module MONSTER
- #------------------------------------------------------------------------
- # BESTIARY RELATED
- #------------------------------------------------------------------------
- # The following will govern the rules which the bestiary scene will abide
- # by. Be sure to adjust it accordingly to your needs.
- BESTIARY_TITLE = "Bestiario" # The title which appears on the menu.
- BESTIARY_SWITCH = 117 # Which switch will enable this command?
- BESTIARY_LIST = "%s List" # Text which follows boss type.
- BESTIARY_MASK = "?" # Mask used for unknown enemies.
- # The following is an array used to hide monsters from the bestiary.
- # Input the ID's of the monsters into the array if you wish to hide them.
- # By default, Swap Dummy Monsters are automatically hidden.
- HIDDEN_MONSTERS = [35]
- # The following determines the order the monsters are displayed in. Note
- # that if you alphabetize the monster list, this will have no effect.
- BESTIARY_ORDER = [1...38]
- # The following lets you govern the rules for displaying different
- # boss type categories.
- CATEGORIZE_TEXT = "Shift: Change Categories"
- CATEGORIZE_HELP = "Select a Category Type"
- CATEGORIZE_VIEW = "View %s"
- CATEGORIZE_BUTTON = Input::SHIFT
- # The following adjusts the category data shown for the overall monster
- # book information.
- MENU_FONT_SIZE = 16
- BESTIARY_INFO = "Bestiary Information"
- TEXT_COMPLETION = "Bestiary Completion"
- RATE_COMPLETION = "%#.05g%%"
- ICON_COMPLETION = 141
- TEXT_DISCOVERED = "Total Discovered"
- ICON_DISCOVERED = 196
- TEXT_ENCOUNTERS = "Total Encounters"
- TEXT_DEFEATED = "Total Defeated"
- TEXT_ESCAPED = "Total Escaped"
- TEXT_TYPE_DIS = "%s Discovered"
- TEXT_TYPE_ENC = "%s Encountered"
- TEXT_TYPE_DEF = "%s Defeated"
- TEXT_TYPE_ESC = "%s Escaped"
- #------------------------------------------------------------------------
- # SCAN WINDOW RELATED
- #------------------------------------------------------------------------
- # This is the button pressed to trigger the enemy scan window in battle.
- ENEMY_SCAN_BUTTON = Input::A
- # If this is set to true, you must use scan skills on an enemy type before
- # any data will be displayed at all.
- REQUIRE_SCAN = false
- # This allows you to adjust the help info window's properties in battle.
- HELP_WINDOW_TX = "Shift ver información."
- HELP_WINDOW_ON = true # This turns the window on and off.
- HELP_WINDOW_X = 0 # This is where the X position is.
- HELP_WINDOW_Y = 0 # This is where the Y position is.
- HELP_WINDOW_W = 544 # This is what width the window is.
- HELP_WINDOW_O = 255 # This is the window's opacity level.
- # This affects how you want the scan to appear.
- ENEMY_NAME = "Datos de %s"
- # This displays the title information at the very top of the scan window.
- # Most of the strings are explained by the notes to the side.
- DATA_LEFT = "<<" # This appears if page can be moved back.
- DATA_PAGE1 = "Información" # This appears if only one page of info.
- DATA_PAGES = "Pagina %d/%d" # This appears if more than one page of info.
- DATA_RIGHT = ">>" # This appears if page can move right.
- DATA_CATEGORY_COLOUR = 4 # This affects category text color.
- # This is the sound played when flipping through the various pages.
- # Set it to nil if you don't want a sound to play.
- PAGE_SOUND = RPG::SE.new("Wind7", 80, 125)
- # Set this to true if you would rather the scan display the page info
- # type rather than Page X/Y. The titles following correspond to the pages'
- # titles should you decide to display them.
- REPLACE_PAGE_MSG = false
- TITLE_UNKNOWN = "¿¿¿???"
- # This affects the information shown on the first page of the scan.
- # The first page shows HP, general stats, and states if the enemy is
- # under the effects of any.
- SHOW_GENERAL = false
- TITLE_GENERAL = "Datos Generales"
- GAUGE_HEIGHT = 9 # This affects the gauge height.
- EXHAUST_COLOUR = 7 # This adjusts the exhaustion color.
- FONT_SIZE = 16 # Sets font size for smaller text.
- HIDDEN_HP = "¿?" # If the enemy is unscanned or hides HP.
- HIDDEN_MP = "¿?" # If the enemy is unscanned or hides MP.
- DATA_STATES = "Parámetros" # Category for affected states.
- HIDDEN_STAT = "¿?" # If the enemy is unscanned or hides stats.
- DATA_ATK = "ATQ" # For attack.
- DATA_DEF = "DEF" # For defense.
- DATA_SPI = "CRI" # For spirit.
- DATA_AGI = "AGI" # For agility.
- DATA_HIT = "PUN" # For hit rate.
- HIDE_HIT = false # Set this to true if you wish to hide Hit.
- DATA_EVA = "EVA" # For evasion rate.
- HIDE_EVA = false # Set this to true if you wish to hide Eva.
- DATA_CRI = "CRI" # For critical rate.
- HIDE_CRI = false # Set this to true if you wish to hide Cri.
- DATA_ODDS = "LUK" # For odds value.
- HIDE_ODDS = true # Set this to true if you wish to hide Odds.
- # The display types alter how HP and MP is shown for scanned enemies.
- # Type 1: Current HP
- # Type 2: Current HP/MaxHP
- # Type 3: Percentage of Current HP/MaxHP
- # The same goes for MP display type.
- HP_DISPLAY_TYPE = 2
- MP_DISPLAY_TYPE = 2
- # Here you can control boss types and whatnot. To use boss types, add
- # the boss type category here and insert in the enemy's notebox the
- # <boss type x> tag. It will reference to this hash as to how to display
- # the following information: Boss Type Icon, HP Icon, HP color 1,
- # HP color 2, MP Icon, MP color 1, and MP color 2.
- BOSS_TYPES ={
- # Type => [Icon,HPIc,HPC1,HPC2,MPIc,MPC1,MPC2, Type Name, Pural]
- 0 => [ 118, 99, 20, 21, 100, 22, 23, "Monstruo", "Monstruos"],
- 1 => [ 112, 208, 18, 20, 209, 11, 22, "Jefe", "Jefes"],
- 2 => [ 157, 99, 20, 21, 100, 22, 23, "Mini Jefe", "Mini Jefes"],
- } # Do not remove this.
- # This is for the bestiary and how you would like the order to appear.
- TYPE_ORDERING = [0, 2, 1]
- # This is all of the icon information for the first page.
- ICON_HIGH = 142 # If a stat is higher than base stat.
- ICON_LOW = 143 # If a stat is lower than base stat.
- ICON_ATK = 2 # Icon for ATK
- ICON_DEF = 52 # Icon for DEF
- ICON_SPI = 21 # Icon for SPI
- ICON_AGI = 48 # Icon for AGI
- ICON_HIT = 135 # Icon for HIT
- ICON_EVA = 158 # Icon for EVA
- ICON_CRI = 119 # Icon for CRI
- ICON_ODDS = 137 # Icon for ODD
- # This affects info displayed on the skill info page. Skills only appear
- # if the monster has those skills in its action list. Otherwise, this
- # page will not appear at all.
- SHOW_SKILLS = false
- TITLE_SKILLS = "Información de Artes"
- DATA_SKILLS = "Nombres de Artes"
- VIEW_SKILLS1 = "%d Arte"
- VIEW_SKILLS2 = "%d Artes"
- # This affects info displayed for the element affinity info page.
- # Elements will only show if they are listed in the hash below.
- SHOW_ELEMENTS = false
- TITLE_ELEMENTS = "Afinidad Elemental"
- ICON_E_RATE_U = 9 # Icon used for unknown element rates.
- ICON_E_RATE_Z = 96 # Icon used for element rate Z.
- ICON_E_RATE_A = 99 # Icon used for element rate A.
- ICON_E_RATE_B = 99 # Icon used for element rate B.
- ICON_E_RATE_C = 102 # Icon used for element rate C.
- ICON_E_RATE_D = 101 # Icon used for element rate D.
- ICON_E_RATE_E = 100 # Icon used for element rate E.
- ICON_E_RATE_F = 103 # Icon used for element rate F.
- ELEMENT_HASH ={
- # These hashes allow you to construct various rows in the element page.
- # There's a maximum fit of 10 elements per row.
- "Physical Elements" => [
- # These are the element ID's.
- [1, 2, 3, 4, 8],
- # These are the element icons.
- [4684, 4753, 4791, 4754, 4767]
- ], # Next row
- "Magical Elements" => [
- # These are the element ID's.
- [5, 7, 9, 10, 11, 12, 13, 14, 15, 16],
- # These are the element icons.
- [4702, 4803, 4758, 4765, 4764, 4759, 4761, 4760, 4762, 4766]
- ], # Next row
- } # Do not remove this.
- # This affects info displayed for the status effect probability page.
- # Status effect will only show if they're listed in the hash below.
- SHOW_STATES = false
- TITLE_STATES = "Efectividad Elemental"
- ICON_S_RATE_U = 94 # Icon used for unknown status rates.
- ICON_S_RATE_Z = 96 # Icon used for status rate Z.
- ICON_S_RATE_A = 99 # Icon used for status rate A.
- ICON_S_RATE_B = 99 # Icon used for status rate B.
- ICON_S_RATE_C = 102 # Icon used for status rate C.
- ICON_S_RATE_D = 101 # Icon used for status rate D.
- ICON_S_RATE_E = 100 # Icon used for status rate E.
- ICON_S_RATE_F = 103 # Icon used for status rate F.
- STATES_HASH ={
- # These hashes allow you to construct various rows in the states page.
- # There's a maximum fit of 10 states per row.
- "Conditions" => [ 2, 3, 4, 5, 6, 7, 8],
- "Buffs" => [ 9, 10, 11, 12],
- "Debuffs" => [13, 14, 15, 16],
- } # Do not remove this.
- # The following portion requires KGC's Steal script to show, but doesn't
- # affect the rest of this script. This page shows a list of stealable
- # goodies you can nab using KGC's Steal script.
- SHOW_STEAL = false
- TITLE_STEAL = "Steal Info"
- DATA_S_ITEM = "Item Name"
- DATA_S_CHANCE = "Rate"
- # This affects info displayed for the spoils page. Note that you can
- # choose to activate this page if an enemy of a type dies.
- SHOW_SPOILS = false
- TITLE_SPOILS = "Victory Spoils"
- DEATH_SPOILS = false # Set to true if you wish to reveal spoils info
- # when an enemy dies.
- DATA_GOLD = "Gold" # Message used to indicate gold drop.
- VIEW_GOLD = "%d Gold" # How the gold gain will appear.
- ICON_GOLD = 205 # Icon used for gold drop.
- DATA_EXP = "EXP" # Message used to indicate experience gain.
- VIEW_EXP = "%d EXP" # How the exp gain will appear.
- ICON_EXP = 62 # Icon used for exp gain.
- DATA_ENCOUNTER = "Encounters" # Message used to indicate encounters.
- VIEW_ENC1 = "%d Time" # How the encounters will appear. Singular.
- VIEW_ENC2 = "%d Times" # How the encounters will appear. Plural.
- ICON_ENCOUNTER = 63 # Icon used for encounters.
- DATA_KILLED = "Defeated" # Message used to indicate defeats.
- VIEW_KILLED1 = "%d Kill" # How the defeats will appear. Singular.
- VIEW_KILLED2 = "%d Kills" # How the defeats will appear. Plural.
- ICON_KILLED = 157 # Icon used for defeats.
- DATA_ESCAPED = "Escaped" # Message used to indicate escapes.
- VIEW_ESCAPED1 = "%d Fled" # How the defeats will appear. Singular.
- VIEW_ESCAPED2 = "%d Fled" # How the defeats will appear. Plural.
- ICON_ESCAPED = 155 # Icon used for escapes.
- SPOIL_DROPS = false # Draw drops for the Spoils page?
- DATA_DROPS = "Drops" # Message used to indicate drops.
- # For those that would like a separate page for drops, use this page.
- # This affects all of the information relative to drops anyway.
- SHOW_DROPS = false
- TITLE_DROPS = "Drops Info"
- DEATH_DROPS = false # Set to true if you wish to reveal spoils info
- # when an enemy dies.
- DATA_D_ITEM = "Drop Name"
- DATA_D_CHANCE = "Chance"
- # This affects the enemy notes section which requires Lunatic modifying.
- # This page can be about anything you want to write about.
- SHOW_NOTES = true
- TITLE_NOTES = "Notas"
- NOTE_PAGE_WIDTH = 240
- NOTE_PAGE_TEXT_SIZE = 16
- NOTE_PAGE_TEXT_COLOUR = 0
- end # MONSTER
- end # MENU
- end # YE
- #===============================================================================
- # How to Use: Lunatic Mode
- #===============================================================================
- #
- # This part allows you to input your own custom notes and whatnot. Custom notes
- # page will only appear for enemies that are listed in the note hash beneath the
- # Lunatic Mode section.
- #
- # The process is pretty simple. Just follow the template below.
- #
- # ENEMY_NOTES ={
- # enemy_id => "This would be the first line| and this would be the next!",
- # } # Do not remove this.
- #
- # Enter the enemy's ID number where "enemy_id" is. Following the "=>" input
- # the custom notes you'd like for that enemy to display. If you wish to add
- # line breaks to notes, add a | where you would like the break to appear. Now
- # while they do appear in the notebox, they are confined by the note page's
- # width and will shrink if the lines end up being too long. You can adjust the
- # note page's width in the part before the Lunatic Mode instructions.
- #
- #===============================================================================
- module YE
- module HASH
- ENEMY_NOTES ={
- 10 => "Vampires are mythological or|folkloric revenants who sub-|sist by feeding on the blood|of the living. In folkloric|tales, the undead vampires|often visited loved ones and|caused mischief or deaths in|the neighbourhoods they in-|habited when they were alive.",
- 1 => "Limo es un monstruo gélatina. Limo no|debe tocarse porque si lo haces el te|transformará en su esclavo estilo java ._.",
- 1201 => "Good bye, world.|It was nice meeting you.",
- } # Do not remove this.
- end #module HASH
- end #module YE
- #===============================================================================
- # Editting anything past this point may potentially result in causing computer
- # damage, incontinence, explosion of user's head, coma, death, and/or halitosis.
- # Therefore, edit at your own risk.
- #===============================================================================
- module YE
- module REGEXP
- module BASEITEM
- SCAN_WHOLE = /<(?:SCAN_WHOLE|scan whole)>/i
- SCAN_HP_MP = /<(?:SCAN_HP_MP|scan hp mp)>/i
- SCAN_STATS = /<(?:SCAN_STATS|scan stats)>/i
- SCAN_SKILL = /<(?:SCAN_SKILLS|scan skills)>/i
- SCAN_ELEM = /<(?:SCAN_ELEMENTS|scan elements)>/i
- SCAN_STATE = /<(?:SCAN_STATUS_EFFECTS|scan status effects|scan states)>/i
- SCAN_SPOIL = /<(?:SCAN_SPOILS|scan spoils)>/i
- SCAN_DROPS = /<(?:SCAN_DROPS|scan drops)>/i
- SCAN_STEAL = /<(?:SCAN_STEAL|scan steal)>/i
- SCAN_DESC = /<(?:SCAN_DESCRIPTION|scan description)>/i
- end # BASEITEM
- module ENEMY
- BOSS_TYPE = /<(?:BOSS_TYPE|boss type)[ ]*(\d+(?:\s*,\s*\d+)*)>/i
- HIDE_WHOLE = /<(?:HIDE_WHOLE|hide whole)>/i
- HIDE_HP_MP = /<(?:HIDE_HP_MP|hide hp mp)>/i
- HIDE_STATS = /<(?:HIDE_STATS|hide stats)>/i
- HIDE_SKILL = /<(?:HIDE_SKILLS|hide skills)>/i
- HIDE_ELEM = /<(?:HIDE_ELEMENTS|hide elements)>/i
- HIDE_STATE = /<(?:HIDE_STATUS_EFFECTS|hide status effects|hide states)>/i
- HIDE_SPOIL = /<(?:HIDE_SPOILS|hide spoils)>/i
- HIDE_DROPS = /<(?:HIDE_DROPS|hide drops)>/i
- HIDE_STEAL = /<(?:HIDE_STEAL|hide steal)>/i
- end # ENEMY
- end # REGEXP
- module_function
- #--------------------------------------------------------------------------
- # Convert Array to Integer
- #--------------------------------------------------------------------------
- def convert_integer_array(array)
- result = []
- for i in array
- case i
- when Range; result += i.to_a
- when Integer; result.push(i)
- end
- end
- return result
- end
- #--------------------------------------------------------------------------
- # Converted Constants
- #--------------------------------------------------------------------------
- ENEMY_LIST = convert_integer_array(MENU::MONSTER::BESTIARY_ORDER)
- HIDDEN_ENEMY = convert_integer_array(MENU::MONSTER::HIDDEN_MONSTERS)
- end # YE
- #===============================================================================
- # RPG::Enemy
- #===============================================================================
- class RPG::Enemy
- #--------------------------------------------------------------------------
- # Yanfly_Cache_DSE
- #--------------------------------------------------------------------------
- def yanfly_cache_enemy_dse
- @hide_whole = false; @hide_hp_mp = false; @hide_stats = false
- @hide_elem = false; @hide_state = false; @hide_desc = false
- @hide_skill = false; @hide_spoil = false; @hide_drops = false
- @hide_steal = false
- @boss_type = []
- self.note.split(/[\r\n]+/).each { |line|
- case line
- when YE::REGEXP::ENEMY::BOSS_TYPE
- $1.scan(/\d+/).each { |num|
- if num.to_i >= 0
- @boss_type.push(num.to_i)
- end }
- when YE::REGEXP::ENEMY::HIDE_WHOLE
- @hide_whole = true
- when YE::REGEXP::ENEMY::HIDE_HP_MP
- @hide_hp_mp = true
- when YE::REGEXP::ENEMY::HIDE_STATS
- @hide_stats = true
- when YE::REGEXP::ENEMY::HIDE_SKILL
- @hide_skill = true
- when YE::REGEXP::ENEMY::HIDE_ELEM
- @hide_elem = true
- when YE::REGEXP::ENEMY::HIDE_STATE
- @hide_state = true
- when YE::REGEXP::ENEMY::HIDE_SPOIL
- @hide_spoil = true
- when YE::REGEXP::ENEMY::HIDE_DROPS
- @hide_drops = true
- when YE::REGEXP::ENEMY::HIDE_STEAL
- @hide_steal = true
- end
- }
- @boss_type = [0] if @boss_type == []
- end # end yanfly_cache_cse
- #--------------------------------------------------------------------------
- # Boss Type
- #--------------------------------------------------------------------------
- def boss_type
- yanfly_cache_enemy_dse if @boss_type == nil
- return @boss_type
- end
- #--------------------------------------------------------------------------
- # Hide Scan
- #--------------------------------------------------------------------------
- def hide_whole
- yanfly_cache_enemy_dse if @hide_whole == nil
- return @hide_whole
- end
- def hide_hp_mp
- yanfly_cache_enemy_dse if @hide_hp_mp == nil
- return @hide_hp_mp
- end
- def hide_stats
- yanfly_cache_enemy_dse if @hide_stats == nil
- return @hide_stats
- end
- def hide_skill
- yanfly_cache_enemy_dse if @hide_skill == nil
- return @hide_skill
- end
- def hide_elem
- yanfly_cache_enemy_dse if @hide_elem == nil
- return @hide_elem
- end
- def hide_state
- yanfly_cache_enemy_dse if @hide_state == nil
- return @hide_state
- end
- def hide_spoil
- yanfly_cache_enemy_dse if @hide_spoil == nil
- return @hide_spoil
- end
- def hide_drops
- yanfly_cache_enemy_dse if @hide_drops == nil
- return @hide_drops
- end
- def hide_steal
- yanfly_cache_enemy_dse if @hide_steal == nil
- return @hide_steal
- end
- end # RPG::Enemy
- #===============================================================================
- # RPG::BaseItem
- #===============================================================================
- class RPG::BaseItem
- #--------------------------------------------------------------------------
- # Yanfly_Cache_DSE
- #--------------------------------------------------------------------------
- def yanfly_cache_baseitem_dse
- @scan_whole = false; @scan_hp_mp = false; @scan_stats = false
- @scan_elem = false; @scan_state = false; @scan_desc = false
- @scan_skill = false; @scan_spoil = false; @scan_drops = false
- @scan_steal = false
- self.note.split(/[\r\n]+/).each { |line|
- case line
- when YE::REGEXP::BASEITEM::SCAN_WHOLE
- @scan_whole = true
- when YE::REGEXP::BASEITEM::SCAN_HP_MP
- @scan_hp_mp = true
- when YE::REGEXP::BASEITEM::SCAN_STATS
- @scan_stats = true
- when YE::REGEXP::BASEITEM::SCAN_SKILL
- @scan_skill = true
- when YE::REGEXP::BASEITEM::SCAN_ELEM
- @scan_elem = true
- when YE::REGEXP::BASEITEM::SCAN_STATE
- @scan_state = true
- when YE::REGEXP::BASEITEM::SCAN_SPOIL
- @scan_spoil = true
- when YE::REGEXP::BASEITEM::SCAN_DROPS
- @scan_drops = true
- when YE::REGEXP::BASEITEM::SCAN_STEAL
- @scan_steal = true
- when YE::REGEXP::BASEITEM::SCAN_DESC
- @scan_desc = true
- end
- }
- end # end yanfly_cache_cse
- #--------------------------------------------------------------------------
- # Skill Scan
- #--------------------------------------------------------------------------
- def scan_whole
- yanfly_cache_baseitem_dse if @scan_whole == nil
- return @scan_whole
- end
- def scan_hp_mp
- yanfly_cache_baseitem_dse if @scan_hp_mp == nil
- return @scan_hp_mp
- end
- def scan_stats
- yanfly_cache_baseitem_dse if @scan_stats == nil
- return @scan_stats
- end
- def scan_skill
- yanfly_cache_enemy_dse if @scan_skill == nil
- return @scan_skill
- end
- def scan_elem
- yanfly_cache_baseitem_dse if @scan_elem == nil
- return @scan_elem
- end
- def scan_state
- yanfly_cache_baseitem_dse if @scan_state == nil
- return @scan_state
- end
- def scan_spoil
- yanfly_cache_baseitem_dse if @scan_spoil == nil
- return @scan_spoil
- end
- def scan_drops
- yanfly_cache_baseitem_dse if @scan_drops == nil
- return @scan_drops
- end
- def scan_steal
- yanfly_cache_baseitem_dse if @scan_steal == nil
- return @scan_steal
- end
- def scan_desc
- yanfly_cache_baseitem_dse if @scan_desc == nil
- return @scan_desc
- end
- end # RPG::BaseItem
- #===============================================================================
- # Game Battler
- #===============================================================================
- class Game_Battler
- #--------------------------------------------------------------------------
- # alias skill_effect
- #--------------------------------------------------------------------------
- alias skill_effect_dse skill_effect unless $@
- def skill_effect(user, skill)
- skill_effect_dse(user, skill)
- if user.actor? and !self.actor?
- if skill.scan_hp_mp or skill.scan_whole
- $game_party.scan_hp_mp.push(enemy.id) unless $game_party.scan_hp_mp.include?(enemy.id)
- end
- if skill.scan_stats or skill.scan_whole
- $game_party.scan_stats.push(enemy.id) unless $game_party.scan_stats.include?(enemy.id)
- end
- if skill.scan_skill or skill.scan_whole
- $game_party.scan_skill.push(enemy.id) unless $game_party.scan_skill.include?(enemy.id)
- end
- if skill.scan_state or skill.scan_whole
- $game_party.scan_state.push(enemy.id) unless $game_party.scan_state.include?(enemy.id)
- end
- if skill.scan_elem or skill.scan_whole
- $game_party.scan_elem.push(enemy.id) unless $game_party.scan_elem.include?(enemy.id)
- end
- if skill.scan_spoil or skill.scan_whole
- $game_party.scan_spoil.push(enemy.id) unless $game_party.scan_spoil.include?(enemy.id)
- end
- if skill.scan_drops or skill.scan_whole
- $game_party.scan_drops.push(enemy.id) unless $game_party.scan_drops.include?(enemy.id)
- end
- if skill.scan_steal or skill.scan_whole
- $game_party.scan_steal.push(enemy.id) unless $game_party.scan_steal.include?(enemy.id)
- end
- if skill.scan_desc or skill.scan_whole
- $game_party.scan_desc.push(enemy.id) unless $game_party.scan_desc.include?(enemy.id)
- end
- end
- end
- end # Game_Battler
- #===============================================================================
- # Game Party
- #===============================================================================
- class Game_Party < Game_Unit
- #--------------------------------------------------------------------------
- # Public Instance Variables
- #--------------------------------------------------------------------------
- attr_writer :monsters_encounter
- attr_writer :monsters_defeated
- attr_writer :monsters_escaped
- attr_writer :scan_hp_mp
- attr_writer :scan_stats
- attr_writer :scan_skill
- attr_writer :scan_state
- attr_writer :scan_elem
- attr_writer :scan_spoil
- attr_writer :scan_drops
- attr_writer :scan_steal
- attr_writer :scan_desc
- #--------------------------------------------------------------------------
- # Definitions
- #--------------------------------------------------------------------------
- def monsters_encounter
- @monsters_encounter = {} if @monsters_encounter == nil
- return @monsters_encounter
- end
- def monsters_defeated
- @monsters_defeated = {} if @monsters_defeated == nil
- return @monsters_defeated
- end
- def monsters_escaped
- @monsters_escaped = {} if @monsters_escaped == nil
- return @monsters_escaped
- end
- #--------------------------------------------------------------------------
- # Definitions
- #--------------------------------------------------------------------------
- def scan_hp_mp
- @scan_hp_mp = [] if @scan_hp_mp == nil
- return @scan_hp_mp
- end
- def scan_stats
- @scan_stats = [] if @scan_stats == nil
- return @scan_stats
- end
- def scan_skill
- @scan_skill = [] if @scan_skill == nil
- return @scan_skill
- end
- def scan_state
- @scan_state = [] if @scan_state == nil
- return @scan_state
- end
- def scan_elem
- @scan_elem = [] if @scan_elem == nil
- return @scan_elem
- end
- def scan_spoil
- @scan_spoil = [] if @scan_spoil == nil
- return @scan_spoil
- end
- def scan_drops
- @scan_drops = [] if @scan_drops == nil
- return @scan_drops
- end
- def scan_steal
- @scan_steal = [] if @scan_steal == nil
- return @scan_steal
- end
- def scan_desc
- @scan_desc = [] if @scan_desc == nil
- return @scan_desc
- end
- end
- #===============================================================================
- # Game Enemy
- #===============================================================================
- class Game_Enemy < Game_Battler
- #--------------------------------------------------------------------------
- # alias initialize
- #--------------------------------------------------------------------------
- alias initialize_dse initialize unless $@
- def initialize(index, enemy_id)
- initialize_dse(index, enemy_id)
- $game_party.monsters_encounter = {} if $game_party.monsters_encounter == nil
- if $game_party.monsters_encounter[enemy_id] == nil
- $game_party.monsters_encounter[enemy_id] = 0
- end
- $game_party.monsters_encounter[enemy_id] += 1 unless $scene.is_a?(Scene_Bestiary)
- end
- #--------------------------------------------------------------------------
- # alias Transform
- #--------------------------------------------------------------------------
- alias transform_dse transform unless $@
- def transform(enemy_id)
- transform_dse(enemy_id)
- $game_party.monsters_encounter = {} if $game_party.monsters_encounter == nil
- if $game_party.monsters_encounter[enemy_id] == nil
- $game_party.monsters_encounter[enemy_id] = 0
- end
- $game_party.monsters_encounter[enemy_id] += 1
- end
- #--------------------------------------------------------------------------
- # alias Collapse
- #--------------------------------------------------------------------------
- alias perform_collapse_dse perform_collapse unless $@
- def perform_collapse
- perform_collapse_dse
- if $game_temp.in_battle and dead?
- if YE::MENU::MONSTER::DEATH_SPOILS
- $game_party.scan_spoil.push(enemy.id) unless $game_party.scan_spoil.include?(enemy.id)
- end
- if YE::MENU::MONSTER::DEATH_DROPS
- $game_party.scan_drops.push(enemy.id) unless $game_party.scan_drops.include?(enemy.id)
- end
- $game_party.monsters_defeated = {} if $game_party.monsters_defeated == nil
- if $game_party.monsters_defeated[enemy_id] == nil
- $game_party.monsters_defeated[enemy_id] = 0
- end
- $game_party.monsters_defeated[enemy.id] += 1
- end
- end
- #--------------------------------------------------------------------------
- # alias Escape
- #--------------------------------------------------------------------------
- alias escape_dse escape unless $@
- def escape
- $game_party.monsters_escaped = {} if $game_party.monsters_escaped == nil
- if $game_party.monsters_escaped[enemy_id] == nil
- $game_party.monsters_escaped[enemy_id] = 0
- end
- $game_party.monsters_escaped[enemy.id] += 1
- escape_dse
- end
- #--------------------------------------------------------------------------
- # Encounter Details
- #--------------------------------------------------------------------------
- def encounters_dse
- if $game_party.monsters_encounter[enemy.id] == nil
- $game_party.monsters_encounter[enemy.id] = 0
- end
- return $game_party.monsters_encounter[enemy.id]
- end
- def defeated_dse
- if $game_party.monsters_defeated[enemy.id] == nil
- $game_party.monsters_defeated[enemy.id] = 0
- end
- return $game_party.monsters_defeated[enemy.id]
- end
- def escaped_dse
- if $game_party.monsters_escaped[enemy.id] == nil
- $game_party.monsters_escaped[enemy.id] = 0
- end
- return $game_party.monsters_escaped[enemy.id]
- end
- end # Game_Enemy
- #==============================================================================
- # Window_Command (imported from KGC)
- #==============================================================================
- class Window_Command < Window_Selectable
- unless method_defined?(:add_command)
- #--------------------------------------------------------------------------
- # add command
- #--------------------------------------------------------------------------
- def add_command(command)
- @commands << command
- @item_max = @commands.size
- item_index = @item_max - 1
- refresh_command
- draw_item(item_index)
- return item_index
- end
- #--------------------------------------------------------------------------
- # refresh command
- #--------------------------------------------------------------------------
- def refresh_command
- buf = self.contents.clone
- self.height = [self.height, row_max * WLH + 32].max
- create_contents
- self.contents.blt(0, 0, buf, buf.rect)
- buf.dispose
- end
- #--------------------------------------------------------------------------
- # insert command
- #--------------------------------------------------------------------------
- def insert_command(index, command)
- @commands.insert(index, command)
- @item_max = @commands.size
- refresh_command
- refresh
- end
- #--------------------------------------------------------------------------
- # remove command
- #--------------------------------------------------------------------------
- def remove_command(command)
- @commands.delete(command)
- @item_max = @commands.size
- refresh
- end
- end
- end
- #===============================================================================
- # Scene Menu
- #===============================================================================
- class Scene_Menu < Scene_Base
- #--------------------------------------------------------------------------
- # alias create command window
- #--------------------------------------------------------------------------
- alias create_command_window_dse create_command_window unless $@
- def create_command_window
- create_command_window_dse
- return if $imported["CustomMenuCommand"]
- if $game_switches[YE::MENU::MONSTER::BESTIARY_SWITCH]
- scc_text = YE::MENU::MONSTER::BESTIARY_TITLE
- @command_bestiary = @command_window.add_command(scc_text)
- if @command_window.oy > 0
- @command_window.oy -= Window_Base::WLH
- end
- end
- @command_window.index = @menu_index
- end
- #--------------------------------------------------------------------------
- # alias update command selection
- #--------------------------------------------------------------------------
- alias update_command_selection_dse update_command_selection unless $@
- def update_command_selection
- call_yerd_command = 0
- if Input.trigger?(Input::C)
- case @command_window.index
- when @command_bestiary
- Sound.play_decision
- $scene = Scene_Bestiary.new(@command_window.index)
- end
- end
- update_command_selection_dse
- end
- end # Scene Menu
- #===============================================================================
- # Scene Title
- #===============================================================================
- class Scene_Title < Scene_Base
- #--------------------------------------------------------------------------
- # alias create game objects
- #--------------------------------------------------------------------------
- alias create_game_objects_dse create_game_objects unless $@
- def create_game_objects
- create_game_objects_dse
- $game_switches[YE::MENU::MONSTER::BESTIARY_SWITCH] = true
- end
- end # Scene_Title
- #===============================================================================
- # Scene Battle
- #===============================================================================
- class Scene_Battle
- #--------------------------------------------------------------------------
- # alias create_info_viewport
- #--------------------------------------------------------------------------
- alias create_info_viewport_dse create_info_viewport unless $@
- def create_info_viewport
- create_info_viewport_dse
- #---
- @enemy_name_window = Window_Enemy_Name.new(0, 0, 272, 56)
- @enemy_name_window.visible = false
- @enemy_name_window.active = false
- #---
- @enemy_image_window = Window_Enemy_Image.new(0, 56, 272, 232)
- @enemy_image_window.visible = false
- @enemy_image_window.active = false
- #---
- @enemy_scan_window = Window_Enemy_Scan.new(272, 0, 272, 288, true)
- @enemy_scan_window.visible = false
- @enemy_scan_window.active = false
- #---
- hix = YE::MENU::MONSTER::HELP_WINDOW_X
- hiy = YE::MENU::MONSTER::HELP_WINDOW_Y
- hiw = YE::MENU::MONSTER::HELP_WINDOW_W
- text = YE::MENU::MONSTER::HELP_WINDOW_TX
- @scan_info_window = Window_Base.new(hix, hiy, hiw, 56)
- @scan_info_window.back_opacity = YE::MENU::MONSTER::HELP_WINDOW_O
- @scan_info_window.contents.draw_text(2, 0, hiw - 32, 24, text, 1)
- @scan_info_window.visible = false
- @scan_info_window.z = 200
- end
- #--------------------------------------------------------------------------
- # alias terminate
- #--------------------------------------------------------------------------
- alias terminate_dse terminate unless $@
- def terminate
- @enemy_scan_window.dispose if @enemy_scan_window != nil
- @enemy_image_window.dispose if @enemy_image_window != nil
- @enemy_name_window.dispose if @enemy_name_window != nil
- @scan_info_window.dispose if @scan_info_window != nil
- terminate_dse
- end
- #--------------------------------------------------------------------------
- # alias update_target_enemy_selection
- #--------------------------------------------------------------------------
- alias update_target_enemy_selection_dse update_target_enemy_selection unless $@
- def update_target_enemy_selection
- if YE::MENU::MONSTER::HELP_WINDOW_ON
- if @enemy_scan_window.active
- @scan_info_window.visible = false
- elsif @target_enemy_window.active
- @scan_info_window.visible = true
- else
- @scan_info_window.visible = false
- end
- else
- @scan_info_window.visible = false
- end
- #------------------------------------------
- # If the Enemy Scan Window is active
- #------------------------------------------
- if @enemy_scan_window != nil and @enemy_scan_window.active
- @enemy_scan_window.update
- @enemy_image_window.update
- @enemy_name_window.update
- if Input.trigger?(Input::B) #end1
- Sound.play_cancel
- @enemy_scan_window.disappear
- @enemy_image_window.disappear
- @enemy_name_window.visible = false
- @target_enemy_window.active = true
- elsif Input.trigger?(Input::LEFT) or Input.trigger?(Input::UP)
- @enemy_scan_window.previous_page
- elsif Input.trigger?(Input::RIGHT) or Input.trigger?(Input::DOWN)
- @enemy_scan_window.next_page
- elsif Input.trigger?(Input::L)
- @enemy_scan_window.top_page
- elsif Input.trigger?(Input::R)
- @enemy_scan_window.bottom_page
- end
- #------------------------------------------
- # If the Target Window is Active
- #------------------------------------------
- else
- if Input.trigger?(Input::B)
- @scan_info_window.visible = false
- elsif Input.trigger?(Input::C)
- @scan_info_window.visible = false
- elsif Input.trigger?(YE::MENU::MONSTER::ENEMY_SCAN_BUTTON)
- Sound.play_decision
- enemy = @target_enemy_window.enemy
- @enemy_scan_window.appear(enemy, @target_enemy_window)
- @enemy_image_window.appear(enemy, @target_enemy_window)
- @enemy_name_window.appear(enemy, @target_enemy_window)
- @target_enemy_window.active = false
- end
- update_target_enemy_selection_dse
- #---------
- end
- end
- #--------------------------------------------------------------------------
- # update enemy name window
- #--------------------------------------------------------------------------
- def update_enemy_name_window(enemy, window)
- @enemy_name_window.visible = true
- @enemy_name_window.contents.clear
- name = window.enemy.name
- @enemy_name_window.contents.draw_text(0, 0, 240, 32, name, 1)
- @enemy_name_window.update
- end
- end # Scene_Battle
- #===============================================================================
- # Scene Bestiary
- #===============================================================================
- class Scene_Bestiary < Scene_Base
- #--------------------------------------------------------------------------
- # initialize
- #--------------------------------------------------------------------------
- def initialize(menu_index = nil)
- @menu_index = menu_index
- end
- #--------------------------------------------------------------------------
- # start
- #--------------------------------------------------------------------------
- def start
- super
- create_menu_background
- @boss_type = 0
- @enemy_list_window = Window_Enemy_List.new(@boss_type)
- @enemy_data_window = Window_Type_Data.new(@boss_type)
- @enemy_type_window = Window_Base.new(0, 0, 272, 56)
- refresh_type_window
- @enemy_help_category = Window_Base.new(272, 0, 272, 56)
- text = YE::MENU::MONSTER::CATEGORIZE_TEXT
- @enemy_help_category.contents.draw_text(0, 0, 240, 24, text, 1)
- @boss_help_window = Window_Base.new(136, 56, 272, 304)
- text = YE::MENU::MONSTER::CATEGORIZE_HELP
- @boss_help_window.back_opacity = 255
- @boss_help_window.contents.draw_text(0, 0, 240, 24, text, 1)
- @boss_help_window.visible = false
- @boss_type_window = Window_Boss_Types.new
- #---
- @enemy_name_window = Window_Enemy_Name.new(0, 0, 272, 56)
- @enemy_name_window.visible = false
- @enemy_name_window.active = false
- #---
- @enemy_image_window = Window_Enemy_Image.new(0, 56, 272, 360)
- @enemy_image_window.visible = false
- @enemy_image_window.active = false
- #---
- @enemy_scan_window = Window_Enemy_Scan.new(272, 0, 272, 416, true)#416 xd
- @enemy_scan_window.visible = false
- @enemy_scan_window.active = false
- #---
- end
- #--------------------------------------------------------------------------
- # terminate
- #--------------------------------------------------------------------------
- def terminate
- super
- dispose_menu_background
- @boss_type_window.dispose if @boss_type_window != nil
- @boss_help_window.dispose if @boss_help_window != nil
- @enemy_name_window.dispose if @enemy_name_window != nil
- @enemy_data_window.dispose if @enemy_data_window != nil
- @enemy_image_window.dispose if @enemy_image_window != nil
- @enemy_scan_window.dispose if @enemy_scan_window != nil
- @enemy_list_window.dispose if @enemy_list_window != nil
- @enemy_type_window.dispose if @enemy_type_window != nil
- @enemy_help_category.dispose if @enemy_help_category != nil
- end
- #--------------------------------------------------------------------------
- # return scene
- #--------------------------------------------------------------------------
- def return_scene
- if @menu_index == nil
- $scene = Scene_Map.new
- else
- $scene = Scene_Menu.new(@menu_index)
- end
- end
- #--------------------------------------------------------------------------
- # update
- #--------------------------------------------------------------------------
- def update
- super
- update_menu_background
- if @boss_type_window.active
- update_type_window
- elsif @enemy_scan_window.active
- update_scan_window
- elsif @enemy_list_window.active
- update_enemy_list
- end
- end
- #--------------------------------------------------------------------------
- # update_type_window
- #--------------------------------------------------------------------------
- def update_type_window
- @boss_type_window.update
- if Input.trigger?(Input::B)
- Sound.play_cancel
- @boss_type_window.visible = false
- @boss_help_window.visible = false
- @boss_type_window.active = false
- @enemy_list_window.active = true
- elsif Input.trigger?(Input::C)
- Sound.play_decision
- last_boss_type = @boss_type
- @boss_type = @boss_type_window.type
- @enemy_list_window.refresh(@boss_type)
- @enemy_list_window.index = 0 unless last_boss_type == @boss_type
- @enemy_data_window.refresh(@boss_type)
- refresh_type_window
- @boss_type_window.visible = false
- @boss_help_window.visible = false
- @boss_type_window.active = false
- @enemy_list_window.active = true
- end
- end
- #--------------------------------------------------------------------------
- # update_scan_window
- #--------------------------------------------------------------------------
- def update_scan_window
- @enemy_scan_window.update
- @enemy_image_window.update
- @enemy_name_window.update
- if Input.trigger?(Input::B)
- Sound.play_cancel
- @enemy_scan_window.disappear
- @enemy_image_window.disappear
- @enemy_name_window.visible = false
- @enemy_list_window.active = true
- @enemy = nil
- elsif Input.trigger?(Input::LEFT) or Input.trigger?(Input::UP)
- @enemy_scan_window.previous_page
- elsif Input.trigger?(Input::RIGHT) or Input.trigger?(Input::DOWN)
- @enemy_scan_window.next_page
- elsif Input.trigger?(Input::L)
- @enemy_scan_window.top_page
- elsif Input.trigger?(Input::R)
- @enemy_scan_window.bottom_page
- end
- end
- #--------------------------------------------------------------------------
- # update_enemy_list
- #--------------------------------------------------------------------------
- def update_enemy_list
- @enemy_list_window.update
- if Input.trigger?(Input::B)
- Sound.play_cancel
- return_scene
- elsif Input.trigger?(Input::C)
- if @enemy_list_window.enemy == nil
- Sound.play_buzzer
- elsif !viewable?(@enemy_list_window.enemy)
- Sound.play_buzzer
- else
- Sound.play_decision
- @enemy = Game_Enemy.new(0, @enemy_list_window.enemy.id)
- @enemy_scan_window.appear(@enemy)
- @enemy_image_window.appear(@enemy)
- @enemy_name_window.appear(@enemy)
- @enemy_list_window.active = false
- end
- elsif Input.trigger?(YE::MENU::MONSTER::CATEGORIZE_BUTTON)
- Sound.play_decision
- @boss_type_window.visible = true
- @boss_help_window.visible = true
- @boss_type_window.active = true
- @enemy_list_window.active = false
- end
- end
- #--------------------------------------------------------------------------
- # viewable?
- #--------------------------------------------------------------------------
- def viewable?(enemy)
- $game_party.monsters_encounter[enemy.id] = 0 if
- $game_party.monsters_encounter[enemy.id] == nil
- return false if $game_party.monsters_encounter[enemy.id] <= 0
- return true
- end
- #--------------------------------------------------------------------------
- # refresh type window
- #--------------------------------------------------------------------------
- def refresh_type_window
- @enemy_type_window.contents.clear
- array = YE::MENU::MONSTER::BOSS_TYPES[@boss_type]
- icon = array[0]
- text = sprintf(YE::MENU::MONSTER::BESTIARY_LIST, array[7])
- @enemy_type_window.draw_icon(icon, 0, 0)
- @enemy_type_window.contents.draw_text(24, 0, 216, 24, text, 0)
- end
- end # Scene_Bestiary
- #==============================================================================
- # Window_Enemy_List
- #==============================================================================
- class Window_Enemy_List < Window_Selectable
- #--------------------------------------------------------------------------
- # initialize
- #--------------------------------------------------------------------------
- def initialize(boss_type)
- super(0, 56, 272, 360)
- self.index = 0
- refresh(boss_type)
- end
- #--------------------------------------------------------------------------
- # refresh
- #--------------------------------------------------------------------------
- def refresh(boss_type)
- @boss_type = boss_type
- @data = []
- for enemy in monster_list
- @data.push(enemy)
- end
- @item_max = @data.size
- create_contents
- for i in 0...@item_max
- draw_item(i)
- end
- end
- #--------------------------------------------------------------------------
- # draw item
- #--------------------------------------------------------------------------
- def draw_item(index)
- rect = item_rect(index)
- self.contents.clear_rect(rect)
- enemy = @data[index]
- $game_party.monsters_encounter[enemy.id] = 0 if
- $game_party.monsters_encounter[enemy.id] == nil
- if $game_party.monsters_encounter[enemy.id] > 0
- text = enemy.name.gsub(/\[.*\]/) { "" }
- self.contents.font.color.alpha = 255
- else
- mask = YE::MENU::MONSTER::BESTIARY_MASK
- if mask.scan(/./).size == 1
- mask = mask * enemy.name.scan(/./).size
- end
- text = mask
- self.contents.font.color.alpha = 128
- end
- self.contents.draw_text(rect.x+4, rect.y, rect.width-4, WLH, text)
- end
- #--------------------------------------------------------------------------
- # include?
- #--------------------------------------------------------------------------
- def include?(enemy)
- return false if enemy == nil
- return false unless enemy.boss_type.include?(@boss_type)
- return false if YE::HIDDEN_ENEMY.include?(enemy.id)
- return false if $imported["SwapDummyMonster"] and
- YE::SWAP::DUMMY_MONSTER.include?(enemy.id)
- return true
- end
- #--------------------------------------------------------------------------
- # monster_list
- #--------------------------------------------------------------------------
- def monster_list
- result = []
- for enemy_id in YE::ENEMY_LIST
- result.push($data_enemies[enemy_id]) if include?($data_enemies[enemy_id])
- end
- return result
- end
- #--------------------------------------------------------------------------
- # return enemy
- #--------------------------------------------------------------------------
- def enemy
- return @data[self.index]
- end
- end # Window_Enemy_list
- #==============================================================================
- # Window_Type_Data
- #==============================================================================
- class Window_Type_Data < Window_Base
- #--------------------------------------------------------------------------
- # initialize
- #--------------------------------------------------------------------------
- def initialize(boss_type)
- super(272, 56, 272, 360)
- refresh(boss_type)
- end
- #--------------------------------------------------------------------------
- # refresh
- #--------------------------------------------------------------------------
- def refresh(boss_type = 0)
- self.contents.clear
- self.contents.font.size = Font.default_size
- @boss_type = boss_type
- sw = self.width - 32
- @category_colour = YE::MENU::MONSTER::DATA_CATEGORY_COLOUR
- self.contents.font.color = text_color(@category_colour)
- text = YE::MENU::MONSTER::BESTIARY_INFO
- self.contents.draw_text(0, 0, sw, WLH, text, 1)
- unique_discovered = 0
- unique_type_enc = 0
- unique_encounters = 0
- unique_defeated = 0
- unique_escaped = 0
- total_encountered = 0
- total_defeated = 0
- total_escaped = 0
- type_encountered = 0
- type_defeated = 0
- type_escaped = 0
- for key in $game_party.monsters_encounter
- next if key[1] == nil or key[1] <= 0
- unique_encounters += 1
- total_encountered += key[1]
- if $data_enemies[key[0]].boss_type.include?(@boss_type)
- unique_discovered += 1
- unique_type_enc += key[1]
- end
- end
- for key in $game_party.monsters_defeated
- next if key[1] == nil or key[1] <= 0
- total_defeated += key[1]
- if $data_enemies[key[0]].boss_type.include?(@boss_type)
- unique_defeated += key[1]
- end
- end
- for key in $game_party.monsters_escaped
- next if key[1] == nil or key[1] <= 0
- total_escaped += key[1]
- if $data_enemies[key[0]].boss_type.include?(@boss_type)
- unique_escaped += key[1]
- end
- end
- total_size = YE::ENEMY_LIST.size - YE::HIDDEN_ENEMY.size
- self.contents.font.size = YE::MENU::MONSTER::MENU_FONT_SIZE
- #---
- dy = WLH + WLH / 2
- boss_type_name = YE::MENU::MONSTER::BOSS_TYPES[@boss_type][8]
- icon = YE::MENU::MONSTER::BOSS_TYPES[@boss_type][0]
- #---
- self.contents.font.color = text_color(@category_colour)
- draw_icon(YE::MENU::MONSTER::ICON_COMPLETION, 0, dy)
- text = YE::MENU::MONSTER::TEXT_COMPLETION
- self.contents.draw_text(24, dy, sw-24, WLH, text, 0)
- self.contents.font.color = normal_color
- text = sprintf(YE::MENU::MONSTER::RATE_COMPLETION, bestiary_completion)
- self.contents.draw_text(24, dy, sw-24, WLH, text, 2)
- #---
- dy += WLH + WLH / 2
- self.contents.font.color = text_color(@category_colour)
- draw_icon(YE::MENU::MONSTER::ICON_DISCOVERED, 0, dy)
- text = YE::MENU::MONSTER::TEXT_DISCOVERED
- self.contents.draw_text(24, dy, sw-24, WLH, text, 0)
- self.contents.font.color = normal_color
- self.contents.draw_text(24, dy, sw-24, WLH, unique_encounters, 2)
- #---
- dy += WLH
- self.contents.font.color = text_color(@category_colour)
- draw_icon(icon, 12, dy)
- text = sprintf(YE::MENU::MONSTER::TEXT_TYPE_DIS, boss_type_name)
- self.contents.draw_text(36, dy, sw-36, WLH, text, 0)
- self.contents.font.color = normal_color
- self.contents.draw_text(36, dy, sw-36, WLH, unique_discovered, 2)
- #---
- dy += WLH
- self.contents.font.color = text_color(@category_colour)
- draw_icon(YE::MENU::MONSTER::ICON_ENCOUNTER, 0, dy)
- text = YE::MENU::MONSTER::TEXT_ENCOUNTERS
- self.contents.draw_text(24, dy, sw-24, WLH, text, 0)
- self.contents.font.color = normal_color
- self.contents.draw_text(24, dy, sw-24, WLH, total_encountered, 2)
- #---
- dy += WLH
- self.contents.font.color = text_color(@category_colour)
- draw_icon(icon, 12, dy)
- text = sprintf(YE::MENU::MONSTER::TEXT_TYPE_ENC, boss_type_name)
- self.contents.draw_text(36, dy, sw-36, WLH, text, 0)
- self.contents.font.color = normal_color
- self.contents.draw_text(36, dy, sw-36, WLH, unique_type_enc, 2)
- #---
- dy += WLH
- self.contents.font.color = text_color(@category_colour)
- draw_icon(YE::MENU::MONSTER::ICON_KILLED, 0, dy)
- text = YE::MENU::MONSTER::TEXT_DEFEATED
- self.contents.draw_text(24, dy, sw-24, WLH, text, 0)
- self.contents.font.color = normal_color
- self.contents.draw_text(24, dy, sw-24, WLH, total_defeated, 2)
- #---
- dy += WLH
- self.contents.font.color = text_color(@category_colour)
- draw_icon(icon, 12, dy)
- text = sprintf(YE::MENU::MONSTER::TEXT_TYPE_DEF, boss_type_name)
- self.contents.draw_text(36, dy, sw-36, WLH, text, 0)
- self.contents.font.color = normal_color
- self.contents.draw_text(36, dy, sw-36, WLH, unique_defeated, 2)
- #---
- dy += WLH
- self.contents.font.color = text_color(@category_colour)
- draw_icon(YE::MENU::MONSTER::ICON_ESCAPED, 0, dy)
- text = YE::MENU::MONSTER::TEXT_ESCAPED
- self.contents.draw_text(24, dy, sw-24, WLH, text, 0)
- self.contents.font.color = normal_color
- self.contents.draw_text(24, dy, sw-24, WLH, total_escaped, 2)
- #---
- dy += WLH
- self.contents.font.color = text_color(@category_colour)
- draw_icon(icon, 12, dy)
- text = sprintf(YE::MENU::MONSTER::TEXT_TYPE_ESC, boss_type_name)
- self.contents.draw_text(36, dy, sw-36, WLH, text, 0)
- self.contents.font.color = normal_color
- self.contents.draw_text(36, dy, sw-36, WLH, unique_escaped, 2)
- end
- #--------------------------------------------------------------------------
- # bestiary_completion
- #--------------------------------------------------------------------------
- def bestiary_completion
- total = 0; result = 0
- for enemy in $data_enemies
- next if $imported["SwapDummyMonster"] and
- YE::SWAP::DUMMY_MONSTER.include?(enemy.id)
- next if YE::HIDDEN_ENEMY.include?(enemy.id)
- next if enemy == nil
- total += 1
- if $game_party.monsters_encounter.include?(enemy.id) and
- $game_party.monsters_encounter[enemy.id] > 0
- result += 1
- end
- next unless YE::MENU::MONSTER::REQUIRE_SCAN
- next if enemy.hide_whole
- total += 1 if YE::MENU::MONSTER::SHOW_GENERAL and !enemy.hide_hp_mp
- total += 1 if YE::MENU::MONSTER::SHOW_GENERAL and !enemy.hide_stats
- total += 1 if YE::MENU::MONSTER::SHOW_SKILLS and !enemy.hide_skill
- total += 1 if YE::MENU::MONSTER::SHOW_ELEMENTS and !enemy.hide_elem
- total += 1 if YE::MENU::MONSTER::SHOW_STATES and !enemy.hide_state
- total += 1 if YE::MENU::MONSTER::SHOW_SPOILS and !enemy.hide_spoil
- if YE::MENU::MONSTER::SPOIL_DROPS or (YE::MENU::MONSTER::SHOW_DROPS and
- $imported["ExtraDropItem"]) and !enemy.hide_drops
- total += 1
- end
- if $imported["Steal"] and YE::MENU::MONSTER::SHOW_STEAL and
- !enemy.hide_steal
- total += 1
- end
- if YE::MENU::MONSTER::SHOW_NOTES and YE::HASH::ENEMY_NOTES.include?(enemy.id)
- total += 1
- end
- end
- if YE::MENU::MONSTER::REQUIRE_SCAN
- result += $game_party.scan_hp_mp.size
- result += $game_party.scan_stats.size
- result += $game_party.scan_skill.size
- result += $game_party.scan_state.size
- result += $game_party.scan_spoil.size
- result += $game_party.scan_drops.size
- result += $game_party.scan_steal.size
- result += $game_party.scan_desc.size
- end
- result *= 100.0
- result /= total
- return result
- end
- end # Window_Type_Data
- #==============================================================================
- # Window_Boss_Types
- #==============================================================================
- class Window_Boss_Types < Window_Selectable
- #--------------------------------------------------------------------------
- # initialize
- #--------------------------------------------------------------------------
- def initialize
- super(136, 80, 272, 280)
- self.index = 0
- self.opacity = 0
- self.visible = false
- self.active = false
- refresh
- end
- #--------------------------------------------------------------------------
- # refresh
- #--------------------------------------------------------------------------
- def refresh
- @data = YE::MENU::MONSTER::TYPE_ORDERING
- @item_max = @data.size
- create_contents
- for i in 0...@item_max
- draw_item(i)
- end
- end
- #--------------------------------------------------------------------------
- # type
- #--------------------------------------------------------------------------
- def type
- return @data[self.index]
- end
- #--------------------------------------------------------------------------
- # draw_item
- #--------------------------------------------------------------------------
- def draw_item(index)
- rect = item_rect(index)
- self.contents.clear_rect(rect)
- type = @data[index]
- icon = YE::MENU::MONSTER::BOSS_TYPES[type][0]
- name = YE::MENU::MONSTER::BOSS_TYPES[type][8]
- text = sprintf(YE::MENU::MONSTER::CATEGORIZE_VIEW, name)
- draw_icon(icon, rect.x+4, rect.y)
- self.contents.draw_text(rect.x+28, rect.y, rect.width-28, WLH, text)
- end
- end # Window_Boss_Types
- #===============================================================================
- # Window Enemy Name
- #===============================================================================
- class Window_Enemy_Name < Window_Base
- #--------------------------------------------------------------------------
- # initialize
- #--------------------------------------------------------------------------
- def initialize(x, y, width, height)
- super(x, y, width, height)
- self.back_opacity = 255
- @target_enemy_window = nil
- self.z = 200
- self.visible = false
- end
- #--------------------------------------------------------------------------
- # appear and disappear
- #--------------------------------------------------------------------------
- def appear(enemy, window = nil)
- @enemy = enemy
- @target_enemy_window = window
- self.openness = 128
- @opening = true
- self.visible = true
- draw_content
- end
- def disappear
- self.visible = false
- end
- #--------------------------------------------------------------------------
- # draw content
- #--------------------------------------------------------------------------
- def draw_content
- self.contents.clear
- text = sprintf(YE::MENU::MONSTER::ENEMY_NAME, @enemy.name)
- if $imported["EnemyLevelControl"]
- level = @enemy.level
- text = sprintf(YE::BATTLE::ENEMY::SCANNED_ENEMY_LEVEL, level, text)
- end
- self.contents.draw_text(0, 0, 240, 24, text, 1)
- end
- end # Window_Enemy_Name
- #===============================================================================
- # Window Enemy Image
- #===============================================================================
- class Window_Enemy_Image < Window_Base
- #--------------------------------------------------------------------------
- # initialize
- #--------------------------------------------------------------------------
- def initialize(x, y, width, height)
- super(x, y, width, height)
- self.back_opacity = 255
- @target_enemy_window = nil
- self.z = 200
- self.visible = false
- end
- #--------------------------------------------------------------------------
- # appear and disappear
- #--------------------------------------------------------------------------
- def appear (enemy, window = nil)
- @enemy = enemy
- @target_enemy_window = window
- self.openness = 128
- @opening = true
- self.visible = true
- draw_content
- end
- def disappear
- self.visible = false
- end
- #--------------------------------------------------------------------------
- # draw content
- #--------------------------------------------------------------------------
- def draw_content
- self.contents.clear
- enemybit = Cache.battler(@enemy.battler_name, @enemy.battler_hue)
- bw = enemybit.width
- bh = enemybit.height
- if bw > (self.width - 32)
- bw = (self.width - 32)
- bh *= (self.width - 32)
- bh /= enemybit.width
- end
- if bh > (self.height - 32)
- bh = (self.height - 32)
- bw *= (self.height - 32)
- bw /= enemybit.height
- end
- rect = Rect.new(0, 0, bw, bh)
- #---------
- rect.x = (self.width - 32 - rect.width) / 2
- rect.y = (self.height - 32 - rect.height) / 2
- #---------
- self.contents.stretch_blt(rect, enemybit, enemybit.rect)
- end
- end # Window_Enemy_Image
- #===============================================================================
- # Window Enemy Scan
- #===============================================================================
- class Window_Enemy_Scan < Window_Base
- #--------------------------------------------------------------------------
- # initialize
- #--------------------------------------------------------------------------
- def initialize(x, y, width, height, inbattle)
- super(x, y, width, height)
- self.back_opacity = 255
- @target_enemy_window = nil
- @inbattle = inbattle
- @require = YE::MENU::MONSTER::REQUIRE_SCAN
- self.z = 200
- self.visible = false
- end
- #--------------------------------------------------------------------------
- # appear and disappear
- #--------------------------------------------------------------------------
- def appear (enemy, window = nil)
- @enemy = enemy
- @target_enemy_window = window
- @page = 1
- @total_pages = create_total_pages
- draw_enemy_data
- self.openness = 128
- @opening = true
- self.active = true
- self.visible = true
- end
- def disappear
- self.active = false
- self.visible = false
- end
- #--------------------------------------------------------------------------
- # page switching
- #--------------------------------------------------------------------------
- def next_page
- if @page != @total_pages
- @page += 1
- else
- @page = 1
- end
- turn_sound
- draw_enemy_data
- end
- def previous_page
- if @page != 1
- @page -= 1
- else
- @page = @total_pages
- end
- turn_sound
- draw_enemy_data
- end
- def top_page
- @page = 1
- turn_sound
- draw_enemy_data
- end
- def bottom_page
- @page = @total_pages
- turn_sound
- draw_enemy_data
- end
- #--------------------------------------------------------------------------
- # turn sound
- #--------------------------------------------------------------------------
- def turn_sound
- unless YE::MENU::MONSTER::PAGE_SOUND == nil
- sound = YE::MENU::MONSTER::PAGE_SOUND
- sound.play
- end
- end
- #--------------------------------------------------------------------------
- # draw enemy data
- #--------------------------------------------------------------------------
- def draw_enemy_data
- self.contents.clear
- self.contents.font.color.alpha = 255
- self.contents.font.size = Font.default_size
- self.contents.font.color = normal_color
- @category_colour = YE::MENU::MONSTER::DATA_CATEGORY_COLOUR
- #--------------------
- pagecase = @contents[@page - 1]
- if @page == 1 and !YE::MENU::MONSTER::REPLACE_PAGE_MSG
- text1 = ""
- else
- text1 = YE::MENU::MONSTER::DATA_LEFT
- end
- if YE::MENU::MONSTER::REPLACE_PAGE_MSG #--------------------------------------
- text2 = case_page_name(pagecase)
- else #----------------------------------------------------------------------
- text2 = sprintf(YE::MENU::MONSTER::DATA_PAGES, @page, @total_pages)
- end
- if @page == @total_pages and !YE::MENU::MONSTER::REPLACE_PAGE_MSG
- text3 = ""
- else
- text3 = YE::MENU::MONSTER::DATA_RIGHT
- end
- #--------------------
- self.contents.draw_text(2, 0, 232, WLH, text1, 0)
- self.contents.draw_text(2, 0, 232, WLH, text2, 1)
- self.contents.draw_text(2, 0, 232, WLH, text3, 2)
- #--------------------
- if @enemy != nil
- case_page_run(pagecase)
- end
- end
- #--------------------------------------------------------------------------
- # make general page
- #--------------------------------------------------------------------------
- def make_general_page
- y = WLH
- x = 0
- sw = self.width - 32
- gc0 = gauge_back_color
- gce = text_color(YE::MENU::MONSTER::EXHAUST_COLOUR)
- gh = YE::MENU::MONSTER::GAUGE_HEIGHT
- dx = (sw - (24 * @enemy.enemy.boss_type.size)) / 2
- for boss_type in @enemy.enemy.boss_type
- array = YE::MENU::MONSTER::BOSS_TYPES[boss_type]
- icon = array[0]
- draw_icon(icon, dx, y, true)
- dx += 24
- end
- dsearray = YE::MENU::MONSTER::BOSS_TYPES[@enemy.enemy.boss_type[0]]
- #--------Draw HP--------
- y += WLH
- if @enemy.maxhp > @enemy.base_maxhp
- icon = YE::MENU::MONSTER::ICON_HIGH
- elsif @enemy.maxhp < @enemy.base_maxhp
- icon = YE::MENU::MONSTER::ICON_LOW
- else
- icon = dsearray[1]
- end
- @enemy.hp = @enemy.maxhp if @enemy.hp > @enemy.maxhp
- gc1 = text_color(dsearray[2])
- gc2 = text_color(dsearray[3])
- gy = y + WLH - 8 - (gh - 6)
- if @enemy.maxhp < @enemy.base_maxhp and @enemy.base_maxhp > 0
- gb = sw * @enemy.maxhp / @enemy.base_maxhp
- self.contents.fill_rect(x, gy, sw, gh, gce)
- else
- gb = sw
- end
- self.contents.fill_rect(x, gy, gb, gh, gc0)
- if @enemy.maxhp <= 0
- if @enemy.base_maxhp <= 0
- gw = sw
- else
- gw = 0
- end
- else
- gw = gb * @enemy.hp / @enemy.maxhp
- self.contents.gradient_fill_rect(x, gy, gw, gh, gc1, gc2)
- end
- draw_icon(icon, x, y, true)
- text = Vocab::hp
- self.contents.font.color = text_color(@category_colour)
- self.contents.draw_text(24, y, sw-24, WLH, text, 0)
- self.contents.font.color = normal_color
- hidehp = false
- if @require
- hidehp = true unless $game_party.scan_hp_mp.include?(@enemy.enemy_id)
- end
- if hidehp or @enemy.enemy.hide_hp_mp
- text = YE::MENU::MONSTER::HIDDEN_HP
- elsif YE::MENU::MONSTER::HP_DISPLAY_TYPE == 1
- text = @enemy.hp
- elsif YE::MENU::MONSTER::HP_DISPLAY_TYPE == 2
- text = sprintf("%d/%d",@enemy.hp,@enemy.maxhp)
- else
- text = sprintf("%#.05g%%",@enemy.hp * 100.000 / @enemy.maxhp)
- end
- self.contents.draw_text(0, y, sw, WLH, text, 2)
- #--------Draw MP--------
- y += WLH
- if @enemy.maxmp > @enemy.base_maxmp
- icon = YE::MENU::MONSTER::ICON_HIGH
- elsif @enemy.maxmp < @enemy.base_maxmp
- icon = YE::MENU::MONSTER::ICON_LOW
- else
- icon = dsearray[4]
- end
- @enemy.mp = @enemy.maxmp if @enemy.mp > @enemy.maxmp
- gc1 = text_color(dsearray[5])
- gc2 = text_color(dsearray[6])
- gy = y + WLH - 8 - (gh - 6)
- if @enemy.maxmp < @enemy.base_maxmp and @enemy.base_maxmp > 0
- gb = sw * @enemy.maxmp / @enemy.base_maxmp
- self.contents.fill_rect(x, gy, sw, gh, gce)
- else
- gb = sw
- end
- self.contents.fill_rect(x, gy, gb, gh, gc0)
- if @enemy.maxmp <= 0
- if @enemy.base_maxmp <= 0
- gw = sw
- else
- gw = 0
- end
- else
- gw = gb * @enemy.mp / @enemy.maxmp
- end
- self.contents.gradient_fill_rect(x, gy, gw, gh, gc1, gc2)
- draw_icon(icon, x, y, true)
- text = Vocab::mp
- self.contents.font.color = text_color(@category_colour)
- self.contents.draw_text(24, y, sw-24, WLH, text, 0)
- self.contents.font.color = normal_color
- hidemp = false
- if @require
- hidemp = true unless $game_party.scan_hp_mp.include?(@enemy.enemy_id)
- end
- if hidemp or @enemy.enemy.hide_hp_mp
- text = YE::MENU::MONSTER::HIDDEN_MP
- elsif YE::MENU::MONSTER::MP_DISPLAY_TYPE == 1
- text = @enemy.mp
- elsif YE::MENU::MONSTER::MP_DISPLAY_TYPE == 2
- text = sprintf("%d/%d",@enemy.mp,@enemy.maxmp)
- else
- if @enemy.maxmp
- text = sprintf("%#.05g%%", 100.000)
- else
- text = sprintf("%#.05g%%",@enemy.mp * 100.000 / @enemy.maxmp)
- end
- end
- self.contents.draw_text(0, y, sw, WLH, text, 2)
- #--------Draw ADSA and HECO Stats--------
- self.contents.font.size = YE::MENU::MONSTER::FONT_SIZE
- hide = YE::MENU::MONSTER::HIDDEN_STAT
- hidestats = false
- if @require
- hidestats = true unless $game_party.scan_stats.include?(@enemy.enemy_id)
- end
- if hidestats or @enemy.enemy.hide_stats
- textatk = hide; textdef = hide; textspi = hide; textagi = hide
- texthit = hide; texteva = hide; textcri = hide; textodds = hide
- else
- textatk = @enemy.atk; textdef = @enemy.def
- textspi = @enemy.spi; textagi = @enemy.agi
- texthit = sprintf("%d%%",@enemy.hit)
- texteva = sprintf("%d%%",@enemy.eva)
- textcri = sprintf("%d%%",@enemy.cri)
- textodds = sprintf("%d", @enemy.odds)
- end
- #---ATK---
- y += WLH + WLH / 4
- if @enemy.atk > @enemy.base_atk
- icon = YE::MENU::MONSTER::ICON_HIGH
- elsif @enemy.atk < @enemy.base_atk
- icon = YE::MENU::MONSTER::ICON_LOW
- else
- icon = YE::MENU::MONSTER::ICON_ATK
- end
- draw_icon(icon, 0, y, true)
- self.contents.font.color = text_color(@category_colour)
- text = YE::MENU::MONSTER::DATA_ATK
- self.contents.draw_text(24, y, sw/4-24, WLH, text, 0)
- self.contents.font.color = normal_color
- self.contents.draw_text(sw/4, y, sw/4-12, WLH, textatk, 2)
- #---HIT---
- unless YE::MENU::MONSTER::HIDE_HIT
- icon = YE::MENU::MONSTER::ICON_HIT
- draw_icon(icon, sw/2, y, true)
- self.contents.font.color = text_color(@category_colour)
- text = YE::MENU::MONSTER::DATA_HIT
- self.contents.draw_text(sw/2+24, y, sw/4-24, WLH, text, 0)
- self.contents.font.color = normal_color
- self.contents.draw_text(sw*3/4, y, sw/4-12, WLH, texthit, 2)
- end
- #---DEF---
- y += WLH
- if @enemy.def > @enemy.base_def
- icon = YE::MENU::MONSTER::ICON_HIGH
- elsif @enemy.def < @enemy.base_def
- icon = YE::MENU::MONSTER::ICON_LOW
- else
- icon = YE::MENU::MONSTER::ICON_DEF
- end
- draw_icon(icon, 0, y, true)
- self.contents.font.color = text_color(@category_colour)
- text = YE::MENU::MONSTER::DATA_DEF
- self.contents.draw_text(24, y, sw/4-24, WLH, text, 0)
- self.contents.font.color = normal_color
- self.contents.draw_text(sw/4, y, sw/4-12, WLH, textdef, 2)
- #---EVA---
- unless YE::MENU::MONSTER::HIDE_EVA
- icon = YE::MENU::MONSTER::ICON_EVA
- draw_icon(icon, sw/2, y, true)
- self.contents.font.color = text_color(@category_colour)
- text = YE::MENU::MONSTER::DATA_EVA
- self.contents.draw_text(sw/2+24, y, sw/4-24, WLH, text, 0)
- self.contents.font.color = normal_color
- self.contents.draw_text(sw*3/4, y, sw/4-12, WLH, texteva, 2)
- end
- #---SPI---
- y += WLH
- if @enemy.spi > @enemy.base_spi
- icon = YE::MENU::MONSTER::ICON_HIGH
- elsif @enemy.spi < @enemy.base_spi
- icon = YE::MENU::MONSTER::ICON_LOW
- else
- icon = YE::MENU::MONSTER::ICON_SPI
- end
- draw_icon(icon, 0, y, true)
- self.contents.font.color = text_color(@category_colour)
- text = YE::MENU::MONSTER::DATA_SPI
- self.contents.draw_text(24, y, sw/4-24, WLH, text, 0)
- self.contents.font.color = normal_color
- self.contents.draw_text(sw/4, y, sw/4-12, WLH, textspi, 2)
- #---CRI---
- unless YE::MENU::MONSTER::HIDE_CRI
- icon = YE::MENU::MONSTER::ICON_CRI
- draw_icon(icon, sw/2, y, true)
- self.contents.font.color = text_color(@category_colour)
- text = YE::MENU::MONSTER::DATA_CRI
- self.contents.draw_text(sw/2+24, y, sw/4-24, WLH, text, 0)
- self.contents.font.color = normal_color
- self.contents.draw_text(sw*3/4, y, sw/4-12, WLH, textcri, 2)
- end
- #---AGI---
- y += WLH
- if @enemy.agi > @enemy.base_agi
- icon = YE::MENU::MONSTER::ICON_HIGH
- elsif @enemy.agi < @enemy.base_agi
- icon = YE::MENU::MONSTER::ICON_LOW
- else
- icon = YE::MENU::MONSTER::ICON_AGI
- end
- draw_icon(icon, 0, y, true)
- self.contents.font.color = text_color(@category_colour)
- text = YE::MENU::MONSTER::DATA_AGI
- self.contents.draw_text(24, y, sw/4-24, WLH, text, 0)
- self.contents.font.color = normal_color
- self.contents.draw_text(sw/4, y, sw/4-12, WLH, textagi, 2)
- #---ODDS---
- unless YE::MENU::MONSTER::HIDE_ODDS
- icon = YE::MENU::MONSTER::ICON_ODDS
- draw_icon(icon, sw/2, y, true)
- self.contents.font.color = text_color(@category_colour)
- text = YE::MENU::MONSTER::DATA_ODDS
- self.contents.draw_text(sw/2+24, y, sw/4-24, WLH, text, 0)
- self.contents.font.color = normal_color
- self.contents.draw_text(sw*3/4, y, sw/4-12, WLH, textodds, 2)
- end
- #--------STATUS EFFECTS--------
- y += WLH + WLH / 4
- state_draw = @enemy.states
- for state in state_draw
- state_draw.delete(state) if state.icon_index == 0
- end
- unless state_draw == []
- self.contents.font.size = Font.default_size
- self.contents.font.color = text_color(@category_colour)
- text = YE::MENU::MONSTER::DATA_STATES
- self.contents.draw_text(0, y, sw, WLH, text, 1)
- y += WLH
- draw_actor_state(@enemy, 0, y, sw + 12)
- end
- end # make general page
- #--------------------------------------------------------------------------
- # make skills page
- #--------------------------------------------------------------------------
- def make_skills_page
- x = 0
- y = WLH
- sw = self.width - 32
- action_list = []
- skilltotal = 0
- for action in @enemy.enemy.actions
- if action.kind == 1
- obj = $data_skills[action.skill_id]
- unless action_list.include?(obj)
- action_list.push(obj)
- skilltotal += 1
- end
- end
- end
- y += WLH
- self.contents.font.color = normal_color
- for obj in action_list
- break if (y + 24) > (self.height - 32)
- draw_item_name(obj, x, y, true)
- y += WLH
- end
- y = WLH
- self.contents.font.color = text_color(@category_colour)
- text = YE::MENU::MONSTER::DATA_SKILLS
- self.contents.draw_text(0, y, sw, WLH, text, 0)
- if skilltotal == 1
- text = sprintf(YE::MENU::MONSTER::VIEW_SKILLS1, skilltotal)
- else
- text = sprintf(YE::MENU::MONSTER::VIEW_SKILLS2, skilltotal)
- end
- self.contents.draw_text(0, y, sw, WLH, text, 2)
- end # end make skills page
- #--------------------------------------------------------------------------
- # make elements page
- #--------------------------------------------------------------------------
- def make_elements_page
- x = 0
- y = WLH
- sw = self.width - 32
- for key in YE::MENU::MONSTER::ELEMENT_HASH
- doublearr = key[1]
- ele_array = doublearr[0]
- ele_icon = doublearr[1]
- self.contents.font.color = text_color(@category_colour)
- text = key[0]
- self.contents.draw_text(0, y, sw, WLH, text, 1)
- y += WLH
- x = (sw - ele_array.size * 24) / 2
- for icon in ele_icon
- draw_icon(icon, x, y, true)
- x += 24
- end
- y += WLH
- x = (sw - ele_array.size * 24) / 2
- for element in ele_array
- rank = @enemy.enemy.element_ranks[element]
- result = [0,1,2,3,4,5,6][rank]
- if result == 0
- draw_icon(YE::MENU::MONSTER::ICON_E_RATE_Z, x, y, true)
- elsif result == 1
- draw_icon(YE::MENU::MONSTER::ICON_E_RATE_A, x, y, true)
- elsif result == 2
- draw_icon(YE::MENU::MONSTER::ICON_E_RATE_B, x, y, true)
- elsif result == 3
- draw_icon(YE::MENU::MONSTER::ICON_E_RATE_C, x, y, true)
- elsif result == 4
- draw_icon(YE::MENU::MONSTER::ICON_E_RATE_D, x, y, true)
- elsif result == 5
- draw_icon(YE::MENU::MONSTER::ICON_E_RATE_E, x, y, true)
- elsif result == 6
- draw_icon(YE::MENU::MONSTER::ICON_E_RATE_F, x, y, true)
- else
- draw_icon(YE::MENU::MONSTER::ICON_E_RATE_U, x, y, true)
- end
- x += 24
- end
- y += WLH * 2
- end
- end # make elements page
- #--------------------------------------------------------------------------
- # make states page
- #--------------------------------------------------------------------------
- def make_states_page
- x = 0
- y = WLH
- sw = self.width - 32
- for key in YE::MENU::MONSTER::STATES_HASH
- states_array = key[1]
- self.contents.font.color = text_color(@category_colour)
- text = key[0]
- self.contents.draw_text(0, y, sw, WLH, text, 1)
- y += WLH
- x = (sw - states_array.size * 24) / 2
- for state_id in states_array
- icon = $data_states[state_id].icon_index
- draw_icon(icon, x, y, true)
- x += 24
- end
- y += WLH
- x = (sw - states_array.size * 24) / 2
- for state_id in states_array
- icon = $data_states[state_id].icon_index
- rank = @enemy.enemy.state_ranks[state_id]
- result = [0,1,2,3,4,5,6][rank]
- if result == 0
- draw_icon(YE::MENU::MONSTER::ICON_S_RATE_Z, x, y, true)
- elsif result == 1
- draw_icon(YE::MENU::MONSTER::ICON_S_RATE_A, x, y, true)
- elsif result == 2
- draw_icon(YE::MENU::MONSTER::ICON_S_RATE_B, x, y, true)
- elsif result == 3
- draw_icon(YE::MENU::MONSTER::ICON_S_RATE_C, x, y, true)
- elsif result == 4
- draw_icon(YE::MENU::MONSTER::ICON_S_RATE_D, x, y, true)
- elsif result == 5
- draw_icon(YE::MENU::MONSTER::ICON_S_RATE_E, x, y, true)
- elsif result == 6
- draw_icon(YE::MENU::MONSTER::ICON_S_RATE_F, x, y, true)
- else
- draw_icon(YE::MENU::MONSTER::ICON_S_RATE_U, x, y, true)
- end
- x += 24
- end
- y += WLH
- end
- end # make states page
- #--------------------------------------------------------------------------
- # make steal page
- #--------------------------------------------------------------------------
- def make_steal_page
- return unless $imported["Steal"]
- x = 0
- y = 0
- sw = self.width - 32
- y += WLH
- self.contents.font.color = text_color(@category_colour)
- text = YE::MENU::MONSTER::DATA_S_ITEM
- self.contents.draw_text(0, y, sw, WLH, text, 0)
- text = YE::MENU::MONSTER::DATA_S_CHANCE
- self.contents.draw_text(0, y, sw, WLH, text, 2)
- y += WLH
- steal_objects = @enemy.steal_objects.clone
- steal_objects.each_with_index { |item, i|
- break if (y + 24) > (self.height - 32)
- next if item == nil
- case item.kind
- when 0
- next
- when 1
- steal_item = $data_items[item.item_id]
- when 2
- steal_item = $data_weapons[item.weapon_id]
- when 3
- steal_item = $data_armors[item.armor_id]
- end
- draw_item_name(steal_item, 0, y)
- text = sprintf("%d%%", item.success_prob)
- self.contents.draw_text(0, y, sw, WLH, text, 2)
- y += WLH
- }
- end # make steal page
- #--------------------------------------------------------------------------
- # make spoils page
- #--------------------------------------------------------------------------
- def make_spoils_page
- x = 0
- y = 0
- sw = self.width - 32
- #---Encounters---
- y += WLH
- self.contents.font.color = text_color(@category_colour)
- text = YE::MENU::MONSTER::DATA_ENCOUNTER
- self.contents.draw_text(24, y, sw-24, WLH, text, 0)
- draw_icon(YE::MENU::MONSTER::ICON_ENCOUNTER, 0, y, true)
- self.contents.font.color = normal_color
- if @enemy.encounters_dse == 1
- text = sprintf(YE::MENU::MONSTER::VIEW_ENC1, @enemy.encounters_dse)
- else
- text = sprintf(YE::MENU::MONSTER::VIEW_ENC2, @enemy.encounters_dse)
- end
- self.contents.draw_text(24, y, sw-24, WLH, text, 2)
- #---Defeated---
- y += WLH
- self.contents.font.color = text_color(@category_colour)
- text = YE::MENU::MONSTER::DATA_KILLED
- self.contents.draw_text(24, y, sw-24, WLH, text, 0)
- draw_icon(YE::MENU::MONSTER::ICON_KILLED, 0, y, true)
- self.contents.font.color = normal_color
- if @enemy.defeated_dse == 1
- text = sprintf(YE::MENU::MONSTER::VIEW_KILLED1, @enemy.defeated_dse)
- else
- text = sprintf(YE::MENU::MONSTER::VIEW_KILLED2, @enemy.defeated_dse)
- end
- self.contents.draw_text(24, y, sw-24, WLH, text, 2)
- #---Escaped---
- y += WLH
- self.contents.font.color = text_color(@category_colour)
- text = YE::MENU::MONSTER::DATA_ESCAPED
- self.contents.draw_text(24, y, sw-24, WLH, text, 0)
- draw_icon(YE::MENU::MONSTER::ICON_ESCAPED, 0, y, true)
- self.contents.font.color = normal_color
- if @enemy.escaped_dse == 1
- text = sprintf(YE::MENU::MONSTER::VIEW_ESCAPED1, @enemy.escaped_dse)
- else
- text = sprintf(YE::MENU::MONSTER::VIEW_ESCAPED2, @enemy.escaped_dse)
- end
- self.contents.draw_text(24, y, sw-24, WLH, text, 2)
- #---Gold---
- y += WLH
- self.contents.font.color = text_color(@category_colour)
- text = YE::MENU::MONSTER::DATA_GOLD
- self.contents.draw_text(24, y, sw-24, WLH, text, 0)
- draw_icon(YE::MENU::MONSTER::ICON_GOLD, 0, y, true)
- self.contents.font.color = normal_color
- text = sprintf(YE::MENU::MONSTER::VIEW_GOLD, @enemy.gold)
- self.contents.draw_text(24, y, sw-24, WLH, text, 2)
- #---Exp---
- y += WLH
- self.contents.font.color = text_color(@category_colour)
- text = YE::MENU::MONSTER::DATA_EXP
- self.contents.draw_text(24, y, sw-24, WLH, text, 0)
- draw_icon(YE::MENU::MONSTER::ICON_EXP, 0, y, true)
- self.contents.font.color = normal_color
- text = sprintf(YE::MENU::MONSTER::VIEW_EXP, @enemy.exp)
- self.contents.draw_text(24, y, sw-24, WLH, text, 2)
- #---Drops---
- if YE::MENU::MONSTER::SPOIL_DROPS and !@enemy.enemy.hide_drops
- y += WLH
- drop_items = [@enemy.drop_item1, @enemy.drop_item2]
- if $imported["ExtraDropItem"]
- drop_items += @enemy.extra_drop_items
- end
- self.contents.font.color = text_color(@category_colour)
- text = YE::MENU::MONSTER::DATA_DROPS
- self.contents.draw_text(0, y, sw, WLH, text, 1)
- y += WLH
- drop_items.each_with_index { |item, i|
- break if (y + 24) > (self.height - 32)
- case item.kind
- when 0
- next
- when 1
- drop_item = $data_items[item.item_id]
- when 2
- drop_item = $data_weapons[item.weapon_id]
- when 3
- drop_item = $data_armors[item.armor_id]
- end
- draw_item_name(drop_item, 0, y)
- if $imported["ExtraDropItem"] && item.drop_prob > 0
- text = sprintf("%d%%", item.drop_prob)
- else
- text = sprintf("%d%%", 1 * 100 /item.denominator)
- end
- self.contents.draw_text(0, y, sw, WLH, text, 2)
- y += WLH
- }
- end
- end # make spoils page
- #--------------------------------------------------------------------------
- # make drops page
- #--------------------------------------------------------------------------
- def make_drops_page
- x = 0
- y = 0
- sw = self.width - 32
- y += WLH
- self.contents.font.color = text_color(@category_colour)
- text = YE::MENU::MONSTER::DATA_D_ITEM
- self.contents.draw_text(0, y, sw, WLH, text, 0)
- text = YE::MENU::MONSTER::DATA_D_CHANCE
- self.contents.draw_text(0, y, sw, WLH, text, 2)
- y += WLH
- drop_items = [@enemy.drop_item1, @enemy.drop_item2]
- if $imported["ExtraDropItem"]
- drop_items += @enemy.extra_drop_items
- end
- drop_items.each_with_index { |item, i|
- break if (y + 24) > (self.height - 32)
- case item.kind
- when 0
- next
- when 1
- drop_item = $data_items[item.item_id]
- when 2
- drop_item = $data_weapons[item.weapon_id]
- when 3
- drop_item = $data_armors[item.armor_id]
- end
- draw_item_name(drop_item, 0, y)
- if $imported["ExtraDropItem"] && item.drop_prob > 0
- text = sprintf("%d%%", item.drop_prob)
- else
- text = sprintf("%d%%", 1 * 100 /item.denominator)
- end
- self.contents.draw_text(0, y, sw, WLH, text, 2)
- y += WLH
- }
- end # make drops page
- #--------------------------------------------------------------------------
- # make notes page
- #--------------------------------------------------------------------------
- def make_notes_page
- self.contents.font.color.alpha = 255
- self.contents.font.size = YE::MENU::MONSTER::NOTE_PAGE_TEXT_SIZE
- self.contents.font.color = text_color(YE::MENU::MONSTER::NOTE_PAGE_TEXT_COLOUR)
- y = 24
- txsize = YE::MENU::MONSTER::NOTE_PAGE_TEXT_SIZE + 4
- text = YE::HASH::ENEMY_NOTES[@enemy.enemy_id]
- nwidth = YE::MENU::MONSTER::NOTE_PAGE_WIDTH
- buf = text.gsub(/\\N(\[\d+\])/i) { "\\__#{$1}" }
- lines = buf.split(/(?:[|]|\\n)/i)
- lines.each_with_index { |l, i|
- l.gsub!(/\\__(\[\d+\])/i) { "\\N#{$1}" }
- self.contents.draw_text(0, i * txsize + y, nwidth, WLH, l, 0)
- }
- end #end def
- #--------------------------------------------------------------------------
- # create_total_pages
- #--------------------------------------------------------------------------
- def create_total_pages
- @contents = []
- @contents.push(0) if YE::MENU::MONSTER::SHOW_GENERAL
- #----------------
- action_list = []
- for action in @enemy.enemy.actions
- if action.kind == 1
- obj = $data_skills[action.skill_id]
- action_list.push(obj) unless action_list.include?(obj)
- end
- end
- if YE::MENU::MONSTER::SHOW_SKILLS and action_list != []
- if @require
- if $game_party.scan_skill.include?(@enemy.enemy_id)
- @contents.push(1) unless @enemy.enemy.hide_skill
- end
- else
- @contents.push(1) unless @enemy.enemy.hide_skill
- end
- end
- #----------------
- if YE::MENU::MONSTER::SHOW_ELEMENTS
- if @require
- if $game_party.scan_elem.include?(@enemy.enemy_id)
- @contents.push(2) unless @enemy.enemy.hide_elem
- end
- else
- @contents.push(2) unless @enemy.enemy.hide_elem
- end
- end
- #----------------
- if YE::MENU::MONSTER::SHOW_STATES
- if @require
- if $game_party.scan_state.include?(@enemy.enemy_id)
- @contents.push(3) unless @enemy.enemy.hide_state
- end
- else
- @contents.push(3) unless @enemy.enemy.hide_state
- end
- end
- #----------------
- if YE::MENU::MONSTER::SHOW_STEAL and $imported["Steal"]
- if @require
- if $game_party.scan_steal.include?(@enemy.enemy_id)
- @contents.push(80) unless @enemy.enemy.hide_steal
- end
- else
- @contents.push(80) unless @enemy.enemy.hide_steal
- end
- end
- #----------------
- if YE::MENU::MONSTER::SHOW_SPOILS
- if @require
- if $game_party.scan_spoil.include?(@enemy.enemy_id)
- @contents.push(90) unless @enemy.enemy.hide_spoil
- end
- else
- @contents.push(90) unless @enemy.enemy.hide_spoil
- end
- end
- #----------------
- if YE::MENU::MONSTER::SHOW_DROPS
- if @require
- if $game_party.scan_drops.include?(@enemy.enemy_id)
- @contents.push(91) unless @enemy.enemy.hide_drops
- end
- else
- @contents.push(91) unless @enemy.enemy.hide_drops
- end
- end
- #----------------
- if YE::MENU::MONSTER::SHOW_NOTES
- if @require
- if YE::HASH::ENEMY_NOTES.include?(@enemy.enemy_id)
- @contents.push(100) if $game_party.scan_desc.include?(@enemy.enemy_id)
- end
- else
- if YE::HASH::ENEMY_NOTES.include?(@enemy.enemy_id)
- @contents.push(100)
- end
- end
- end
- #----------------
- n = @contents.size
- return n
- end
- #--------------------------------------------------------------------------
- # case_page_name
- #--------------------------------------------------------------------------
- def case_page_name(pagecase)
- if pagecase == 0
- #text = YE::MENU::MONSTER::TITLE_GENERAL
- elsif pagecase == 1
- #text = YE::MENU::MONSTER::TITLE_SKILLS
- elsif pagecase == 2
- #text = YE::MENU::MONSTER::TITLE_ELEMENTS
- elsif pagecase == 3
- #text = YE::MENU::MONSTER::TITLE_STATES
- elsif pagecase == 80
- #text = YE::MENU::MONSTER::TITLE_STEAL
- elsif pagecase == 90
- #text = YE::MENU::MONSTER::TITLE_SPOILS
- elsif pagecase == 91
- #text = YE::MENU::MONSTER::TITLE_DROPS
- elsif pagecase == 100
- text = YE::MENU::MONSTER::TITLE_NOTES
- else
- #text = YE::MENU::MONSTER::TITLE_UNKNOWN
- end
- return text
- end
- #--------------------------------------------------------------------------
- # case_page_run
- #--------------------------------------------------------------------------
- def case_page_run(pagecase)
- if pagecase == 0
- make_general_page
- elsif pagecase == 1
- make_skills_page
- elsif pagecase == 2
- make_elements_page
- elsif pagecase == 3
- make_states_page
- elsif pagecase == 80
- make_steal_page
- elsif pagecase == 90
- make_spoils_page
- elsif pagecase == 91
- make_drops_page
- elsif pagecase == 100
- make_notes_page
- end
- end
- end # Window_Enemy_Scan
- #===============================================================================
- #
- # END OF FILE
- #
- #===============================================================================
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement