From 4f42eca3eed0645ae04ce1930e262a84d8748ef5 Mon Sep 17 00:00:00 2001 From: Maruno17 Date: Sat, 5 Nov 2022 18:08:04 +0000 Subject: [PATCH] =?UTF-8?q?Fixed=20Safari/Bug=20Contest/roaming=20battles?= =?UTF-8?q?=20generating=20Pok=C3=A9mon=20while=20ignoring=20that=20Pok?= =?UTF-8?q?=C3=A9mon's=20defined=20form?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../001_Overworld_BattleStarting.rb | 2 +- .../005_Overworld_RoamingPokemon.rb | 10 +++++----- Data/Scripts/013_Items/005_Item_PokeRadar.rb | 2 +- .../018_Alternate battle modes/001_SafariZone.rb | 9 ++++----- .../018_Alternate battle modes/002_BugContest.rb | 10 ++++------ 5 files changed, 15 insertions(+), 18 deletions(-) diff --git a/Data/Scripts/012_Overworld/002_Battle triggering/001_Overworld_BattleStarting.rb b/Data/Scripts/012_Overworld/002_Battle triggering/001_Overworld_BattleStarting.rb index 83cb16012..0bb367891 100644 --- a/Data/Scripts/012_Overworld/002_Battle triggering/001_Overworld_BattleStarting.rb +++ b/Data/Scripts/012_Overworld/002_Battle triggering/001_Overworld_BattleStarting.rb @@ -347,7 +347,7 @@ class WildBattle # roaming Pokémon, Safari battles, Bug Contest battles) if foe_party.length == 1 && can_override handled = [nil] - EventHandlers.trigger(:on_calling_wild_battle, foe_party[0].species, foe_party[0].level, handled) + EventHandlers.trigger(:on_calling_wild_battle, foe_party[0], handled) return handled[0] if !handled[0].nil? end # Perform the battle diff --git a/Data/Scripts/012_Overworld/002_Battle triggering/005_Overworld_RoamingPokemon.rb b/Data/Scripts/012_Overworld/002_Battle triggering/005_Overworld_RoamingPokemon.rb index c152369de..89672fd5a 100644 --- a/Data/Scripts/012_Overworld/002_Battle triggering/005_Overworld_RoamingPokemon.rb +++ b/Data/Scripts/012_Overworld/002_Battle triggering/005_Overworld_RoamingPokemon.rb @@ -186,23 +186,23 @@ EventHandlers.add(:on_wild_species_chosen, :roaming_pokemon, ) EventHandlers.add(:on_calling_wild_battle, :roaming_pokemon, - proc { |species, level, handled| + proc { |pkmn, handled| # handled is an array: [nil]. If [true] or [false], the battle has already # been overridden (the boolean is its outcome), so don't do anything that # would override it again next if !handled[0].nil? next if !$PokemonGlobal.roamEncounter || $game_temp.roamer_index_for_encounter.nil? - handled[0] = pbRoamingPokemonBattle(species, level) + handled[0] = pbRoamingPokemonBattle(pkmn) } ) -def pbRoamingPokemonBattle(species, level) +def pbRoamingPokemonBattle(pkmn) # Get the roaming Pokémon to encounter; generate it based on the species and # level if it doesn't already exist idxRoamer = $game_temp.roamer_index_for_encounter if !$PokemonGlobal.roamPokemon[idxRoamer] || !$PokemonGlobal.roamPokemon[idxRoamer].is_a?(Pokemon) - $PokemonGlobal.roamPokemon[idxRoamer] = pbGenerateWildPokemon(species, level, true) + $PokemonGlobal.roamPokemon[idxRoamer] = pbGenerateWildPokemon(pkmn.species_data.id, pkmn.level, true) end # Set some battle rules setBattleRule("single") @@ -218,7 +218,7 @@ def pbRoamingPokemonBattle(species, level) $PokemonGlobal.roamedAlready = true $game_temp.roamer_index_for_encounter = nil # Used by the Poké Radar to update/break the chain - EventHandlers.trigger(:on_wild_battle_end, species, level, decision) + EventHandlers.trigger(:on_wild_battle_end, pkmn.species_data.id, pkmn.level, decision) # Return false if the player lost or drew the battle, and true if any other result return (decision != 2 && decision != 5) end diff --git a/Data/Scripts/013_Items/005_Item_PokeRadar.rb b/Data/Scripts/013_Items/005_Item_PokeRadar.rb index d853bfa7f..37bbaed98 100644 --- a/Data/Scripts/013_Items/005_Item_PokeRadar.rb +++ b/Data/Scripts/013_Items/005_Item_PokeRadar.rb @@ -44,7 +44,7 @@ end def pbUsePokeRadar return false if !pbCanUsePokeRadar? $stats.poke_radar_count += 1 - $game_temp.poke_radar_data = [0, 0, 0, [], false] if !$game_temp.poke_radar_data + $game_temp.poke_radar_data = [nil, 0, 0, [], false] if !$game_temp.poke_radar_data $game_temp.poke_radar_data[4] = false $PokemonGlobal.pokeradarBattery = 50 pbPokeRadarHighlightGrass diff --git a/Data/Scripts/018_Alternate battle modes/001_SafariZone.rb b/Data/Scripts/018_Alternate battle modes/001_SafariZone.rb index 6b60d6992..7965e1e68 100644 --- a/Data/Scripts/018_Alternate battle modes/001_SafariZone.rb +++ b/Data/Scripts/018_Alternate battle modes/001_SafariZone.rb @@ -105,19 +105,18 @@ EventHandlers.add(:on_player_step_taken_can_transfer, :safari_game_counter, # #=============================================================================== EventHandlers.add(:on_calling_wild_battle, :safari_battle, - proc { |species, level, handled| + proc { |pkmn, handled| # handled is an array: [nil]. If [true] or [false], the battle has already # been overridden (the boolean is its outcome), so don't do anything that # would override it again next if !handled[0].nil? next if !pbInSafari? - handled[0] = pbSafariBattle(species, level) + handled[0] = pbSafariBattle(pkmn) } ) -def pbSafariBattle(species, level) +def pbSafariBattle(pkmn) # Generate a wild Pokémon based on the species and level - pkmn = pbGenerateWildPokemon(species, level) foeParty = [pkmn] # Calculate who the trainer is playerTrainer = $player @@ -156,7 +155,7 @@ def pbSafariBattle(species, level) end pbSet(1, decision) # Used by the Poké Radar to update/break the chain - EventHandlers.trigger(:on_wild_battle_end, species, level, decision) + EventHandlers.trigger(:on_wild_battle_end, pkmn.species_data.id, pkmn.level, decision) # Return the outcome of the battle return decision end diff --git a/Data/Scripts/018_Alternate battle modes/002_BugContest.rb b/Data/Scripts/018_Alternate battle modes/002_BugContest.rb index 8a6b890d2..161d21e0d 100644 --- a/Data/Scripts/018_Alternate battle modes/002_BugContest.rb +++ b/Data/Scripts/018_Alternate battle modes/002_BugContest.rb @@ -355,22 +355,20 @@ EventHandlers.add(:on_leave_map, :end_bug_contest, # #=============================================================================== EventHandlers.add(:on_calling_wild_battle, :bug_contest_battle, - proc { |species, level, handled| + proc { |pkmn, handled| # handled is an array: [nil]. If [true] or [false], the battle has already # been overridden (the boolean is its outcome), so don't do anything that # would override it again next if !handled[0].nil? next if !pbInBugContest? - handled[0] = pbBugContestBattle(species, level) + handled[0] = pbBugContestBattle(pkmn) } ) -def pbBugContestBattle(species, level) +def pbBugContestBattle(pkmn) # Record information about party Pokémon to be used at the end of battle (e.g. # comparing levels for an evolution check) EventHandlers.trigger(:on_start_battle) - # Generate a wild Pokémon based on the species and level - pkmn = pbGenerateWildPokemon(species, level) foeParty = [pkmn] # Calculate who the trainers and their party are playerTrainer = [$player] @@ -405,7 +403,7 @@ def pbBugContestBattle(species, level) # Save the result of the battle in Game Variable 1 BattleCreationHelperMethods.set_outcome(decision, 1) # Used by the Poké Radar to update/break the chain - EventHandlers.trigger(:on_wild_battle_end, species, level, decision) + EventHandlers.trigger(:on_wild_battle_end, pkmn.species_data.id, pkmn.level, decision) # Return false if the player lost or drew the battle, and true if any other result return (decision != 2 && decision != 5) end