• 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.
  • Ever thought it'd be cool to have your art, writing, or challenge runs featured on PokéCommunity? Click here for info - we'd love to spotlight your work!
  • Our weekly protagonist poll is now up! Vote for your favorite Trading Card Game 2 protagonist in the poll by clicking here.
  • 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.

Getting a list of all Pokemon of a particular type

Zeak6464

Zeak #3205 - Discord
  • 1,101
    Posts
    12
    Years
    This groups all the pokemon into types.
    The Script is more like a Def, it will choose a pokemon based on it's tying.

    -Credit
    Stochastic for writing the Fire version. I just copied it repeatedly and changed a few words.

    Code:
    #Fire 
    def allFireTypes
      dexdata=pbOpenDexData
      ret = []
      for i in 1...649
        pbDexDataOffset(dexdata, i, 8)
        type1 = dexdata.fgetb
        pbDexDataOffset(dexdata, i, 9)
        type2 = dexdata.fgetb
        if (isConst?(type1, PBTypes, :FIRE) || isConst?(type2, PBTypes, :FIRE))
          ret.push(getConstantName(PBSpecies, i))
        end
      end
      return ret
    end
    
    #Water
    def allWaterTypes
      dexdata=pbOpenDexData
      ret = []
      for i in 1...649
        pbDexDataOffset(dexdata, i, 8)
        type1 = dexdata.fgetb
        pbDexDataOffset(dexdata, i, 9)
        type2 = dexdata.fgetb
        if (isConst?(type1, PBTypes, :WATER) || isConst?(type2, PBTypes, :WATER))
          ret.push(getConstantName(PBSpecies, i))
        end
      end
      return ret
    end
    
    #Normal
    def allNormalTypes
      dexdata=pbOpenDexData
      ret = []
      for i in 1...649
        pbDexDataOffset(dexdata, i, 8)
        type1 = dexdata.fgetb
        pbDexDataOffset(dexdata, i, 9)
        type2 = dexdata.fgetb
        if (isConst?(type1, PBTypes, :NORMAL) || isConst?(type2, PBTypes, :NORMAL))
          ret.push(getConstantName(PBSpecies, i))
        end
      end
      return ret
    end
    
    #Fighting
    def allFightingTypes
      dexdata=pbOpenDexData
      ret = []
      for i in 1...649
        pbDexDataOffset(dexdata, i, 8)
        type1 = dexdata.fgetb
        pbDexDataOffset(dexdata, i, 9)
        type2 = dexdata.fgetb
        if (isConst?(type1, PBTypes, :FIGHTING) || isConst?(type2, PBTypes, :FIGHTING))
          ret.push(getConstantName(PBSpecies, i))
        end
      end
      return ret
    end
    
    #Flying
    def allFlyingTypes
      dexdata=pbOpenDexData
      ret = []
      for i in 1...649
        pbDexDataOffset(dexdata, i, 8)
        type1 = dexdata.fgetb
        pbDexDataOffset(dexdata, i, 9)
        type2 = dexdata.fgetb
        if (isConst?(type1, PBTypes, :FLYING) || isConst?(type2, PBTypes, :FLYING))
          ret.push(getConstantName(PBSpecies, i))
        end
      end
      return ret
    end
    
    #Poison
    def allPoisonTypes
      dexdata=pbOpenDexData
      ret = []
      for i in 1...649
        pbDexDataOffset(dexdata, i, 8)
        type1 = dexdata.fgetb
        pbDexDataOffset(dexdata, i, 9)
        type2 = dexdata.fgetb
        if (isConst?(type1, PBTypes, :POISON) || isConst?(type2, PBTypes, :POISON))
          ret.push(getConstantName(PBSpecies, i))
        end
      end
      return ret
    end
    
    #Ground
    def allGroundTypes
      dexdata=pbOpenDexData
      ret = []
      for i in 1...649
        pbDexDataOffset(dexdata, i, 8)
        type1 = dexdata.fgetb
        pbDexDataOffset(dexdata, i, 9)
        type2 = dexdata.fgetb
        if (isConst?(type1, PBTypes, :GROUND) || isConst?(type2, PBTypes, :GROUND))
          ret.push(getConstantName(PBSpecies, i))
        end
      end
      return ret
    end
    
    #Rock
    def allRockTypes
      dexdata=pbOpenDexData
      ret = []
      for i in 1...649
        pbDexDataOffset(dexdata, i, 8)
        type1 = dexdata.fgetb
        pbDexDataOffset(dexdata, i, 9)
        type2 = dexdata.fgetb
        if (isConst?(type1, PBTypes, :ROCK) || isConst?(type2, PBTypes, :ROCK))
          ret.push(getConstantName(PBSpecies, i))
        end
      end
      return ret
    end
    
    #Bug
    def allBugTypes
      dexdata=pbOpenDexData
      ret = []
      for i in 1...649
        pbDexDataOffset(dexdata, i, 8)
        type1 = dexdata.fgetb
        pbDexDataOffset(dexdata, i, 9)
        type2 = dexdata.fgetb
        if (isConst?(type1, PBTypes, :BUG) || isConst?(type2, PBTypes, :BUG))
          ret.push(getConstantName(PBSpecies, i))
        end
      end
      return ret
    end
    
    #Ghost
    def allGhostTypes
      dexdata=pbOpenDexData
      ret = []
      for i in 1...649
        pbDexDataOffset(dexdata, i, 8)
        type1 = dexdata.fgetb
        pbDexDataOffset(dexdata, i, 9)
        type2 = dexdata.fgetb
        if (isConst?(type1, PBTypes, :GHOST) || isConst?(type2, PBTypes, :GHOST))
          ret.push(getConstantName(PBSpecies, i))
        end
      end
      return ret
    end  
      
    #Steel
    def allSteelTypes
      dexdata=pbOpenDexData
      ret = []
      for i in 1...649
        pbDexDataOffset(dexdata, i, 8)
        type1 = dexdata.fgetb
        pbDexDataOffset(dexdata, i, 9)
        type2 = dexdata.fgetb
        if (isConst?(type1, PBTypes, :STEEL) || isConst?(type2, PBTypes, :STEEL))
          ret.push(getConstantName(PBSpecies, i))
        end
      end
      return ret
    end
    
    #???
    def allQMARKSTypes
      dexdata=pbOpenDexData
      ret = []
      for i in 1...649
        pbDexDataOffset(dexdata, i, 8)
        type1 = dexdata.fgetb
        pbDexDataOffset(dexdata, i, 9)
        type2 = dexdata.fgetb
        if (isConst?(type1, PBTypes, :QMARKS) || isConst?(type2, PBTypes, :QMARKS))
          ret.push(getConstantName(PBSpecies, i))
        end
      end
      return ret
    end
    
    
    #Grass
    def allGrassTypes
      dexdata=pbOpenDexData
      ret = []
      for i in 1...649
        pbDexDataOffset(dexdata, i, 8)
        type1 = dexdata.fgetb
        pbDexDataOffset(dexdata, i, 9)
        type2 = dexdata.fgetb
        if (isConst?(type1, PBTypes, :GRASS) || isConst?(type2, PBTypes, :GRASS))
          ret.push(getConstantName(PBSpecies, i))
        end
      end
      return ret
    end
    
    
    #Electric
    def allElectricTypes
      dexdata=pbOpenDexData
      ret = []
      for i in 1...649
        pbDexDataOffset(dexdata, i, 8)
        type1 = dexdata.fgetb
        pbDexDataOffset(dexdata, i, 9)
        type2 = dexdata.fgetb
        if (isConst?(type1, PBTypes, :ELECTRIC) || isConst?(type2, PBTypes, :ELECTRIC))
          ret.push(getConstantName(PBSpecies, i))
        end
      end
      return ret
    end
    
    
    #Psychic
    def allPsychicTypes
      dexdata=pbOpenDexData
      ret = []
      for i in 1...649
        pbDexDataOffset(dexdata, i, 8)
        type1 = dexdata.fgetb
        pbDexDataOffset(dexdata, i, 9)
        type2 = dexdata.fgetb
        if (isConst?(type1, PBTypes, :PSYCHIC) || isConst?(type2, PBTypes, :PHYCHIC))
          ret.push(getConstantName(PBSpecies, i))
        end
      end
      return ret
    end
    
    
    #Ice
    def allIceTypes
      dexdata=pbOpenDexData
      ret = []
      for i in 1...649
        pbDexDataOffset(dexdata, i, 8)
        type1 = dexdata.fgetb
        pbDexDataOffset(dexdata, i, 9)
        type2 = dexdata.fgetb
        if (isConst?(type1, PBTypes, :ICE) || isConst?(type2, PBTypes, :ICE))
          ret.push(getConstantName(PBSpecies, i))
        end
      end
      return ret
    end
    
    
    #Dragon
    def allDragonTypes
      dexdata=pbOpenDexData
      ret = []
      for i in 1...649
        pbDexDataOffset(dexdata, i, 8)
        type1 = dexdata.fgetb
        pbDexDataOffset(dexdata, i, 9)
        type2 = dexdata.fgetb
        if (isConst?(type1, PBTypes, :DRAGON) || isConst?(type2, PBTypes, :DRAGON))
          ret.push(getConstantName(PBSpecies, i))
        end
      end
      return ret
    end
    
    
    #Dark
    def allDarkTypes
      dexdata=pbOpenDexData
      ret = []
      for i in 1...649
        pbDexDataOffset(dexdata, i, 8)
        type1 = dexdata.fgetb
        pbDexDataOffset(dexdata, i, 9)
        type2 = dexdata.fgetb
        if (isConst?(type1, PBTypes, :DARK) || isConst?(type2, PBTypes, :DARK))
          ret.push(getConstantName(PBSpecies, i))
        end
      end
      return ret
    end
    
    
    #Shadow
    def allShadowTypes
      dexdata=pbOpenDexData
      ret = []
      for i in 1...649
        pbDexDataOffset(dexdata, i, 8)
        type1 = dexdata.fgetb
        pbDexDataOffset(dexdata, i, 9)
        type2 = dexdata.fgetb
        if (isConst?(type1, PBTypes, :SHADOW) || isConst?(type2, PBTypes, :SHADOW))
          ret.push(getConstantName(PBSpecies, i))
        end
      end
      return ret
    end
    
    
    #Fairy
    def allFairyTypes
      dexdata=pbOpenDexData
      ret = []
      for i in 1...649
        pbDexDataOffset(dexdata, i, 8)
        type1 = dexdata.fgetb
        pbDexDataOffset(dexdata, i, 9)
        type2 = dexdata.fgetb
        if (isConst?(type1, PBTypes, :FAIRY) || isConst?(type2, PBTypes, :FAIRY))
          ret.push(getConstantName(PBSpecies, i))
        end
      end
      return ret
    end
     
    Last edited by a moderator:
    Looks useful for tournaments or major similar events. Can it be used in a Conditional branch too? Does it return TRUE or FALSE?
     
    Last edited:
    But, theoretically, you could use allFireTypes.include?("Charizard") to get a Boolean. Because this seems to output an array of names, not species.

    Oh i get it, "ret" is the array and every species gets pushed every time that we add 1 to i (649 times).
    This was a test:
    [PokeCommunity.com] Getting a list of all Pokemon of a particular type

    The event will say "no" if you leave "Charizard" in the script call and "yes" if you use "CHARIZARD" (maybe it's because the internal name is in all caps).

    Works :)
     
    Last edited:
    Back
    Top