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

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

Boonzeet

Pokémon Secrets of the Ages Developer
188
Posts
15
Years
  • Boon's Phenomena​
    BMMGOtP.gif
    NlG3F9r.gif
    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:

    #Not Important

    All hail the wishmaker
    910
    Posts
    4
    Years
  • 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
     

    Boonzeet

    Pokémon Secrets of the Ages Developer
    188
    Posts
    15
    Years
  • 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:
    350
    Posts
    5
    Years
  • 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.
     

    Boonzeet

    Pokémon Secrets of the Ages Developer
    188
    Posts
    15
    Years
  • 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:

    Boonzeet

    Pokémon Secrets of the Ages Developer
    188
    Posts
    15
    Years
  • Added a minor update - you can now make phenomena permanently enabled by setting the switch number to -1!
     
    44
    Posts
    6
    Years
    • Seen Jul 13, 2021
    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.
     

    Boonzeet

    Pokémon Secrets of the Ages Developer
    188
    Posts
    15
    Years
  • 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.
     

    Boonzeet

    Pokémon Secrets of the Ages Developer
    188
    Posts
    15
    Years
  • 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
     
    162
    Posts
    7
    Years
    • Seen today
    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
     

    Boonzeet

    Pokémon Secrets of the Ages Developer
    188
    Posts
    15
    Years
  • 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?
     
    162
    Posts
    7
    Years
    • Seen today
    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.
     
    80
    Posts
    5
    Years
    • Seen Nov 5, 2023
    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
     
    50
    Posts
    4
    Years
    • Seen Oct 17, 2023
    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?
     
    2
    Posts
    4
    Years
    • Seen Aug 24, 2020
    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