Dialga-Brite
 
 
 
 
Cornify
 

.

Back

Enhanced Double Wild Battles

This guide will show you how to make every random wild battle be randomly chosen to be either single or double. It will also show you how to make it so you can enter a double battle with only one pokemon in your party. That would put the player at a disadvantage, yes, but it's the best way to avoid errors during gameplay with this modification installed.

First, to make wild battles chosen to be either single or double at random, find the following code in the script PokemonField:

 pbFieldMovementOnStepTaken
      if !eventTriggered
       if $PokemonGlobal.surfing
        encounter=$PokemonEncounters.pbGenerateEncounter(2)
        encounter=EncounterModifier.trigger(encounter)
        if encounter && !(Input.press?(Input::CTRL) && $DEBUG) && $Trainer.party.length > 0
         if $PokemonGlobal.partner
          encounter2=$PokemonEncounters.pbEncounteredPokemon(2)
          pbDoubleWildBattle(encounter[0],encounter[1],
            encounter2[0],encounter2[1])
         else
          pbWildBattle(encounter[0],encounter[1])
         end
        end
       elsif $PokemonEncounters.isCave?
        encounter=$PokemonEncounters.pbGenerateEncounter(1)
        encounter=EncounterModifier.trigger(encounter)
        if encounter && !(Input.press?(Input::CTRL) && $DEBUG) && $Trainer.party.length > 0
         if $PokemonGlobal.partner
          encounter2=$PokemonEncounters.pbEncounteredPokemon(1)
          pbDoubleWildBattle(encounter[0],encounter[1],
            encounter2[0],encounter2[1])
         else
          pbWildBattle(encounter[0],encounter[1])
         end
        end
       elsif $PokemonEncounters.isGrass?
        encounter=$PokemonEncounters.pbGenerateEncounter(pbLandEncounterType)
        if pbIsGrassTag?($game_map.terrain_tag($game_player.x,$game_player.y))
         encounter=EncounterModifier.trigger(encounter)
         if encounter && !(Input.press?(Input::CTRL) && $DEBUG) && $Trainer.party.length > 0
          if $PokemonGlobal.partner
           encounter2=$PokemonEncounters.pbEncounteredPokemon(pbLandEncounterType)
           pbDoubleWildBattle(encounter[0],encounter[1],
             encounter2[0],encounter2[1])
          else
           pbWildBattle(encounter[0],encounter[1])
          end
         end
        end
       end
      end
end

and replace with:

       pbFieldMovementOnStepTaken
      if !eventTriggered
       if $PokemonGlobal.surfing
        encounter=$PokemonEncounters.pbGenerateEncounter(2)
        encounter=EncounterModifier.trigger(encounter)
        if encounter && !(Input.press?(Input::CTRL) && $DEBUG) && $Trainer.party.length > 0
         if $PokemonGlobal.partner
          encounter2=$PokemonEncounters.pbEncounteredPokemon(2)
          pbDoubleWildBattle(encounter[0],encounter[1],
            encounter2[0],encounter2[1])
         else
          $rbbatty=rand(2)
            if $rbbatty<1
                pbWildBattle(encounter[0],encounter[1])
              else
          encounter2=$PokemonEncounters.pbEncounteredPokemon(pbLandEncounterType)
           pbDoubleWildBattle(encounter[0],encounter[1],
            encounter2[0],encounter2[1])
          end
         end
        end
       elsif $PokemonEncounters.isCave?
        encounter=$PokemonEncounters.pbGenerateEncounter(1)
        encounter=EncounterModifier.trigger(encounter)
        if encounter && !(Input.press?(Input::CTRL) && $DEBUG) && $Trainer.party.length > 0
         if $PokemonGlobal.partner
          encounter2=$PokemonEncounters.pbEncounteredPokemon(1)
          pbDoubleWildBattle(encounter[0],encounter[1],
            encounter2[0],encounter2[1])
         else
          $rbbatty=rand(2)
            if $rbbatty<1
                pbWildBattle(encounter[0],encounter[1])
              else
          encounter2=$PokemonEncounters.pbEncounteredPokemon(pbLandEncounterType)
           pbDoubleWildBattle(encounter[0],encounter[1],
            encounter2[0],encounter2[1])
          end
         end
        end
       elsif $PokemonEncounters.isGrass?
        encounter=$PokemonEncounters.pbGenerateEncounter(pbLandEncounterType)
        if pbIsGrassTag?($game_map.terrain_tag($game_player.x,$game_player.y))
         encounter=EncounterModifier.trigger(encounter)
         if encounter && !(Input.press?(Input::CTRL) && $DEBUG) && $Trainer.party.length > 0
          if $PokemonGlobal.partner
           encounter2=$PokemonEncounters.pbEncounteredPokemon(pbLandEncounterType)
           pbDoubleWildBattle(encounter[0],encounter[1],
             encounter2[0],encounter2[1])
          else
          $rbbatty=rand(2)
            if $rbbatty<1
                pbWildBattle(encounter[0],encounter[1])
              else
          encounter2=$PokemonEncounters.pbEncounteredPokemon(pbLandEncounterType)
           pbDoubleWildBattle(encounter[0],encounter[1],
            encounter2[0],encounter2[1])
          end
          end
         end
        end
       end
      end
