• 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?".
  • Staff applications for our PokéCommunity Daily and Social Media team are now open! Interested in joining staff? Then click here for more info!
  • 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.

New Evolution Method Help

  • 423
    Posts
    13
    Years
    • Seen Aug 31, 2023
    hiya is it possible to have an evolution method that depends on a different pokémon being in the party but after the evolution that pokémon is removed? eg slowpoke needs a shelder but when evolves into slowbro the shelder is removed

    if its possible how would you go about coding the evo type
     
    This shouldn't be that hard to implement... Just look at the current code that allows a Pokemon to evolve by level up, copy that, and add an "if" statement checking whether a specific Pokemon is in your party.
     
    i think ive done it in a previous version that checks if a species is in the party but cant seam to get it to remove the required pokémon after the evolution
     
    It's a mixture of Mantyke's evolution (number 21) and a held item-based evolution (numbers 6/18/19).

    In def pbMiniCheckEvolution, do a copy of method 21. In def pbEvolution, look for where Shedinja and the held item-based evolutions are mentioned, and add something similar which will look for and delete the first Shellder in the party (if your new method is used, obviously).

    This will restrict your new evolution method to just one checked-for species (i.e. Shellder). You couldn't use the same method for both Slowpoke and Beldum, for example, because they would each need to delete a different Pokémon species. You could certainly add more code to allow for a one-method-fits-all, but it's easier to just make another evolution method for Beldum instead. Assuming you're using this method for more than one species, of course.



    It strikes me that this method is extremely unfair, though. The player loses a Pokémon without warning, and without indication of which Pokémon is being deleted. There might also be an issue of the deleted Pokémon being your only remaining unfainted Pokémon, but you probably don't have to worry about that.

    Personally, I would go for a different method and allow fishing with Slowpoke. If the hooked Pokémon is a Shellder (and optionally if Slowpoke is level 37 or higher), cause an evolution instead of a battle. It's more complicated to do, but much more fair.
     
    that sounds more acceptable to be honest but also sounds much harder may look into it
     
    It strikes me that this method is extremely unfair, though. The player loses a Pokémon without warning, and without indication of which Pokémon is being deleted. There might also be an issue of the deleted Pokémon being your only remaining unfainted Pokémon, but you probably don't have to worry about that.

    Personally, I would go for a different method and allow fishing with Slowpoke. If the hooked Pokémon is a Shellder (and optionally if Slowpoke is level 37 or higher), cause an evolution instead of a battle. It's more complicated to do, but much more fair.


    i wanted to trigger this evolution by letting shellder use CLAMP on slowpoke from the party screen (like softboiled or milk drink), so the user could expect that the shellder will be deleted afterwards. but whatever i try, i can't successfully call the evolution. that's what i got so far in the party script:

    EDIT: got it to work, see next post...
     
    Last edited:
    It's a mixture of Mantyke's evolution (number 21) and a held item-based evolution (numbers 6/18/19).

    In def pbMiniCheckEvolution, do a copy of method 21. In def pbEvolution, look for where Shedinja and the held item-based evolutions are mentioned, and add something similar which will look for and delete the first Shellder in the party (if your new method is used, obviously).

    This will restrict your new evolution method to just one checked-for species (i.e. Shellder). You couldn't use the same method for both Slowpoke and Beldum, for example, because they would each need to delete a different Pokémon species. You could certainly add more code to allow for a one-method-fits-all, but it's easier to just make another evolution method for Beldum instead. Assuming you're using this method for more than one species, of course.

    It strikes me that this method is extremely unfair, though. The player loses a Pokémon without warning, and without indication of which Pokémon is being deleted. There might also be an issue of the deleted Pokémon being your only remaining unfainted Pokémon, but you probably don't have to worry about that.

    Personally, I would go for a different method and allow fishing with Slowpoke. If the hooked Pokémon is a Shellder (and optionally if Slowpoke is level 37 or higher), cause an evolution instead of a battle. It's more complicated to do, but much more fair.

    Are there any pre-existent tutorials for this method, Maruno? It seems like a great way to tackle the issue and I've been wondering if there was any way to achieve it myself. I'll be the first to admit that a lot of this coding is too complex for me at the moment, but I'm slowly getting there =] So it would be helpful if there were some guidelines for it at least, rather than a complete solution provided by somebody =]
     
    EDIT: got it to work, see next post...

    first i created new evolution methods for slowpoke to evolve and changed them in the pokemon pbs:

    Evolutions=SLOWKING,Custom6,KINGSROCK,SLOWBRO,Custom7,

    Code:
    1,1,1,1,1,2,0 # Custom 1-7
    Code:
    # Add code for custom evolution type 5
        when PBEvolution::Custom6
          return poke if pokemon.smart==255 && pokemon.markings==8 && pokemon.item==level
        when PBEvolution::Custom7
          return poke if pokemon.smart==255 && pokemon.markings==8
    after that i made CLAMP selectable from the party screen:

    Code:
    # Check for hidden moves and add any that were found
            if !pkmn.egg? && (
               isConst?(move.id,PBMoves,:MILKDRINK) ||
               isConst?(move.id,PBMoves,:SOFTBOILED) ||
               isConst?(move.id,PBMoves,:CLAMP) ||
               HiddenMoveHandlers.hasHandler(move.id)
    and then set its effect below the milk drink script:

    Code:
    elsif isConst?(pkmn.moves[i].id,PBMoves,:CLAMP)
              @scene.pbSetHelpText(_INTL("Use on which Pokémon?"))
                oldpkmnid=pkmnid
                loop do
                  @scene.pbPreSelect(pkmnid)
                  [email protected](true)
                  break if pkmnid<0
                  newpkmn=@party[pkmnid]
                  oldlvl=newpkmn.level
                  oldsmart=newpkmn.smart
                  oldmark=newpkmn.markings
    if newpkmn.species==PBSpecies::SLOWPOKE
      if newpkmn.item==PBItems::KINGSROCK || newpkmn.level>=37
                    newpkmn.smart=255
                    newpkmn.markings=8
                    newspecies=pbCheckEvolution(newpkmn)
        if newspecies>0
          pbFadeOutInWithMusic(99999){
             evo=PokemonEvolutionScene.new
             evo.pbStartScreen(newpkmn,newspecies)
             evo.pbEvolution
             evo.pbEndScreen
          }
        end
        newpkmn.level=oldlvl
        newpkmn.smart=oldsmart
        newpkmn.markings=oldmark
        pbDisplay(_INTL("SHELLDER fused with SLOWPOKE."))
                @party[oldpkmnid]=nil
                @party.compact!
                pbHardRefresh
                    pbRefresh
                    break
      else
                    pbDisplay(_INTL("it won't work"))
      end
    else 
                    pbDisplay(_INTL("Why would you do that?"))
                  end
                end
        break
     
    Last edited:
    first i created new evolution methods for slowpoke to evolve and changed them in the pokemon pbs:

    Evolutions=SLOWKING,Custom6,KINGSROCK,SLOWBRO,Custom7,

    Code:
    1,1,1,1,1,2,0 # Custom 1-7
    Code:
    # Add code for custom evolution type 5
        when PBEvolution::Custom6
          return poke if pokemon.smart==255 && pokemon.markings==8 && pokemon.item==level
        when PBEvolution::Custom7
          return poke if pokemon.smart==255 && pokemon.markings==8
    after that i made CLAMP selectable from the party screen:

    Code:
    # Check for hidden moves and add any that were found
            if !pkmn.egg? && (
               isConst?(move.id,PBMoves,:MILKDRINK) ||
               isConst?(move.id,PBMoves,:SOFTBOILED) ||
               isConst?(move.id,PBMoves,:CLAMP) ||
               HiddenMoveHandlers.hasHandler(move.id)
    and then set its effect below the milk drink script:

    Code:
    elsif isConst?(pkmn.moves[i].id,PBMoves,:CLAMP)
              @scene.pbSetHelpText(_INTL("Use on which Pokémon?"))
                oldpkmnid=pkmnid
                loop do
                  @scene.pbPreSelect(pkmnid)
                  [email protected](true)
                  break if pkmnid<0
                  newpkmn=@party[pkmnid]
                  oldlvl=newpkmn.level
                  oldsmart=newpkmn.smart
                  oldmark=newpkmn.markings
    if newpkmn.species==PBSpecies::SLOWPOKE
      if newpkmn.item==PBItems::KINGSROCK || newpkmn.level>=37
                    newpkmn.smart=255
                    newpkmn.markings=8
                    newspecies=pbCheckEvolution(newpkmn)
        if newspecies>0
          pbFadeOutInWithMusic(99999){
             evo=PokemonEvolutionScene.new
             evo.pbStartScreen(newpkmn,newspecies)
             evo.pbEvolution
             evo.pbEndScreen
          }
        end
        newpkmn.level=oldlvl
        newpkmn.smart=oldsmart
        newpkmn.markings=oldmark
        pbDisplay(_INTL("SHELLDER fused with SLOWPOKE."))
                @party[oldpkmnid]=nil
                @party.compact!
                pbHardRefresh
                    pbRefresh
                    break
      else
                    pbDisplay(_INTL("it won't work"))
      end
    else 
                    pbDisplay(_INTL("Why would you do that?"))
                  end
                end
        break

    I have a question... This script doesn't check species for using clamp, so if other Pokémon uses Clamp on Slowpoke, they will still fuse. Maybe do a new move that only shellder can learn and when it evolves to Cloyster forgets it?
     
    Last edited:
    Back
    Top