• Just a reminder that providing specifics on, sharing links to, or naming websites where ROMs can be accessed is against the rules. If your post has any of this information it will be removed.
  • Our friends from the Johto Times are hosting a favorite Pokémon poll - and we'd love for you to participate! Click here for information on how to vote for your favorites!
  • Cyndy, May, Hero (Conquest), or Wes - which Pokémon protagonist is your favorite? Let us know by voting in our poll!
  • 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.

Script: Pokemon Outbreaks

Sometimes swarms of Pokemon appear on routes they normally don't. This script just replicates the Gen 4 mechanics, for the most part. As long as the switch to activate is on, it will generate a predefined outbreak of Pokemon on one route for the time period you have set up. The script defaults to 24 hours and will persist through a save and quit.

It's a plug and play script, defaulting to being enabled with switch 100, and it has a 40% chance of replacing the normal encounter on a map.

Included are two utility methods, pbGenerateOutbreak and pbOutbreakInformation. pbGenerateOutbreak, just creates a new outbreak and resets the time period, while pbOutbreakInformation takes two arguments, the variable number to save the species and the variable number to save the map name, and it also returns an array containing the map id and species index. pbOutbreakInformation will set the variables to -1 if there is no outbreak and returns [-1,-1].

To create a new possible outbreak, you just need to add another array to OUTBREAKSPECIES. The script comes predefined with two encounters, Doduo on map id 5 that only spawn at level 2 and Voltorb on map id 5 that spawn at level 28-29.

Now you can set encounters to work with only a certain Encounter type, so you don't get Zigzagoons while you surf!

v17/v18 Pastebin: https://pastebin.com/REm39gHv
v19 Pastebin: https://pastebin.com/c5LU0ThP
v20 Pastebin https://pastebin.com/UQpWgsTq
 
Last edited:
could you help me understand how to use the pbOutbreakInformation method? when i create an event using essentials 17.2 with this in a script it returns an error "exception:argument error, wrong number of arguments (0 of 2)" other then that everything works great!
 
You have to pass 2 arguments through pbOutbreakInformation, the first being the Pokemon you want to spawn and the second being the map you want them to spawn on. I don't have this script installed but my best guess would be to do something like this.

pbOutbreakInformation(DITTO,42)
 
could you help me understand how to use the pbOutbreakInformation method? when i create an event using essentials 17.2 with this in a script it returns an error "exception:argument error, wrong number of arguments (0 of 2)" other then that everything works great!

pbOutbreakInformation takes two arguments, the index of the game variable used to save the species, and the index used to save the map name. You can set them to zero or under if you don't want to set the value to any game variable.
 
i figured out the outbreak info, thanks! but it appears its not automatically generating a new outbreak. I changed the outbreak time to 4 hours but its been the same outbreak for days. any suggestions?
 
heres what i have set up :
OUTBREAKTIME = 4
OUTBREAKCHANCE = 40
OUTBREAKSWITCH = 129
OUTBREAKSPECIES = [
[20,:BULBASAUR,2,5,[EncounterTypes::Land]],
[21,:CHARMANDER,3,8,[EncounterTypes::Land]],
[22,:CHARMANDER,7,12,[EncounterTypes::Land]],
[25,:PORYGON,18,21,[EncounterTypes::Land]],
[28,:DRATINI,18,23,[EncounterTypes::Water]],
[32,:CHANSEY,23,23,[EncounterTypes::Land]],
[34,:TAUROS,27,33,[EncounterTypes::Land]],
[34,:SCYTHER,25,31,[EncounterTypes::Land]],
[34,:PINSIR,25,31,[EncounterTypes::Land]],
[36,:EEVEE,22,26,[EncounterTypes::Land]],
[38,:LAPRAS,25,35,[EncounterTypes::Water]],
[39,:LAPRAS,25,35,[EncounterTypes::Water]],
[42,:EXEGGCUTE,32,34,[EncounterTypes::Land]],
[43,:SQUIRTLE,7,12,[EncounterTypes::Land]],
[44,:SQUIRTLE,9,14,[EncounterTypes::Land]],
[209,:BULBASAUR,3,6,[EncounterTypes::Land]],
[220,:KANGASKHAN,14,18,[EncounterTypes::Cave]],
]
class PokemonGlobalMetadata
attr_accessor :currentOutbreak
end

thanks so much for the responses!
 
Okay, so here's the rub, I can't reproduce the issue. I did stick in FL's unreal time, since I wasn't in the mood to set this up for an overnight test, but that has no impact on the running of the script itself.

Here's my debug code to see if the generation code even activates. Do recall that this is RNG in the end, and it's possible to get the same pokemon multiple times in a row technically. I did get two different encounters, and EEVEE and a LAPRAS, generated
Code:
def pbGenerateOutbreak
  index=rand(OUTBREAKSPECIES.length)
  $PokemonGlobal.currentOutbreak=[index,pbGetTimeNow]
  newenc=OUTBREAKSPECIES[$PokemonGlobal.currentOutbreak[0]]
  species=getID(PBSpecies,newenc[1])
  p _INTL("ENCOUNTER INDEX: {1} ({2} on {3})",index,PBSpecies.getName(species), newenc[0])
end
Also, in your code, you have an extra comma at the end of [220,:KANGASKHAN,14,18,[EncounterTypes::Cave]],. I realized I removed it on my end, so that may or may not have an impact. (It probably would just mess with the encounter modifier and the outbreak info code though, since the script wasn't made to expect a nil, the generation would just pull a regular index, it doesn't care about that.)
 
ok, so i just want to make sure im doing this right, do i need to use the pbGenerateOutbreak command in an event somewhere to generate a new outbreak? or is this script supposed to just automatically generate a new outbreak every so many hours? because if i use the pbGenerateOutbreak command it works, but lets say i set the outbreak time to 1 hour, the outbreak remains the same past 1 hour.

