• Do not use Discord to host any images you post, these links expire quickly! You can learn how to add images to your posts here.
  • The Eevee Expo Game Jam has concluded! 🎉 Head on over to the game jam forum to play through the games.
    Don't forget to come back September 21st to vote for your favorites!
  • Reminder: AI-generated content is not allowed on the forums per the Rules and Regulations. Please contact us if you have any questions!
Boon's Phenomena: BW Style Grass Rustle, Cave Dust + More

Resource Boon's Phenomena: BW Style Grass Rustle, Cave Dust + More 3.0.1

I'm asking because, i've tested it in essentials v20 and it gave me an error related to the plugin. I always test the plugins before asking
I never suggested that you didn’t test it. I linked that to suggest that you could try updating it yourself, and to say that if you weren’t interested in trying to update it, there’s not really any point in asking Boonzeet.
And i posted here in hope that the owner may see it later. Since that people have real life, they may not be online for a few time. But i don't intend to rush things or to be rude.
But why do you want Boonzeet to see your message? If/when he returns to Relic Castle, he’s going to know that a new version of Essentials is out. What will reminding him of that fact do, other than put pressure on him?
 
I never suggested that you didn’t test it. I linked that to suggest that you could try updating it yourself, and to say that if you weren’t interested in trying to update it, there’s not really any point in asking Boonzeet.

But why do you want Boonzeet to see your message? If/when he returns to Relic Castle, he’s going to know that a new version of Essentials is out. What will reminding him of that fact do, other than put pressure on him?
I understand your point of view. Yes, i always try to fix myself the scripts, someones i did it, but others i can't figure out, that's why. About the thing to "attract" attention for the update thing from the owner, i realised that i've asked for some help in certain scripts and the owners, times to times, came online and they didn't update the scripts, even if they took their time, and/or never answer the message, saying if they planned to do it or not. If noone says nothing, i never know if things will be updated or not. I don't consider this as a "pressure" thing, i'm just asking if they could update the scripts or not.
 
Hey I'm having multiple issues with this plugin and I'm not sure how to fix them or what I could be doing wrong. Basically I was having issues with having phanomenon spawn way too often/on every possible step which I previous asked about on a now deleted post because I have encountered a new problem where now a phanomenon wont even show up at all. Really confused by all this because I havent changed anything in the script so any help would be great. Thanks.
I'm having the same issue. Has anyone figured out a fix by any chance?
 
Since I needed it myself, I have gone and updated this script to a working version for Essentials v20.1, I haven't done a ton of testing, but I do know that it works for what I needed it for, I can attempt to fix other issues with this version if me updating it did break some things.

Credits to myself, and Vendily for some help.

Code:
Expand Collapse Copy
#-------------------------------------------------------------------------------
# Phenomenon: BW Style Grass Rustle, Water Drops, Cave Dust & Flying Birds
# v3.0 by Boonzeet with code help from Maruno & Marin, Grass graphic by DaSpirit
#-------------------------------------------------------------------------------
# Please give credit when using. Changes in this version:
# - Upgraded for Essentials v19
# - Block inaccessible tiles from showing phenomena
#-------------------------------------------------------------------------------
# Upgraded for Essentials v20.1 by Ned, with help from Vendily
#===============================================================================
# Main code
#-------------------------------------------------------------------------------
# SUPPORT CAN'T BE PROVIDED FOR EDITS MADE TO THIS FILE.
#===============================================================================
class Game_Temp
  attr_accessor :phenomenon            # [x,y,type,timer]
  attr_accessor :phenomenonPossible    # bool
  attr_accessor :phenomenonActivated   # bool
end

class Array                            # Add quick random array fetch - by Marin
  def random
    return self[rand(self.size)]
  end
end

