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

Functional Alola Forms Essentials v16

TiagoArraes

Paciência acima de tudo!
4
Posts
7
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:

    rigbycwts

    Hmm, hmm.
    98
    Posts
    11
    Years
    • Seen Feb 22, 2019
    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?
     

    TiagoArraes

    Paciência acima de tudo!
    4
    Posts
    7
    Years
    • Seen Jan 4, 2017
    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.
     

    rigbycwts

    Hmm, hmm.
    98
    Posts
    11
    Years
    • Seen Feb 22, 2019
    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
     
    5
    Posts
    7
    Years
    • Seen Feb 6, 2017
    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
     
    824
    Posts
    8
    Years
  • 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.
     

    TiagoArraes

    Paciência acima de tudo!
    4
    Posts
    7
    Years
    • Seen Jan 4, 2017
    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.
     

    TiagoArraes

    Paciência acima de tudo!
    4
    Posts
    7
    Years
    • Seen Jan 4, 2017
    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.
     
    824
    Posts
    8
    Years
  • 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