From 5d8dad58c4c5dc6bc18c8aa9eb2e792131f5fd40 Mon Sep 17 00:00:00 2001 From: Maruno17 Date: Mon, 7 Mar 2022 19:25:33 +0000 Subject: [PATCH] =?UTF-8?q?Added=20more=20debug=20menu=20functionality=20(?= =?UTF-8?q?toggle=20Hyper=20Mode,=20set=20stats,=20set=20species,=20reset?= =?UTF-8?q?=20moves=20of=20non-battling=20Pok=C3=A9mon/let=20them=20be=20m?= =?UTF-8?q?ade=20fainted)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../008_Debug_BattlePkmnCommands.rb | 132 ++++++++++++++++-- 1 file changed, 124 insertions(+), 8 deletions(-) diff --git a/Data/Scripts/020_Debug/003_Debug menus/008_Debug_BattlePkmnCommands.rb b/Data/Scripts/020_Debug/003_Debug menus/008_Debug_BattlePkmnCommands.rb index e6c330a72..33691799d 100644 --- a/Data/Scripts/020_Debug/003_Debug menus/008_Debug_BattlePkmnCommands.rb +++ b/Data/Scripts/020_Debug/003_Debug menus/008_Debug_BattlePkmnCommands.rb @@ -1,13 +1,9 @@ =begin # TODO: -Actual stats? @attack, @defense, etc. @turnCount -Toggle Hyper Mode for a Shadow Pokémon Stuff for Pokémon that aren't in battle: -* Set HP to 0 -* Set species * Set Poké Ball * Set nickname * Make a Shadow Pokémon, set Heart Gauge (perhaps also for battlers) @@ -31,15 +27,17 @@ MenuHandlers.add(:battle_pokemon_debug_menu, :set_hp, { if pkmn.egg? pbMessage("\\ts[]" + _INTL("{1} is an egg.", pkmn.name)) next - elsif pkmn.totalhp == 1 - pbMessage("\\ts[]" + _INTL("Can't change HP, {1}'s maximum HP is 1.", pkmn.name)) + elsif battler && pkmn.totalhp == 1 + pbMessage("\\ts[]" + _INTL("Can't change HP, {1}'s maximum HP is 1 and it's in battle.", pkmn.name)) next end + min_hp = (battler) ? 1 : 0 params = ChooseNumberParams.new - params.setRange(1, pkmn.totalhp) + params.setRange(min_hp, pkmn.totalhp) params.setDefaultValue(pkmn.hp) new_hp = pbMessageChooseNumber( - "\\ts[]" + _INTL("Set {1}'s HP (1-{2}).", (battler) ? battler.pbThis(true) : pkmn.name, pkmn.totalhp), params + "\\ts[]" + _INTL("Set {1}'s HP ({2}-{3}).", (battler) ? battler.pbThis(true) : pkmn.name, min_hp, pkmn.totalhp), + params ) next if new_hp == pkmn.hp (battler || pkmn).hp = new_hp @@ -190,6 +188,70 @@ MenuHandlers.add(:battle_pokemon_debug_menu, :set_stat_stages, { } }) +MenuHandlers.add(:battle_pokemon_debug_menu, :set_stat_values, { + "name" => _INTL("Set stat values"), + "parent" => :level_stats, + "usage" => :battler, + "effect" => proc { |pkmn, battler, battle| + if pkmn.egg? + pbMessage("\\ts[]" + _INTL("{1} is an egg.", pkmn.name)) + next + end + stat_ids = [] + stat_vals = [] + GameData::Stat.each_main_battle do |stat| + stat_ids.push(stat.id) + case stat.id + when :ATTACK then stat_vals.push(battler.attack) + when :DEFENSE then stat_vals.push(battler.defense) + when :SPECIAL_ATTACK then stat_vals.push(battler.spatk) + when :SPECIAL_DEFENSE then stat_vals.push(battler.spdef) + when :SPEED then stat_vals.push(battler.speed) + else stat_vals.push(1) + end + end + cmd = 0 + loop do + commands = [] + GameData::Stat.each_main_battle do |stat| + command_name = stat.name + ": " + stat_vals[stat_ids.index(stat.id)].to_s + commands.push(command_name) + end + commands.push(_INTL("[Reset all]")) + cmd = pbMessage("\\ts[]" + _INTL("Choose a stat value to change."), commands, -1, nil, cmd) + break if cmd < 0 + if cmd < stat_ids.length # Set a stat + params = ChooseNumberParams.new + params.setRange(1, 9999) + params.setDefaultValue(stat_vals[cmd]) + value = pbMessageChooseNumber( + "\\ts[]" + _INTL("Set the value for {1}.", GameData::Stat.get(stat_ids[cmd]).name), params + ) + case stat_ids[cmd] + when :ATTACK then battler.attack = value + when :DEFENSE then battler.defense = value + when :SPECIAL_ATTACK then battler.spatk = value + when :SPECIAL_DEFENSE then battler.spdef = value + when :SPEED then battler.speed = value + end + stat_vals[cmd] = value + else # Reset all stat values + battler.pbUpdate + GameData::Stat.each_main_battle do |stat| + case stat.id + when :ATTACK then stat_vals[stat_ids.index(stat.id)] = battler.attack + when :DEFENSE then stat_vals[stat_ids.index(stat.id)] = battler.defense + when :SPECIAL_ATTACK then stat_vals[stat_ids.index(stat.id)] = battler.spatk + when :SPECIAL_DEFENSE then stat_vals[stat_ids.index(stat.id)] = battler.spdef + when :SPEED then stat_vals[stat_ids.index(stat.id)] = battler.speed + else stat_vals[stat_ids.index(stat.id)] = 1 + end + end + end + end + } +}) + MenuHandlers.add(:battle_pokemon_debug_menu, :set_level, { "name" => _INTL("Set level"), "parent" => :level_stats, @@ -539,6 +601,17 @@ MenuHandlers.add(:battle_pokemon_debug_menu, :set_move_pp, { } }) +MenuHandlers.add(:battle_pokemon_debug_menu, :reset_moves, { + "name" => _INTL("Reset moves"), + "parent" => :moves, + "usage" => :pokemon, + "effect" => proc { |pkmn, battler, battle| + next if !pbConfirmMessage(_INTL("Replace Pokémon's moves with ones it would know if it was wild?")) + pkmn.reset_moves + pbMessage("\\ts[]" + _INTL("{1}'s moves were reset.", pkmn.name)) + } +}) + #=============================================================================== # Other options #=============================================================================== @@ -729,6 +802,21 @@ MenuHandlers.add(:battle_pokemon_debug_menu, :set_form, { } }) +MenuHandlers.add(:battle_pokemon_debug_menu, :set_species, { + "name" => _INTL("Set species"), + "parent" => :main, + "usage" => :both, + "effect" => proc { |pkmn, battler, battle| + species = pbChooseSpeciesList(pkmn.species) + if species && species != pkmn.species + pkmn.species = species + battler.species = species if battler + battler&.pbUpdate(true) + battler.name = pkmn.name if battler + end + } +}) + MenuHandlers.add(:battle_pokemon_debug_menu, :set_shininess, { "name" => _INTL("Set shininess"), "parent" => :main, @@ -761,6 +849,34 @@ MenuHandlers.add(:battle_pokemon_debug_menu, :set_shininess, { } }) +MenuHandlers.add(:battle_pokemon_debug_menu, :shadow_pokemon, { + "name" => _INTL("Shadow Pokémon"), + "parent" => :main, + "usage" => :battler, + "effect" => proc { |pkmn, battler, battle| + if battler.shadowPokemon? + loop do + if battler.inHyperMode? + msg = _INTL("Shadow Pokémon (in Hyper Mode)") + else + msg = _INTL("Shadow Pokémon (not in Hyper Mode)") + end + cmd = pbMessage("\\ts[]" + msg, [_INTL("Toggle Hyper Mode"), _INTL("Cancel")], -1, nil, 0) + break if cmd != 0 + if battler.inHyperMode? + pkmn.hyper_mode = false + elsif battler.fainted? || !battler.pbOwnedByPlayer? + pbMessage("\\ts[]" + _INTL("Pokémon is fainted or not the player's. Can't put it in Hyper Mode.")) + else + pkmn.hyper_mode = true + end + end + else + pbMessage("\\ts[]" + _INTL("Pokémon is not a Shadow Pokémon.")) + end + } +}) + MenuHandlers.add(:battle_pokemon_debug_menu, :set_effects, { "name" => _INTL("Set effects"), "parent" => :main,