class Phenomenon
  attr_accessor :timer # number
  attr_accessor :x
  attr_accessor :y
  attr_accessor :type # symbol
  attr_accessor :active # bool
  attr_accessor :drawing # bool

  def initialize(types)
    Kernel.echoln("Initializing for map with types: #{types}")
    @x = nil
    @y = nil
    @types = types
    timer_val = PhenomenonConfig::Frequency <= 60 ? 60 : rand(PhenomenonConfig::Frequency - 60) + 6
    @timer = Graphics.frame_count + timer_val
    @active = false
  end

  def generate!
    Kernel.echo("Generating phenomena...\n")
    phenomenon_tiles = []   # x, y, type
    # limit range to around the player
    x_range = [[$game_player.x - 16, 0].max, [$game_player.x + 16, $game_map.width].min]
    y_range = [[$game_player.y - 16, 0].max, [$game_player.y + 16, $game_map.height].min]
    # list all grass tiles
    blocked_tiles = nil
    if PhenomenonConfig::BlockedTiles.key?($game_map.map_id)
      blocked_tiles = PhenomenonConfig::BlockedTiles[$game_map.map_id]
    end
    for x in x_range[0]..x_range[1]
      for y in y_range[0]..y_range[1]
        if !blocked_tiles.nil?
          next if blocked_tiles[:x] && blocked_tiles[:x].include?(x)
          next if blocked_tiles[:y] && blocked_tiles[:x].include?(y)
          next if blocked_tiles[:tiles] && blocked_tiles[:x].include?([x, y])
        end
        terrain_tag = $game_map.terrain_tag(x, y)
        if @types.include?(:PhenomenonGrass) && terrain_tag.id == :Grass
          phenomenon_tiles.push([x, y, :PhenomenonGrass])
        elsif @types.include?(:PhenomenonWater) && (terrain_tag.id == :Water || terrain_tag.id == :StillWater)
          phenomenon_tiles.push([x, y, :PhenomenonWater])
        elsif @types.include?(:PhenomenonCave) && !terrain_tag.can_surf && $MapFactory.isPassableStrict?($game_map.map_id, x, y, $game_player)
          phenomenon_tiles.push([x, y, :PhenomenonCave])
        elsif @types.include?(:PhenomenonBird) && terrain_tag.id == :BirdBridge && $MapFactory.isPassableStrict?($game_map.map_id, x, y, $game_player)
          phenomenon_tiles.push([x, y, :PhenomenonBird])
        end
      end
    end
    if phenomenon_tiles.length == 0
      Kernel.echoln("A phenomenon is set up but no compatible tiles are available! Phenomena: #{@types}")
      pbPhenomenonCancel
    else
      selected_tile = phenomenon_tiles.random
      @x = selected_tile[0]
      @y = selected_tile[1]
      @type = selected_tile[2]
      @timer = Graphics.frame_count + PhenomenonConfig::Timer
      @active = true
    end
  end

  def activate!
    Kernel.echoln("Activating phenomenon for #{@type}")
    encounter = nil
    item = nil
    chance = rand(10) # Different types have chance different effects, e.g. items in caves
    encounter = $PokemonEncounters.choose_wild_pokemon(@type)
    if @type == :PhenomenonCave && chance < 5
      item = chance > 0 ? PhenomenonConfig::Items[:commonCave].random : PhenomenonConfig::Items[:rareCave].random
    elsif @type == :PhenomenonBird && chance < 8
      item = chance > 0 ? PhenomenonConfig::Items[:bird].random : :PRETTYWING
    end
    if item != nil
      pbPhenomenonCancel
      Kernel.pbReceiveItem(item)
    elsif encounter != nil
      if PhenomenonConfig::BattleMusic != "" && FileTest.audio_exist?("Audio/BGM/#{PhenomenonConfig::BattleMusic}")
        $PokemonGlobal.nextBattleBGM = PhenomenonConfig::BattleMusic
      end
      $game_temp.forceSingleBattle = true
      $game_temp.phenomenonActivated = true
      pbWildBattle(encounter[0], encounter[1])
    end
  end

  def drawAnim(sound)
    dist = (((@x - $game_player.x).abs + (@y - $game_player.y).abs) / 4).floor
    if dist <= 6 && dist >= 0
      animation = PhenomenonConfig::Types[@type]
      $scene.spriteset.addUserAnimation(animation[0], @x, @y, true, animation[2])
      pbSEPlay(animation[1], [75, 65, 55, 40, 27, 22, 15][dist]) if sound
    end
    pbWait(1)
    @drawing = false
  end
end

# Cancels the phenomenon
def pbPhenomenonCancel
  $game_temp.phenomenon = nil
end

