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

Project: Generation 6 for Pokémon Essentials (Pokémon sprites and PBS files)

One thing I haven't seen is oblivious not being affected by taunt in gen 6
to do this, add

Code:
if isConst?(opponent.ability,PBAbilities,:OBLIVIOUS)
      @battle.pbDisplay(_INTL("{1}'s Oblivious prevents taunt.",opponent.pbThis))
      return -1
      end

in PokeBattle MoveEffects, right under
Code:
class PokeBattle_Move_0BA < PokeBattle_Move
  def pbEffect(attacker,opponent,hitnum=0,alltargets=nil,showanimation=true)
Should be about line 4440
 
I'm sure someone has a better way to do this, but I added the move Belch

Here's my way. In PokeBattle_ActiveSlide add the line
Code:
$game_switches[XX]=false
under def initialize

Then add
Code:
$game_switches[XX]=true
under every berry related instance of
Code:
@pokemon.itemRecycle=self.item
in PokeBattle_Battler in the Held Item Effects section

Then, add this new class to PokeBattle_MoveEffects

Code:
################################################################################
#                               by mej71
################################################################################
class PokeBattle_Move_141 <PokeBattle_Move
  def pbNumHits   
  if $game_switches[XX]==true
         return 1
         else
    @battle.pbDisplay("But it failed!")
    return 0
  end
  end
end

replacing 141 with whatever number suits you. All the "XX" should be a game switch number of your choice, and obviously make sure to label this number so you don't use it for anything else.
 
I'm not very experienced at this, but this is what i've come up with on my own, if anyone's still interested.

Gooey
In PokeBattle_Battle, under "def pbAbilityEffect(move,user,target,damage)" add this under Static:
Code:
if isConst?(target.ability,PBAbilities,:GOOEY) && 
      user.pbCanReduceStatStage?(PBStats::SPEED)
        user.pbReduceStat(PBStats::SPEED,1,true)
        pbDisplay(_INTL("{1}'s {2} lowered {3}'s Speed!",target.pbThis,
        PBAbilities.getName(target.ability),user.pbThis(true)))
      end
Seems to function as it should. Might want to tweak the display message, since it seems to come up after the generic "stat lowering" message, so it sounds kinda redundant when you read it in battle. But otherwise, works perfectly for me.


Fur Coat
In PokeBattle_Move, I put it under Marvel Scale.
Code:
if isConst?(opponent.ability,PBAbilities,:FURCOAT) && category=0
      basedmg=(basedmg/2).floor
    end
I only did a quick test, but it seems to work as intended.


Sweet Veil
In PokeBattle_Effects, find this section under "def pbCanSleep?" and add the bold portions.
Code:
if isConst?(self.ability,PBAbilities,:VITALSPIRIT) ||
       isConst?(self.ability,PBAbilities,:INSOMNIA) ||
       [B]isConst?(self.ability,PBAbilities,:SWEETVEIL) ||[/B]
       (isConst?(self.ability,PBAbilities,:LEAFGUARD) && @battle.pbWeather==PBWeather::SUNNYDAY)
      abilityname=PBAbilities.getName(self.ability)
      @battle.pbDisplay(_INTL("{1} stayed awake using its {2}!",pbThis,abilityname)) if showMessages
      return false
    end
[B]if isConst?(pbPartner.ability,PBAbilities,:SWEETVEIL)
       abilityname=PBAbilities.getName(pbPartner.ability)
       @battle.pbDisplay(_INTL("{1} stayed awake using its partner's {2}!",pbThis,abilityname)) if showMessages
       return false
     end[/B]
Copy/paste this over the appropriate lines under "def pbCanSleepYawn?" as well. It seems to work as intended, though I don't know how accurate the display messages are to the official thing.


Strong Jaw and Tough Claws
In PokeBattle_Move, I put it under Iron Fist.
Code:
if isConst?(attacker.ability,PBAbilities,:STRONGJAW) &&
       (@flags&0x1000)!=0 # flag m: Biting move
      basedmg=(basedmg*1.5).floor
    end
if isConst?(attacker.ability,PBAbilities,:TOUGHCLAWS) &&
      (@flags&0x01)!=0 && @basedamage>0 # flag a: Makes contact
      basedmg=(basedmg*1.33).floor
    end
It should work on paper as far as I can tell, but honestly, I'm not seeing any real change in damage. Might not be working correctly. For Strong Jaw, you'll need to add new flags to all of the "biting" moves in the PBS file. I used m, but i suppose you could use any of the unused flags.

Biting moves are: Bite, Crunch, Thunder Fang, Fire Fang, Ice Fang, Hyper Fang, and Poison Fang.


*EDIT*: Tough Claws and Strong Jaw should work now. Use the "compile data" option in the editor before playing to ensure that they work.
Also, this may not be a Gen VI ability, but I was able to get Moxie to work by tweaking the code for Fell Stinger:
Code:
if isConst?(attacker.ability,PBAbilities,:MOXIE)
          if (attacker.pbCanIncreaseStatStage?(PBStats::ATTACK) && opponent.hp<=0)
            attacker.pbIncreaseStatBasic(PBStats::ATTACK,1)
            @battle.pbCommonAnimation("StatUp",attacker,nil)
            @battle.pbDisplay(_INTL("{1}'s {2} raised its Attack!",
               attacker.pbThis,PBAbilities.getName(attacker.ability)))
          end
        end
Paste this under Anger Point in PokeBattle_Move.
 
Last edited:
Could someone help with the Sylveon evolution? I keep getting a Syntax Error.
 
Last edited:
what you using for it? kindda need more information in order to help
^ This.

Also, just to let you know, A "syntax error" occurs when you are not using a code or argument properly. Something like not putting an "end" statement after an "if" could count as such.
 
if your using the sylveon method i posted then it should work by adding this to eevees evo line
SYLVEON,happinessMoveType,FAIRY or SYLVEON,happinessMoveType,x were x is the type id for
FAIRY the version you use depends if youve edited the evopams thing

EDIT
oh and a list of people who helped me with the evo methods are:
ShadowFiendZX
WinterKirby
Maruno

if there is anyone i missed then im sorry but least its progress :D
 
