• Just a reminder that providing specifics on, sharing links to, or naming websites where ROMs can be accessed is against the rules. If your post has any of this information it will be removed.
  • Our friends from the Johto Times are hosting a favorite Pokémon poll - and we'd love for you to participate! Click here for information on how to vote for your favorites!
  • Cyndy, May, Hero (Conquest), or Wes - which Pokémon protagonist is your favorite? Let us know by voting in our poll!
  • 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.

Looking to do something a little ambitious that maybe hard to do need some help

  • 2
    Posts
    7
    Years
    • Seen Apr 27, 2018
    Okay, so instead of picking a starter I want to make my game appear more natural in a sense. One thing i've never liked about pokemon was how the starter pokemon is viewed as partner pokemon and how there are only 3 choices. So i wanna do something where at the beginning of the game it asks you what your favourite non-legendary pokemon is, and whatever you select causes it to effect the event where you obtain the starter pokemon to where the starter pokemon is the pre-evolution to whatever pokemon you selected. Could this theoretically be done on Pokemon essentials? If so how?
     
    It could be done, but the one reason why they gave you three options was because the starters' types formed a rock-paper-scissors-style relationship; although such a dynamic can work with any odd number of starter options provided you have half the other types strong against your choice and half weaker.
     
    I am not a skilled coder, but I can think of 3 ways of doing this.

    The first is to use the Event Commands to make a show choice that can narrow down the pokemon.
    Example:
    Text: Where is your favorite pokemon from?
    Lable: Region
    Show Choice: Kanto, Johto, Hoenn, Show More (add more then at the end of the choices have an option that says "Start over" which should jump to lable "Region)
    after the player has selected a region have them choose a type, and so on until the list of pokemon the player can choose from is bearable to make options for.

    The second option would be to script a show choice event in the script editor and have that list every pokemon excluding legendaries.

    or the biggest pain, but the best looking option would be to make a massive loop event that pulled up the icon of every pokemon (excluding legendaries) and have an indicator move around the screen that the player could control with the arrow keys to select their would be starter.

    I am sure there are better ways of doing this but these are what I can think of for now, they require either a little scripting knowledge or a good understanding of how to use the event commands.
     
    The easiest way to actually get the selction of the Pokemon would be GT-Bakas first option. A simple list of all non-legendary Pokemon. Okay so then you got the choice. But then you also need to tell the game what to do with this choice. You can't simply tell the game "just take the very first evolution of this Pokemon" (I mean in theory it would be possible but coding this would be even more complicated)
    So the other option then is to take the choice and run it through a script which decides the starter. Then you would have to write a code that basically checks like this (not actual code, just a representation of what it does)

    Code:
    if the choice is Bulbasaur or Ivysaur or Venusaur then make the starter Bulbasaur
    else if the choice Charmander or Charmeleon or Charizard then make the starter Charmander
    else if the choice is Squirtle or Wartortle or Blastoise then make the starter Squirtle
    else if the choice is Caterpie or Metapod or Butterfree then make the starter Caterpie
    .
    .
    .
    else if the choice is  Cubchoo or Beartic then make the starter Cubchoo 
    else if the choice is  Cryogonal then make the starter Cryogonal 
    .
    .

    and you have to do this for every evolution line. Even if you can check for one complete evolution line at once you still have hundreds of other mons to check for. That is a ton of coding and such a script might actually slow down some computers (but it might as well not, I'm not really sure what would happen). And even if you split the script to avoid freezing computers, you still would need to script the whole selection progress.

    Also if you happen to choose a Pokemon with no evolution, would you then get said Pokemon? And what if you choose a middle evolution like Haunter? Would that somehow effect it?

    I really don't want to ruin it as I think it's an interesting idea, but I recommend making the choice size smaller. Right now I can't think of any other way to make it easier
     
    Yeah, even if you remove all the legendaries, mythicals and (presumably) Ultra Beasts; you'd still be left with ~750 Pok?mon to choose from (give or take).
     
    Doesn't the pokemon.txt file have the info of evolutionary branches and such? I am no code pro, but if you can add a "ifLegendary" property (if it doesn't have one already) to this file and do some script code magic, you can simply build a list of all accessible pokemon (the ones with ifLegendary=false), let player choose one they want and then just look at the first in the evolutionary branch of that pokemon.
     
    Last edited:
    Doesn't the pokemon.txt file have the info of evolutionary branches and such? I am no code pro, but if you can add a "ifLegendary" property (if it doesn't have one already) to this file and do some script code magic, you can simply build a list of all accessible pokemon (the ones with ifLegendary=false), let player choose one they want and then just look at the first in the evolutionary branch of that pokemon.

    Sure you could do that, but even implemnting this extra line requieres quite some coding. Question is if it's worth it.
    About the evolution branch: from a coding point of view it's not that easy to let the programm know to look for the first line of evolution. What you would need to do is to let the programm check if your choice is within an evolution line of a Pokemon and if it is make the first evolution the starter. Unlike us humans a programm can't simply know wether the choice is in an evolution branch. The other way around would be easier as you can let the programm check if it has an evolution and if so take that and check for another evolution and so on. But since there is no line of code that lists all pre-evolutions it won't work that way.
    Technically you could also add a line which lists the first evolution, but it still requieres that you add this line for every mon and then change the code so that that line gets recognized and then make sure that you can access that information. No matter which way you do it, there is a lot of coding or line changing involved. So yeah sure it is possible and yeah it is ambitious but the question is if you really want to do all this work for just the starter selection.
     
    Sure you could do that, but even implemnting this extra line requieres quite some coding. Question is if it's worth it.

    From my point of view, usually, it is always worth coding (heh. Usually always).
    And if you don't want to get hands dirty with external files and their data format, especially those really important as pokemon.txt, you can always make a list entry in Project with IDs (or whatever unique is to the pokemon data entries) of forbidden pokemon (since this will take less effort to write them all down) in RMXP project itself and just check it every time you have a need of showing all non-legendary pokemon. Make it a global variable and such.

    Technically you could also add a line which lists the first evolution, but it still requieres that you add this line for every mon and then change the code so that that line gets recognized and then make sure that you can access that information. No matter which way you do it, there is a lot of coding or line changing involved. So yeah sure it is possible and yeah it is ambitious but the question is if you really want to do all this work for just the starter selection.

    Well, adding line with first evolution isn't a hard task to do, after all, you can write another program to do this for you, now can't you?
     
    From my point of view, usually, it is always worth coding (heh. Usually always).
    And if you don't want to get hands dirty with external files and their data format, especially those really important as pokemon.txt, you can always make a list entry in Project with IDs (or whatever unique is to the pokemon data entries) of forbidden pokemon (since this will take less effort to write them all down) in RMXP project itself and just check it every time you have a need of showing all non-legendary pokemon. Make it a global variable and such.

    I see how this could work. Basically you would save all non-legendaries in an array and you could even have the programm do it for you right at the beginning of the game. This would make it easier to actually get the list of all non-legendary Pokemon and is reusable, like you said.

    Well, adding line with first evolution isn't a hard task to do, after all, you can write another program to do this for you, now can't you?
    It's not hard no, it's just tedious. Sure you could write a programm to do it for you, but you still need to teach it to what you want it to do and you would need to tell what to insert for each Pokemon. It doesn't know it by itself. Then you would still be better off copying and pasting.

    The actuall problem with this whole task is that there is no rule or algorithm that you could use to make the choice so much automated that you don't need to code every outcome. At least I can't think of any way to do this. Even when you add extra lines, you still define every single oucome, just in a different place/way.
     
    You could go the hard-coding route with a script function that takes a species and returns its basic evolution using a case statement.
     
    Should be pretty easy to generate the list of Pok?mon that do not evolve from anything, in pseudo-code:

    Code:
    evolutions = []
    for pokemon in species:
      for evolution in pokemon.evolutions:
        evolutions.append(evolution.species_id)
    
    unevolved = []
    for pokemon in species:
      if pokemon.species_id not in evolutions:
        unevolved.append(pokemon)
    
    return unevolved
     
    Back
    Top