From fbddb9034f28c3b3ead9446a9634e66986bf894b Mon Sep 17 00:00:00 2001 From: Maruno17 Date: Wed, 20 Oct 2021 22:17:05 +0100 Subject: [PATCH] Added a simple way to replace code in events with other code --- .../004_Compiler_MapsAndEvents.rb | 75 ++++++++++++------- 1 file changed, 48 insertions(+), 27 deletions(-) diff --git a/Data/Scripts/021_Compiler/004_Compiler_MapsAndEvents.rb b/Data/Scripts/021_Compiler/004_Compiler_MapsAndEvents.rb index ac4edba05..ea0dddc16 100644 --- a/Data/Scripts/021_Compiler/004_Compiler_MapsAndEvents.rb +++ b/Data/Scripts/021_Compiler/004_Compiler_MapsAndEvents.rb @@ -1,4 +1,24 @@ module Compiler + SCRIPT_REPLACEMENTS = [ + ['Kernel.', ''], + ['$PokemonBag.pbQuantity', '$bag.quantity'], + ['$PokemonBag.pbHasItem?', '$bag.has?'], + ['$PokemonBag.pbCanStore?', '$bag.can_add?'], + ['$PokemonBag.pbStoreItem', '$bag.add'], + ['$PokemonBag.pbStoreAllOrNone', '$bag.add_all'], + ['$PokemonBag.pbChangeItem', '$bag.replace_item'], + ['$PokemonBag.pbDeleteItem', '$bag.remove'], + ['$PokemonBag.pbIsRegistered?', '$bag.registered?'], + ['$PokemonBag.pbRegisterItem', '$bag.register'], + ['$PokemonBag.pbUnregisterItem', '$bag.unregister'], + ['$PokemonBag', '$bag'], + ['pbQuantity', '$bag.quantity'], + ['pbHasItem?', '$bag.has?'], + ['pbCanStore?', '$bag.can_add?'], + ['pbStoreItem', '$bag.add'], + ['pbStoreAllOrNone', '$bag.add_all'] + ] + module_function #============================================================================= @@ -819,22 +839,6 @@ module Compiler return false end - def change_script(script,re) - tmp = script[0].gsub(re) { yield($~) } - if script[0]!=tmp - script[0] = tmp - return true - end - return false - end - - def change_scripts(script) - changed = false - changed |= change_script(script,/\$game_variables\[(\d+)\](?!\s*(?:\=|\!|<|>))/) { |m| "pbGet("+m[1]+")" } - changed |= change_script(script,/\$Trainer\.party\[\s*pbGet\((\d+)\)\s*\]/) { |m| "pbGetPokemon("+m[1]+")" } - return changed - end - def fix_event_name(event) return false if !event case event.name.downcase @@ -850,6 +854,31 @@ module Compiler return true end + def replace_scripts(script) + ret = false + SCRIPT_REPLACEMENTS.each { |pair| ret = true if script.gsub!(pair[0], pair[1]) } + ret = true if script.gsub!(/\$game_variables\[(\d+)\](?!\s*(?:\=|\!|<|>))/) { |m| "pbGet(" + $~[1] + ")" } + ret = true if script.gsub!(/\$Trainer\.party\[\s*pbGet\((\d+)\)\s*\]/) { |m| "pbGetPokemon(" + $~[1] + ")" } + return ret + end + + def fix_event_scripts(event) + return false if event_is_empty?(event) + ret = false + pbEachPage(event) do |page| + page.list.each do |cmd| + params = cmd.parameters + case cmd.code + when 355, 655 # Script (first line, continuation line) + ret = true if params[0].is_a?(String) && replace_scripts(params[0]) + when 111 # Conditional Branch + ret = true if params[0] == 12 && replace_scripts(params[1]) + end + end + end + return ret + end + def fix_event_use(event,_mapID,mapData) return nil if event_is_empty?(event) changed = false @@ -864,19 +893,13 @@ module Compiler while i