def pbPhenomenonLoadTypes
  types = []
  PhenomenonConfig::Types.each do |(key, value)|
    # Kernel.echo("Testing map #{$game_map.map_id}, against #{key}, with value #{value}...\n")
    types.push(key) if $PokemonEncounters && $PokemonEncounters.map_has_encounter_type?($game_map.map_id, key)
  end
  $game_temp.phenomenonPossible = types.size > 0 && $Trainer.party.length > 0 # set to false if no encounters for map or trainer has no pokemon
  $game_temp.phenomenonTypes = types
end

def pbPhenomenonInactive?
  return defined?($game_temp.phenomenon) && $game_temp.phenomenon != nil && !$game_temp.phenomenon.active
end

# Returns true if an existing phenomenon has been set up and exists
def pbPhenomenonActive?
  return defined?($game_temp.phenomenon) && $game_temp.phenomenon != nil && $game_temp.phenomenon.active
end

# Returns true if there's a phenomenon and the player is on top of it
def pbPhenomenonPlayerOn?
  return pbPhenomenonActive? && ($game_player.x == $game_temp.phenomenon.x && $game_player.y == $game_temp.phenomenon.y)
end

################################################################################
# Event handlers
################################################################################
class Game_Temp
  attr_accessor :phenomenonExp
  attr_accessor :phenomenonTypes
  attr_accessor :phenomenon
end

# Cancels phenomenon on battle start to stop animation during battle intro
EventHandlers.add(:on_start_battle, :boon_phenomenon_start_battle,
proc {
  $game_temp.phenomenonExp = true if PhenomenonConfig::Pokemon[:expBoost] && pbPhenomenonPlayerOn?
  pbPhenomenonCancel
    }
)

EventHandlers.add(:on_end_battle, :boon_phenomenon_end_battle,
proc {
  $game_temp.phenomenonExp = false
  $game_temp.phenomenonActivated = false
    }
)

# Generate the phenomenon or process the player standing on it
EventHandlers.add(:on_player_step_taken, :boon_phenomenon_update,
proc {
  if $game_temp.phenomenonPossible
    if pbPhenomenonPlayerOn?
      $game_temp.phenomenon.activate!
    elsif pbPhenomenonInactive?
      if Graphics.frame_count >= $game_temp.phenomenon.timer
        $game_temp.phenomenon.generate!
      end
    elsif $game_temp.phenomenon == nil && $game_temp.phenomenonTypes.size && (PhenomenonConfig::Switch == -1 || $game_switches[PhenomenonConfig::Switch])
      $game_temp.phenomenon = Phenomenon.new($game_temp.phenomenonTypes)
    end
  end
    }
)
# Remove any phenomenon events on map change
EventHandlers.add(:on_leave_map, :boon_phenomenon_leave_map,
proc {
  pbPhenomenonCancel
    }
)

# Process map available encounters on map change
EventHandlers.add(:on_enter_map, :boon_phenomenon_enter_map,
proc{
  pbPhenomenonLoadTypes
    }
)

# Modify the wild encounter based on the settings above
EventHandlers.add(:on_wild_pokemon_created, :boon_phenomenon_wild_created,
proc{
  pokemon = e[0]
  if $game_temp.phenomenonActivated
    if PhenomenonConfig::Pokemon[:shiny] # 4x the normal shiny chance
      pokemon.makeShiny if rand(65536) <= Settings::SHINY_POKEMON_CHANCE * 4
    end
    if PhenomenonConfig::Pokemon[:ivs] > -1 && rand(PhenomenonConfig::Pokemon[:ivs]) == 0
      ivs = [:HP, :ATTACK, :SPECIAL_ATTACK, :DEFENSE, :SPECIAL_DEFENSE, :SPEED]
      ivs.shuffle!
      ivs[0..1].each do |i|
        pokemon.iv[i] = 31
      end
    end
    if PhenomenonConfig::Pokemon[:eggMoves] > -1 && rand(PhenomenonConfig::Pokemon[:eggMoves]) == 0
      moves = GameData::Species.get_species_form(pokemon.species, pokemon.form).egg_moves
      pokemon.learn_move(moves.random) if moves.length > 0
    end
    if PhenomenonConfig::Pokemon[:hiddenAbility] > -1 && rand(PhenomenonConfig::Pokemon[:hiddenAbility]) == 0
      a = GameData::Species.get(pokemon.species).hidden_abilities
      if !a.nil? && a.kind_of?(Array)
        pokemon.ability = a.random
      end
    end
  end
    }
)

