 |
|
 |

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!
|
|
 |