Notices
For all updates, view the main page.

Pokémon Essentials All questions and discussion about Pokémon Essentials, the Pokémon game kit for RPG Maker XP, go in here. Also contains links to the latest downloads and the Essentials Wiki.

Reply
 
Thread Tools
  #1    
Old July 30th, 2016 (10:59 AM).
tloriato tloriato is offline
 
Join Date: Sep 2013
Posts: 20
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
Reply With Quote

Relevant Advertising!

  #2    
Old August 1st, 2016 (8:41 PM).
Vendily's Avatar
Vendily Vendily is online now
Making BW-style OWs for RMXP
 
Join Date: Aug 2015
Gender: Female
Nature: Calm
Posts: 615
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.
__________________
Resources for ROM hackers has moved.

Reply With Quote
  #3    
Old August 2nd, 2016 (6:40 AM). Edited August 2nd, 2016 by mej71.
tloriato tloriato is offline
 
Join Date: Sep 2013
Posts: 20
Quote:
Originally Posted by Vendily View Post
Spoiler:
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.
@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!
Reply With Quote
  #4    
Old August 5th, 2016 (11:52 PM).
tloriato tloriato is offline
 
Join Date: Sep 2013
Posts: 20
Quote:
Originally Posted by Vendily View Post
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
Reply With Quote
  #5    
Old August 6th, 2016 (9:50 AM).
Vendily's Avatar
Vendily Vendily is online now
Making BW-style OWs for RMXP
 
Join Date: Aug 2015
Gender: Female
Nature: Calm
Posts: 615
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.
__________________
Resources for ROM hackers has moved.

Reply With Quote
Reply
Quick Reply

Sponsored Links
Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -8. The time now is 8:16 AM.