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

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

1,224
Posts
10
Years
  • 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
     
    1,224
    Posts
    10
    Years
  • 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.
     
    1,406
    Posts
    10
    Years
    • Seen today
    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:
    302
    Posts
    13
    Years
    • Seen Aug 25, 2014
    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.
     
    423
    Posts
    13
    Years
    • Seen Aug 31, 2023
    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:
    28
    Posts
    10
    Years
  • 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)
     
    1,224
    Posts
    10
    Years
  • 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
     
    423
    Posts
    13
    Years
    • Seen Aug 31, 2023
    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
     
    1,224
    Posts
    10
    Years
  • 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.
     
    1,224
    Posts
    10
    Years
  • 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:
    1,406
    Posts
    10
    Years
    • Seen today
    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:
    56
    Posts
    10
    Years
    • Seen Sep 29, 2015
    Spoiler:


    Awesome! Thanks for this!
     
    1,406
    Posts
    10
    Years
    • Seen today
    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:
    1,224
    Posts
    10
    Years
  • **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)
    }
    })
     
    1,406
    Posts
    10
    Years
    • Seen today
    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