Last edited:
I'm using method 26.I fixed the syntax error, but when I evolve Eevee to Slyveon, it evolves into the time of day evolutions. (Umbreon and Espeon)

You need to figure out some sort of way of giving priority to the Sylveon method, since it gets checked after your happinessday and happinessnight methods.
possibly adding
Code:
&& !pokemon.moves[i].type==level
to both happinessday and happinessnight might work, assuming you're using p.claydon's version of the evolution
 
i think the priority is the evolution method ordering (sylveon needs to be 1st i think) plus i think he is using AlexTCGPro's Version

I didn't mean that it would give it priority, but it would stop them from evolving if they knew the specific move that you were going for. You used Charm in yours correct? I checked, and none of the other pokemon that use those evolution methods learn charm, so this would only prevent it from becoming Umbreon or Espeon.
 
For a Fairy Aura that works properly add this in PokeBattle_Move under Technician

Code:
  if isConst?(type,PBTypes,:FAIRY)
      for i in $Trainer.party
       if isConst?(i.ability,PBAbilities,:FAIRYAURA)
       if isConst?(opponent.ability,PBAbilities,:AURABREAK)
        basedmg=(basedmg*2/3).floor
        else
         basedmg=(basedmg*1.333).floor
         end
     end
   end
   end

And then same format for Dark Aura. Have people mostly abandoned this thread? I've coded in the majority of gen 6 moves and abilities if anyone needs something.
 
Last edited:
Added a few new items, and several tweaks.


#####################################
Item data and text
#####################################
Add these to the item PBS file:
Code:
###,PIXIEPLATE,Pixie Plate,1,1000,"An item to be held by a Pokémon. It is a stone tablet that boosts the power of Fairy-type moves.",0,0,0
###,FAIRYGEM,Fairy Gem,1,200,"A gem with a magical essence. When held, it strengthens the power of a Fairy-type move only once.",0,0,0
###,ROSELIBERRY,Roseli Berry,5,20,"If held by a Pokémon, this Berry will lessen the damage taken from one supereffective Fairy-type attack.",0,0,5
###,SNOWBALL,Snowball,1,0,"An item to be held by a Pokémon. It boosts Attack if hit with an Ice-type attack. It can only be used once.",0,0,0
###,LUMINOUSMOSS,Luminous Moss,1,0,"An item to be held by a Pokémon. It boosts Sp. Def if hit with a Water-type attack. It can only be used once.",0,0,0
###,KEEBERRY,Kee Berry,5,20,"If held by a Pokémon, this Berry will increase the Pokémon's Defense stat when hit by a physical attack.",0,0,5
###,MARANGABERRY,Maranga Berry,5,20,"If held by a Pokémon, this Berry will increase the Pokémon's Sp. Defense stat when hit by a special attack.",0,0,5
###,SAFETYGOGGLES,Safety Goggles,1,0,"An item to be held by a Pokémon. These goggles protect the holder from both weather-related damage and powder.",0,0,0
###,WEAKNESSPOLICY,Weakness Policy,1,0,"An item to be held by a Pokémon. Attack and Sp. Atk sharply increase if the holder is hit with a move it's weak to.",0,0,0
Replace ### with whatever item number you want. Note that while Fairy Gem isnt attainable in Gen 6, we can assume that it exists so I added it in.

#######################################################
Snowball, Luminous Moss, Kee Berry, Maranga Berry, and Weakness Policy effects:
#######################################################
Add all of this under Cell Battery in PokeBattle_Move:
Code:
if isConst?(opponent.item,PBItems,:SNOWBALL) &&
           isConst?(movetype,PBTypes,:ICE)
          if opponent.pbCanIncreaseStatStage?(PBStats::ATTACK)
            opponent.pbIncreaseStatBasic(PBStats::ATTACK,1)
            @battle.pbCommonAnimation("StatUp",opponent,nil)
            @battle.pbDisplay(_INTL("{1}'s {2} raised its Attack!",
               opponent.pbThis,PBItems.getName(opponent.item)))
            opponent.pokemon.itemRecycle=opponent.item
            opponent.pokemon.itemInitial=0 if opponent.pokemon.itemInitial==opponent.item
            opponent.item=0
          end
        end
if isConst?(opponent.item,PBItems,:LUMINOUSMOSS) &&
           isConst?(movetype,PBTypes,:WATER)
          if opponent.pbCanIncreaseStatStage?(PBStats::SPDEF)
            opponent.pbIncreaseStatBasic(PBStats::SPDEF,1)
            @battle.pbCommonAnimation("StatUp",opponent,nil)
            @battle.pbDisplay(_INTL("{1}'s {2} raised its Special Defense!",
               opponent.pbThis,PBItems.getName(opponent.item)))
            opponent.pokemon.itemRecycle=opponent.item
            opponent.pokemon.itemInitial=0 if opponent.pokemon.itemInitial==opponent.item
            opponent.item=0
          end
        end
if (isConst?(opponent.item,PBItems,:KEEBERRY) && @category==0)
          if opponent.pbCanIncreaseStatStage?(PBStats::DEFENSE)
            opponent.pbIncreaseStatBasic(PBStats::DEFENSE,1)
            @battle.pbCommonAnimation("StatUp",opponent,nil)
            @battle.pbDisplay(_INTL("{1}'s {2} raised its Defense!",
               opponent.pbThis,PBItems.getName(opponent.item)))
            opponent.pokemon.itemRecycle=opponent.item
            opponent.pokemon.itemInitial=0 if opponent.pokemon.itemInitial==opponent.item
            opponent.item=0
          end
        end
if (isConst?(opponent.item,PBItems,:MARANGABERRY) && @category==1)
          if opponent.pbCanIncreaseStatStage?(PBStats::SPDEF)
            opponent.pbIncreaseStatBasic(PBStats::SPDEF,1)
            @battle.pbCommonAnimation("StatUp",opponent,nil)
            @battle.pbDisplay(_INTL("{1}'s {2} raised its Special Defense!",
               opponent.pbThis,PBItems.getName(opponent.item)))
            opponent.pokemon.itemRecycle=opponent.item
            opponent.pokemon.itemInitial=0 if opponent.pokemon.itemInitial==opponent.item
            opponent.item=0
          end
        end
