Jump to content
DoubleX

DoubleX RMVXA Autobattle Edit

Recommended Posts

Note

This script is designed as a tool for users with decent scripting knowledge. Those lacking that may find this script incredibly incomprehensible.

 

Script name

DoubleX RMVXA Autobattle Edit

 

Author

DoubleX

 

Terms of use

None other than not claiming this script as created by anyone except DoubleX or his alias

 

Introduction

Actors' autobattle actions are random in the default setting. This is hardcoded and can only be modified by scripts.
With this script, users with decent scripting knowledge may be able to create custom autobattle actions triggered by specific conditions more easily with enough understanding of the use of this script.

 

 

#==============================================================================|
#  ** 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

#==============================================================================|

 

 

 

Features

Decent scripting knowledge is need to use or modify this script
A tool for users with decent scripting knowledge to create custom autobattle actions triggered by specific conditions more easily

 

Instructions

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

 

FAQ

Q1: I've no scripting knowledge and I can't even read this script, may you please make it easy enough for me to use?
A1: I'm sorry but I'm afraid I'm not yet competent enough to make this script easier to use.

Q2: May you please teach me how to script so I can use your script?

A2: I'm sorry but I'm afraid I'm not yet competent enough to be a scripting teacher.

 

Changelog

v1.01a(GMT 0000 8-2-2014):

- Added method self.make_auto_battle_action_list under module DoubleX_RMVXA::Autobattle_Edit

v1.00a(0800 6-2-2014):
- 1st version of this script finished

 

(DoubleX)Autobattle Edit v1.01a.txt

Edited by DoubleX

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×