################################################################################
# Class modifiers
################################################################################
class Spriteset_Map
  alias update_phenomenon update

  def update
    if $game_temp.phenomenonPossible && pbPhenomenonActive? && !$game_temp.in_menu
      phn = $game_temp.phenomenon
      if (PhenomenonConfig::Switch != -1 &&
          !$game_switches[PhenomenonConfig::Switch]) || Graphics.frame_count >= phn.timer
        pbPhenomenonCancel
      elsif !phn.drawing && Graphics.frame_count % 40 == 0 # play animation every 140 update ticks
        phn.drawing = true
        sound = phn.type == :PhenomenonGrass ? (Graphics.frame_count % 80 == 0) : true
        phn.drawAnim(sound)
      end
    end
    update_phenomenon
  end
end
 
Since I needed it myself, I have gone and updated this script to a working version for Essentials v20.1, I haven't done a ton of testing, but I do know that it works for what I needed it for, I can attempt to fix other issues with this version if me updating it did break some things.

Credits to myself, and Vendily for some help.

Code:
Expand Collapse Copy
#-------------------------------------------------------------------------------
# Phenomenon: BW Style Grass Rustle, Water Drops, Cave Dust & Flying Birds
# v3.0 by Boonzeet with code help from Maruno & Marin, Grass graphic by DaSpirit
#-------------------------------------------------------------------------------
# Please give credit when using. Changes in this version:
# - Upgraded for Essentials v19
# - Block inaccessible tiles from showing phenomena
#-------------------------------------------------------------------------------
# Upgraded for Essentials v20.1 by Ned, with help from Vendily
#===============================================================================
# Main code
#-------------------------------------------------------------------------------
# SUPPORT CAN'T BE PROVIDED FOR EDITS MADE TO THIS FILE.
#===============================================================================
class Game_Temp
  attr_accessor :phenomenon            # [x,y,type,timer]
  attr_accessor :phenomenonPossible    # bool
  attr_accessor :phenomenonActivated   # bool
end

class Array                            # Add quick random array fetch - by Marin
  def random
    return self[rand(self.size)]
  end
end