if isConst?(opponent.item,PBItems,:WEAKNESSPOLICY) && opponent.damagestate.typemod>4
          if opponent.pbCanIncreaseStatStage?(PBStats::ATTACK)
            opponent.pbIncreaseStatBasic(PBStats::ATTACK,2)
            @battle.pbCommonAnimation("StatUp",opponent,nil)
            @battle.pbDisplay(_INTL("{1}'s {2} sharply raised its Attack!",
               opponent.pbThis,PBItems.getName(opponent.item)))
            opponent.pokemon.itemRecycle=opponent.item
            opponent.pokemon.itemInitial=0 if opponent.pokemon.itemInitial==opponent.item
            opponent.item=0
          end
          if opponent.pbCanIncreaseStatStage?(PBStats::SPATK)
            opponent.pbIncreaseStatBasic(PBStats::SPATK,2)
            @battle.pbCommonAnimation("StatUp",opponent,nil)
            @battle.pbDisplay(_INTL("{1}'s Weakness Policy sharply raised its Special Attack!",
               opponent.pbThis,PBItems.getName(opponent.item)))
            opponent.pokemon.itemRecycle=opponent.item
            opponent.pokemon.itemInitial=0 if opponent.pokemon.itemInitial==opponent.item
            opponent.item=0
          end
        end

#######################################
Miscellaneous item effects
#######################################
Add all of the following:

PokeBattle_Move under "# Plates"
Code:
basedmg=(basedmg*1.2).floor if isConst?(attacker.item,PBItems,:PIXIEPLATE) && isConst?(type,PBTypes,:FAIRY)

PokeBattle_Move under "# Gems"
Code:
(isConst?(attacker.item,PBItems,:FAIRYGEM) && isConst?(type,PBTypes,:FAIRY))

PokeBattle_Move under "#Type Effectiveness", add this to the list of berries a few lines down
Code:
(isConst?(opponent.item,PBItems,:ROSELIBERRY) && isConst?(type,PBTypes,:FAIRY))

PokeBattle_Battle under the plate list for Multitype
Code:
isConst?(item,PBItems,:PIXIEPLATE)

PokeBattle_MoveEffects under the plate list for Judgment
Code:
return getConst(PBTypes,:FAIRY)    if isConst?(attacker.item,PBItems,:PIXIEPLATE)

