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

Multiple Forms: Confuzzled

  • 8
    Posts
    11
    Years
    • Seen May 1, 2016
    Hello, I'm trying to create a multiple form for Blastoise, the sprites change fine... But anything else doesn't, the Ability doesn't even show up on the summary screen and after studying the Essentials wiki page and scouring this forum I decided to ask for help. I am by no means a scripter and ANY help will be greatly appreciated.

    Here is my code:

    Code:
    MultipleForms.register(:BLASTOISE,{
    "type2"=>proc{|pokemon|
       next if pokemon.form==0     
       next getID(PBTypes,:Poison) 
    },
    "ability"=>proc{|pokemon|
       next if pokemon.form==0              
       next getID(PBAbilities,:DRIZZLE) 
    },
    "onSetForm"=>proc{|pokemon,form|
       pbSeenForm(pokemon)
    }
    })
     
    I can help you , here is mega form for Blastoise

    Code:
    ##BLASTOISE##
    MultipleForms.register(:BLASTOISE,{
    "getMegaForm"=>proc{|pokemon|
       next 1 if isConst?(pokemon.item,PBItems,:MEGASTONE)
       next
    },
    "getUnmegaForm"=>proc{|pokemon|
       next 0
    },
    "getMegaName"=>proc{|pokemon|
       next _INTL("Mega Blastoise") if pokemon.form==1
       next
    },
    "getBaseStats"=>proc{|pokemon|
       next [79,103,120,78,135,115] if pokemon.form==1
       next
    },
    "ability"=>proc{|pokemon|
       next getID(PBAbilities,:MEGADISPARADOR) if pokemon.form==1
       next
    },
    "weight"=>proc{|pokemon|
       next 1011 if pokemon.form==1
       next
    },
    "onSetForm"=>proc{|pokemon,form|
       pbSeenForm(pokemon)
    }
    })

    Here is a example of a Form change with Shaymin
    Code:
    MultipleForms.register(:SHAYMIN,{
    "type2"=>proc{|pokemon|
       next if pokemon.form==0     # Land Forme
       next getID(PBTypes,:FLYING) # Sky Forme
    },
    "ability"=>proc{|pokemon|
       next if pokemon.form==0              # Land Forme
       next getID(PBAbilities,:SERENEGRACE) # Sky Forme
    },
    "weight"=>proc{|pokemon|
       next if pokemon.form==0 # Land Forme
       next 52                 # Sky Forme
    },
    "getBaseStats"=>proc{|pokemon|
       next if pokemon.form==0      # Land Forme
       next [100,103,75,127,120,75] # Sky Forme
    },
    "evYield"=>proc{|pokemon|
       next if pokemon.form==0 # Land Forme
       next [0,0,0,3,0,0]      # Sky Forme
    },
    "getForm"=>proc{|pokemon|
       next 0 if PBDayNight.isNight?(pbGetTimeNow) ||
                 pokemon.hp<=0 || pokemon.status==PBStatuses::FROZEN
       next nil
    },
    "getMoveList"=>proc{|pokemon|
       next if pokemon.form==0
       movelist=[]
       case pokemon.form
         when 1 ; movelist=[[1,:GROWTH],[10,:MAGICALLEAF],[19,:LEECHSEED],
                            [28,:QUICKATTACK],[37,:SWEETSCENT],[46,:NATURALGIFT],
                            [55,:WORRYSEED],[64,:AIRSLASH],[73,:ENERGYBALL],
                            [82,:SWEETKISS],[91,:LEAFSTORM],[100,:SEEDFLARE]]
       end
       for i in movelist
         i[1]=getConst(PBMoves,i[1])
       end
       next movelist
    },
    "onSetForm"=>proc{|pokemon,form|
       pbSeenForm(pokemon)
    }
    })
     
    I'm really lost, i recognised the
    Code:
    (PBTypes,:Poison) Should be (PBTypes,:POISON)

    but apart from that I don't understand the way Shaymin's code is testing for from =0
    and Blastoises is testing for form 1
     
    Form 0 = Base
    Form 1 = Next Form

    Form 0 = Blastoise
    Form 1 = Mega-Blastoise
     
    So getting to work would mean doing?

    Code:
    MultipleForms.register(:BLASTOISE,{
    "type2"=>proc{|pokemon|   
       next getID(PBTypes,:POISON) if pokemon.form==1
       next
    },
    "ability"=>proc{|pokemon|          
       next getID(PBAbilities,:DRIZZLE) if pokemon.form==1
       next
    },
    "onSetForm"=>proc{|pokemon,form|
       pbSeenForm(pokemon)
    }
    })
     
    This is a MegaForm with the ability "Drizzle" and "Poison" typing
    Code:
    ##BLASTOISE##
    MultipleForms.register(:BLASTOISE,{
    "getMegaForm"=>proc{|pokemon|
       next 1 if isConst?(pokemon.item,PBItems,:MEGASTONE)
       next
    },
    "getUnmegaForm"=>proc{|pokemon|
       next 0
    },
    "getMegaName"=>proc{|pokemon|
       next _INTL("Poison Blastoise") if pokemon.form==1
       next
    },
    "getBaseStats"=>proc{|pokemon|
       next [79,103,120,78,135,115] if pokemon.form==1
       next
    },
    "ability"=>proc{|pokemon|
       next getID(PBAbilities,:DRIZZLE) if pokemon.form==1
       next
    },
    "weight"=>proc{|pokemon|
       next 1011 if pokemon.form==1
       next
    },
    "onSetForm"=>proc{|pokemon,form|
       pbSeenForm(pokemon)
    }
    })

    Non-Mega Blastoise , Day-Blastoise Form
    This is a "Day" Form meaning it changes to this form at Day time , but at "Night" changes back
    Code:
    MultipleForms.register(:BLASTOISE,{
    "type2"=>proc{|pokemon|
       next if pokemon.form==0     # Normal Forme
       next getID(PBTypes,:POISON) # Poison Forme
    },
    "ability"=>proc{|pokemon|
       next if pokemon.form==0              # Normal Forme
       next getID(PBAbilities,:DRIZZLE) # Poison Forme
    },
    "weight"=>proc{|pokemon|
       next if pokemon.form==0 # Normal Forme
       next 52                 # Poison Forme
    },
    "getBaseStats"=>proc{|pokemon|
       next if pokemon.form==0      # Normal Forme
       next [100,103,75,127,120,75] # Poison Forme
    },
    "evYield"=>proc{|pokemon|
       next if pokemon.form==0 #  Normal Forme
       next [0,0,0,3,0,0]      # Poison Forme
    },
    "getForm"=>proc{|pokemon|
       next 0 if PBDayNight.isNight?(pbGetTimeNow) ||
                 pokemon.hp<=0 || pokemon.status==PBStatuses::FROZEN  #This indicates that it returns to normal at these given events
       next nil
    },
    "getMoveList"=>proc{|pokemon|
       next if pokemon.form==0
       movelist=[]
       case pokemon.form
         when 1 ; movelist=[[1,:GROWTH],[10,:MAGICALLEAF],[19,:LEECHSEED],
                            [28,:QUICKATTACK],[37,:SWEETSCENT],[46,:NATURALGIFT],
                            [55,:WORRYSEED],[64,:AIRSLASH],[73,:ENERGYBALL],
                            [82,:SWEETKISS],[91,:LEAFSTORM],[100,:SEEDFLARE]]
       end
       for i in movelist
         i[1]=getConst(PBMoves,i[1])
       end
       next movelist
    },
    "onSetForm"=>proc{|pokemon,form|
       pbSeenForm(pokemon)
    }
    })
     
    Last edited:
    Thank you so much for your help, I've took what you said and now I can change the sprite and ability of the mega evolution. Now I just need to figure out how to get it where you don't need a ring or stone to change it's form
     
    Thank you so much for your help, I've took what you said and now I can change the sprite and ability of the mega evolution. Now I just need to figure out how to get it where you don't need a ring or stone to change it's form

    You could use the shaymin form and change this line

    Code:
    "getForm"=>proc{|pokemon|
       next 0 if PBDayNight.isNight?(pbGetTimeNow) ||
                 pokemon.hp<=0 || pokemon.status==PBStatuses::FROZEN  #This indicates that it returns to normal at these given events
       next nil
    }
     
    Back
    Top