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

[Scripting Question] Problem with a Script

TheShinyMew

Wild Challenger appeared!
  • 123
    Posts
    15
    Years
    Hey, I'm back! I have a new problem here.

    I am going to add a new variant of a Pokémon called a Mirage Pokémon, and when I modified the PSystem_Utilities within a mirage Pokemon sprite, It came up with this:
    Code:
    ---------------------------
    Pokémon ColdIce
    ---------------------------
    Script 'PSystem_Utilities' line 761: SystemStackError occurred.
    
    stack level too deep
    ---------------------------
    OK   
    ---------------------------

    Here's a code:
    Code:
    ################################################################################
    # Loads Pokémon/item/trainer graphics
    ################################################################################
    def pbLoadPokemonBitmap(pokemon, back=false)
      return pbLoadPokemonBitmapSpecies(pokemon,pokemon.species,back)
    end
    
    # Note: Returns an AnimatedBitmap, not a Bitmap
    def pbLoadPokemonBitmapSpecies(pokemon, species, back=false)
      ret=nil
      if pokemon.isEgg?
        bitmapFileName=sprintf("Graphics/Battlers/%segg",getConstantName(PBSpecies,species)) rescue nil
        if !pbResolveBitmap(bitmapFileName)
          bitmapFileName=sprintf("Graphics/Battlers/%03degg",species)
          if !pbResolveBitmap(bitmapFileName)
            bitmapFileName=sprintf("Graphics/Battlers/egg")
          end
        end
        bitmapFileName=pbResolveBitmap(bitmapFileName)
      else
        bitmapFileName=pbCheckPokemonBitmapFiles([species,back,
                                                  (pokemon.isFemale?),
                                                  pokemon.isShiny?,
                                                  pokemon.isDelta?,
                                                  pokemon.isFreeDelta?,
                                                  pokemon.isGolden?,
                                                  pokemon.isCrystal?,
                                                  pokemon.isMirage?,
                                                  (pokemon.form rescue 0),
                                                  (pokemon.isShadow? rescue false)])
        # Alter bitmap if supported
        alterBitmap=(MultipleForms.getFunction(species,"alterBitmap") rescue nil)
      end
      if bitmapFileName && alterBitmap
        animatedBitmap=AnimatedBitmap.new(bitmapFileName)
        copiedBitmap=animatedBitmap.copy
        animatedBitmap.dispose
        copiedBitmap.each {|bitmap|
           alterBitmap.call(pokemon,bitmap)
        }
        ret=copiedBitmap
      elsif bitmapFileName
        ret=AnimatedBitmap.new(bitmapFileName)
      end
      return ret
    end
    
    # Note: Returns an AnimatedBitmap, not a Bitmap
    def pbLoadSpeciesBitmap(species,female=false,form=0,shiny=false,delta=false,
                            delta2=false,golden=false,crystal=false,mirage=false,
                            shadow=false,back=false,egg=false)
      ret=nil
      if egg
        bitmapFileName=sprintf("Graphics/Battlers/%segg",getConstantName(PBSpecies,species)) rescue nil
        if !pbResolveBitmap(bitmapFileName)
          bitmapFileName=sprintf("Graphics/Battlers/%03degg",species)
          if !pbResolveBitmap(bitmapFileName)
            bitmapFileName=sprintf("Graphics/Battlers/egg")
          end
        end
        bitmapFileName=pbResolveBitmap(bitmapFileName)
      else
        bitmapFileName=pbCheckPokemonBitmapFiles([species,back,female,shiny,delta,delta2,golden,crystal,mirage,form,shadow])
      end
      if bitmapFileName
        ret=AnimatedBitmap.new(bitmapFileName)
      end
      return ret
    end
    
    def pbCheckPokemonBitmapFiles(params)
      species=params[0]
      back=params[1]
      factors=[]
      factors.push([5,params[5],false]) if params[5] && params[5]!=false     # shadow
      factors.push([2,params[2],false]) if params[2] && params[2]!=false     # gender
      factors.push([3,params[3],false]) if params[3] && params[3]!=false     # shiny
      factors.push([6,params[6],false]) if params[6] && params[6]!=false     # delta
      factors.push([7,params[7],false]) if params[7] && params[7]!=false     # delta2
      factors.push([8,params[8],false]) if params[8] && params[8]!=false     # golden
      factors.push([9,params[9],false]) if params[9] && params[9]!=false     # crystal
      factors.push([10,params[10],false]) if params[10] && params[10]!=false # mirage
      factors.push([4,params[4].to_s,""]) if params[4] && params[4].to_s!="" &&
                                                          params[4].to_s!="0" # form
      tshadow=false
      tgender=false
      tshiny=false
      tdelta=false
      tdelta2=false
      tgolden=false
      tcrystal=false
      tmirage=false
      tform=""
      for i in 0...2**factors.length
        for j in 0...factors.length
          case factors[j][0]
          when 2   # gender
            tgender=((i/(2**j))%2==0) ? factors[j][1] : factors[j][2]
          when 3   # shiny
            tshiny=((i/(2**j))%2==0) ? factors[j][1] : factors[j][2]
          when 4   # form
            tform=((i/(2**j))%2==0) ? factors[j][1] : factors[j][2]
          when 5   # shadow
            tshadow=((i/(2**j))%2==0) ? factors[j][1] : factors[j][2]
          when 6   # delta
            delta=((i/(2**j))%2==0) ? factors[j][1] : factors[j][2]
          when 7   # delta2
            delta2=((i/(2**j))%2==0) ? factors[j][1] : factors[j][2]
          when 8   # golden
            golden=((i/(2**j))%2==0) ? factors[j][1] : factors[j][2]
          when 9   # crystal
            crystal=((i/(2**j))%2==0) ? factors[j][1] : factors[j][2]
          when 10   # mirage
            mirage=((i/(2**j))%2==0) ? factors[j][1] : factors[j][2]
          end
        end
        bitmapFileName=sprintf("Graphics/Battlers/%s%s%s%s%s%s%s%s%s%s%s",
           getConstantName(PBSpecies,species),
           tgender ? "f" : "",
           tshiny ? "s" : "",
           tdelta ? "d" : "",
           tdelta2 ? "d2" : "",
           tgolden ? "g" : "",
           tcrystal ? "c" : "",
           tmirage ? "m" : "",
           back ? "b" : "",
           (tform!="" ? "_"+tform : ""),
           tshadow ? "_shadow" : "") rescue nil
        ret=pbResolveBitmap(bitmapFileName)
        return ret if ret
        bitmapFileName=sprintf("Graphics/Battlers/%03d%s%s%s%s%s%s%s%s%s%s",
           species,
           tgender ? "f" : "",
           tshiny ? "s" : "",
           tdelta ? "d" : "",
           tdelta2 ? "d2" : "",
           tgolden ? "g" : "",
           tcrystal ? "c" : "",
           tmirage ? "m" : "",
           back ? "b" : "",
           (tform!="" ? "_"+tform : ""),
           tshadow ? "_shadow" : "")
        ret=pbResolveBitmap(bitmapFileName)
        return ret if ret
      end
      return nil
    end
    
    def pbLoadPokemonIcon(pokemon)
      return AnimatedBitmap.new(pbPokemonIconFile(pokemon)).deanimate
    end
    
    def pbPokemonIconFile(pokemon)
      bitmapFileName=nil
      bitmapFileName=pbCheckPokemonIconFiles([pokemon.species,
                                              (pokemon.isFemale?),
                                              pokemon.isShiny?,
                                              pokemon.isDelta?,
                                              pokemon.isFreeDelta?,
                                              pokemon.isGolden?,
                                              pokemon.isCrystal?,
                                              pokemon.isMirage?,
                                              (pokemon.form rescue 0),
                                              (pokemon.isShadow? rescue false)],
                                              pokemon.isEgg?)
      return bitmapFileName
    end
    
    def pbCheckPokemonIconFiles(params,egg=false)
      species=params[0]
      if egg
        bitmapFileName=sprintf("Graphics/Icons/icon%segg",getConstantName(PBSpecies,species)) rescue nil
        if !pbResolveBitmap(bitmapFileName)
          bitmapFileName=sprintf("Graphics/Icons/icon%03degg",species) 
          if !pbResolveBitmap(bitmapFileName)
            bitmapFileName=sprintf("Graphics/Icons/iconEgg")
          end
        end
        return pbResolveBitmap(bitmapFileName)
      else
        factors=[]
        factors.push([4,params[4],false]) if params[4] && params[4]!=false     # shadow
        factors.push([1,params[1],false]) if params[1] && params[1]!=false     # gender
        factors.push([2,params[2],false]) if params[2] && params[2]!=false     # shiny
        factors.push([5,params[5],false]) if params[5] && params[5]!=false     # delta
        factors.push([6,params[6],false]) if params[6] && params[6]!=false     # delta2
        factors.push([7,params[7],false]) if params[7] && params[7]!=false     # golden
        factors.push([8,params[8],false]) if params[8] && params[8]!=false     # crystal
        factors.push([9,params[9],false]) if params[9] && params[9]!=false     # mirage
        factors.push([3,params[3].to_s,""]) if params[3] && params[3].to_s!="" &&
                                                            params[3].to_s!="0" # form
        tshadow=false
        tgender=false
        tshiny=false
        tdelta=false
        tdelta2=false
        tgolden=false
        tcrystal=false
        tmirage=false
        tform=""
        for i in 0...2**factors.length
          for j in 0...factors.length
            case factors[j][0]
            when 1   # gender
              tgender=((i/(2**j))%2==0) ? factors[j][1] : factors[j][2]
            when 2   # shiny
              tshiny=((i/(2**j))%2==0) ? factors[j][1] : factors[j][2]
            when 3   # form
              tform=((i/(2**j))%2==0) ? factors[j][1] : factors[j][2]
            when 4   # shadow
              tshadow=((i/(2**j))%2==0) ? factors[j][1] : factors[j][2]
            when 5   # delta
              tdelta=((i/(2**j))%2==0) ? factors[j][1] : factors[j][2]
            when 6   # delta2
              tdelta2=((i/(2**j))%2==0) ? factors[j][1] : factors[j][2]
            when 7   # golden
              tgolden=((i/(2**j))%2==0) ? factors[j][1] : factors[j][2]
            when 8   # crystal
              tcrystal=((i/(2**j))%2==0) ? factors[j][1] : factors[j][2]
            when 9   # mirage
              tmirage=((i/(2**j))%2==0) ? factors[j][1] : factors[j][2]
            end
          end
          bitmapFileName=sprintf("Graphics/Icons/icon%s%s%s%s%s%s%s%s%s%s",
             getConstantName(PBSpecies,species),
             tgender ? "f" : "",
             tshiny ? "s" : "",
             tdelta ? "d" : "",
             tdelta2 ? "d2" : "",
             tgolden ? "g" : "",
             tcrystal ? "c" : "",
             tmirage ? "m" : "",
             (tform!="" ? "_"+tform : ""),
             tshadow ? "_shadow" : "") rescue nil
          ret=pbResolveBitmap(bitmapFileName)
          return ret if ret
          bitmapFileName=sprintf("Graphics/Icons/icon%03d%s%s%s%s%s%s%s%s%s",
             species,
             tgender ? "f" : "",
             tshiny ? "s" : "",
             tdelta ? "d" : "",
             tdelta2 ? "d2" : "",
             tgolden ? "g" : "",
             tcrystal ? "c" : "",
             tmirage ? "m" : "",
             (tform!="" ? "_"+tform : ""),
             tshadow ? "_shadow" : "")
          ret=pbResolveBitmap(bitmapFileName)
          return ret if ret
        end
      end
      return nil
    end

    I think I permanently messed up. but is there a way to fix it?
     
    Last edited by a moderator:
    Never mind! I just figured out. The Mirage Pokemon thing goes to PokeBattle_Pokemon
     
    Back
    Top