PokemonMultipleForms in the arrays for "type1" and "type2" under MultipleForms.register(:ARCEUS,{
Paste this after :DARK in both arrays:
Code:
,:FAIRY

PokemonMultipleForms under the line for DREADPLATE
Code:
next 18 if isConst?(pokemon.item,PBItems,:PIXIEPLATE)

PokeBattle_MoveEffects under "class PokeBattle_Move_096"
Replace the array found under this section with this new one:
Code:
def pbBaseDamage(basedmg,attacker,opponent)
    damagearray={
       80 => [:CHERIBERRY,:CHESTOBERRY,:PECHABERRY,:RAWSTBERRY,:ASPEARBERRY,
              :LEPPABERRY,:ORANBERRY,:PERSIMBERRY,:LUMBERRY,:SITRUSBERRY,
              :FIGYBERRY,:WIKIBERRY,:MAGOBERRY,:AGUAVBERRY,:IAPAPABERRY,
              :RAZZBERRY,:OCCABERRY,:PASSHOBERRY,:WACANBERRY,:RINDOBERRY,
              :YACHEBERRY,:CHOPLEBERRY,:KEBIABERRY,:SHUCABERRY,:COBABERRY,
              :PAYAPABERRY,:TANGABERRY,:CHARTIBERRY,:KASIBBERRY,:HABANBERRY,
              :COLBURBERRY,:BABIRIBERRY,:CHILANBERRY,:BLUKBERRY,:NANABBERRY,
              :WEPEARBERRY,:PINAPBERRY,:WATMELBERRY,:DURINBERRY,:BELUEBERRY,
              :CORNNBERRY,:MAGOSTBERRY,:RABUTABERRY,:NOMELBERRY,:SPELONBERRY,
              :PAMTREBERRY,:ENIGMABERRY,:CUSTAPBERRY,:JACOBABERRY,:ROWAPBERRY,
              :MICLEBERRY,:ROSELIBERRY],
       90 => [:POMEGBERRY,:KELPSYBERRY,:QUALOTBERRY,:HONDEWBERRY,:GREPABERRY,
              :TAMATOBERRY],
      100 => [:KEEBERRY,:MARANGABERRY,:LIECHIBERRY,:GANLONBERRY,:SALACBERRY,
              :PETAYABERRY,:APICOTBERRY,:LANSATBERRY,:STARFBERRY],
    }
A few lines below this, you'll find another array for types. Replace the following line:
Code:
:DARK     => [:IAPAPABERRY,:SPELONBERRY,:COLBURBERRY,:ROWAPBERRY,:MARANGABERRY],
and add this one below it:
Code:
:FAIRY    => [:ROSELIBERRY,:KEEBERRY]

PokemonBerryPlants under "class BerryPlantSprite", add these to the berry list:
Code:
[:ROSELIBERRY,8,3,20,_INTL("Roseli Berries")],
[:KEEBERRY,16,1,10,_INTL("Kee Berries")],
[:MARANGABERRY,16,1,10,_INTL("Maranga Berries")]

PokeBattle_Battle under "when PBWeather::SANDSTORM" and "when PBWeather::HAIL", add Safety Goggles to the list of exemptions for each weather
Code:
!isConst?(i.item,PBItems,:SAFETYGOGGLES)

PokeBattle_MoveEffects under "PokeBattle_Move_0F7"
Code:
-Add PIXIEPLATE to the "90" item array.
-Add SNOWBALL, LUMINOUSMOSS, SAFETYGOGGLES and WEAKNESSPOLICY to the "30" item array.

###########################################
Overcoat, Safety Goggles, and Grass-type powder immunity:
###########################################
In PokeBattle_MoveEffects, under "if opponent.pbCanSleep?(true)" add all of this:
Code:
if isConst?(@id,PBMoves,:SPORE) || isConst?(@id,PBMoves,:SLEEPPOWDER)
        if opponent.pbHasType?(:GRASS)
          @battle.pbDisplay(_INTL("It doesn't affect {1}...",opponent.pbThis(true)))
          return -1
        elsif isConst?(opponent.ability,PBAbilities,:OVERCOAT)
             @battle.pbDisplay(_INTL("{1}'s {2} made the attack ineffective!",
                opponent.pbThis,PBAbilities.getName(opponent.ability),self.name))
                return -1
              elsif isConst?(opponent.item,PBItems,:SAFETYGOGGLES)
                   @battle.pbDisplay(_INTL("{1} avoided the move with its {2}!",
                      opponent.pbThis,PBItems.getName(opponent.item),self.name))
                      return -1
        end
      end
      else
....and under "return -1 if !opponent.pbCanPoison?(true)"
Code:
if isConst?(@id,PBMoves,:POISONPOWDER)
        if opponent.pbHasType?(:GRASS)
          @battle.pbDisplay(_INTL("It doesn't affect {1}...",opponent.pbThis(true)))
          return -1
        elsif isConst?(opponent.ability,PBAbilities,:OVERCOAT)
             @battle.pbDisplay(_INTL("{1}'s {2} made the attack ineffective!",
                opponent.pbThis,PBAbilities.getName(opponent.ability),self.name))
                return -1
              elsif isConst?(opponent.item,PBItems,:SAFETYGOGGLES)
                   @battle.pbDisplay(_INTL("{1} avoided the move with its {2}!",
                      opponent.pbThis,PBItems.getName(opponent.item),self.name))
                      return -1
        end
      end
    else
...and under "return -1 if !opponent.pbCanParalyze?(true)"
Code:
if isConst?(@id,PBMoves,:STUNSPORE)
        if opponent.pbHasType?(:GRASS)
          @battle.pbDisplay(_INTL("It doesn't affect {1}...",opponent.pbThis(true)))
          return -1
        elsif isConst?(opponent.ability,PBAbilities,:OVERCOAT)
             @battle.pbDisplay(_INTL("{1}'s {2} made the attack ineffective!",
                opponent.pbThis,PBAbilities.getName(opponent.ability),self.name))
                return -1
              elsif isConst?(opponent.item,PBItems,:SAFETYGOGGLES)
                   @battle.pbDisplay(_INTL("{1} avoided the move with its {2}!",
                      opponent.pbThis,PBItems.getName(opponent.item),self.name))
                      return -1
        end
      end
    else
...and under "return -1 if !opponent.pbCanReduceStatStage?(PBStats::SPEED,true)"
Code:
if isConst?(@id,PBMoves,:COTTONSPORE)
        if opponent.pbHasType?(:GRASS)
          @battle.pbDisplay(_INTL("It doesn't affect {1}...",opponent.pbThis(true)))
          return -1
        elsif isConst?(opponent.ability,PBAbilities,:OVERCOAT)
             @battle.pbDisplay(_INTL("{1}'s {2} made the attack ineffective!",
                opponent.pbThis,PBAbilities.getName(opponent.ability),self.name))
                return -1
              elsif isConst?(opponent.item,PBItems,:SAFETYGOGGLES)
                   @battle.pbDisplay(_INTL("{1} avoided the move with its {2}!",
                      opponent.pbThis,PBItems.getName(opponent.item),self.name))
                      return -1
        end
      end
    else

###########################

All icons and sprites for new items and berry trees will have to be added on your own. You can easily find many of them right off of Serebii or Bulbapedia, or other popular sites.
 
Last edited:
Spoiler:


Awesome! Thanks for this!
 
Another quick addition - Form differences for Gen VI Pokemon. You'll need to find and add the appropriate sprites.

In PokemonMultipleForms, paste this under Genesect's entry:
Code:
MultipleForms.register(:MEOWSTIC,{
"ability"=>proc{|pokemon|
   next if pokemon.gender==0              # Male Meowstic
   if pokemon.abilityflag && pokemon.abilityflag=2
     next getID(PBAbilities,:COMPETITIVE) # Female Meowstic
   end
},
"getMoveList"=>proc{|pokemon|
   next if pokemon.gender==0                                # Male Meowstic
   movelist=[]
   case pokemon.gender
     when 1 ; movelist=[[1,:STOREDPOWER],[1,:MEFIRST],[1,:MAGICALLEAF],[1,:SCRATCH],
                        [1,:LEER],[5,:COVET],[9,:CONFUSION],[13,:LIGHTSCREEN],
                        [17,:PSYBEAM],[19,:FAKEOUT],[25,:PSYSHOCK],[28,:CHARGEBEAM],
                        [31,:SHADOWBALL],[35,:EXTRASENSORY],[40,:PSYCHIC],
                        [43,:ROLEPLAY],[45,:SIGNALBEAM],[48,:SUCKERPUNCH],
                        [50,:FUTURESIGHT],[53,:STOREDPOWER]] # Female Meowstic 
   end
   for i in movelist
     i[1]=getConst(PBMoves,i[1])
   end
   next movelist
}
})

MultipleForms.register(:AEGISLASH,{
"getBaseStats"=>proc{|pokemon|
   next if pokemon.form==0       # Shield Form
   next [60,150,50,60,150,50]    # Blade Form
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})

MultipleForms.register(:PUMPKABOO,{
"getFormOnCreation"=>proc{|pokemon|
   next rand(4)
},
"getBaseStats"=>proc{|pokemon|
   next if pokemon.form==0            # Average Size
   case pokemon.form
     when 1; next [44,66,70,56,44,55] # Small Size
     when 2; next [54,66,70,46,44,55] # Large Size
     when 3; next [59,66,70,41,44,55] # Super Size
   end
}
})

MultipleForms.register(:GOURGEIST,{
"getFormOnCreation"=>proc{|pokemon|
   next rand(4)
},
"getBaseStats"=>proc{|pokemon|
   next if pokemon.form==0              # Average Size
   case pokemon.form
     when 1; next [55,85,122,99,58,75]  # Small Size
     when 2; next [75,95,122,69,58,75]  # Large Size
     when 3; next [85,100,122,54,58,75] # Super Size
   end
}
})

*Note that while this adds Aegislash's Blade Form stats, it does not actually allow Aegislash to transform between Shield and Blade forms in battle. I was going to use Meloetta's transformation method as a base to add Aegislash's, but I only realized afterward that Meloetta's form change isn't even implemented in Essentials yet. I have no idea how to add this myself yet, though.

However, you should still be able to manually force Aegislash to transform by using the Debug tools.

Now, under the Mega Evolution forms section, paste the following over everything there:
Code:
MultipleForms.register(:VENUSAUR,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:VENUSAURITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Venusaur") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [80,102,123,100,100,120] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:THICKFAT) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 1555 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})

MultipleForms.register(:CHARIZARD,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:CHARIZARDITEX)
   next 2 if isConst?(pokemon.item,PBItems,:CHARIZARDITEY)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"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,124,118,100,129,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
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:TOUGHCLAWS) if pokemon.form==1
   next getID(PBAbilities,:DROUGHT) if pokemon.form==2
   next
},
"weight"=>proc{|pokemon|
   next 1105 if pokemon.form==1
   next 1005 if pokemon.form==2
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})

MultipleForms.register(:BLASTOISE,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:BLASTOISINITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Blastoise") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [79,103,120,78,135,115] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:MEGALAUNCHER) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 1011 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:GYARADOS,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:GYARADOSITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Gyarados") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [95,155,109,81,70,130] if pokemon.form==1
   next
},
"type2"=>proc{|pokemon|
   next getID(PBTypes,:DARK) if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:MOLDBREAKER) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 305 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:HOUNDOOM,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:HOUNDOOMITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Houndoom") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [75,90,90,115,140,90] if pokemon.form==1
   next
},

