• 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.
  • Ever thought it'd be cool to have your art, writing, or challenge runs featured on PokéCommunity? Click here for info - we'd love to spotlight your work!
  • Our weekly protagonist poll is now up! Vote for your favorite Trading Card Game 2 protagonist in the poll by clicking here.
  • 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.

Functional Alola Forms Essentials v16

TiagoArraes

Paciência acima de tudo!
  • 4
    Posts
    8
    Years
    • Seen Jan 4, 2017
    Hello, I'm Tiago Arraes, I'm brazilian student of technology.
    Obs: Sorry for my bad english, I speak some words...

    I developed a functional example script of the Alola Forms.

    --- How to Install ---

    First Step: Copy and paste in "PField_EncounterModifiers".

    - For problems with breaking code, set the thread to Printable Version.

    Code:
    ALOLA_MAPS = [6,9,15,35,47,49,57]
    
    Events.onWildPokemonCreate+=proc {|sender,e|
      pokemon=e[0]
      maps=ALOLA_MAPS
    if $game_map && maps.include?($game_map.map_id)
        pokemon.form=1
        pokemon.calcStats
        pokemon.resetMoves
    end
    }

    Second Step: And now copy and paste in "Pokemon_MultipleForms" after Hoopa.

    Code:
    ###################################################
    
    
    MultipleForms.register(:VULPIX,{
    
    "type1"=>proc{|pokemon|
       next getID(PBTypes,:ICE) if pokemon.form==1 # Alolan
       next if pokemon.form==0                                           # Normal
    },
    "type2"=>proc{|pokemon|
       next getID(PBTypes,:ICE) if pokemon.form==1 # Alolan
       next if pokemon.form==0                                           # Normal
    },
    "getAbilityList"=>proc{|pokemon|
       next [[getID(PBAbilities,:SNOWCLOAK),0],[getID(PBAbilities,:SNOWWARNING),1]] if pokemon.form==1 # Alolan
       next if pokemon.form==0 # Normal
    },
    "getBaseStats"=>proc{|pokemon|
       next if pokemon.form==0       # Normal
       next [38,41,40,50,65,65]   # Alolan
    },
    "getMoveList"=>proc{|pokemon|
       next if pokemon.form==0
       movelist=[]
       case pokemon.form
       when 1; movelist=[[1,:POWDERSNOW],[4,:TAILWHIP],[7,:ROAR],[10,:ICESHARD],
                         [12,:CONFUSERAY],[15,:ICYWIND],[18,:PAYBACK],[20,:MIST],
                         [23,:FEINTATTACK],[26,:HEX],[28,:AURORABEAM],[31,:EXTRASENSORY],
                         [34,:SAFEGUARD],[36,:ICEBEAM],[39,:IMPRISION],[42,:BLIZZARD],
                         [44,:GRUDGE],[47,:CAPTIVATE],[50,:SHEERCOLD]]
       end
       for i in movelist
         i[1]=getConst(PBMoves,i[1])
       end
       next movelist
    },
    "getMoveCompatibility"=>proc{|pokemon|
       next if pokemon.form==0
       movelist=[]
       case pokemon.form
       when 1; movelist=[# TMs
                         :ROAR,:TOXIC,:HAIL,:HIDDENPOWER,:FROSTBREATH,
                         :PROTECT,:ICEBEAM,:SAFEGUARD,:RAINDANCE,:BLIZZARD,
                         :RETURN,:FRUSTRATION,:DOUBLETEAM,:SLEEPTALK,:FACADE,
                         :REST,:ATTRACT,:CONFIDE,:ROUND,:PAYBACK,
                         :PSYCHUP,:SWAGGER,:SUBSTITUTE]
       end
       for i in 0...movelist.length
         movelist[i]=getConst(PBMoves,movelist[i])
       end
       next movelist
    }
    })

    After the second step, save the modifications and test.


    Please give credits for Tiago Arraes if you appreciate.
     
    Last edited:
    Nice, but what about the alternate evolution forms if the Pokemon is Alolan, just like on Alolan Vulpix which requires a different stone and Alolan Meowth that evolves via max friendship?
     
    Nice, but what about the alternate evolution forms if the Pokemon is Alolan, just like on Alolan Vulpix which requires a different stone and Alolan Meowth that evolves via max friendship?

    Thanks Bro!

    The Evolution is a serious problem haha!! In my project i switched the evolution method of Vulpix for level 30 for solve this problem.
     
    I forgot to mention this:
    The Events.onWildPokemonCreate might not be necessary since the MultipleForms script has the getFormOnCreation function. Also there might be a chance that some had already implemented alternate forms for their fangame, so it should not be necessary that the number assigned to Alolan Forms is 1.
    Take Pikachu for example. If someone implemented Cosplay Pikachu (a special female Pikachu introduced in ORAS) in their game, assuming its form is 1 and a condition is set that it cannot evolve if form == 1 and is female, then there will only be male Alolan Raichu when it evolves.
    If I recall correctly Pikachu has a lot of forms since ORAS: (Number is based on how Essentials numbers alternate forms)
    0 - The normal Pikachu
    1 - Cosplay Pikachu, if female and has no costume
    2-6 - Cosplay Pikachu, if female and has specific costumes on
    7-12 - The unreleased event Pikachu with Ash's hat, introduced in Sun and Moon
     
    Thank you very much colleague
    It really is a great contribution and insurance will be very helpful

    Regards, if I ever try, inform you of any inconvenience
     
    I forgot to mention this:
    The Events.onWildPokemonCreate might not be necessary since the MultipleForms script has the getFormOnCreation function. Also there might be a chance that some had already implemented alternate forms for their fangame, so it should not be necessary that the number assigned to Alolan Forms is 1.
    Take Pikachu for example. If someone implemented Cosplay Pikachu (a special female Pikachu introduced in ORAS) in their game, assuming its form is 1 and a condition is set that it cannot evolve if form == 1 and is female, then there will only be male Alolan Raichu when it evolves.
    If I recall correctly Pikachu has a lot of forms since ORAS: (Number is based on how Essentials numbers alternate forms)
    0 - The normal Pikachu
    1 - Cosplay Pikachu, if female and has no costume
    2-6 - Cosplay Pikachu, if female and has specific costumes on
    7-12 - The unreleased event Pikachu with Ash's hat, introduced in Sun and Moon

    The way I numbered them in my game is:
    0 - the normal Pikachu
    1 (if female) - Cosplay Pikachu without a costume
    2-6 (if female) - Cosplay Pikachu with a costume
    1-6 (if male) - PikASHu (this seems to be the name for the unreleased event, going by the name for the Z-Crystal that comes with it: "Pikashusium Z")
    10 - will evolve into Alolan Raichu.
     
    I forgot to mention this:
    The Events.onWildPokemonCreate might not be necessary since the MultipleForms script has the getFormOnCreation function. Also there might be a chance that some had already implemented alternate forms for their fangame, so it should not be necessary that the number assigned to Alolan Forms is 1.
    Take Pikachu for example. If someone implemented Cosplay Pikachu (a special female Pikachu introduced in ORAS) in their game, assuming its form is 1 and a condition is set that it cannot evolve if form == 1 and is female, then there will only be male Alolan Raichu when it evolves.
    If I recall correctly Pikachu has a lot of forms since ORAS: (Number is based on how Essentials numbers alternate forms)
    0 - The normal Pikachu
    1 - Cosplay Pikachu, if female and has no costume
    2-6 - Cosplay Pikachu, if female and has specific costumes on
    7-12 - The unreleased event Pikachu with Ash's hat, introduced in Sun and Moon

    I use the Events.onWildPokemonCreate because the method getFormOnCreation attributes the form for all pokes on a specific map, you see?

    Example: Rattata receive the form 1 in maps 20,33... if use getFormOnCreation and encounter a Rattata on this maps, the wild receive form 1 but my Rattata too. If use Events.onWildPokemonCreate only the wild Rattata will receive the form and by capturing it, it will retain the form and all other specifications.

    And the form attribution example in my post sets form 1 for certain maps, but you can create other same methods.

    Example:
    Code:
    ALOLA_MAPS2 = [78,84]
    
    Events.onWildPokemonCreate+=proc {|sender,e|
      pokemon=e[0]
      maps=ALOLA_MAPS2
    if $game_map && maps.include?($game_map.map_id)
        pokemon.form=10
        pokemon.calcStats
        pokemon.resetMoves
    end
    }

    you use this method for specific Pokémons, for example Pikachu.

    Sorry for my bad english and the confuse explanation.
     
    Thank you very much colleague
    It really is a great contribution and insurance will be very helpful

    Regards, if I ever try, inform you of any inconvenience

    Thanks! I Intend in the future update this post with more functional examples of Alola forms.
     
    I use the Events.onWildPokemonCreate because the method getFormOnCreation attributes the form for all pokes on a specific map, you see?

    Example: Rattata receive the form 1 in maps 20,33... if use getFormOnCreation and encounter a Rattata on this maps, the wild receive form 1 but my Rattata too. If use Events.onWildPokemonCreate only the wild Rattata will receive the form and by capturing it, it will retain the form and all other specifications.

    This is wrong. You're confusing the codes getForm and getFormOnCreation.
     
    Back
    Top