Bestiary + Display Scanned EnemyLast Update: 2009.05.27By: Yanfly Engine ReDux IntroductionSimilar 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.
Update History- 2009.05.27 - Bestiary added with this script!
- 2009.04.21 - Finished script and publicized.
- 2009.04.20 - Started on script.
Screenshots ScriptClick here to view it. InstructionsSince this is a big script, I’ve included a number of screenshots to explain everything (hopefully).
---------
First, to activate and open the scan window, be at the target enemy portion of your action selection. Once you're able to select an enemy, press Shift to view the data available on the enemy highlighted in the list. Note that you can alter whatever button you wish to trigger this window with through a couple of easy module changes.
YE::MENU::MONSTER::ENEMY_SCAN_BUTTON
- This sets the button used for opening the enemy scan window.
YE::MENU::MONSTER_HELP_WINDOW options
- These set what displays in the notice window, how large the window will appear, where it'll appear, and how opaque it'll be.
---------
This is what shows up at first for an unscanned enemy. In fact, this is all that will show up for an unscanned enemy. There's usually no extra pages or whatever (unless you decide to heavily mod this script yourself). Nearly all data will be hidden and the only things showing remotely helpful data are the HP and MP gauge changes. Those gauges will go up and down even if you don't have HP and MP scanned. Aside from that, the player can't even visit the other pages yet. And yes, there are multiple pages.
Also, if you might have noticed, under "General Info" is a little icon displayed. In this screenshot, it happens to indicate that this vampire monster is a boss. And a big type at that. This particular boss type has a different HP and MP colour as well as icons. You can set multiple boss types, too. For instance, let's take a look at this screenshot.
This Lamia next to the vampire is a type 2 boss. It's stronger than the normal enemy, but not strong enough to be a big boss like the vampire. It has a slightly less intimidating boss icon, but it uses normal HP and MP bar colours. You can change all of that information and even add your own boss types in the BOSS_TYPES hash inside the module.
<boss type x> x is the boss type for the enemy referenced from the values in the BOSS_TYPES hash.
YE::MENU::MONSTER::BOSS_TYPES
- This hash affects the boss types used and grants visual changes to the general info page.
---------
Well, let's set up a way to retrieve data from the enemy. After all, it's no good if you can't see any of it. Add any of the scan tags to your skills or even make a skill dedicated to scanning to allow the player access to the enemy scan data.
<scan whole> This tag causes the skill to reveal everything about an enemy.
YE::MENU::MONSTER::REQUIRE_SCAN
- If you decide to require scanning to display monster stats, set this to true.
I'll go through each of the scan tags with each section as to not clutter up this particular step. However, unlike most traditional scan methods (which I actually dislike) where a window pops up showing you the enemy's current HP and MP data and all that other jazz, this method doesn't actually cause anything to pop up. What happens will be revealed in the next step.
---------
The next time the player decides to view the scan page, the player will be treated to a more informative collection of pages. On the general info page, you see the HP and MP, the ADSA stats (attack, defense, spirit, agility) and HECO stats (hit rate, evade rate, critical rate, and odds rate). Of the HECO stats, you may choose to disable parts of them through the module. In this particular screenshot, I've disabled the Odds stat. Otherwise, it would be shown under critical. If the enemy is under any status effects (like the vampire is in the above screenshot), an additional part will be shown at the bottom of the page to display the ten highest priority status effects currently affecting that monster. If there are any status effects affecting HP, MP, Attack, Defense, Spirit, or Agility, the respective icons will be replaced by up and down icons to indicate the direction they've changed relative to their base stats.
I'd like to mention that there are two parts to the first page that need to be scanned and revealed. The first part being HP and MP. The second part being the ADSAHECO stats. I kept these separate for multiple reasons, but if you would like one skill to reveal all of this page at once, no fear. Just add both <scan hp mp> and <scan stats> to one skill's notebox.
<scan hp mp> This will reveal the HP and MP values of the monster.
<scan stats> This will reveal the ADSA and HECO stats of the monster.
If you would like a monster to continue hiding these these stats no matter how much a player scans them, you can do so by throwing in the <hide> tags into a monster's notebox like such.
This will prevent the data from being shown no matter how much you scan them. Even if you have REQUIRE_SCAN off, the <hide> tags will keep them hidden. These tags can be used on any monster, bosses or non-bosses. They will only work inside the monster notebox and nowhere else.
<hide whole> Hides all scan data.
<hide hp mp> Hides HP and MP data.
<hide stats> Hides ADSA and HECO stats.
Here's a couple of things you can modify in the module regarding the general page:
YE::MENU::MONSTER::SHOW_GENERAL
- If true, this page will be shown overall for all monsters.
YE::MENU::MONSTER::TITLE_GENERAL
- String data for what's show in the screenshots as "General Info"
YE::MENU::MONSTER::GAUGE_HEIGHT, EXHAUST_COLOUR, FONT_SIZE
- Changes the height of the gauges, the exhaustion colour, and the font size of the stats.
YE::MENU::MONSTER::HP_DISPLAY_TYPE, MP_DISPLAY_TYPE
- Changes the display type of HP and MP.
---------
Following the general info page is the skill info page if the enemy has any skills at all. Up to 8 skills can be displayed (due to the size restraights on the window) and these skills are taken from the enemy's action choices in the Enemies tab of the database. These skills aren't ordered in any particular way other than by top to bottom within the action list.
<scan skills> Causes a skill to unlock the skill page for enemy type.
<hide skills> Hides skill page from showing.
Here's a couple of things you can modify in the module regarding the skills page:
YE::MENU::MONSTER::SHOW_SKILLS
- If true, this page will be shown overall for all monsters.
YE::MENU::MONSTER::TITLE_SKILLS
- String data for what's show in the screenshots as "Skill Info"
YE::MENU::MONSTER::VIEW_SKILLS1 and VIEW_SKILLS2
- String data for singular and plural forms.
---------
The elements page will show the monster's elemental affinities towards a select group of elements. This page shows what the monster is weak towards, what the monster is neutral towards, and what the monster is strong towards through representative usage of icons. In this case, the icons representing elemental affinity are the coloured orbs that appear in the screenshot above.
To add to this group or take away, find the ELEMENT_HASH in the module and simply add to it. You can more rows and more elements to each row. However, each row is limited to a maximum of displaying 10 elements (you can try to add more but they'll be pushed off the screen). Since elements by default don't have any icons to represent them, it's your job to arrange proper icons for them, too.
<scan elements> Skill will unlock elements page for enemy type.
<hide elements> Hides elements page for enemy type.
Here's a couple of things you can modify in the module regarding the elements page:
YE::MENU::MONSTER::SHOW_ELEMENTS
- If true, this page will be shown overall for all monsters.
YE::MENU::MONSTER::TITLE_ELEMENTS
- String data for what's show in the screenshots as "Element Affinity"
YE::MENU::MONSTER::ICON_E_RATE (multiple)
- Adjusts the icons used to represent the various rates.
YE::MENU::MONSTER::ELEMENTS_HASH
- Explained above.
---------
The status effects page shows selected status effects to appear in the scan data window. Just like the elements page, this dictates the rates at which elements affect the target enemy. And just like the elements page, the rates are represented by a set of orbs. In the even that the script user would like to use different icons representing status rates, I've thrown in another set of module sets for that occasion.
And just like the ELEMENT_HASH, the STATES_HASH allows you to add whatever elements you would like and adjust the rows as desired. Unlike the ELEMENT_HASH though, you don't need to provide icon data since states already have icons associated with them. This at least saves you half the trouble.
<scan status effects> Skill will unlock status page for enemy type.
<hide status effects> Hides status page for enemy type.
Here's a couple of things you can modify in the module regarding the status page:
YE::MENU::MONSTER::SHOW_STATES
- If true, this page will be shown overall for all monsters.
YE::MENU::MONSTER::TITLE_STATES
- String data for what's show in the screenshots as "Status Chances"
YE::MENU::MONSTER::ICON_S_RATE (multiple)
- Adjusts the icons used to represent the various rates.
YE::MENU::MONSTER::STATES_HASH
- Explained above.
---------
For those that use KGC's Steal script (I'm sure many of you do), this page will show the steal data for the enemy. This page will only be unlocked if you have the script and using it. Otherwise, it'll be completely overlooked and you won't have to worry about it at all.
<scan steal> Skill unlocks steal page for enemy type.
<hide steal> Hides steal page for enemy type.
Here's a couple of things you can modify in the module regarding the steal page:
YE::MENU::MONSTER::SHOW_STEAL
- If true, this page will be shown overall for all monsters.
YE::MENU::MONSTER::TITLE_STEAL
- String data for what's show in the screenshots as "Steal Info"
YE::MENU::MONSTER::DATA_S_ITEM
- String data for item category.
YE::MENU::MONSTER::DATA_S_CHANCE
- String data for steal success rate category.
---------
The spoils page displays various information about the enemy regarding victory. The number of enemy encounters of the enemy type, the number of kills of that enemy type, and the number of enemies that escaped of that enemy type are all here. In addition to that, the gold dropped and experience given is also listed. Drop data is also displayed here if desired (there's an option to turn it off and that'll be revealed why shortly).
You can also set this page to be unlocked whenever you defeat an enemy of that type. This means you can save yourself the need to make a scan skill for this data page should you decide to enable this feature (by default, it's enabled anyway).
<scan spoils> Skill unlocks spoils page for enemy type.
<hide spoils> Hides spoils page for enemy type.
Here's a couple of things you can modify in the module regarding the spoils page:
YE::MENU::MONSTER::SHOW_SPOILS
- If true, this page will be shown overall for all monsters.
YE::MENU::MONSTER::TITLE_SPOILS
- String data for what's show in the screenshots as "Victory Spoils"
YE::MENU::MONSTER::DEATH_SPOILS
- If true, this page will be unlocked for enemy type whenever you kill an enemy of that type.
---------
This is an optional page, made mostly for those with KGC's Extra Drop Items script. Unlike KGC's Steal script, this one can be used with or without the KGC's Extra Drop Items script. However, it'll most likely look pretty bland with only two items to list by default. Feel free to enable and disable as you desire.
Also like the spoils page, you can set this page to unlock whenever you defeat an enemy of the same enemy type.
<scan drops> Skill unlocks drops page for enemy type.
<hide drops> Hides drops page for enemy tpe.
Here's a couple of things you can modify in the module regarding the drops page:
YE::MENU::MONSTER::SHOW_DROPS
- If true, this page will be shown overall for all monsters.
YE::MENU::MONSTER::TITLE_DROPS
- String data for what's show in the screenshots as "Drops Info"
YE::MENU::MONSTER::DEATH_DROPS
- If true, this page will be unlocked for enemy type whenever you kill an enemy of that type.
---------
And finally, the last page of the scan data allows you to input in your own custom notes. This page is completely optional and won't necessarily appear for each enemy unless you input in hash data for the respective enemy ID. With that said, there's little need to create a <hide> tag for the page. However, there is a <scan> tag used.
<scan description> Skill unlocks custom notes page for enemy type.
Scroll down towards the Lunatic Mode section and you can begin adding in your own custom notes here. The instructions are included right above the data so don't worry about not knowing what to do. For a Lunatic Mode portion of a Yanfly Engine ReDux script, it's relatively easy to modify.
---------
Like any other Yanfly Engine ReDux script that adds a command to the menu, the Bestiary option will only appear if you enable the switch that governs it. You can change this switch's ID by adjusting BESTIARY_SWITCH in the module. Once selected, it'll take you to, well, the bestiary.
BESTIARY_SWITCH
This switch will govern the appearance of the bestiary inside the main menu.
---------
Once started, you're given an empty bestiary filled with question marks to mask over each of the letters in a monster's name. On the right hand side will list the completion percentage for the bestiary, the number of monster species discovered, total monster encounters, total monsters defeated, and total monsters that escaped. This information is only a general overview of what your bestiary is currently like.
---------
Once things start filling up, you will begin to see more monsters on the list. In the event that you want to hide some monsters, there exists an array for you to manage that. You can also manage the bestiary ordering, too, if you don't like the way your monsters are ordered.
HIDDEN_MONSTERS
This array will hide the monsters whose ID's are listed here from the bestiary.
BESTIARY_ORDER
This array will order the monsters in the bestiary as their ID's appear in the array.
---------
When you press shift, a category type window will pop up. Here, under the BOSS_TYPES that you've worked on. To order your boss types differently, search for the TYPE_ORDERING array and adjust that to fit your liking.
TYPE_ORDERING
This array will change the order of which boss types will appear in.
---------
When a new category is selected, only monsters of that type will be listed and viewable. Monsters that have multiple boss types will be shown on all the lists of those particular boss types. Add <boss type x> or <boss type x,x> to the enemy's notebox. This feature was in the previous version but was never expanded upon.
---------
When you select an enemy, it will show its data if you've bothered scanning it. Note that monsters will appear in the bestiary if you've encountered them. Scanning them will unlock more pages and more info displayed.
---------
And that's all! This script was created with more focus on the players rather than the scripters. As often as I play RPG's, I've often wished for an in game bestiary-type menu to know what I'm fighting since remembering every enemy in an RPG is an impossible task. Although many would complain as to that giving the players too much information, I used to hold that stance until I've played an RPG series called Persona where they make knowing your enemy an important key to victory. By allowing the players access to an in battle bestiary/scan menu, Persona as an RPG became a whole lot more friendly and likable as far as battles went. I hope other players will discover similar feelings when playing RPG's with this script.
Notes <TheFlayvor> how did you shrink fit enemy bitmap to the window and center it?
<Yanfly> Math.
<TheFlayvor> damn you, algebra! you thwart me yet again!
Compatibility - Works with KGC Extra Drop Items
- Works with KGC Steal
Please report any compatibility issues and I'll try my best to fix them.
Terms and ConditionsJust give credit where due.
Credits and Thanks- Persona RPG series for inspiration.
Originally Found Here: Here