"ability"=>proc{|pokemon|
   next getID(PBAbilities,:SOLARPOWER) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 49.5 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})


MultipleForms.register(:ALAKAZAM,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:ALAKAZITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Alakazam") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [55,50,65,150,175,95] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:TRACE) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 485 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})


MultipleForms.register(:GENGAR,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:GENGARITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Gengar") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [60,65,80,130,170,95] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:SHADOWTAG) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 480 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:KANGASKHAN,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:KANGASKHANITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Kangaskhan") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [105,125,100,100,60,100] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:PARENTALBOND) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 1000 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:PINSIR,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:PINSIRITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Pinsir") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [65,155,105,120,65,90] if pokemon.form==1
   next
},
"type2"=>proc{|pokemon|
   next getID(PBTypes,:FLYING) if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:AERILATE) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 590 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:AERODACTYL,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:AERODACTYLITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Aerodactyl") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [80,135,85,150,70,95] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:TOUGHCLAWS) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 790 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:MEWTWO,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:MEWTWONITEX)
   next 2 if isConst?(pokemon.item,PBItems,:MEWTWONITEY)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Mewtwo X") if pokemon.form==1
   next _INTL("Mega Mewtwo Y") if pokemon.form==2
   next
},
"getBaseStats"=>proc{|pokemon|
   next [106,190,100,130,154,100] if pokemon.form==1
   next [106,150,70,140,194,120] if pokemon.form==2
   next
},
"type2"=>proc{|pokemon|
   next getID(PBTypes,:FIGHTING) if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:STEADFAST) if pokemon.form==1
   next getID(PBAbilities,:INSOMNIA) if pokemon.form==2
   next
},
"weight"=>proc{|pokemon|
   next 1270 if pokemon.form==1
   next 330 if pokemon.form==2
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:AMPHAROS,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:AMPHAROSITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Ampharos") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [90,95,105,45,165,110] if pokemon.form==1
   next
},
"type2"=>proc{|pokemon|
   next getID(PBTypes,:DRAGON) if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:MOLDBREAKER) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 615 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:SCIZOR,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:SCIZORITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Scizor") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [70,150,140,75,65,100] if pokemon.form==1
   next
},

"ability"=>proc{|pokemon|
   next getID(PBAbilities,:TECHNICIAN) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 1250 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:HERACROSS,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:HERACRONITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Heracross") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [80,185,115,75,40,105] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:SKILLLINK) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 625 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:TYRANITAR,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:TYRANITARITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Tyranitar") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [100,164,150,71,95,120] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:SANDSTREAM) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 2550 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:BLAZIKEN,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:BLAZIKENITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Blaziken") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [80,160,80,100,130,80] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:SPEEDBOOST) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 520 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:GARDEVOIR,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:GARDEVOIRITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Gardevoir") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [68,85,65,100,165,135] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:PIXILATE) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 484 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:MAWILE,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:MAWILITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Mawile") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [50,105,125,50,55,95] if pokemon.form==1
   next
},
"type2"=>proc{|pokemon|
   next getID(PBTypes,:FAIRY) if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:HUGEPOWER) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 235 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:AGGRON,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:AGGRONITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Aggron") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [70,140,230,50,60,80] if pokemon.form==1
   next
},
"type2"=>proc{|pokemon|
   next getID(PBTypes,:STEEL) if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:FILTER) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 3950 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:MEDICHAM,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:MEDICHAMITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Medicham") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [60,100,85,100,80,85] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:PUREPOWER) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 315 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:MAENCTRIC,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:MANECTITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Manectric") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [70,75,80,135,135,80] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:INTIMIDATE) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 440 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:BANETTE,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:BANETTITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Banette") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [64,165,75,75,93,83] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:PRANKSTER) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 130 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:ABSOL,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:ABSOLITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Absol") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [65,150,60,115,115,60] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:MAGICBOUNCE) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 490 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:LATIAS,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:LATIASITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Latias") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [80,100,120,110,140,150] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:LEVITATE) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 400 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:LATIOS,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:LATIOSITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Latios") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [80,130,100,110,160,120] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:LEVITATE) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 400 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:GARCHOMP,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:GARCHOMPITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Garchomp") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [108,170,115,92,120,95] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:SANDFORCE) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 950 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:LUCARIO,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:LUCARIONITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Lucario") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [70,145,88,112,140,70] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:ADAPTABILITY) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 575 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:ABOMASNOW,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:ABOMASITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Abomasnow") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [90,132,105,30,132,105] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:SNOWWARNING) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 1850 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
