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

Questions Related to Mega Evolution - Restrictions

  • 21
    Posts
    11
    Years
    • Seen May 23, 2024
    Greetings, community!

    I've been researching the Mega Evolution Scripts and tutorials to insert this new type of Evolution into Pokémon Essentials. I do, however, have a few questions:

    As far I could learn, the Mega Evolution only depends of the user holding a certain item in the Game and the Pokémon holding another, so:

    - Is there a way to restrict this by level? I tried to search a way to only let the Pokémon holds the item after a certain level, but couldn't.

    - Can I make a condition in Mega Evolution? For example:
    Charizard Mega evolves using Item X and becomes Ultra Charizard
    against
    Unhappy Charizard tries to Mega Evolving holding the Item X and becomes Black Ultra Charizard​

    If anyone could help me, please, comment or send me a PM so we can get in touch ;)
     
    Yes, both of these are entirely possible.

    For the first, I would place a condition on the Mega evolution itself. For example, Mega Venasaur (Clean v16.2, Pokemon_MegaEvolution, line 63).
    Code:
    MultipleForms.register(:VENUSAUR,{
    "getMegaForm"=>proc{|pokemon|
       next 1 if isConst?(pokemon.item,PBItems,:VENUSAURITE)
       next
    },
    "getBaseStats"=>proc{|pokemon|
       next [80,100,123,80,122,120] if pokemon.form==1
       next
    },
    "getAbilityList"=>proc{|pokemon|
       next [[getID(PBAbilities,:THICKFAT),0]] if pokemon.form==1
       next
    },
    "height"=>proc{|pokemon|
       next 24 if pokemon.form==1
       next
    },
    "weight"=>proc{|pokemon|
       next 1555 if pokemon.form==1
       next
    }
    })

    I would add a condition on the form change here. With your example on level, let's say, It can only mega evolve if it's Level 40+ and has the stone.
    Code:
    MultipleForms.register(:VENUSAUR,{
    "getMegaForm"=>proc{|pokemon|
       next 1 if isConst?(pokemon.item,PBItems,:VENUSAURITE) and pokemon.level >= 40
       next
    },

    As for your other condition, you already have part of an example, a pokemon with two mega forms Charizard (line 83).
    Code:
    MultipleForms.register(:CHARIZARD,{
    "getMegaForm"=>proc{|pokemon|
       next 1 if isConst?(pokemon.item,PBItems,:CHARIZARDITEX)
       next 2 if isConst?(pokemon.item,PBItems,:CHARIZARDITEY)
       next
    },
    "getMegaName"=>proc{|pokemon|
       next _INTL("Mega Charizard X") if pokemon.form==1
       next _INTL("Mega Charizard Y") if pokemon.form==2
       next
    },
    "getBaseStats"=>proc{|pokemon|
       next [78,130,111,100,130,85] if pokemon.form==1
       next [78,104,78,100,159,115] if pokemon.form==2
       next
    },
    "type2"=>proc{|pokemon|
       next getID(PBTypes,:DRAGON) if pokemon.form==1
       next
    },
    "getAbilityList"=>proc{|pokemon|
       next [[getID(PBAbilities,:TOUGHCLAWS),0]] if pokemon.form==1
       next [[getID(PBAbilities,:DROUGHT),0]] if pokemon.form==2
       next
    },
    "weight"=>proc{|pokemon|
       next 1105 if pokemon.form==1
       next 1005 if pokemon.form==2
       next
    }
    })

    If you don't mind, I'll set up the form change condition for you, but you will have to do the specific data entry yourself (since I don't know it).

    Code:
    MultipleForms.register(:CHARIZARD,{
    "getMegaForm"=>proc{|pokemon|
       next 1 if isConst?(pokemon.item,PBItems,:CHARIZARDITEX)
       next 2 if isConst?(pokemon.item,PBItems,:CHARIZARDITEY)
       next 3 if isConst?(pokemon.item,PBItems,:ITEMX) and pokemon.happiness <= 40 #change this to your unhappiness threshold
       next 4 if isConst?(pokemon.item,PBItems,:ITEMX)
       next
    },
    "getMegaName"=>proc{|pokemon|
       next _INTL("Mega Charizard X") if pokemon.form==1
       next _INTL("Mega Charizard Y") if pokemon.form==2
       next _INTL("Black Ultra Charizard") if pokemon.form==3
       next _INTL("Ultra Charizard") if pokemon.form==4
       next
    },
    "getBaseStats"=>proc{|pokemon|
       next [78,130,111,100,130,85] if pokemon.form==1
       next [78,104,78,100,159,115] if pokemon.form==2 # add stats yourself
       next
    },
    "type2"=>proc{|pokemon|
       next getID(PBTypes,:DRAGON) if pokemon.form==1 #add type changes yourself
       next
    },
    "getAbilityList"=>proc{|pokemon|
       next [[getID(PBAbilities,:TOUGHCLAWS),0]] if pokemon.form==1
       next [[getID(PBAbilities,:DROUGHT),0]] if pokemon.form==2 #add ability changes yourself
       next
    },
    "weight"=>proc{|pokemon|
       next 1105 if pokemon.form==1
       next 1005 if pokemon.form==2 #add weight change yourself
       next
    }
    })

    Form 3 is Black ultra Charizard and form 4 is Ultra Charizard. It's necessary to do the happiness check before the default mega form or else the default would always activate first. But, I haven't tested this code, so use at your own risk.
     
    Spoiler:

    @Vendily, thank you for the answer! I'm currently travelling but I read carefully and will try to make it work and I get back to the platform! Thanks!
     
    Last edited by a moderator:
    Yes, both of these are entirely possible.

    For the first, I would place a condition on the Mega evolution itself. For example, Mega Venasaur (Clean v16.2, Pokemon_MegaEvolution, line 63).
    Code:
    MultipleForms.register(:VENUSAUR,{
    "getMegaForm"=>proc{|pokemon|
       next 1 if isConst?(pokemon.item,PBItems,:VENUSAURITE)
       next
    },
    "getBaseStats"=>proc{|pokemon|
       next [80,100,123,80,122,120] if pokemon.form==1
       next
    },
    "getAbilityList"=>proc{|pokemon|
       next [[getID(PBAbilities,:THICKFAT),0]] if pokemon.form==1
       next
    },
    "height"=>proc{|pokemon|
       next 24 if pokemon.form==1
       next
    },
    "weight"=>proc{|pokemon|
       next 1555 if pokemon.form==1
       next
    }
    })

    I would add a condition on the form change here. With your example on level, let's say, It can only mega evolve if it's Level 40+ and has the stone.
    Code:
    MultipleForms.register(:VENUSAUR,{
    "getMegaForm"=>proc{|pokemon|
       next 1 if isConst?(pokemon.item,PBItems,:VENUSAURITE) and pokemon.level >= 40
       next
    },

    As for your other condition, you already have part of an example, a pokemon with two mega forms Charizard (line 83).
    Code:
    MultipleForms.register(:CHARIZARD,{
    "getMegaForm"=>proc{|pokemon|
       next 1 if isConst?(pokemon.item,PBItems,:CHARIZARDITEX)
       next 2 if isConst?(pokemon.item,PBItems,:CHARIZARDITEY)
       next
    },
    "getMegaName"=>proc{|pokemon|
       next _INTL("Mega Charizard X") if pokemon.form==1
       next _INTL("Mega Charizard Y") if pokemon.form==2
       next
    },
    "getBaseStats"=>proc{|pokemon|
       next [78,130,111,100,130,85] if pokemon.form==1
       next [78,104,78,100,159,115] if pokemon.form==2
       next
    },
    "type2"=>proc{|pokemon|
       next getID(PBTypes,:DRAGON) if pokemon.form==1
       next
    },
    "getAbilityList"=>proc{|pokemon|
       next [[getID(PBAbilities,:TOUGHCLAWS),0]] if pokemon.form==1
       next [[getID(PBAbilities,:DROUGHT),0]] if pokemon.form==2
       next
    },
    "weight"=>proc{|pokemon|
       next 1105 if pokemon.form==1
       next 1005 if pokemon.form==2
       next
    }
    })

    If you don't mind, I'll set up the form change condition for you, but you will have to do the specific data entry yourself (since I don't know it).

    Code:
    MultipleForms.register(:CHARIZARD,{
    "getMegaForm"=>proc{|pokemon|
       next 1 if isConst?(pokemon.item,PBItems,:CHARIZARDITEX)
       next 2 if isConst?(pokemon.item,PBItems,:CHARIZARDITEY)
       next 3 if isConst?(pokemon.item,PBItems,:ITEMX) and pokemon.happiness <= 40 #change this to your unhappiness threshold
       next 4 if isConst?(pokemon.item,PBItems,:ITEMX)
       next
    },
    "getMegaName"=>proc{|pokemon|
       next _INTL("Mega Charizard X") if pokemon.form==1
       next _INTL("Mega Charizard Y") if pokemon.form==2
       next _INTL("Black Ultra Charizard") if pokemon.form==3
       next _INTL("Ultra Charizard") if pokemon.form==4
       next
    },
    "getBaseStats"=>proc{|pokemon|
       next [78,130,111,100,130,85] if pokemon.form==1
       next [78,104,78,100,159,115] if pokemon.form==2 # add stats yourself
       next
    },
    "type2"=>proc{|pokemon|
       next getID(PBTypes,:DRAGON) if pokemon.form==1 #add type changes yourself
       next
    },
    "getAbilityList"=>proc{|pokemon|
       next [[getID(PBAbilities,:TOUGHCLAWS),0]] if pokemon.form==1
       next [[getID(PBAbilities,:DROUGHT),0]] if pokemon.form==2 #add ability changes yourself
       next
    },
    "weight"=>proc{|pokemon|
       next 1105 if pokemon.form==1
       next 1005 if pokemon.form==2 #add weight change yourself
       next
    }
    })

    Form 3 is Black ultra Charizard and form 4 is Ultra Charizard. It's necessary to do the happiness check before the default mega form or else the default would always activate first. But, I haven't tested this code, so use at your own risk.

    I have a certain doubt: Does MEGA forms acts like a normal pokemon in the sense of learning new moves, the XP gain, and the usual?

    Thank you
     
    Back
    Top