class Phenomenon
  attr_accessor :timer # number
  attr_accessor :x
  attr_accessor :y
  attr_accessor :type # symbol
  attr_accessor :active # bool
  attr_accessor :drawing # bool

  def initialize(types)
    Kernel.echoln("Initializing for map with types: #{types}")
    @x = nil
    @y = nil
    @types = types
    timer_val = PhenomenonConfig::Frequency <= 60 ? 60 : rand(PhenomenonConfig::Frequency - 60) + 6
    @timer = Graphics.frame_count + timer_val
    @active = false
  end

  def generate!
    Kernel.echo("Generating phenomena...\n")
    phenomenon_tiles = []   # x, y, type
    # limit range to around the player
    x_range = [[$game_player.x - 16, 0].max, [$game_player.x + 16, $game_map.width].min]
    y_range = [[$game_player.y - 16, 0].max, [$game_player.y + 16, $game_map.height].min]
    # list all grass tiles
    blocked_tiles = nil
    if PhenomenonConfig::BlockedTiles.key?($game_map.map_id)
      blocked_tiles = PhenomenonConfig::BlockedTiles[$game_map.map_id]
    end
    for x in x_range[0]..x_range[1]
      for y in y_range[0]..y_range[1]
        if !blocked_tiles.nil?
          next if blocked_tiles[:x] && blocked_tiles[:x].include?(x)
          next if blocked_tiles[:y] && blocked_tiles[:x].include?(y)
          next if blocked_tiles[:tiles] && blocked_tiles[:x].include?([x, y])
        end
        terrain_tag = $game_map.terrain_tag(x, y)
        if @types.include?(:PhenomenonGrass) && terrain_tag.id == :Grass
          phenomenon_tiles.push([x, y, :PhenomenonGrass])
        elsif @types.include?(:PhenomenonWater) && (terrain_tag.id == :Water || terrain_tag.id == :StillWater)
          phenomenon_tiles.push([x, y, :PhenomenonWater])
        elsif @types.include?(:PhenomenonCave) && !terrain_tag.can_surf && $MapFactory.isPassableStrict?($game_map.map_id, x, y, $game_player)
          phenomenon_tiles.push([x, y, :PhenomenonCave])
        elsif @types.include?(:PhenomenonBird) && terrain_tag.id == :BirdBridge && $MapFactory.isPassableStrict?($game_map.map_id, x, y, $game_player)
          phenomenon_tiles.push([x, y, :PhenomenonBird])
        end
      end
    end
    if phenomenon_tiles.length == 0
      Kernel.echoln("A phenomenon is set up but no compatible tiles are available! Phenomena: #{@types}")
      pbPhenomenonCancel
    else
      selected_tile = phenomenon_tiles.random
      @x = selected_tile[0]
      @y = selected_tile[1]
      @type = selected_tile[2]
      @timer = Graphics.frame_count + PhenomenonConfig::Timer
      @active = true
    end
  end

  def activate!
    Kernel.echoln("Activating phenomenon for #{@type}")
    encounter = nil
    item = nil
    chance = rand(10) # Different types have chance different effects, e.g. items in caves
    encounter = $PokemonEncounters.choose_wild_pokemon(@type)
    if @type == :PhenomenonCave && chance < 5
      item = chance > 0 ? PhenomenonConfig::Items[:commonCave].random : PhenomenonConfig::Items[:rareCave].random
    elsif @type == :PhenomenonBird && chance < 8
      item = chance > 0 ? PhenomenonConfig::Items[:bird].random : :PRETTYWING
    end
    if item != nil
      pbPhenomenonCancel
      Kernel.pbReceiveItem(item)
    elsif encounter != nil
      if PhenomenonConfig::BattleMusic != "" && FileTest.audio_exist?("Audio/BGM/#{PhenomenonConfig::BattleMusic}")
        $PokemonGlobal.nextBattleBGM = PhenomenonConfig::BattleMusic
      end
      $game_temp.forceSingleBattle = true
      $game_temp.phenomenonActivated = true
      pbWildBattle(encounter[0], encounter[1])
    end
  end

  def drawAnim(sound)
    dist = (((@x - $game_player.x).abs + (@y - $game_player.y).abs) / 4).floor
    if dist <= 6 && dist >= 0
      animation = PhenomenonConfig::Types[@type]
      $scene.spriteset.addUserAnimation(animation[0], @x, @y, true, animation[2])
      pbSEPlay(animation[1], [75, 65, 55, 40, 27, 22, 15][dist]) if sound
    end
    pbWait(1)
    @drawing = false
  end
end

# Cancels the phenomenon
def pbPhenomenonCancel
  $game_temp.phenomenon = nil
end

def pbPhenomenonLoadTypes
  types = []
  PhenomenonConfig::Types.each do |(key, value)|
    # Kernel.echo("Testing map #{$game_map.map_id}, against #{key}, with value #{value}...\n")
    types.push(key) if $PokemonEncounters && $PokemonEncounters.map_has_encounter_type?($game_map.map_id, key)
  end
  $game_temp.phenomenonPossible = types.size > 0 && $Trainer.party.length > 0 # set to false if no encounters for map or trainer has no pokemon
  $game_temp.phenomenonTypes = types
end

def pbPhenomenonInactive?
  return defined?($game_temp.phenomenon) && $game_temp.phenomenon != nil && !$game_temp.phenomenon.active
end

# Returns true if an existing phenomenon has been set up and exists
def pbPhenomenonActive?
  return defined?($game_temp.phenomenon) && $game_temp.phenomenon != nil && $game_temp.phenomenon.active
end

# Returns true if there's a phenomenon and the player is on top of it
def pbPhenomenonPlayerOn?
  return pbPhenomenonActive? && ($game_player.x == $game_temp.phenomenon.x && $game_player.y == $game_temp.phenomenon.y)
end

################################################################################
# Event handlers
################################################################################
class Game_Temp
  attr_accessor :phenomenonExp
  attr_accessor :phenomenonTypes
  attr_accessor :phenomenon
end

# Cancels phenomenon on battle start to stop animation during battle intro
EventHandlers.add(:on_start_battle, :boon_phenomenon_start_battle,
proc {
  $game_temp.phenomenonExp = true if PhenomenonConfig::Pokemon[:expBoost] && pbPhenomenonPlayerOn?
  pbPhenomenonCancel
    }
)

