Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #==============================================================================|
- # ** Script Info |
- #------------------------------------------------------------------------------|
- # * Script Name |
- # DoubleX RMVXA Linked Battlers Compatibility |
- #------------------------------------------------------------------------------|
- # * Functions |
- # Fixes compatibility issues in DoubleX RMVXA Linked Battlers |
- # Scripts Addressed: |
- # 1. DoubleX RMVXA Dynamic Data |
- # 2. Mr.Bubble's Tactics Ogre PSP Crafting System |
- # 3. Theolized Sideview Battle System |
- # 4. Tsukihime's Instance Items |
- #------------------------------------------------------------------------------|
- # * Terms Of Use |
- # You shall keep this script's Script Info part's contents intact |
- # You shalln't claim that this script is written by anyone other than |
- # DoubleX or his aliases |
- # None of the above applies to DoubleX or his aliases |
- #------------------------------------------------------------------------------|
- # * Prerequisites |
- # Scripts: |
- # 1. DoubleX RMVXA Linked Battlers |
- #------------------------------------------------------------------------------|
- # * Instructions |
- # 1. Open the script editor and put this script into an open slot between |
- # Linked Battlers and Main, save to take effect. |
- #------------------------------------------------------------------------------|
- # * Links |
- # Script Usage 101: |
- # 1. forums.rpgmakerweb.com/index.php?/topic/32752-rmvxa-script-usage-101/ |
- # 2. rpgmakervxace.net/topic/27475-rmvxa-script-usage-101/ |
- # This script: |
- # 1. http://pastebin.com/X9j9aAeL |
- #------------------------------------------------------------------------------|
- # * Authors |
- # DoubleX |
- #------------------------------------------------------------------------------|
- # * Changelog |
- # v1.00a(GMT 1000 12-8-2015): |
- # 1. 1st version of this script finished |
- #==============================================================================|
- ($doublex_rmvxa ||= {})[:Linked_Battlers_Compatibility] = "v1.00a"
- #==============================================================================|
- # ** Script Implementations |
- # You need not edit this part as it's about how this script works |
- #------------------------------------------------------------------------------|
- # * Script Support Info: |
- # 1. Prerequisites |
- # - Decent understanding of how the addressed scripts work |
- # 2. Method documentation |
- # - The 1st part describes why this method's rewritten/aliased for |
- # rewritten/aliased methods or what the method does for new methods |
- # - The 2nd part describes what the arguments of the method are |
- # - The 3rd part informs which version rewritten, aliased or created this|
- # method |
- # - The 4th part informs whether the method's rewritten or new |
- # - The 5th part describes how this method works for new methods only, |
- # and describes the parts added, removed or rewritten for rewritten or |
- # aliased methods only |
- # Example: |
- # #--------------------------------------------------------------------------| |
- # # Why rewrite/alias/What this method does | |
- # #--------------------------------------------------------------------------| |
- # # *argv: What these variables are |
- # # &argb: What this block is |
- # def def_name(*argv, &argb) # Version X+; Rewrite/New |
- # # Added/Removed/Rewritten to do something/How this method works |
- # def_name_code |
- # # |
- # end # def_name |
- #------------------------------------------------------------------------------|
- if $doublex_rmvxa[:Linked_Battlers]
- if $doublex_rmvxa[:Dynamic_Data] || $imported["TH_InstanceItems"] ||
- $imported[:TSBS]
- # Stores the object block clearance and reset methods
- CLEAR_RESET_LINKED_BATTLERS_BLOCKS = %Q(
- def clear_linked_battlers_blocks(obj, copy = true)
- #{$imported["BubsTOCrafting"] ? %Q(
- if copy && obj.ingredient_list
- obj.ingredient_list.each { |ingredient|
- clear_linked_battlers_blocks(ingredient) if ingredient.is_a?(RPG::State)
- }
- end
- ) : %Q()}
- obj.linked_battlers = []
- end
- def reset_linked_battlers_blocks(obj, copy = true)
- #{$imported["BubsTOCrafting"] ? %Q(
- if copy && obj.ingredient_list
- obj.ingredient_list.each { |ingredient|
- reset_linked_battlers_blocks(ingredient) if ingredient.is_a?(RPG::State)
- }
- end
- ) : %Q()}
- obj.reset_notetags_linked_battlers
- end
- )
- end # if $doublex_rmvxa[:Dynamic_Data] || $imported["TH_InstanceItems"] ||
- # $imported[:TSBS]
- if $imported["TH_InstanceItems"]
- class << DataManager
- #----------------------------------------------------------------------------|
- # Clears and resets all linked battler blocks right before and after saving |
- #----------------------------------------------------------------------------|
- alias save_game_without_rescue_linked_battlers_1 save_game_without_rescue
- def save_game_without_rescue
- # Added
- [InstanceManager.weapons, InstanceManager.armors,
- InstanceManager.items].each { |data|
- data.each_value { |obj| clear_linked_battlers_blocks(obj) if obj }
- }
- $game_party.clear_linked_battlers_blocks
- #
- save_game_without_rescue_linked_battlers_1
- #
- [InstanceManager.weapons, InstanceManager.armors,
- InstanceManager.items].each { |data|
- data.each_value { |obj| reset_linked_battlers_blocks(obj) if obj }
- }
- $game_party.reset_linked_battlers_blocks
- #
- end # save_game_without_rescue
- #----------------------------------------------------------------------------|
- # Resets all linked battler blocks right after loading |
- #----------------------------------------------------------------------------|
- alias extract_save_contents_linked_battlers_1 extract_save_contents
- def extract_save_contents(contents)
- extract_save_contents_linked_battlers_1(contents)
- # Added
- [InstanceManager.weapons, InstanceManager.armors,
- InstanceManager.items].each { |data|
- data.each_value { |obj| reset_linked_battlers_blocks(obj) if obj }
- }
- $game_party.reset_linked_battlers_blocks
- #
- end # extract_save_contents
- #----------------------------------------------------------------------------|
- # Clears and resets all blocks contained by the passed object |
- #----------------------------------------------------------------------------|
- module_eval(CLEAR_RESET_LINKED_BATTLERS_BLOCKS) # New
- end # DataManager
- class << InstanceManager
- #----------------------------------------------------------------------------|
- # Clears and resets all blocks right before and after using Marshal |
- #----------------------------------------------------------------------------|
- alias make_full_copy_linked_battlers make_full_copy
- def make_full_copy(obj)
- # Added
- state = obj.is_a?(RPG::State)
- clear_linked_battlers_blocks(obj) if state
- #
- clone = make_full_copy_linked_battlerss(obj) # Rewritten
- # Added
- reset_linked_battlers_blocks(obj) if state
- reset_linked_battlers_blocks(clone) if state
- clone
- #
- end # make_full_copy
- #----------------------------------------------------------------------------|
- # Clears and resets all blocks contained by the passed object |
- #----------------------------------------------------------------------------|
- module_eval(CLEAR_RESET_LINKED_BATTLERS_BLOCKS) # New
- end # InstanceManager
- class Game_Party < Game_Unit
- #----------------------------------------------------------------------------|
- # Clears all stored blocks as notetag values of all instance items |
- #----------------------------------------------------------------------------|
- def clear_linked_battlers_blocks # New
- [@item_list, @weapon_list, @armor_list].each { |data|
- data.each { |obj| clear_linked_battlers_blocks(obj) if obj }
- }
- end # clear_linked_battlers_blocks
- #----------------------------------------------------------------------------|
- # Resets all stored blocks as notetag values of all instance items |
- #----------------------------------------------------------------------------|
- def reset_linked_battlers_blocks # New
- [@item_list, @weapon_list, @armor_list].each { |data|
- data.each { |obj| reset_linked_battlers_blocks(obj) if obj }
- }
- end # reset_linked_battlers_blocks
- #----------------------------------------------------------------------------|
- # Clears and resets all blocks contained by the passed object |
- #----------------------------------------------------------------------------|
- module_eval(CLEAR_RESET_LINKED_BATTLERS_BLOCKS) # New
- end # Game_Party
- end # if $imported["TH_InstanceItems"]
- if $imported[:TSBS]
- #------------------------------------------------------------------------------|
- # Clears and resets all blocks right before and after using Marshal |
- #------------------------------------------------------------------------------|
- alias copy_linked_battlers copy
- def copy(obj)
- # Added
- state = obj.is_a?(RPG::State)
- clear_linked_battlers_blocks(obj) if state
- #
- clone = copy_linked_battlers(obj) # Rewritten
- # Added
- reset_linked_battlers_blocks(obj) if state
- reset_linked_battlers_blocks(clone) if state
- clone
- #
- end # copy
- #------------------------------------------------------------------------------|
- # Clears and resets all blocks contained by the passed object |
- #------------------------------------------------------------------------------|
- eval(CLEAR_RESET_LINKED_BATTLERS_BLOCKS) # New
- end # $imported[:TSBS]
- if $doublex_rmvxa[:Dynamic_Data]
- class << DataManager
- #----------------------------------------------------------------------------|
- # Clears and resets all linked battler blocks right before and after saving |
- #----------------------------------------------------------------------------|
- alias save_game_without_rescue_linked_battlers_2 save_game_without_rescue
- def save_game_without_rescue(index)
- # Added
- $data_states.each { |obj| clear_linked_battlers_blocks(obj, false) if obj }
- #
- save_game_without_rescue_linked_battlers_2(index)
- # Added
- $data_states.each { |obj| reset_linked_battlers_blocks(obj, false) if obj }
- #
- end # save_game_without_rescue
- #----------------------------------------------------------------------------|
- # Resets all linked battler blocks right after loading |
- #----------------------------------------------------------------------------|
- alias extract_save_contents_linked_battlers_2 extract_save_contents
- def extract_save_contents(contents)
- extract_save_contents_linked_battlers_2(contents)
- # Added
- $data_states.each { |obj| reset_linked_battlers_blocks(obj, false) if obj }
- #
- end # extract_save_contents
- #----------------------------------------------------------------------------|
- # Clears and resets all blocks contained by the passed object |
- #----------------------------------------------------------------------------|
- module_eval(CLEAR_RESET_LINKED_BATTLERS_BLOCKS) # New
- end # DataManager
- class RPG::State < RPG::BaseItem
- #----------------------------------------------------------------------------|
- # New public instance variable |
- #----------------------------------------------------------------------------|
- attr_accessor :linked_battlers_string # The notetag values as strings
- #----------------------------------------------------------------------------|
- # Stores all notetag values in the string form as well |
- #----------------------------------------------------------------------------|
- alias load_notetags_linked_battlers_compatibility load_notetags_linked_battlers
- def load_notetags_linked_battlers
- load_notetags_linked_battlers_compatibility
- # Added
- @linked_battlers_string = []
- lb = "DoubleX_RMVXA::Linked_Battlers::"
- @note.split(/[\r\n]+/).each { |line|
- case line
- when /<linked battlers:\s*(\w+)\s*,\s*(\w+)\s*,\s*(\w+)\s*>/
- @linked_battlers_string <<
- [eval("#{lb}#{$1}"), eval("#{lb}#{$2}"), eval("#{lb}#{$3}")]
- end
- }
- #
- end # load_notetags_linked_battlers
- #----------------------------------------------------------------------------|
- # Resets all blocks used by the notetag values of the passed notetag |
- #----------------------------------------------------------------------------|
- def reset_notetags_linked_battlers
- @linked_battlers_string.each { |linked_battler_string|
- @linked_battlers << []
- @linked_battlers[-1] << eval("-> battler, target { target.instance_exec {
- #{linked_battler_string[0]} } }")
- @linked_battlers[-1] << eval("-> target { target.instance_exec {
- #{linked_battler_string[1]} } }")
- @linked_battlers[-1] << eval("-> battler, target { target.instance_exec {
- #{linked_battler_string[2]} } }")
- }
- end # reset_notetags_linked_battlers
- end # RPG::State
- end # if $doublex_rmvxa[:Dynamic_Data]
- #------------------------------------------------------------------------------|
- else
- # Informs users that they didn't place Linked Battlers above this script
- msgbox("To use DoubleX RMVXA Linked Battlers Compatibility, " +
- "put it below:\n DoubleX RMVXA State Triggers\n but above Main")
- end # if $doublex_rmvxa[:Linked_Battlers]
- #==============================================================================|
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement