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

Different way to change form

148
Posts
11
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?
     
    1,405
    Posts
    11
    Years
  • 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.
     
    148
    Posts
    11
    Years
  • 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?
     
    1,405
    Posts
    11
    Years
  • 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
     
    148
    Posts
    11
    Years
  • 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
    }
    })
     
    1,405
    Posts
    11
    Years
  • 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.
     
    1,224
    Posts
    10
    Years
  • 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.
     
    1,405
    Posts
    11
    Years
  • 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:
    148
    Posts
    11
    Years
  • nvm, it gives this error

    Spoiler:

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

    Spoiler:
     
    1,224
    Posts
    10
    Years
  • 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
    },
     
    148
    Posts
    11
    Years
  • 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.
     
    1,405
    Posts
    11
    Years
  • 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
     
    32
    Posts
    9
    Years
    • Seen Aug 16, 2016
    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...)
     
    1,224
    Posts
    10
    Years
  • 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
     
    32
    Posts
    9
    Years
    • Seen Aug 16, 2016
    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.
     

    Maruno

    Lead Dev of Pokémon Essentials
    5,286
    Posts
    16
    Years
    • Seen yesterday
    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.
     
    32
    Posts
    9
    Years
    • Seen Aug 16, 2016
    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!
     
    32
    Posts
    9
    Years
    • Seen Aug 16, 2016
    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?
     
    1,405
    Posts
    11
    Years
  • 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.
     
    32
    Posts
    9
    Years
    • Seen Aug 16, 2016
    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