**Coding for Venusaur, Charizard, and Blastoise may already be present in the base script. Just paste over them with this.
**Parental Bond or any other new abilities must be added to the Abilities PBS File to prevent any errors, even if just as a placeholder.

Next, go to PokeBattle_Battle and paste this over everything under Genesect's data there in the "pbIsUnlosableItem(pkmn,item)" def. This will prevent Mega Stones from being stolen/knocked off/removed during battle as they are in Gen VI.
Code:
if isConst?(pkmn.species,PBSpecies,:VENUSAUR) &&
       isConst?(item,PBItems,:VENUSAURITE)
      return true
    end
    if isConst?(pkmn.species,PBSpecies,:CHARIZARD) &&
       (isConst?(item,PBItems,:CHARIZARDITEX) ||
        isConst?(item,PBItems,:CHARIZARDITEY))
      return true
    end
    if isConst?(pkmn.species,PBSpecies,:BLASTOISE) &&
       isConst?(item,PBItems,:BLASTOISINITE)
      return true
    end
    if isConst?(pkmn.species,PBSpecies,:ALAKAZAM) &&
       isConst?(item,PBItems,:ALAKAZITE)
      return true
    end
    if isConst?(pkmn.species,PBSpecies,:GENGAR) &&
       isConst?(item,PBItems,:GENGARITE)
      return true
    end
    if isConst?(pkmn.species,PBSpecies,:KANGASKHAN) &&
       isConst?(item,PBItems,:KANGASKHANITE)
      return true
    end
    if isConst?(pkmn.species,PBSpecies,:PINSIR) &&
       isConst?(item,PBItems,:PINSIRITE)
      return true
    end
    if isConst?(pkmn.species,PBSpecies,:GYARADOS) &&
       isConst?(item,PBItems,:GYARADOSITE)
      return true
    end
    if isConst?(pkmn.species,PBSpecies,:AERODACTYL) &&
       isConst?(item,PBItems,:AERODACTYLITE)
      return true
    end
    if isConst?(pkmn.species,PBSpecies,:AMPHAROS) &&
       isConst?(item,PBItems,:AMPHAROSITE)
      return true
    end
    if isConst?(pkmn.species,PBSpecies,:SCIZOR) &&
       isConst?(item,PBItems,:SCIZORITE)
      return true
    end
    if isConst?(pkmn.species,PBSpecies,:HERACROSS) &&
       isConst?(item,PBItems,:HERACRONITE)
      return true
    end
    if isConst?(pkmn.species,PBSpecies,:HOUNDOOM) &&
       isConst?(item,PBItems,:HOUNDOOMINITE)
      return true
    end
    if isConst?(pkmn.species,PBSpecies,:TYRANITAR) &&
       isConst?(item,PBItems,:TYRANITARITE)
      return true
    end
    if isConst?(pkmn.species,PBSpecies,:BLAZIKEN) &&
       isConst?(item,PBItems,:BLAZIKENITE)
      return true
    end
    if isConst?(pkmn.species,PBSpecies,:GARDEVOIR) &&
       isConst?(item,PBItems,:GARDEVOIRITE)
      return true
    end
    if isConst?(pkmn.species,PBSpecies,:MAWILE) &&
       isConst?(item,PBItems,:MAWILITE)
      return true
    end
    if isConst?(pkmn.species,PBSpecies,:AGGRON) &&
       isConst?(item,PBItems,:AGGRONITE)
      return true
    end
    if isConst?(pkmn.species,PBSpecies,:MEDICHAM) &&
       isConst?(item,PBItems,:MEDICHAMITE)
      return true
    end
    if isConst?(pkmn.species,PBSpecies,:MANECTRIC) &&
       isConst?(item,PBItems,:MANECTITE)
      return true
    end
    if isConst?(pkmn.species,PBSpecies,:BANETTE) &&
       isConst?(item,PBItems,:BANETTITE)
      return true
    end
    if isConst?(pkmn.species,PBSpecies,:ABSOL) &&
       isConst?(item,PBItems,:ABSOLITE)
      return true
    end
    if isConst?(pkmn.species,PBSpecies,:LATIAS) &&
       isConst?(item,PBItems,:LATIASITE)
      return true
    end
    if isConst?(pkmn.species,PBSpecies,:LATIOS) &&
       isConst?(item,PBItems,:LATIOSITE)
      return true
    end
    if isConst?(pkmn.species,PBSpecies,:GARCHOMP) &&
       isConst?(item,PBItems,:GARCHOMPITE)
      return true
    end
    if isConst?(pkmn.species,PBSpecies,:LUCARIO) &&
       isConst?(item,PBItems,:LUCARIONITE)
      return true
    end
    if isConst?(pkmn.species,PBSpecies,:ABOMASNOW) &&
       isConst?(item,PBItems,:ABOMASITE)
      return true
    end
    if isConst?(pkmn.species,PBSpecies,:MEWTWO) &&
       (isConst?(item,PBItems,:MEWTWONITEX) ||
        isConst?(item,PBItems,:MEWTWONITEY))
      return true
    end
    return false
  end
*Coding for Venusaur, Charizard, and Blastoise may already be present in the base script. Just paste over them with this.

*EDIT* Fixed base stats and movelist, added Mega Forms.
 
Last edited:
**All numbers under the "Weight" sections are just placeholder. I dont know what units the script is using to determine weight, so I didn't know what I should put. Feel free to edit or remove those sections.

Weight is in grams. Here's the multiple forms with correct weights.

Code:
MultipleForms.register(:VENUSAUR,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:VENUSAURITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Venusaur") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [80,102,123,100,100,120] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:THICKFAT) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 1555 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})

MultipleForms.register(:CHARIZARD,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:CHARIZARDITEX)
   next 2 if isConst?(pokemon.item,PBItems,:CHARIZARDITEY)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"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,124,118,100,129,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
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:TOUGHCLAWS) if pokemon.form==1
   next getID(PBAbilities,:DROUGHT) if pokemon.form==2
   next
},
"weight"=>proc{|pokemon|
   next 1105 if pokemon.form==1
   next 1005 if pokemon.form==2
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})

