• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Script: In-Depth Pokedex Data Page [v21.1]

  • 1,479
    Posts
    10
    Years
    • Seen today
    Pokedex Data Page for v21.1
    Adds a new page using Modular UI Scenes to display a ton of in-depth info for each species in the Pokedex.
    [PokeCommunity.com] In-Depth Pokedex Data Page [v21.1]
    [PokeCommunity.com] In-Depth Pokedex Data Page [v21.1]


    Overview
    This plugin showcases the potential of my Modular UI Scenes plugin by utilizing it to add a brand new "Data" page to each species' Pokedex entry in the Pokedex. This new page hosts a plethora of in-depth info about each species that is normally not displayed to the player. If you're like me, and is someone who feels that the Pokedex is deeply lacking in useful content despite the fact that it's literally supposed to be the "Pokemon encyclopedia", then this plugin will probably be for you.

    Here is a quick list of the types of data that can be viewed on this page:


    • The number of times you've captured or defeated a species.
    • The capture rate of a species.
    • The gender ratio of a species.
    • A list of species that are in this species' family (for base species).
    • The evolution method to obtain this species (for evolved species).
    • The Mega Evolution or Primal Reversion methods for this species (for Mega/Primal forms, respectively).
    • The habitat a species is found in, as well as all other owned species that share that same habitat.
    • The color and body shape of a species, as well as all other owned species that share the same color and body shape.
    • The egg groups of a species, as well as all other owned species in compatible egg groups to that species.
    • The base stats of a species, represented both as bar graphs and as raw numbers. The base stat total is included, too. In addition, all other owned species that share one or more of those base stats can be viewed.
    • All items a species may be naturally found holding in the wild, if any. Also displays details about each item and its rarity.
    • All abilities a species may have, including hidden abilities. The descriptions of each ability is also displayed.
    • All moves a species may learn through level-up, TM's/tutors, or through breeding. The details of each move and how they are learned are also displayed.


    Plugin Features
    • Uses my Modular UI Scenes plugin to add a new Data page to the Pokedex. This plugin will have full compatibility with any other Pokedex UI mod that also utilizes that plugin.
    • Showcases a ton of in-depth information for each species.
    • The ability to toggle the availability of this new page with a switch.
    • The ability to toggle Egg Group names between their default names, and alternative names that I came up with. You may also change these alternative names as you please.
    • The ability to set description text for each Evolution handler to be displayed in the Data page. You can even add this feature to any of your custom Evolution handlers to have custom text appear for those methods.


    -DOWNLOAD LINK-


    Installation

    Spoiler:



    Changelog (v2.0.1)
    Spoiler:



    Plugin Tutorial

    Accessing the Data Page
    Spoiler:


    Data Page Overview
    Spoiler:
     
    Last edited:
    Minor Update (v1.0.1)
    **IMPORTANT**
    It's come to my attention that if you're using this plugin with scripts and PBS files taken from the Gen 9 pack, the evolution text for some of the species added by that plugin may not display correctly. This is due to the evolution handlers from that plugin not being fully compatible with v21.1 yet. To address this, I've updated this plugin to contain updated evolution methods that are compatible with v21.1. I'll keep these in the plugin as placeholder until the Gen 9 Pack is officially updated to v21.1.

    Furthermore, I've noticed that there are several errors and/or missing elements scattered throughout the Gen 9 PBS files, which affects some of the displays in the plugin by displaying incorrect data. To address this, I'm going to include a script below that you can run to fix these errors. I'm not going to include this in the plugin, because it's incredibly niche and only serves a single purpose to be used only once; after which you can simply delete the script.

    Again, this is only necessary to use if you're using Gen 9 PBS files. Otherwise, you can mostly ignore this update entirely.

    Paste this code anywhere in an empty space in your Essentials script:
    Code:
    module GameData
      class Item
        attr_accessor :real_portion_name
        attr_accessor :real_portion_name_plural
      end
      class Species
        attr_accessor :real_form_name
        attr_accessor :habitat
        attr_accessor :generation
        attr_accessor :flags
      end
    end
    
    module Compiler
      module_function
      
      def update_gen9
        compile_items = false
        items_to_update   = [
          :AUSPICIOUSARMOR, :MALICIOUSARMOR, :BOOSTERENERGY
        ]
        items_to_update.each do |item|
          data = GameData::Item.try_get(item)
          next if !data
          compile_items = true
          case item
          when :AUSPICIOUSARMOR, :MALICIOUSARMOR
            data.real_portion_name = "set of #{data.name}"
            data.real_portion_name_plural = "sets of #{data.name}"
          when :BOOSTERENERGY
            data.real_portion_name = "capsule of #{data.name}"
            data.real_portion_name_plural = "capsules of #{data.name}"
          end
        end
        compile_species = false
        species_to_update = [
          :WYRDEER, :BASCULEGION, :SNEASLER, :OVERQWIL, :ENAMORUS,
          :TAROUNTULA, :SPIDOPS, :NYMBLE, :LOKIX, :WATTREL, :KILOWATTREL,
          :WIGLETT, :WUGTRIO, :BOMBIRDIER, :VAROOM, :REVAVROOM, :CYCLIZAR,
          :GREAVARD, :HOUNDSTONE, :VELUZA, :ANNIHILAPE,
          :DARMANITAN_1, :DARMANITAN_3, 
          :QUILAVA_1, :TYPHLOSION_1, :SNEASEL_1, :DEWOTT_1, :SAMUROTT_1,
          :PETILIL_1, :LILLIGANT_1, :BASCULIN_2, :RUFFLET_1, :BRAVIARY_1,
          :GOOMY_1, :SLIGGOO_1, :GOODRA_1, :BERGMITE_1, :AVALUGG_1,
          :DARTRIX_1, :DECIDUEYE_1, :BASCULEGION_1,
          :REVAVROOM_1, :REVAVROOM_2, :REVAVROOM_3, :REVAVROOM_4, :REVAVROOM_5
        ]
        species_to_update.each do |species|
          data = GameData::Species.try_get(species)
          next if !data
          compile_species = true
          case data.species
          when :QUILAVA_1, :DEWOTT_1, :PETILIL_1, :RUFFLET_1, :GOOMY_1, :BERGMITE_1, :DARTRIX_1
            data.flags.clear
            data.generation = 8
          when :TYPHLOSION_1, :SAMUROTT_1, :LILLIGANT_1, :BRAVIARY_1, :SLIGGOO_1, :GOODRA_1, :AVALUGG_1, :DECIDUEYE_1
            data.flags.clear
          when :DARMANITAN
            data.flags = ["DefaultForm_#{data.form - 1}"]
          when :BASCULIN
            data.real_form_name = "White-Striped"
          when :BASCULEGION
            data.flags = ["DefaultForm_2", "InheritFormWithEverStone"]
          when :SNEASLER
            data.habitat = :Mountain
            data.flags = ["DefaultForm_1", "InheritFormWithEverStone"]
          when :OVERQWIL
            data.flags = ["DefaultForm_1", "InheritFormWithEverStone"]
          when :ENAMORUS
            data.habitat = :Rare
          when :TAROUNTULA, :SPIDOPS
            data.habitat = :Forest
          when :WYRDEER, :NYMBLE, :LOKIX, :CYCLIZAR, :GREAVARD, :HOUNDSTONE
            data.habitat = :Grassland
          when :WATTREL, :KILOWATTREL, :WIGLETT, :WUGTRIO, :VELUZA
            data.habitat = :Sea
          when :SNEASEL, :BOMBIRDIER, :ANNIHILAPE
            data.habitat = :Mountain
          when :VAROOM, :REVAVROOM
            data.habitat = :RoughTerrain
            data.real_form_name = nil
          end
        end
        if compile_items
          GameData::Item.save
          Compiler.write_items
        end
        if compile_species
          GameData::Species.save
          Compiler.write_pokemon
          Compiler.write_pokemon_forms
        end
        if compile_items || compile_species
          Compiler.compile_all(true)
        end
        pbMessage(_INTL("Data successfully updated. You may now delete the Gen 9 Updater script."))
      end
    end
    Next, in an event, run the script Compiler.update_gen9. The game should start rewriting some of your PBS files, and then begin compiling. After which, a message will display telling you that the data successfully updated. After this is complete, you may close your game and remove the code you pasted above from your scripts, as it has done its job and is no longer needed.

    After doing this and installing the latest update, all Gen 9-related issues in the Data pages should be resolved.
     
    Minor Update (v1.0.2)


    • Fixed a bug that would cause a crash after registering a new species in the Pokedex.
    • Fixed a bug that could cause a potential crash if the total number of species icons that appear in one of the sub menus happens to be an exact multiple of 12.
     
    Minor Update (v1.0.3)


    • Fixed an error that would occur if you have custom Egg Groups or Habitats which you have not assigned an icon position value to.
    • Reconfigured how the graphics for the plugin are stored so that they aren't accidentally deleted for completed projects.
     
    NOTICE
    This isn't worthy of its own update, but now that the (broken link removed) has been updated to v3.0.1, the placeholder evolution handlers for Gen 9 species have been removed from this plugin, since they now properly work in the Gen 9 Pack scripts.
     
    Looks very cool, but I'm not seeing where exactly I'm supposed to go to enable the extra page, could you maybe provide a video tutorial or smth for the plugin? Might just be my dumbass brain but it would be helpful, thx
     
    Looks very cool, but I'm not seeing where exactly I'm supposed to go to enable the extra page, could you maybe provide a video tutorial or smth for the plugin? Might just be my dumbass brain but it would be helpful, thx

    Check the first section in the tutorial.
     
    Minor Update (v1.0.4)


    • Included a fix for shiny icon sprites displaying in the dex.
    • Fixed an issue with Rapid Strike Urshifu not displaying the correct evolution item in the evolution display text when the Gen 9 plugin installed.
     
    Minor Update (v1.0.5)
    ***NOTE*** If you already have this plugin installed, you MUST delete your existing plugin files before installing this update. ***NOTE***
    • Implemented support for displaying unique form mechanics included in future plugins (Ultra Burst, Gigantamax, Terastal forms).
    • Generalized how data for Primal forms are obtained by adding a new form handler key.
    • Cleaned up some display messages.
    • Renamed some files for more consistency across plugins which utilize Modular UI Scenes.
     
    Minor Update (v1.0.6)
    • Minor fixes in preparation for the release of the Dynamax DBK add-on plugin.
     
    Is there a way to change the evolution method page so that the unevolved Pokemon displays the evolution method instead of the evolved one? (i.e. Pichu displays how to evolve into Pikachu and Pikachu displays how to evolve into Raichu and Alolan Raichu) I want my players to be able to reference the pokedex if they are unsure of how a pokemon they have evolves instead of an outside source.
     
    Is there a way to change the evolution method page so that the unevolved Pokemon displays the evolution method instead of the evolved one? (i.e. Pichu displays how to evolve into Pikachu and Pikachu displays how to evolve into Raichu and Alolan Raichu) I want my players to be able to reference the pokedex if they are unsure of how a pokemon they have evolves instead of an outside source.
    I don't like the idea of displaying it on the base form because it reveals way too much information right off the bat. Being told how to evolve something the second you capture it kills all the mystery. The idea in setting it up this way is that you have to wait until you encounter the evolved form during normal gameplay (used by an NPC trainer), and then you can look that species up in the dex to see how you're meant to obtain it.

    It's also done this way because listing the evolution method on the base species would be impossible to fit on screen for species with branching evolutions. For example, Eevee would have to display how to evolve it into all 8 of its evolutions, but there's no where near enough room for all that.
     
    Preserving the mystery is not something that i am interested in for my fan game. I was hoping to avoid having the player have to look at documentation outside the game to learn how pokemon have had their evolutions changed. (Such as Electabuzz now evolves into Electivire with a thunder stone) If its a technical limitation due to the space for branching evos, then I completely understand and will just include a doc for evolution changes.
     
    Preserving the mystery is not something that i am interested in for my fan game. I was hoping to avoid having the player have to look at documentation outside the game to learn how pokemon have had their evolutions changed. (Such as Electabuzz now evolves into Electivire with a thunder stone) If its a technical limitation due to the space for branching evos, then I completely understand and will just include a doc for evolution changes.
    If I went into designing the display from the beginning to show evo methods on the base species, then the entire UI would have been designed differently. But showing evo methods on the evo itself was one of the first decisions I made when this plugin was in the concept phase, so the final layout and design is based around that initial philosophy of not wanting to "spoil" the mystery right away. So undoing this would mean changing the entire layout.

    The way I expected people to design their games would be to gradually reveal evolutions of species to the player as the game progresses. So if you capture a Pichu, you will eventually run into a trainer who has a Pikachu. Then the player goes "huh, how do I get that?", and checks the Pokedex page for Pikachu, which will reveal how to evolve Pichu, etc.

    I admit though, that this gameplay loop fails if you dont intend to reveal evo's of some species during normal gameplay, though.
     
    If I went into designing the display from the beginning to show evo methods on the base species, then the entire UI would have been designed differently. But showing evo methods on the evo itself was one of the first decisions I made when this plugin was in the concept phase, so the final layout and design is based around that initial philosophy of not wanting to "spoil" the mystery right away. So undoing this would mean changing the entire layout.

    The way I expected people to design their games would be to gradually reveal evolutions of species to the player as the game progresses. So if you capture a Pichu, you will eventually run into a trainer who has a Pikachu. Then the player goes "huh, how do I get that?", and checks the Pokedex page for Pikachu, which will reveal how to evolve Pichu, etc.

    I admit though, that this gameplay loop fails if you dont intend to reveal evo's of some species during normal gameplay, though.
    First, since intent is hard to get across in text alone without being blunt. I love this plugin. I think that the hard work you provide the community is amazing and admirable. I don't expect a solution to my problem since it is so much more work than a switch a few lines of code to point to the pre evo instead of the evolution. My game's needs are my own problem to solve.

    With that being said, I follow your line of logic and wanted to point out where it shines and why it fails in my use case. It doesn't actually have to do with seeing the evolutions on another team in game. Because my game is changing the evolution methods for old pokemon I have to deal with the player already having the knowledge of how a pokemon evolves. In your example of a player catching a let's say level 4 Pichu, a player who has any experience with the official games will not wait to see a Pikachu and then ask how they got there they will instead say "Pichu evolves into Pikachu with happiness" and they may decide to run back and forth until that happiness is maxed out and then level it up. Well, in my game Pichu doesn't evolve with happiness, it instead evolves at level 7. So they will be confused on why their max happiness Pichu didn't evolve. I was hoping I could change code so that the player could then think, "Oh yeah, the pokedex has a data page, let me look at why my Pichu didn't evolve" instead of having to look at resources outside the game itself.

    Where I think your way of revealing evolutions works is in fan games where there are fakemon, which is probably most of them. You definitely don't want to spoil that Qwikid evolves into Eldewift as soon as you catch a Qwikid. Your way is much more natural and makes way more sense in that case. My game is just a more niche case.
     
    First, since intent is hard to get across in text alone without being blunt. I love this plugin. I think that the hard work you provide the community is amazing and admirable. I don't expect a solution to my problem since it is so much more work than a switch a few lines of code to point to the pre evo instead of the evolution. My game's needs are my own problem to solve.

    With that being said, I follow your line of logic and wanted to point out where it shines and why it fails in my use case. It doesn't actually have to do with seeing the evolutions on another team in game. Because my game is changing the evolution methods for old pokemon I have to deal with the player already having the knowledge of how a pokemon evolves. In your example of a player catching a let's say level 4 Pichu, a player who has any experience with the official games will not wait to see a Pikachu and then ask how they got there they will instead say "Pichu evolves into Pikachu with happiness" and they may decide to run back and forth until that happiness is maxed out and then level it up. Well, in my game Pichu doesn't evolve with happiness, it instead evolves at level 7. So they will be confused on why their max happiness Pichu didn't evolve. I was hoping I could change code so that the player could then think, "Oh yeah, the pokedex has a data page, let me look at why my Pichu didn't evolve" instead of having to look at resources outside the game itself.

    Where I think your way of revealing evolutions works is in fan games where there are fakemon, which is probably most of them. You definitely don't want to spoil that Qwikid evolves into Eldewift as soon as you catch a Qwikid. Your way is much more natural and makes way more sense in that case. My game is just a more niche case.
    Yeah, that makes sense. I tend to design things from the perspective of the player being totally new/inexperienced as a rule of thumb.
     
    I don't suppose there's a version of this plugin that's compatible with Essentials v20.1, is there? I don't think there is, but I figured I'd ask just in case.
     
    Back
    Top