• Just a reminder that providing specifics on, sharing links to, or naming websites where ROMs can be accessed is against the rules. If your post has any of this information it will be removed.
  • Ever thought it'd be cool to have your art, writing, or challenge runs featured on PokéCommunity? Click here for info - we'd love to spotlight your work!
  • Our weekly protagonist poll is now up! Vote for your favorite Conquest protagonist in the poll by clicking here.
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

[v19.1] Boon's Phenomena 3.0: BW Style Grass Rustle, Cave Dust + More!

Boonzeet

Pokémon Secrets of the Ages Developer
  • 188
    Posts
    16
    Years
    Boon's Phenomena​
    [PokeCommunity.com] [v19.1] Boon's Phenomena 3.0: BW Style Grass Rustle, Cave Dust + More!
    [PokeCommunity.com] [v19.1] Boon's Phenomena 3.0: BW Style Grass Rustle, Cave Dust + More!
    My favourite feature of Black and White was the phenomena - random events that let you snag good items or rare Pokémon, or even just fighting Audinos for a good EXP boost. So I've created it in Essentials!
    Updated to version 3.0 to include v20.1 compatibility and performance tweaks.


    Features

    • All 4 random events - Grass rustling, Water bubbles, Cave dust and Flying birds, complete with sound effects
    • Random item drops for caves and birds, just like Gen V
    • Optional flags to increase chances of shininess and add chances for random egg moves, perfect IVs and hidden abilities!
    • Distance-based sound effect volume
    • Custom battle music option
    • No need for events - works with terrain tags
    • Toggleable with a switch to protect cutscenes
    • Block entire rows, columns or individual tiles from showing phenomena on a per-map basis, to prevent inaccessible phenomena!
    To Install

    To use the script, download the ZIP file of the script and extract it to your game folder. If you'd like to use the animations, copy the Animations.rxdata to your Data folder (please back up your previous version and ensure your project is NOT open before doing this).

    Configuration can be found in Plugins/Boons_Phenomena/000_Config.rb. To set up phenomena for a map, use the Debug menu and set up the encounter types. They are as follows: PhenomenonGrass, PhenomenonWater, PhenomenonCave and PhenomenonBird. The switch defined in config must be set to ON and the player must have a party for phenomena to appear.

    v18 & v19 versions (unsupported)
    Spoiler:
     
    Last edited:
    It would be better if you didn't need to change the terrain tag so maybe change this:
    Code:
    module PBTerrain 
      BirdBridge = 18 
    end
    To
    Code:
    module PBTerrain
     BirdBridge = 0
    end
    Just so any passable tile is available for a phenomenon
    Of course don't change the cave ones as those would get the bird animation
    And maybe put it at the top so anyone can edit without having to look for it
     
    It would be better if you didn't need to change the terrain tag so maybe change this:
    ...
    Just so any passable tile is available for a phenomenon
    Of course don't change the cave ones as those would get the bird animation
    And maybe put it at the top so anyone can edit without having to look for it

    The reason I've given the bird tiles a custom terrain tag is to prevent them appearing where the player can't reach.

    On some maps like the map for the bridges in BW there can be walkable tiles that the player could never reach in the background that would get the bird event. But of course if you want it the other way it's easy to change - I will include it at the top config.
     
    Last edited:
    I get an error of PBS saying that the map value is invalid
    ( While the mapID exists)
    And the no. Of Pokemon is less in the route.
     
    I get an error of PBS saying that the map value is invalid
    ( While the mapID exists)
    And the no. Of Pokemon is less in the route.

    Could you show me the specific error? The only map ID used by this script is the current map ID. There might be a different issue with your PBS file formats

    Edit: Don't actually copy the PBS file example - you will need to set this up to match your own game. It's just an example of the 4 configs
     
    Last edited:
    I copied the PBS one.. but changed the values..

    This is unrelated to my script. Undo the changes to your PBS file and instead set it up through the in game menu Debug>Edit information>Edit Wild Encounters
     
    Added a minor update - you can now make phenomena permanently enabled by setting the switch number to -1!
     
    Hi!
    I'm kinda interested in knowing if you know how I could make that the encounters found using these Phenomenons, have a random egg move.
    That or have 2-3 perfect IVs, or both!
    Thank you, I've been loving this script so far.
     
    Hi!
    I'm kinda interested in knowing if you know how I could make that the encounters found using these Phenomenons, have a random egg move.
    That or have 2-3 perfect IVs, or both!
    Thank you, I've been loving this script so far.

    This is a great idea! I'll work on it and make it toggleable in the settings.
     
    Updated to Version 1.1.

    This version includes:

    Flag for 4x chance of shininess
    Ability to add probability of the encountered pokemon having:
    A random egg move
    1-2 perfect IVs
    Their hidden ability
     
    Updated to Version 1.1.

    This version includes:

    Flag for 4x chance of shininess
    Ability to add probability of the encountered pokemon having:
    A random egg move
    1-2 perfect IVs
    Their hidden ability

    Greaaat ;D Thanks!
     
    Updated to Version 1.1.

    This version includes:

    Flag for 4x chance of shininess
    Ability to add probability of the encountered pokemon having:
    A random egg move
    1-2 perfect IVs
    Their hidden ability

    By the way...

    I use the SEASONS script, in which the graphics of the grass change depending on the season of the year, so I made an adjustment to use more than one animation according to the time of the year, in case someone serves ...

    In the settings of the script replace...

    Code:
    # Animations and sound effects
    GRASS_PHENOMENON_ANIMATION_ID = 57

    with

    Code:
    # Animations and sound effects
    GRASS_PHENOMENON_ANIMATION_ID = 57 #This for SUMMER
    GRASS_PHENOMENON_ANIMATIONSPRING_ID = 61 #This for SPRING
    GRASS_PHENOMENON_ANIMATIONWINTER_ID = 62 #This for WINTER
    GRASS_PHENOMENON_ANIMATIONAUTUMN_ID = 63 #This for AUTUMN

    and then replace...

    Code:
    # Draws the appropriate animation for the phenomenon at x,y
    def phenomenonDrawAnimation(x, y, type, sound = true, dist = 6)
      case type
      when 0
        animation = GRASS_PHENOMENON_ANIMATION_ID
        se = GRASS_PHENOMENON_SE
        height = 1
      when 1
        animation = WATER_PHENOMENON_ANIMATION_ID
        se = WATER_PHENOMENON_SE
        height = 0
      when 2
        animation = CAVE_PHENOMENON_ANIMATION_ID
        se = CAVE_PHENOMENON_SE
        height = 1
      when 3
        animation = BIRD_PHENOMENON_ANIMATION_ID
        se = BIRD_PHENOMENON_SE
        height = 0
      end
      $scene.spriteset.addUserAnimation(animation, $PokemonTemp.phenomenon[0], $PokemonTemp.phenomenon[1], true, height)
      pbSEPlay(se, [75, 65, 55, 40, 27, 22, 15][dist]) if sound
    end

    with

    Code:
    # Draws the appropriate animation for the phenomenon at x,y
    def phenomenonDrawAnimation(x, y, type, sound = true, dist = 6)
      case type
      when 0
         if $PokemonGlobal.getSeason==3
        animation = GRASS_PHENOMENON_ANIMATION_ID
        se = GRASS_PHENOMENON_SE
        height = 1
      elsif $PokemonGlobal.getSeason==2
        animation = GRASS_PHENOMENON_ANIMATIONSPRING_ID
        se = GRASS_PHENOMENON_SE
        height = 1
      elsif $PokemonGlobal.getSeason==1
        animation = GRASS_PHENOMENON_ANIMATIONWINTER_ID
        se = GRASS_PHENOMENON_SE
        height = 1
      elsif $PokemonGlobal.getSeason==4
        animation = GRASS_PHENOMENON_ANIMATIONAUTUMN_ID
        se = GRASS_PHENOMENON_SE
        height = 1
        end
      when 1
        animation = WATER_PHENOMENON_ANIMATION_ID
        se = WATER_PHENOMENON_SE
        height = 0
      when 2
        animation = CAVE_PHENOMENON_ANIMATION_ID
        se = CAVE_PHENOMENON_SE
        height = 1
      when 3
        animation = BIRD_PHENOMENON_ANIMATION_ID
        se = BIRD_PHENOMENON_SE
        height = 0
      end
      $scene.spriteset.addUserAnimation(animation, $PokemonTemp.phenomenon[0], $PokemonTemp.phenomenon[1], true, height)
      pbSEPlay(se, [75, 65, 55, 40, 27, 22, 15][dist]) if sound
    end
     
    By the way...

    I use the SEASONS script, in which the graphics of the grass change depending on the season of the year, so I made an adjustment to use more than one animation according to the time of the year, in case someone serves ...

    Great idea! You could improve the performance of that last replacement by shortening it to:

    Code:
    # Draws the appropriate animation for the phenomenon at x,y
    def phenomenonDrawAnimation(x, y, type, sound = true, dist = 6)
      case type
      when 0
    	if defined?($PokemonGlobal.getSeason)
    		case $PokemonGlobal.getSeason
    		when 1
    			animation = GRASS_PHENOMENON_ANIMATIONWINTER_ID
    		when 2
    			animation = GRASS_PHENOMENON_ANIMATIONSPRING_ID
    		when 3
    			animation = GRASS_PHENOMENON_ANIMATION_ID
    		when 4
    			animation = GRASS_PHENOMENON_ANIMATIONAUTUMN_ID
    		end
    	else
    		animation = GRASS_PHENOMENON_ANIMATION_ID
    	end
        se = GRASS_PHENOMENON_SE
        height = 1
      when 1
        animation = WATER_PHENOMENON_ANIMATION_ID
        se = WATER_PHENOMENON_SE
        height = 0
      when 2
        animation = CAVE_PHENOMENON_ANIMATION_ID
        se = CAVE_PHENOMENON_SE
        height = 1
      when 3
        animation = BIRD_PHENOMENON_ANIMATION_ID
        se = BIRD_PHENOMENON_SE
        height = 0
      end
      $scene.spriteset.addUserAnimation(animation, $PokemonTemp.phenomenon[0], $PokemonTemp.phenomenon[1], true, height)
      pbSEPlay(se, [75, 65, 55, 40, 27, 22, 15][dist]) if sound
    end

    I wonder if it would be good to bake seasons support into it?
     
    Great idea! You could improve the performance of that last replacement by shortening it to:

    Code:
    # Draws the appropriate animation for the phenomenon at x,y
    def phenomenonDrawAnimation(x, y, type, sound = true, dist = 6)
      case type
      when 0
    	if defined?($PokemonGlobal.getSeason)
    		case $PokemonGlobal.getSeason
    		when 1
    			animation = GRASS_PHENOMENON_ANIMATIONWINTER_ID
    		when 2
    			animation = GRASS_PHENOMENON_ANIMATIONSPRING_ID
    		when 3
    			animation = GRASS_PHENOMENON_ANIMATION_ID
    		when 4
    			animation = GRASS_PHENOMENON_ANIMATIONAUTUMN_ID
    		end
    	else
    		animation = GRASS_PHENOMENON_ANIMATION_ID
    	end
        se = GRASS_PHENOMENON_SE
        height = 1
      when 1
        animation = WATER_PHENOMENON_ANIMATION_ID
        se = WATER_PHENOMENON_SE
        height = 0
      when 2
        animation = CAVE_PHENOMENON_ANIMATION_ID
        se = CAVE_PHENOMENON_SE
        height = 1
      when 3
        animation = BIRD_PHENOMENON_ANIMATION_ID
        se = BIRD_PHENOMENON_SE
        height = 0
      end
      $scene.spriteset.addUserAnimation(animation, $PokemonTemp.phenomenon[0], $PokemonTemp.phenomenon[1], true, height)
      pbSEPlay(se, [75, 65, 55, 40, 27, 22, 15][dist]) if sound
    end

    I wonder if it would be good to bake seasons support into it?


    Hahaha right. I'm not very good at scripting, in fact ... I would say I don't know anything hahahaa ...

    It could be a good idea, the encounters could be different.

    Thank you for your great work.
     
    I have an idea on how i will implement it in my Game. Maybe i add it as endgame content. Like a way to get Rare Pokémon after you did the Main Story. I would find it interesting fun
     
    Hi, I have a question. I tried version 16.2 and followed all the steps, but it fails.
    Is there no way to put this script in version 16.2?
     
    Hi, i have a problem with your script. I implemented everything as you said but when I run my game i get an error in RPG__Sprite. Any idea how i can fix it? Thank you in advance.
     
    Back
    Top