• Hi, Guest!
    Some images might be missing as we move away from using embedded images, sorry for the mess!
    From now on, you'll be required to use a third party to host images. You can learn how to add images here, and if your thread is missing images you can request them here.
    Do not use Discord to host any images you post, these links expire quickly!
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?
 

Richard PT

Cooltrainer
Member
Joined
Oct 26, 2018
Posts
127
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.
 

Electabuzzard

Boost Power Enthusiast
Member
Joined
May 25, 2021
Posts
27
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?
 

Ned

[Enter Custom Title Here]
Member
Joined
Apr 2, 2017
Posts
78
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:
#-------------------------------------------------------------------------------
# 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
 

Sr.Haruno

Pokémon God - Creator
Member
Joined
Dec 24, 2018
Posts
0
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:
#-------------------------------------------------------------------------------
# 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!
 

Ned

[Enter Custom Title Here]
Member
Joined
Apr 2, 2017
Posts
78
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!
 

Sr.Haruno

Pokémon God - Creator
Member
Joined
Dec 24, 2018
Posts
0
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
 

boonzeet

Developer of Pokemon: Secrets of the Ages
Member
Joined
Mar 13, 2019
Posts
70

Richard PT

Cooltrainer
Member
Joined
Oct 26, 2018
Posts
127
error.png

This error appears when i start the game.
 

Richard PT

Cooltrainer
Member
Joined
Oct 26, 2018
Posts
127
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?
 

TheSheikahScholar

How do I change this? :P
Member
Joined
Aug 28, 2020
Posts
55
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
 

Nineage

Novice
Member
Joined
May 11, 2017
Posts
13
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.
 

Cabig

Novice
Member
Joined
May 14, 2021
Posts
49
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?
 

Screen Lady

Glitch Trainer
Member
Joined
Dec 2, 2022
Posts
20
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.
 

SirWeibrot

Novice
Member
Joined
Jan 30, 2021
Posts
21
I'm also having another issue, the Phenomenon Exp Boost isn't working:

Ruby:
[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'
 

BiggusWeeabus

"What's so funny about Biggus Dickus?"
Member
Joined
Sep 1, 2020
Posts
105
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.
 

SalamenceOnTop

Novice
Member
Joined
Mar 14, 2023
Posts
21
Everytime I try to go to the map i get:

Ruby:
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