Can you update the script for essentials v20, please?
 
				
			
			Can you update the script for essentials v20, please?
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. 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.
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.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
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?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.
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.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'm having the same issue. Has anyone figured out a fix by any chance?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.
#-------------------------------------------------------------------------------
# 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
endTy!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
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.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!
Boon's Phenomena updated to version 3.0
Features in this update:
- v20.1 Support
- Improved performance
Are you sure you have the latest version? The zip file should be 3.0.1View attachment 12726
This error appears when i start the game.
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?Are you sure you have the latest version? The zip file should be 3.0.1
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'
[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?
Getting this exact same error too, v19.1.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'
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'