also, in an unrelated issue i have solved, i was getting an error for a water outbreak on a map with both land and water encounters. it appears you have a small typo on line 49 of your script "return encouter if !newenc[4].include?($PokemonEncounters.pbEncounterType)" it appears you missed an "n" in return encounter at the beginning. i changed this and it fixed my error.
 
after testing out your script in a clean version of essentials, it worked just fine, so i went back and finally figured it out. turns out if you change what switch activates the outbreaks, you also need to change the (100) in line "if rand(100)<OUTBREAKCHANCE" to whatever switch you set, i did this and it works just fine now
 
after testing out your script in a clean version of essentials, it worked just fine, so i went back and finally figured it out. turns out if you change what switch activates the outbreaks, you also need to change the (100) in line "if rand(100)<OUTBREAKCHANCE" to whatever switch you set, i did this and it works just fine now

That's not how that works. rand(100) is literally, get a random number from 0 to 99. so by default it's a 40% chance. what you did was change it to rand(129), so a 40/129 chance of the encounter getting replaced.

Call it bad luck.

Anyway, I fixed the misspelled encounter error, sorry about that one.
 
Hello! This is working great! Unless I am mistaken, you can only have one active outbreak at a given moment of time. How could you possibly have two or three outbreaks occurring simultaneously?
 
Hello! This is working great! Unless I am mistaken, you can only have one active outbreak at a given moment of time. How could you possibly have two or three outbreaks occurring simultaneously?

You are not mistaken, the script as is only supports 1 outbreak at a time. It saves the index and start time of the outbreak in $PokemonGlobal.currentOutbreak, so you would probably have to start there to add multiple outbreaks (save multiple indexes?).
 
Thanks! In case anyone is interested, I found a simple, although not very elegant nor flexible way of having three simultaneous outbreaks.

Code:
EncounterModifier.register(proc {|encounter|
   return encounter if !encounter
   return encounter if !$game_switches[OUTBREAKSWITCH]
   if !$PokemonGlobal.currentOutbreak ||
     $PokemonGlobal.currentOutbreak[0]<=-1 ||
     ((pbGetTimeNow-$PokemonGlobal.currentOutbreak[1])>OUTBREAKTIME*60*60)
     $PokemonGlobal.currentOutbreak=[COLOR="RoyalBlue"][-1,nil,-1,-1][/COLOR]
   end
   if $PokemonGlobal.currentOutbreak[0]>-1
     newenc=OUTBREAKSPECIES[$PokemonGlobal.currentOutbreak[0]]
     return encounter if $game_map && $game_map.map_id!=newenc[0]
     return encounter if !newenc[4].include?($PokemonEncounters.pbEncounterType)
     if rand(100)<OUTBREAKCHANCE
       level=rand(newenc[3]-newenc[2])+newenc[2]
       return [getID(PBSpecies,newenc[1]),level]
     end
   end
[COLOR="RoyalBlue"]   if $PokemonGlobal.currentOutbreak[2]>-1
     newenc=OUTBREAKSPECIES[$PokemonGlobal.currentOutbreak[2]]
     return encounter if $game_map && $game_map.map_id!=newenc[0]
     return encounter if !newenc[4].include?($PokemonEncounters.pbEncounterType)
     if rand(100)<OUTBREAKCHANCE
       level=rand(newenc[3]-newenc[2])+newenc[2]
       return [getID(PBSpecies,newenc[1]),level]
     end
   end
   if $PokemonGlobal.currentOutbreak[3]>-1
     newenc=OUTBREAKSPECIES[$PokemonGlobal.currentOutbreak[3]]
     return encounter if $game_map && $game_map.map_id!=newenc[0]
     return encounter if !newenc[4].include?($PokemonEncounters.pbEncounterType)
     if rand(100)<OUTBREAKCHANCE
       level=rand(newenc[3]-newenc[2])+newenc[2]
       return [getID(PBSpecies,newenc[1]),level]
     end[/COLOR]
   end
   return encounter
})

Code:
def pbGenerateOutbreak
 index=rand(OUTBREAKSPECIES.length)
  [COLOR="RoyalBlue"] loop do
    index2=rand(OUTBREAKSPECIES.length)
    index3=rand(OUTBREAKSPECIES.length)
    if index != index2 && index != index3 && index2 != index3
      break
    end
  end
  $PokemonGlobal.currentOutbreak=[index,pbGetTimeNow,index2,index3][/COLOR]
end
 
Last edited:
Does anyone know how to add a way to find out what Pokemon is swarming in what location via a TV broadcast/NPC?
 

I tried it and I got this error:

---------------------------
Pokemon Essentials
---------------------------
[Pokémon Essentials version 17.2]

Exception: RuntimeError

Message: Script error within event 4 (coords 12,13), map 155 (ROUTE 1):

Exception: SyntaxError

Message: (eval):1:in `pbExecuteScript'compile error
(eval):1: syntax error
@pbOutbreakInformation(0,1)
^

***Full script:

@pbOutbreakInformation(0,1)




Interpreter:276:in `pbExecuteScript'

Interpreter:1606:in `command_355'

Interpreter:494:in `execute_command'

Interpreter:193:in `update'

Interpreter:106:in `loop'

Interpreter:198:in `update'

Scene_Map:163:in `follow_update'

Scene_Map:161:in `loop'

Scene_Map:170:in `follow_update'

Following_Pokemon:1935:in `update'



This exception was logged in

C:\Users\Kids\Saved Games\Pokemon Essentials\errorlog.txt.

Press Ctrl+C to copy this message to the clipboard.
---------------------------
OK
---------------------------
 
Back
Top