#==============================================================================| # ** DoubleX RMVXA Autobattle Edit v1.01a | #------------------------------------------------------------------------------| # * Changelog | # v1.01a(GMT 0000 8-2-2014): | # - Added method self.make_auto_battle_action_list under module | # DoubleX_RMVXA::Autobattle_Edit | # v1.00a(GMT 0800 6-2-2014): | # - 1st version of this script finished | #------------------------------------------------------------------------------| # * Author | # DoubleX | #------------------------------------------------------------------------------| # * Terms of use | # None other than not claiming this script as created by anyone except | # DoubleX or his alias | #------------------------------------------------------------------------------| # * Prerequisites | # Scripts: | # - none | # Knowledge: | # - Decent scripting knowledge | #------------------------------------------------------------------------------| # * Functions | # - Allows users to set autobattle actions triggered by variables for actors| #------------------------------------------------------------------------------| # * Manual | # To use this script, open the script editor and put this script into an | # open slot between ▼ Materials and ▼ Main. Save to take effect. | #------------------------------------------------------------------------------| # * Compatibility | # Scripts aliasing method make_auto_battle_actions may have compatibility | # issues with this script | # Place this script above those aliasing any of these methods if possible | #==============================================================================| $imported = {} if $imported.nil? $imported["DoubleX RMVXA Autobattle Edit"] = true #==============================================================================| # ** You only need to edit this part as it's about what this script does | #------------------------------------------------------------------------------| #------------------------------------------------------------------------------| # * This script is designed to be a tool for users with decent scripting | # knowledge to make custom autobattle actions triggered by game variables. | # Each actor with custom autobattle actions has an associated varaible | # deciding the autobattle actions to be used. Conditions should be written | # in battle events and autobattle actions should be written in this script. | # In short, this script bridges the gap between conditions and actions. | #------------------------------------------------------------------------------| # * Some useful stuffs | # - $data_skills[x] | # Skill with id x | # - $game_actors[x] | # Actor with id x | # - $game_switches[x] | # Switch with id x | # - $game_variables[x] | # Variable with id x | #------------------------------------------------------------------------------| module DoubleX_RMVXA module Autobattle_Edit #----------------------------------------------------------------------------| # Actor and variable lists and method names settings | #----------------------------------------------------------------------------| # Game switch id getting rid of VARIABLE_VALUE_HASH and custom methods # Sets autobattle actions of $game_actors[ACTOR_ID_LIST[x]] as skill with # skill id being the value of $game_variables[VARIABLE_ID_LIST[x]] when # $game_switches[VARIABLE_SET_SKILL_ID_SWITCH_ID] is true VARIABLE_SET_SKILL_ID_SWITCH_ID = 0 # Example: # VARIABLE_SET_SKILL_ID_SWITCH_ID = 1 # ACTOR_ID_LIST = [1, 2] # VARIABLE_ID_LIST = [4, 3] # Sets autobattle actions of $game_actors[ACTOR_ID_LIST[0]] and # $game_actors[ACTOR_ID_LIST[1]] as skills with skill ids being the value of # $game_variables[VARIABLE_ID_LIST[0]] and # $game_variables[VARIABLE_ID_LIST[1]] respectively when $game_switches[1] # is true # Sets autobattle actions of $game_actors[1] and $game_actors[2] as skills # with skill ids being the value of $game_variables[4] and # $game_variables[3] respectively when $game_switches[1] is true # Id list of actors using custom autobattle action picking conditions ACTOR_ID_LIST = [0] # Example: [1, 2] includes actor ids 1 and 2 # Id list of variables associated with actor ids in ACTOR_ID_LIST # ACTOR_ID_LIST[x] is associated with VARIABLE_ID_LIST[x] # $game_actors[ACTOR_ID_LIST[x]] is associated with # $game_variables[VARIABLE_ID_LIST[x]] # The size of ACTOR_ID_LIST must be the same as that of VARIABLE_ID_LIST VARIABLE_ID_LIST = [0] # Example: [4, 3] includes variable ids 4 and 3 # ACTOR_ID_LIST[0] is associated with VARIABLE_ID_LIST[0] # ACTOR_ID_LIST[1] is associated with VARIABLE_ID_LIST[1] # $game_actors[ACTOR_ID_LIST[0]] is associated with # $game_variables[VARIABLE_ID_LIST[0]] # $game_actors[ACTOR_ID_LIST[1]] is associated with # $game_variables[VARIABLE_ID_LIST[1]] # (Use ACTOR_ID_LIST = [1, 2] as an example) # $game_actors[1] is associated with $game_variables[4] # $game_actors[2] is associated with $game_variables[3] # Value hash of variables with their ids in VARIABLE_ID_LIST # Each value of a variable calls a method for its associated actor # This hash won't be used if $game_switches[VARIABLE_SET_SKILL_ID_SWITCH_ID] # is true VARIABLE_VALUE_HASH = { VARIABLE_ID_LIST[0] => [0], } # Example: # VARIABLE_ID_LIST[0] => [8, 6], # VARIABLE_ID_LIST[1] => [5, 7], # Sets the values of $game_variables[VARIABLE_ID_LIST[0]] and # $game_variables[VARIABLE_ID_LIST[1]] calling respective methods for # $game_actors[ACTOR_ID_LIST[0]] and $game_actors[ACTOR_ID_LIST[1]] as # 8, 6 and 5, 7 respectively # (Use ACTOR_ID_LIST = [1, 2] and VARIABLE_ID_LIST = [4, 3] as an example) # Sets the values of $game_variables[4] and $game_variables[3] calling # respective methods for $game_actors[1] and $game_actors[2] as # 8, 6 and 5, 7 respectively # Method names associated with variable value hash in VARIABLE_VALUE_HASH # "self." + ACTOR_ID + "actor id" + VARIABLE_VALUE + "variable value" # Default of ACTOR_ID and VARIABLE_VALUE: "actor_id_", "_variable_value_" # These methods won't be called if # $game_switches[VARIABLE_SET_SKILL_ID_SWITCH_ID] is true ACTOR_ID = "actor_id_" VARIABLE_VALUE = "_variable_value_" # Example: self.actor_id_0_variable_value_0 # Method name associated with value 0 of variable associated with actor id 0 # make_auto_battle_actions(actor_id, skill_id) sets all autobattle actions # of actor with id being actor_id to be skill with id being skill_id # Example: make_auto_battle_actions(0, 0) # Sets all autobattle actions of actor with id 0 to be skill with id 0 # make_auto_battle_action_list(actor_id, skill_id_list) sets all autobattle # actions of actor with id being actor_id to be skills with id in # skill_id_list and @actions[i] will be set as # $data_skills[skill_id_list[i % skill_id_list.size]] # Example: make_auto_battle_actions(1000, [0, 1000]) # Sets all autobattle actions of actor with id 1000 to be skill with id 0 # and 1000 and @actions will be $data_skills[0], $data_skills[1000], # $data_skills[0], ... #----------------------------------------------------------------------------| # Example action methods of values of variables associated with actors | #----------------------------------------------------------------------------| # ACTOR_ID = "actor_id_" and VARIABLE_VALUE = "_variable_value_" are used # Method of value 0 of variable associated with actor id 0 # This method sets all autobattle actions as skill with id 1 def self.actor_id_0_variable_value_0 make_auto_battle_actions(0, 1) end # self.actor_id_0_variable_value_0 # Method of value 0 of variable associated with actor id 1000 # This method sets all autobattle actions as skills with id 1 and 2 and # @actions will be $data_skills[1], $data_skills[2], $data_skills[1], ... def self.actor_id_1000_variable_value_0 make_auto_battle_action_list(1000, [1, 2]) end # self.actor_id_1000_variable_value_0 #------------------------------------------------------------------------------| #----------------------------------------------------------------------------| # Add custom autobattle action methods here | #----------------------------------------------------------------------------| #------------------------------------------------------------------------------| #----------------------------------------------------------------------------| # Action method calls of variable values of variables associated with actors| #----------------------------------------------------------------------------| # Calls custom autobattle action methods for actor with id being autobattle_actor_id # make_auto_battle_actions_autobattle_edit is aliased from the original make_auto_battle_actions def self.actor_id_list(autobattle_actor_id) id_list_index = 0 ACTOR_ID_LIST.each { |actor_id| if actor_id == autobattle_actor_id if VARIABLE_SET_SKILL_ID_SWITCH_ID > 0 && $game_switches[VARIABLE_SET_SKILL_ID_SWITCH_ID] make_auto_battle_actions(actor_id, $game_variables[VARIABLE_ID_LIST[id_list_index]]) elsif VARIABLE_VALUE_HASH[VARIABLE_ID_LIST[id_list_index]] && VARIABLE_VALUE_HASH[VARIABLE_ID_LIST[id_list_index]].size > 0 && VARIABLE_VALUE_HASH[VARIABLE_ID_LIST[id_list_index]].find { |variable| variable == $game_variables[VARIABLE_ID_LIST[id_list_index]] } eval(ACTOR_ID + actor_id.to_s + VARIABLE_VALUE + $game_variables[VARIABLE_ID_LIST[id_list_index]].to_s) else $game_actors[actor_id].make_auto_battle_actions_autobattle_edit end break end id_list_index += 1 } end # self.actor_id_list # Sets auto battle actions of actors with id being actor_id as skill with id being skill_id # current_action_list is a new method that returns @actions def self.make_auto_battle_actions(actor_id, skill_id) $game_actors[actor_id].current_action_list.size.times do |i| $game_actors[actor_id].current_action_list[i].set_skill(skill_id) end end # self.make_auto_battle_actions # Sets auto battle actions of actors with id being actor_id as skill with id in skill_id_list # current_action_list is a new method that returns @actions def self.make_auto_battle_action_list(actor_id, skill_id_list) $game_actors[actor_id].current_action_list.size.times do |i| $game_actors[actor_id].current_action_list[i].set_skill(skill_id_list[i % skill_id_list.size]) end end # self.make_auto_battle_action_list end # Autobattle_Edit end # DoubleX_RMVXA #==============================================================================| #==============================================================================| # ** You need not edit this part as it's about how this script works | #------------------------------------------------------------------------------| class Game_Actor < Game_Battler #----------------------------------------------------------------------------| # Alias method: make_auto_battle_actions | #----------------------------------------------------------------------------| alias make_auto_battle_actions_autobattle_edit make_auto_battle_actions def make_auto_battle_actions # This part is rewritten by this script to use custom autobattle action picking methods DoubleX_RMVXA::Autobattle_Edit::ACTOR_ID_LIST.size > 0 && DoubleX_RMVXA::Autobattle_Edit::ACTOR_ID_LIST.find { |actor_id| actor_id == @actor_id } ? DoubleX_RMVXA::Autobattle_Edit.actor_id_list(@actor_id) : make_auto_battle_actions_autobattle_edit # end # make_auto_battle_actions #----------------------------------------------------------------------------| # New method: current_action_list | #----------------------------------------------------------------------------| def current_action_list @actions end # current_action_list end # Game_Actor #==============================================================================|