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

Different way to change form

  • 148
    Posts
    12
    Years
    So the only ways to change form are by held item, weather, or a specific move? I was looking at some art of Golurk, and a lot of people draw it holding the Aegislash line as shields and swords. So i was thinking, can you make a form change happen just by having a certain Pokemon in your party? If Aegislash is there, Golurk can change form.

    Is adding a new way to change forms difficult? I'm still new to messing with scripts but I definitely want to try.


    And if i'm not mistaken, there's rental pokemon in essentials right? Could that be used so when Golurk changes, the pokemon used with it is taken out of your party until it changes back?
     
    Code:
    "getForm"=>proc{|pokemon|
       for i in 0...party.length
       if !party[i].hasSpecies?(:POKEMON)
         next 1
       end
       next 0
    }

    i was thinking something like this in the PokemonMultiupleForms script for the Pokemon you want to change.
     
    Code:
    "getForm"=>proc{|pokemon|
       for i in 0...party.length
       if !party[i].hasSpecies?(:POKEMON)
         next 1
       end
       next 0
    }

    i was thinking something like this in the PokemonMultiupleForms script for the Pokemon you want to change.

    Thanks for that. I'm trying to set up the new form, thought I had it right but it says i have a syntax error.

    Code:
    MultipleForms.register(:GOLURK,{
    "getForm"=>proc{|pokemon|
       for i in 0...party.length
       if !party[i].hasSpecies?(:AEGISLASH)
         next 1
       end
       next 0
    },	#GETTING SYNTAX ERROR HERE
    "getBaseStats"=>proc{|pokemon|
       next if pokemon.form==0
       case pokemon.form
         when 1; next [90,125,90,90,90,55]
       end
    },
    "getMoveList"=>proc{|pokemon|
       next if pokemon.form==0
       movelist=[]
       case pokemon.form
         when 1 ; movelist=[[1,:LEER],[1,:WRAP],[9,:NIGHTSHADE],[17,:TELEPORT],
                            [25,:TAUNT],[33,:PURSUIT],[41,:PSYCHIC],[49,:SUPERPOWER],
                            [57,:PSYCHOSHIFT],[65,:ZENHEADBUTT],[73,:COSMICPOWER],
                            [81,:ZAPCANNON],[89,:PSYCHOBOOST],[97,:HYPERBEAM]]
       end
       for i in movelist
         i[1]=getConst(PBMoves,i[1])
       end
       next movelist
    },
    })

    I'm looking at other set ups and I'm not seeing where I messed up. Don't Syntax errors pop up when you've forgotten a symbol or letter?
     
    Thanks for that. I'm trying to set up the new form, thought I had it right but it says i have a syntax error.

    Code:
    MultipleForms.register(:GOLURK,{
    "getForm"=>proc{|pokemon|
       for i in 0...party.length
       if !party[i].hasSpecies?(:AEGISLASH)
         next 1
       end
       next 0
    },	#GETTING SYNTAX ERROR HERE
    "getBaseStats"=>proc{|pokemon|
       next if pokemon.form==0
       case pokemon.form
         when 1; next [90,125,90,90,90,55]
       end
    },
    "getMoveList"=>proc{|pokemon|
       next if pokemon.form==0
       movelist=[]
       case pokemon.form
         when 1 ; movelist=[[1,:LEER],[1,:WRAP],[9,:NIGHTSHADE],[17,:TELEPORT],
                            [25,:TAUNT],[33,:PURSUIT],[41,:PSYCHIC],[49,:SUPERPOWER],
                            [57,:PSYCHOSHIFT],[65,:ZENHEADBUTT],[73,:COSMICPOWER],
                            [81,:ZAPCANNON],[89,:PSYCHOBOOST],[97,:HYPERBEAM]]
       end
       for i in movelist
         i[1]=getConst(PBMoves,i[1])
       end
       next movelist
    },
    })

    I'm looking at other set ups and I'm not seeing where I messed up. Don't Syntax errors pop up when you've forgotten a symbol or letter?

    remove the red part, the syntax error happens because there are too many } and it can't match them all.
    Code:
    "getMoveList"=>proc{|pokemon|
       next if pokemon.form==0
       movelist=[]
       case pokemon.form
         when 1 ; movelist=[[1,:LEER],[1,:WRAP],[9,:NIGHTSHADE],[17,:TELEPORT],
                            [25,:TAUNT],[33,:PURSUIT],[41,:PSYCHIC],[49,:SUPERPOWER],
                            [57,:PSYCHOSHIFT],[65,:ZENHEADBUTT],[73,:COSMICPOWER],
                            [81,:ZAPCANNON],[89,:PSYCHOBOOST],[97,:HYPERBEAM]]
       end
       for i in movelist
         i[1]=getConst(PBMoves,i[1])
       end
       next movelist
    }[COLOR="Red"],
    }[/COLOR])

    Only remove the , if you don't have another form script for the same pokemon
     
    remove the red part, the syntax error happens because there are too many } and it can't match them all.
    Only remove the , if you don't have another form script for the same pokemon

    Got rid of it and same error.
    They don't have to be set up in a certain order do they? Like base stats, then moves, then EV/IVs etc...
    Code:
    MultipleForms.register(:GOLURK,{
    "getForm"=>proc{|pokemon|
       for i in 0...party.length
       if !party[i].hasSpecies?(:AEGISLASH)
         next 1
       end
       next 0
    },	#GETTING SYNTAX ERROR HERE
    "getBaseStats"=>proc{|pokemon|
       next if pokemon.form==0
       case pokemon.form
         when 1; next [90,125,90,90,90,55]
       end
    },
    "getMoveList"=>proc{|pokemon|
       next if pokemon.form==0
       movelist=[]
       case pokemon.form
         when 1 ; movelist=[[1,:LEER],[1,:WRAP],[9,:NIGHTSHADE],[17,:TELEPORT],
                            [25,:TAUNT],[33,:PURSUIT],[41,:PSYCHIC],[49,:SUPERPOWER],
                            [57,:PSYCHOSHIFT],[65,:ZENHEADBUTT],[73,:COSMICPOWER],
                            [81,:ZAPCANNON],[89,:PSYCHOBOOST],[97,:HYPERBEAM]]
       end
       for i in movelist
         i[1]=getConst(PBMoves,i[1])
       end
       next movelist
    }
    })
     
    Got rid of it and same error.
    They don't have to be set up in a certain order do they? Like base stats, then moves, then EV/IVs etc...
    Code:
    MultipleForms.register(:GOLURK,{
    "getForm"=>proc{|pokemon|
       for i in 0...party.length
       if !party[i].hasSpecies?(:AEGISLASH)
         next 1
       end
       next 0
    },	#GETTING SYNTAX ERROR HERE
    "getBaseStats"=>proc{|pokemon|
       next if pokemon.form==0
       case pokemon.form
         when 1; next [90,125,90,90,90,55]
       end
    },
    "getMoveList"=>proc{|pokemon|
       next if pokemon.form==0
       movelist=[]
       case pokemon.form
         when 1 ; movelist=[[1,:LEER],[1,:WRAP],[9,:NIGHTSHADE],[17,:TELEPORT],
                            [25,:TAUNT],[33,:PURSUIT],[41,:PSYCHIC],[49,:SUPERPOWER],
                            [57,:PSYCHOSHIFT],[65,:ZENHEADBUTT],[73,:COSMICPOWER],
                            [81,:ZAPCANNON],[89,:PSYCHOBOOST],[97,:HYPERBEAM]]
       end
       for i in movelist
         i[1]=getConst(PBMoves,i[1])
       end
       next movelist
    }
    })

    I reordered them and still the same issue. Gonna try to find the issue.
     
    Code:
    MultipleForms.register(:GOLURK,{
    "getForm"=>proc{|pokemon|
       for i in 0...party.length
       if !party[i].hasSpecies?(:AEGISLASH)
         next 1
       end
       [COLOR="Red"]end[/COLOR]
       next 0
    },

    "for" starts a loop, you have to end them.
     
    Code:
    MultipleForms.register(:GOLURK,{
    "getForm"=>proc{|pokemon|
       for i in 0...party.length
       if !party[i].hasSpecies?(:AEGISLASH)
         next 1
       end
       [COLOR="Red"]end[/COLOR]
       next 0
    },

    "for" starts a loop, you have to end them.

    nvm, it gives this error

    Spoiler:
     
    Last edited:
    nvm, it gives this error

    Spoiler:

    I got one too. Happened right when I tried putting Golurk into my party.
    Exception: NameError

    Spoiler:
     
    the reason that's a problem is party isn't defined as anything. You'd have to use $Trainer.party

    However, .hasSpecies will also return an error since it's both not a method and is used incorrectly. Use this instead
    Code:
    MultipleForms.register(:GOLURK,{
    "getForm"=>proc{|pokemon|
       next 1 if pbHasSpecies?(:AEGISLASH)
       next 0
    },
     
    the reason that's a problem is party isn't defined as anything. You'd have to use $Trainer.party

    However, .hasSpecies will also return an error since it's both not a method and is used incorrectly. Use this instead
    Code:
    MultipleForms.register(:GOLURK,{
    "getForm"=>proc{|pokemon|
       next 1 if pbHasSpecies?(:AEGISLASH)
       next 0
    },

    Fantastic. Thanks so much guys.
     
    the reason that's a problem is party isn't defined as anything. You'd have to use $Trainer.party

    However, .hasSpecies will also return an error since it's both not a method and is used incorrectly. Use this instead
    Code:
    MultipleForms.register(:GOLURK,{
    "getForm"=>proc{|pokemon|
       next 1 if pbHasSpecies?(:AEGISLASH)
       next 0
    },


    wow didn't know it was that easy.

    i was trying to use how Mantyke's evolution works for this :P
     
    hey guys, i wondered if i can also change the form of a pokemon depending on its level, for example stantler's antlers would grow bigger or something like that:

    MultipleForms.register(:STANTLER,{
    "getForm"=>proc{|pokemon|
    next 1 if isConst?(pokemon.level=>5)
    next 0
    },

    do you think this would work? (my pc is broken at the moment so i can't test it by myself...)
     
    hey guys, i wondered if i can also change the form of a pokemon depending on its level, for example stantler's antlers would grow bigger or something like that:

    MultipleForms.register(:STANTLER,{
    "getForm"=>proc{|pokemon|
    next 1 if isConst?(pokemon.level=>5)
    next 0
    },

    do you think this would work? (my pc is broken at the moment so i can't test it by myself...)


    MultipleForms.register(:STANTLER,{
    "getForm"=>proc{|pokemon|
    next 1 if isConst?(pokemon.level>=5)
    next 0
    },

    Well, you mixed up the operator but that looks right to me
     
    ah right, one of my regularly repeated mistakes
    thanks for correcting it

    and if i wanted the change to be gradually (e.g. vulpix growing one tail after another) would it be like:

    MultipleForms.register(VULPIX,{
    "getForm"=>proc{|pokemon|
    next 2 if isConst?(pokemon.level<=10)
    next 1 if isConst?(pokemon.level<=5)
    next 0
    },

    and so on? form one would have 1 tail, form two 3 tails and form zero 6 tails.
     
    MultipleForms.register(VULPIX,{
    "getForm"=>proc{|pokemon|
    next 2 if isConst?(pokemon.level<=10)
    next 1 if isConst?(pokemon.level<=5)
    next 0
    },
    You have those two backwards. Imagine if Vulpix is level 4 (which is form 1). It checks the first line - is the level less than 10? Yes, therefore call it form 2. That's not what you want.

    Just swap the next 2 and next 1 lines around.
     
    ah yes of course!
    i was so eager to know if i can put the multiple form checks into the same code after another so that i hadn't thought it through completely.
    luckily you know what you're talking about and have resources left for logical thinking
    thanks a lot again!
     
    MultipleForms.register(VULPIX,{
    "getForm"=>proc{|pokemon|
    next 2 if isConst?(pokemon.level<=5
    next 1 if isConst?(pokemon.level<=10)
    next 0
    },
    so the highest form gets the least tails, that's it, right?
     
    MultipleForms.register(VULPIX,{
    "getForm"=>proc{|pokemon|
    next 2 if isConst?(pokemon.level<=5
    next 1 if isConst?(pokemon.level<=10)
    next 0
    },
    so the highest form gets the least tails, that's it, right?

    He means that you should put next 1 if isConst?(pokemon.level<=5) before the next 2 one, otherwise the game will see that next 2 fits the conditions of under level 10 and change it to that form without ever checking the other one.

    You can do it like that if you want though.
     
    but isn't this what i want in this case? vulpix lvl 4 would get the one-tailed form 2, vulpix lvl 6 would get form number 1 with three tails and vulpix lvl 11 the original form. why would i want it to check the next form, then it would give the lvl 4 vulpix form 1 of course, because it's below lvl 10 as well.

    so the lower level has to be checked firstly, or is there any advantage of putting condition 1 before 2? then form 1 would be the one-tailed, i don't see another difference yet.
     
    Back
    Top