end

Now to make it possible to have double battles with only one pokemon, find the following code in PokeBattle_Battle:

  #
 # Initialize players in double battles
 #
 if @doublebattle
  if @player.is_a?(Array)
   sendout1=pbFindNextUnfainted(@party1,0,pbSecondPartyBegin(0))
   raise _INTL("Player 1 has no unfainted Pokemon") if sendout1<0
   sendout2=pbFindNextUnfainted(@party1,pbSecondPartyBegin(0))
   raise _INTL("Player 2 has no unfainted Pokemon") if sendout2<0
   pbDisplayBrief(_INTL("{1} sent\r\nout {2}!  Go! {3}!",@player[1].fullname,@party1[sendout2].name,@party1[sendout1].name))
   self.pbPlayer.seen[@party1[sendout1].species]=true
   self.pbPlayer.seen[@party1[sendout2].species]=true
  else
   sendout1=pbFindNextUnfainted(@party1,0)
   sendout2=pbFindNextUnfainted(@party1,sendout1+1)
   if sendout1<0 || sendout2<0
    raise _INTL("Player doesn't have two unfainted Pokemon")
   end
   pbDisplayBrief(_INTL("Go! {1} and {2}!",@party1[sendout1].name,@party1[sendout2].name))
  end
  @battlers[0].pbInitialize(@party1[sendout1],sendout1,false)
  @battlers[2].pbInitialize(@party1[sendout2],sendout2,false)
  @scene.pbSendOut(0,@party1[sendout1])
  @scene.pbSendOut(2,@party1[sendout2])
 else
  #
  # Initialize player in single battles
  #
  sendout=pbFindNextUnfainted(@party1,0)
  if sendout<0
   raise _INTL("Player has no unfainted Pokemon")
  end
  playerpoke=@party1[sendout]
  pbDisplayBrief(_INTL("Go! {1}!",playerpoke.name))
  @battlers[0].pbInitialize(playerpoke,sendout,false)
  @scene.pbSendOut(0,playerpoke)
 end

and replace with:

 #
 # Initialize players in double battles
 #
if @doublebattle
  if @player.is_a?(Array)
   sendout1=pbFindNextUnfainted(@party1,0,pbSecondPartyBegin(0))
   raise _INTL("Player 1 has no unfainted Pokemon") if sendout1<0
   sendout2=pbFindNextUnfainted(@party1,pbSecondPartyBegin(0))
   raise _INTL("Player 2 has no unfainted Pokemon") if sendout2<0
   pbDisplayBrief(_INTL("{1} sent out {2}!  Go! {3}!",@player[1].fullname,@party1[sendout2].name,@party1[sendout1].name))
   self.pbPlayer.seen[@party1[sendout1].species]=true
   self.pbPlayer.seen[@party1[sendout2].species]=true
  else
   sendout1=pbFindNextUnfainted(@party1,0)
   sendout2=pbFindNextUnfainted(@party1,sendout1+1)
if sendout1<0 || sendout2<0
    pbDisplayBrief(_INTL("Go! {1}!",@party1[sendout1].name))
    else
   pbDisplayBrief(_INTL("Go! {1} and {2}!",@party1[sendout1].name,@party1[sendout2].name))
 end end
 
if sendout1<0 || sendout2<0
  @battlers[0].pbInitialize(@party1[sendout1],sendout1,false)
  @scene.pbSendOut(0,@party1[sendout1])
 else
  @battlers[0].pbInitialize(@party1[sendout1],sendout1,false)
  @battlers[2].pbInitialize(@party1[sendout2],sendout2,false)
  @scene.pbSendOut(0,@party1[sendout1])
  @scene.pbSendOut(2,@party1[sendout2])
 

end
 else
  #
  # Initialize player in single battles
  #
  sendout=pbFindNextUnfainted(@party1,0)
  if sendout<0
   raise _INTL("Player has no unfainted Pokemon")
  end
  playerpoke=@party1[sendout]
    pbDisplayBrief(_INTL("Go! {1}!",playerpoke.name))
  @battlers[0].pbInitialize(playerpoke,sendout,false)
  @scene.pbSendOut(0,playerpoke)

And now you are done. Just note that, since Pokemon Essentials' instructions says nothing about this, if you want to force a double wild battle in an event, use the following, as a script in a conditional branch:

pbDoubleWildBattle(species1,level1,species2,level2,storetovariable?,canescape?)

So the following example would enter you in a fight with both Dialga and Palkia at once, each at level 70, and since it's a legendary battle you won't be able to escape.

 pbDoubleWildBattle(483,70,484,70,1,false)

Remember, unfortunately you can only catch one of them!

 

 

 
   
You can place news, pictures or advertisements here.