• 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.

Getting a list of all Pokemon of a particular type

Zeak6464

Zeak #3205 - Discord
1,101
Posts
11
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:

    Telemetius

    Tele*
    267
    Posts
    9
    Years
  • 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:

    Telemetius

    Tele*
    267
    Posts
    9
    Years
  • 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:
    iAOKjbY.png

    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