• 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!
  • Serena, Kris, Dawn, Red - which Pokémon protagonist is your favorite? Let us know by voting in our grand final favorite protagonist 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.

FL.'s Random Egg Generator (Improved... slightly)

Black Eternity

Lord of Eternity
  • 54
    Posts
    12
    Years
    • Seen Jun 30, 2016
    Alright first thing first.... I did not create this script, I just altered it slightly for some different performances.

    Credits to FL.

    1. I changed the script to accept minimum/maximum values. This is so you can choose to limit the range of pokemon it can generate, EX: 1,151 will generate only Gen 1 pokemon.
    152,251 will generate Gen 2 pokemon.

    2. Made it easier to add exceptions/type limits. No longer have to type PBSpecies::POKENAME
    Just type :POKENAME. Same for PBTypes::TYPE, just :TYPE.

    The main reason I did this was because I needed fewer amount of pokemon to be generated, and needed more space in the event script.

    Once again, no need to credit me for the script.
    Just replace the old script with this new one, and call it like this:
    randomEggGenerator(min,max,[exceptions],[types],incense)

    Example for Generation 1 only, Fire type, and no incense:
    randomEggGenerator(1,151,[],[:FIRE])

    Example for Generation 2 only, No starter pokemon, incense set to true:
    randomEggGenerator(152,251,[:CHIKORITA,:CYNDAQUIL,:TOTODILE],[],true)

    To use it like the original script:
    randomEggGenerator(1,649,[exceptions],[types],false/true)

    Final time.... This is just a modified version of FL.'s script.

    Code:
    #===============================================================================
    # * Random Egg Generator - by FL (Credits will be apreciated)
    #===============================================================================
    #
    # This script is for Pokémon Essentials. It random generates an egg with all
    # possible pokémon that can hatch from an eggs (excluding some species like
    # Ditto, Mewtwo and Unown) with same probability. You can also filter by type.
    #
    #===============================================================================
    #
    # To this scripts works, put it above main and use in script command 
    # 'randomEggGenerator'. This only gives to player an egg if the player has
    # a empty party slot. You can also calls the method with an array with the
    # exceptions that cannot be random generated. Example:
    # 'randomEggGenerator(1,649,[:DRATINI,:LARVITAR],[])' won't generates
    # Dratini or Larvitar.
    #
    # You can also filter by types calling this method with a type array as
    # second parameter. Example: 
    # 'randomEggGenerator(1,649[],[:ROCK,:GROUND,:STEEL])' only
    # generates pokémon that have the Rock, Ground or Steel types. Please note 
    # that pokémon like Swablu doesn't count as a Dragon type.
    #
    # This script also doesn't generate eggs for pokémon than can incense breed
    # like Wynaut, but generate for pokémon than are incense babies like Wobbuffet. 
    # If you wish to enable the both cases in eggs, both counting as different
    # pokémon call the script using 'randomEggGenerator(1,649,[],[],true)'.
    # 
    #===============================================================================
    
    def randomEggGenerator(min,max,exceptions=[],type=[],enableIncenseEvos=false)
      for i in 0...type.length
        type[i]=getID(PBTypes,type[i]) if !type[i].is_a?(Integer)
      end
      for i in 0...exceptions.length
        exceptions[i]=getID(PBSpecies,exceptions[i]) if !exceptions[i].is_a?(Integer)
      end
      # Phione and Manaphy are always exceptions 
      exceptions+=[PBSpecies::PHIONE,PBSpecies::MANAPHY] 
      if $Trainer.party.length>=6
        Kernel.pbMessage(_INTL(
            "I'm sorry, but it would seem that you can't carry any more Pokemon."))
      else   
        species=0
        dexdata=pbOpenDexData
        while(species==0)
          species=min+rand(max-min)
          pbDexDataOffset(dexdata,species,8)
          type1=dexdata.fgetb
          type2=dexdata.fgetb
          # Redo the loop if the species can't be in an egg, is an exceptions or
          # is an evolution (only if enableIncenseEvos=false)
          species=0 if (!pbHasEgg?(species) || exceptions.include?(species) || 
              (!type.empty? && !type.include?(type1) && !type.include?(type2)) ||
              (!enableIncenseEvos && pbGetPreviousForm(species)!=species))
        end
        dexdata.close    
        pbGenerateEgg(species)
        Kernel.pbMessage(
            _INTL("{1} received the Egg!\\se[itemlevel]\1",$Trainer.name))
      end
    end
     
    This will be most useful. Thanks!
     
    I know this was written for v12, but I'm having a problem with it. I call it, and it runs, but then when i go to check my party I get this error

    Code:
    Exception: RuntimeError
    Message: filename is nil
    SpriteWindow:218:in `initialize'
    PokemonSprite:113:in `new'
    PokemonSprite:113:in `pokemon='
    PokemonSprite:99:in `initialize'
    PokemonParty:341:in `new'
    PokemonParty:341:in `initialize'
    PokemonParty:614:in `new'
    PokemonParty:614:in `pbStartScene'
    PokemonParty:612:in `each'
    PokemonParty:612:in `pbStartScene'

    Using this to call it: randomEggGenerator(1,721,[],[],false)
     
    Last edited:
    I know this was written for v12, but I'm having a problem with it. I call it, and it runs, but then when i go to check my party I get this error

    Code:
    Exception: RuntimeError
    Message: filename is nil
    SpriteWindow:218:in `initialize'
    PokemonSprite:113:in `new'
    PokemonSprite:113:in `pokemon='
    PokemonSprite:99:in `initialize'
    PokemonParty:341:in `new'
    PokemonParty:341:in `initialize'
    PokemonParty:614:in `new'
    PokemonParty:614:in `pbStartScene'
    PokemonParty:612:in `each'
    PokemonParty:612:in `pbStartScene'

    Using this to call it: randomEggGenerator(1,721,[],[],false)
    'pbGenerateEgg(1)' gives you Bulbasaur? If no, then there is something wrong with your Essentials.
     
    'pbGenerateEgg(1)' gives you Bulbasaur? If no, then there is something wrong with your Essentials.

    It wound up being me, thanks so much!

    For some reason, this line in def pbCheckPokemonIconFiles

    Code:
    bitmapFileName=sprintf("Graphics/Icons/iconEgg") if !pbResolveBitmap(bitmapFileName)

    got changed to

    Code:
    bitmapFileName=sprintf("Graphics/Pictures/iconEgg") if !pbResolveBitmap(bitmapFileName)

    though I have no idea why I would have changed that nor do I remember doing so lol.
     
    Back
    Top