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

Questions Related to Mega Evolution - Restrictions

21
Posts
10
Years
    • Seen Nov 28, 2022
    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 ;)
     
    1,682
    Posts
    8
    Years
    • Seen yesterday
    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.
     
    21
    Posts
    10
    Years
    • Seen Nov 28, 2022
    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:
    21
    Posts
    10
    Years
    • Seen Nov 28, 2022
    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
     
    1,682
    Posts
    8
    Years
    • Seen yesterday
    As far as Essentials is concerned, Megas are just specialized form changes, so they should receive XP and new moves and what not.

    I would read the wiki on both Megas and Multiple forms.
     
    Back
    Top