EventHandlers.add(:on_end_battle, :boon_phenomenon_end_battle,
proc {
  $game_temp.phenomenonExp = false
  $game_temp.phenomenonActivated = false
    }
)

# Generate the phenomenon or process the player standing on it
EventHandlers.add(:on_player_step_taken, :boon_phenomenon_update,
proc {
  if $game_temp.phenomenonPossible
    if pbPhenomenonPlayerOn?
      $game_temp.phenomenon.activate!
    elsif pbPhenomenonInactive?
      if Graphics.frame_count >= $game_temp.phenomenon.timer
        $game_temp.phenomenon.generate!
      end
    elsif $game_temp.phenomenon == nil && $game_temp.phenomenonTypes.size && (PhenomenonConfig::Switch == -1 || $game_switches[PhenomenonConfig::Switch])
      $game_temp.phenomenon = Phenomenon.new($game_temp.phenomenonTypes)
    end
  end
    }
)
# Remove any phenomenon events on map change
EventHandlers.add(:on_leave_map, :boon_phenomenon_leave_map,
proc {
  pbPhenomenonCancel
    }
)

# Process map available encounters on map change
EventHandlers.add(:on_enter_map, :boon_phenomenon_enter_map,
proc{
  pbPhenomenonLoadTypes
    }
)

# Modify the wild encounter based on the settings above
EventHandlers.add(:on_wild_pokemon_created, :boon_phenomenon_wild_created,
proc{
  pokemon = e[0]
  if $game_temp.phenomenonActivated
    if PhenomenonConfig::Pokemon[:shiny] # 4x the normal shiny chance
      pokemon.makeShiny if rand(65536) <= Settings::SHINY_POKEMON_CHANCE * 4
    end
    if PhenomenonConfig::Pokemon[:ivs] > -1 && rand(PhenomenonConfig::Pokemon[:ivs]) == 0
      ivs = [:HP, :ATTACK, :SPECIAL_ATTACK, :DEFENSE, :SPECIAL_DEFENSE, :SPEED]
      ivs.shuffle!
      ivs[0..1].each do |i|
        pokemon.iv[i] = 31
      end
    end
    if PhenomenonConfig::Pokemon[:eggMoves] > -1 && rand(PhenomenonConfig::Pokemon[:eggMoves]) == 0
      moves = GameData::Species.get_species_form(pokemon.species, pokemon.form).egg_moves
      pokemon.learn_move(moves.random) if moves.length > 0
    end
    if PhenomenonConfig::Pokemon[:hiddenAbility] > -1 && rand(PhenomenonConfig::Pokemon[:hiddenAbility]) == 0
      a = GameData::Species.get(pokemon.species).hidden_abilities
      if !a.nil? && a.kind_of?(Array)
        pokemon.ability = a.random
      end
    end
  end
    }
)

################################################################################
# Class modifiers
################################################################################
class Spriteset_Map
  alias update_phenomenon update

  def update
    if $game_temp.phenomenonPossible && pbPhenomenonActive? && !$game_temp.in_menu
      phn = $game_temp.phenomenon
      if (PhenomenonConfig::Switch != -1 &&
          !$game_switches[PhenomenonConfig::Switch]) || Graphics.frame_count >= phn.timer
        pbPhenomenonCancel
      elsif !phn.drawing && Graphics.frame_count % 40 == 0 # play animation every 140 update ticks
        phn.drawing = true
        sound = phn.type == :PhenomenonGrass ? (Graphics.frame_count % 80 == 0) : true
        phn.drawAnim(sound)
      end
    end
    update_phenomenon
  end
end
Ty!
 
Just so you, and everyone else knows, I have found a few bugs with the code I posted. However, I have been told that an official update is in the works, so I won't be fixing my bugs, and instead just waiting for the official update whenever it comes out!
 
Just so you, and everyone else knows, I have found a few bugs with the code I posted. However, I have been told that an official update is in the works, so I won't be fixing my bugs, and instead just waiting for the official update whenever it comes out!
Good news.

I just wish ebdx had pwt, i saw the resource page and there wasnt mention of it.

Its one of the features I will lose by updating from v16 to 20
 
error.png

This error appears when i start the game.
 