MultipleForms.register(:BLASTOISE,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:BLASTOISINITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Blastoise") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [79,103,120,78,135,115] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:MEGALAUNCHER) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 1011 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:GYARADOS,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:GYARADOSITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Gyarados") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [95,155,109,81,70,130] if pokemon.form==1
   next
},
"type2"=>proc{|pokemon|
   next getID(PBTypes,:DARK) if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:MOLDBREAKER) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 305 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:HOUNDOOM,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:HOUNDOOMITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Houndoom") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [75,90,90,115,140,90] if pokemon.form==1
   next
},

"ability"=>proc{|pokemon|
   next getID(PBAbilities,:SOLARPOWER) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 49.5 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})


MultipleForms.register(:ALAKAZAM,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:ALAKAZITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Alakazam") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [55,50,65,150,175,95] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:TRACE) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 485 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})


MultipleForms.register(:GENGAR,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:GENGARITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Gengar") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [60,65,80,130,170,95] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:SHADOWTAG) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 480 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:KANGASKHAN,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:KANGASKHANITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Kangaskhan") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [105,125,100,100,60,100] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:PARENTALBOND) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 1000 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:PINSIR,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:PINSIRITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Pinsir") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [65,155,105,120,65,90] if pokemon.form==1
   next
},
"type2"=>proc{|pokemon|
   next getID(PBTypes,:FLYING) if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:AERILATE) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 590 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:AERODACTYL,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:AERODACTYLITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Aerodactyl") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [80,135,85,150,70,95] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:TOUGHCLAWS) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 790 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:MEWTWO,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:MEWTWONITEX)
   next 2 if isConst?(pokemon.item,PBItems,:MEWTWONITEY)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Mewtwo X") if pokemon.form==1
   next _INTL("Mega Mewtwo Y") if pokemon.form==2
   next
},
"getBaseStats"=>proc{|pokemon|
   next [106,190,100,130,154,100] if pokemon.form==1
   next [106,150,70,140,194,120] if pokemon.form==2
   next
},
"type2"=>proc{|pokemon|
   next getID(PBTypes,:FIGHTING) if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:STEADFAST) if pokemon.form==1
   next getID(PBAbilities,:INSOMNIA) if pokemon.form==2
   next
},
"weight"=>proc{|pokemon|
   next 1270 if pokemon.form==1
   next 330 if pokemon.form==2
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:AMPHAROS,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:AMPHAROSITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Ampharos") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [90,95,105,45,165,110] if pokemon.form==1
   next
},
"type2"=>proc{|pokemon|
   next getID(PBTypes,:DRAGON) if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:MOLDBREAKER) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 615 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:SCIZOR,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:SCIZORITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Scizor") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [70,150,140,75,65,100] if pokemon.form==1
   next
},

"ability"=>proc{|pokemon|
   next getID(PBAbilities,:TECHNICIAN) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 1250 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:HERACROSS,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:HERACRONITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Heracross") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [80,185,115,75,40,105] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:SKILLLINK) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 625 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:TYRANITAR,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:TYRANITARITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Tyranitar") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [100,164,150,71,95,120] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:SANDSTREAM) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 2550 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:BLAZIKEN,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:BLAZIKENITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Blaziken") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [80,160,80,100,130,80] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:SPEEDBOOST) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 520 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:GARDEVOIR,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:GARDEVOIRITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Gardevoir") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [68,85,65,100,165,135] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:PIXILATE) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 484 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:MAWILE,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:MAWILITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Mawile") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [50,105,125,50,55,95] if pokemon.form==1
   next
},
"type2"=>proc{|pokemon|
   next getID(PBTypes,:FAIRY) if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:HUGEPOWER) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 235 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:AGGRON,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:AGGRONITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Aggron") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [70,140,230,50,60,80] if pokemon.form==1
   next
},
"type2"=>proc{|pokemon|
   next getID(PBTypes,:STEEL) if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:FILTER) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 3950 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:MEDICHAM,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:MEDICHAMITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Medicham") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [60,100,85,100,80,85] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:PUREPOWER) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 315 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:MAENCTRIC,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:MANECTITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Manectric") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [70,75,80,135,135,80] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:INTIMIDATE) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 440 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:BANETTE,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:BANETTITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Banette") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [64,165,75,75,93,83] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:PRANKSTER) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 130 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:ABSOL,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:ABSOLITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Absol") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [65,150,60,115,115,60] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:MAGICBOUNCE) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 490 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:LATIAS,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:LATIASITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Latias") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [80,100,120,110,140,150] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:LEVITATE) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 400 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:LATIOS,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:LATIOSITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Latios") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [80,130,100,110,160,120] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:LEVITATE) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 400 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:GARCHOMP,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:GARCHOMPITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Garchomp") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [108,170,115,92,120,95] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:SANDFORCE) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 950 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:LUCARIO,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:LUCARIONITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Lucario") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [70,145,88,112,140,70] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:ADAPTABILITY) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 575 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
MultipleForms.register(:ABOMASNOW,{
"getMegaForm"=>proc{|pokemon|
   next 1 if isConst?(pokemon.item,PBItems,:ABOMASITE)
   next
},
"getUnmegaForm"=>proc{|pokemon|
   next 0
},
"getMegaName"=>proc{|pokemon|
   next _INTL("Mega Abomasnow") if pokemon.form==1
   next
},
"getBaseStats"=>proc{|pokemon|
   next [90,132,105,30,132,105] if pokemon.form==1
   next
},
"ability"=>proc{|pokemon|
   next getID(PBAbilities,:SNOWWARNING) if pokemon.form==1
   next
},
"weight"=>proc{|pokemon|
   next 1850 if pokemon.form==1
   next
},
"onSetForm"=>proc{|pokemon,form|
   pbSeenForm(pokemon)
}
})
 
Probably the last thing I'm adding for a while, I'm getting burnt out.

Effects for Parting Shot, Geomancy, and Venom Drench.

In PokeBattle_MoveEffects, paste this at the bottom of the page. Replace the "###" after each "class PokeBattle_Move_" with the move number of your choice.
Code:
##################################################################
# After lowering stats, user switches out.
##################################################################
#Parting Shot
class PokeBattle_Move_### < PokeBattle_Move
  def pbEffect(attacker,opponent,hitnum=0,alltargets=nil,showanimation=true)
    ret=super(attacker,opponent,hitnum,alltargets,showanimation)
    if opponent.effects[PBEffects::Substitute]>0
      @battle.pbDisplay(_INTL("{1}'s attack missed!",attacker.pbThis))
      return -1
    end
    if opponent.pbTooLow?(PBStats::ATTACK) &&
       opponent.pbTooLow?(PBStats::SPATK)
      @battle.pbDisplay(_INTL("{1}'s stats won't go any lower!",opponent.pbThis))
      return -1
    end
    if opponent.pbOwnSide.effects[PBEffects::Mist]>0
      @battle.pbDisplay(_INTL("{1} is protected by Mist!",opponent.pbThis))
      return -1
    end
    if isConst?(opponent.ability,PBAbilities,:CLEARBODY) ||
       isConst?(opponent.ability,PBAbilities,:WHITESMOKE)
      @battle.pbDisplay(_INTL("{1}'s {2} prevents stat loss!",opponent.pbThis,
         PBAbilities.getName(opponent.ability)))
      return -1
    end
    pbShowAnimation(@id,attacker,opponent,hitnum,alltargets,showanimation)
    ret=-1; showanim=true
    if opponent.pbReduceStat(PBStats::ATTACK,1,false,showanim)
      ret=0; showanim=false
    end
    if opponent.pbReduceStat(PBStats::SPATK,1,false,showanim)
      ret=0; showanim=false
    end
    if attacker.hp>0 && @battle.pbCanChooseNonActive?(attacker.index) &&
       [email protected]?(@battle.pbParty(opponent.index))
      @battle.pbDisplay(_INTL("{1} went back to {2}!",attacker.pbThis,@battle.pbGetOwner(attacker.index).name))
      newpoke=0
      [email protected](attacker.index,true,false)
      @battle.pbMessagesOnReplace(attacker.index,newpoke)
      attacker.pbResetForm
      @battle.pbReplace(attacker.index,newpoke,true)
      @battle.pbOnActiveOne(attacker)
      attacker.pbAbilitiesOnSwitchIn(true)
    end
    return ret
  end
end

##################################################################
# Skips first turn, boosts Sp.Atk, Sp.Def and Speed on the second.
##################################################################
#Geomancy
class PokeBattle_Move_### < PokeBattle_Move
  def pbTwoTurnAttack(attacker)
    @immediate=false
    if !@immediate && isConst?(attacker.item,PBItems,:POWERHERB)
      itemname=PBItems.getName(attacker.item)
      @immediate=true
      attacker.pokemon.itemRecycle=attacker.item
      attacker.pokemon.itemInitial=0 if attacker.pokemon.itemInitial==attacker.item
      attacker.item=0
      @battle.pbDisplay(_INTL("{1} consumed its {2}!",attacker.pbThis,itemname))
    end
    return false if @immediate
    return attacker.effects[PBEffects::TwoTurnAttack]==0
  end

  def pbEffect(attacker,opponent,hitnum=0,alltargets=nil,showanimation=true)
    if @immediate || attacker.effects[PBEffects::TwoTurnAttack]>0
      pbShowAnimation(@id,attacker,opponent,hitnum,alltargets,showanimation) # Placeholder for charging Common anim
      @battle.pbDisplay(_INTL("{1} absorbed energy!",attacker.pbThis))
    end
    if attacker.effects[PBEffects::TwoTurnAttack]==0
      if attacker.pbCanIncreaseStatStage?(PBStats::SPATK,false)
        attacker.pbIncreaseStat(PBStats::SPATK,2,false)
      end
      if attacker.pbCanIncreaseStatStage?(PBStats::SPDEF,false)
        attacker.pbIncreaseStat(PBStats::SPDEF,2,false)
      end
      if attacker.pbCanIncreaseStatStage?(PBStats::SPEED,false)
        attacker.pbIncreaseStat(PBStats::SPEED,2,false)
      end
    end
    return 0 if attacker.effects[PBEffects::TwoTurnAttack]>0
    return super
  end
end

##################################################################
# Decreases a poisoned target's Attack, Sp.Atk and Speed by 1 stage.
##################################################################
#Venom Drench
class PokeBattle_Move_### < PokeBattle_Move
  def pbEffect(attacker,opponent,hitnum=0,alltargets=nil,showanimation=true)
    if opponent.effects[PBEffects::Substitute]>0
      @battle.pbDisplay(_INTL("{1}'s attack missed!",attacker.pbThis))
      return -1
    end
    if opponent.status!=PBStatuses::POISON
      @battle.pbDisplay(_INTL("But it failed!",opponent.pbThis))
      return -1
    end
    if opponent.pbTooLow?(PBStats::ATTACK) &&
       opponent.pbTooLow?(PBStats::DEFENSE)
      @battle.pbDisplay(_INTL("{1}'s stats won't go any lower!",opponent.pbThis))
      return -1
    end
    if opponent.pbOwnSide.effects[PBEffects::Mist]>0
      @battle.pbDisplay(_INTL("{1} is protected by Mist!",opponent.pbThis))
      return -1
    end
    if isConst?(opponent.ability,PBAbilities,:CLEARBODY) ||
       isConst?(opponent.ability,PBAbilities,:WHITESMOKE)
      @battle.pbDisplay(_INTL("{1}'s {2} prevents stat loss!",opponent.pbThis,
         PBAbilities.getName(opponent.ability)))
      return -1
    end
    pbShowAnimation(@id,attacker,opponent,hitnum,alltargets,showanimation)
    ret=-1; showanim=true
    if opponent.status==PBStatuses::POISON
      if opponent.pbReduceStat(PBStats::ATTACK,1,false,showanim)
        ret=0; showanim=false
      end
      if opponent.pbReduceStat(PBStats::SPATK,1,false,showanim)
        ret=0; showanim=false
      end
      if opponent.pbReduceStat(PBStats::SPEED,1,false,showanim)
        ret=0; showanim=false
      end
      return ret
    end
  end
end
 
Back
Top