Are you sure you have the latest version? The zip file should be 3.0.1
I've downloaded again and now it works just fine. Maybe i missed something when i've edited the configs file. :/ By the way, the meta file says v3.1 instead of v3.0.1. Another thing, if i may ask, will you update the script: Mark Ribbons for PEv20.1?
 
I've gotten this error a few times after exiting a phenomenon battle. Some battles end with no issues, but others cause this error.

BoonErrorox.png
 
I am getting the same error but am struggling to figure out the cause - it doesn't seem to happen predictably so it's hard to reproduce for testing purposes but it seems to happen right when leaving phenomenon battles. Sorry not to be able to leave a more detailed report, otherwise this seems to work well.
 
I got this error by random when you leave a wild battle from a Phenomena Encounter.

Exception: NoMethodError
Message: undefined method `disposed?' for nil:NilClass

Backtrace:
Sprite_AnimationSprite:78:in `update'
[Boon's Phenomena] 001_Script.rb:241:in `update'
Scene_Map:144: in `block in updateSpritesets'
Scene_Map:138: in `each'
Scene_Map:138: in `updateSpritesets'
Scene_Map:165: in `update'
Scene_Map:218: in `block in main'
Scene_Map:215: in `loop'
Scene_Map:215: in `main'
Main:34: in `mainFunctionDebug'
Getting this exact same error. Any fix?
 
Hello, is the link to this download actually updated for v20?
I noticed that when I load the plugin from here, it always tells me it is an outdated script from v19, despite the .rar in the Mega link being 3.0.1
Encounter rates are practically broken with no buffer in-between spawns like others here have mentioned as well, and even when I change the rate to try and lower it, there is seemingly no effect.
If anyone can help with this it would be highly appreciated, thank you.
 
I'm also having another issue, the Phenomenon Exp Boost isn't working:

Ruby:
Expand Collapse Copy
[Pokémon Essentials version 20.1]
[v20.1 Hotfixes 1.0.7]

Exception: NoMethodError
Message: undefined method `phenomenonExp' for nil:NilClass

Backtrace:
149:Battle_ExpAndMoveLearning:138:in `pbGainExpOne'
149:Battle_ExpAndMoveLearning:39:in `block (2 levels) in pbGainExp'
147:Battle:419:in `block in eachInTeam'
147:Battle:419:in `each'
147:Battle:419:in `each_with_index'
147:Battle:419:in `eachInTeam'
149:Battle_ExpAndMoveLearning:35:in `block in pbGainExp'
149:Battle_ExpAndMoveLearning:13:in `each'
149:Battle_ExpAndMoveLearning:13:in `pbGainExp'
166:Battler_UseMove:507:in `pbUseMove'
 
Getting this exact same error. Any fix?

I got this error by random when you leave a wild battle from a Phenomena Encounter.

Exception: NoMethodError
Message: undefined method `disposed?' for nil:NilClass

Backtrace:
Sprite_AnimationSprite:78:in `update'
[Boon's Phenomena] 001_Script.rb:241:in `update'
Scene_Map:144: in `block in updateSpritesets'
Scene_Map:138: in `each'
Scene_Map:138: in `updateSpritesets'
Scene_Map:165: in `update'
Scene_Map:218: in `block in main'
Scene_Map:215: in `loop'
Scene_Map:215: in `main'
Main:34: in `mainFunctionDebug'
Getting this exact same error too, v19.1.
 
Everytime I try to go to the map i get:

Ruby:
Expand Collapse Copy
2023-10-01 20:11:05 +0200]
[Pokémon Essentials version 21.1]
[v21.1 Hotfixes 1.0.2]

Exception: NoMethodError
Message: undefined method `party' for nil:NilClass

Backtrace:
[Boon's Phenomena] 001_Core.rb:152:in `load_types'
[Boon's Phenomena] 002_EventHandlers.rb:42:in `block in <main>'
Event_Handlers:89:in `block in trigger'
Event_Handlers:89:in `each_value'
Event_Handlers:89:in `trigger'
Event_HandlerCollections:63:in `trigger'
Game_MapFactory:147:in `setMapChanged'
Game_MapFactory:110:in `setCurrentMap'
Game_Map:445:in `update'
[Delta Speed Up] _Main_Script.rb:91:in `update'
 
Back
Top