The RPG Maker Resource Kit

RMRK RPG Maker Creation => VX Ace => VXA Scripts Database => Topic started by: DoubleX on August 07, 2015, 03:10:15 PM

Title: DoubleX RMVXA Linked Battlers
Post by: DoubleX on August 07, 2015, 03:10:15 PM
Changelog
Code: [Select]
#    v1.00b(GMT 0400 8-11-2015):                                               |
#    1. Notetag values are now symbols of methods in the configuration regions |
#    2. This script doesn't need DoubleX RMVXA Linked Battlers Compatibility to|
#       be compatible with all its addressed scripts                           |
#    3. Further improved this script's compatibility, efficiency and simplicity|
#    v1.00a(GMT 1500 7-8-2015):                                                |
#    1. 1st version of this script finished                                    |

Authors
DoubleX

Credits
DoubleX(Optional)

Purpose
Lets users set some states to make their owners share some stats together

Games using this script
None so far

Notetag
Code: [Select]
#  * State Notetags:                                                           |
#    1. <linked battlers: lbcx, lbsx, lbwx>                                    |
#       - Sets the owners of this state meeting lbcx to share stats included in|
#         lbsx with weight lbwx applied to each of them when any included stat |
#         of any included battler changes                                      |
#       - Only the 1st applicable notetag of the state with the highest        |
#         priority will be applied to the stat change of the linked battler    |
#       - If a linked battler can't take all of that battler's share due to    |
#         hitting the minimum or maximum stat value, thost not being taken by  |
#         that battler will be shared by the rest of the linked battlers also  |
#       - The battler having a stat to be changed is the last linked battler   |
#         taking that battler's share                                          |
#       - lbcx can be set in Linked Battler Condition Notetag Values           |
#       - lbsx can be set in Linked Battler Stat Notetag Values                |
#       - lbwx can be set in Linked Battler Weight Notetag Values              |
Code: [Select]
    #--------------------------------------------------------------------------|
    #  Linked Battler Condition Notetag Values                                 |
    #  - Setups lbcx used by <linked battlers: lbcx, lbsx, lbwx>               |
    #--------------------------------------------------------------------------|
    # lbcx are read at:
    # 1. RPG::State
    #    - @linked_battlers << [$1.downcase.to_sym, $2.downcase.to_sym,
    #      $3.downcase.to_sym] in load_linked_battlers_notes
    # lbcx are used at:
    # 1. Game_BattlerBase
    #    - mem.state?(state_id) && lb.send(cond, mem, self) in
    #      get_linked_battlers
    # lbcx are strings of names of methods under DoubleX_RMVXA::Linked_Battlers
    # lbcx names can only use alphanumeric characters and can't use uppercase
    # letters
    # The battler having a stat to be changed can be referenced by target
    # Each of the rest of the linked battlers can be referenced by battler
    # The below lbcx are examples added to help you set your lbcx
    # You can freely use, rewrite and/or delete these examples

    # Sets the linked battler condition to include all linked battlers
    def self.lbc1(battler, target)
      true
    end

    # Sets the linked battler condition to include all and no linked battlers if
    # switch with id x is on and off respectively
    def self.lbc2(battler, target)
      $game_switches[x]
    end

    # Sets the linked battler condition to include all linked battlers that are
    # opponents of the battler having a stat to be changed
    def self.lbc3(battler, target)
      target.opposite?(battler)
    end

    # Adds new lbcx here
   

    #--------------------------------------------------------------------------|
    #  Linked Battler Stat Notetag Values                                      |
    #  - Setups lbsx used by <linked battlers: lbcx, lbsx, lbwx>               |
    #--------------------------------------------------------------------------|
    # lbsx are read at:
    # 1. RPG::State
    #    - @linked_battlers << [$1.downcase.to_sym, $2.downcase.to_sym,
    #      $3.downcase.to_sym] in load_linked_battlers_notes
    # lbsx are used at:
    # 1. Game_BattlerBase
    #    - return [l_b, state_id] if lb.send(l_b[1], self).include?(stat) in
    #      linked_battler_state_id
    # lbsx are strings of names of methods under DoubleX_RMVXA::Linked_Battlers
    # lbsx names can only use alphanumeric characters and can't use uppercase
    # letters
    # The battler having a stat to be changed can be referenced by battler
    # It must return an array, which should include strings of a getter method
    # of each stat to be included
    # The below lbsx are examples added to help you set your lbsx
    # You can freely use, rewrite and/or delete these examples

    # Sets the linked battler stat to include hp, mp and tp
    def self.lbs1(battler)
      ["hp", "mp", "tp"]
    end

    # Sets the linked battler stat to always include hp and mp, and include tp
    # only if it's displayed in battle
    def self.lbs2(battler)
      ["hp", "mp", $data_system.opt_display_tp ? "tp" : nil]
    end

    # Sets the linked battler stat to include nothing
    def self.lbs3(battler)
      []
    end

    # Adds new lbsx here
   

    #--------------------------------------------------------------------------|
    #  Linked Battler Weight Notetag Values                                    |
    #  - Setups lbwx used by <linked battlers: lbcx, lbsx, lbwx>               |
    #--------------------------------------------------------------------------|
    # lbwx are read at:
    # 1. RPG::State
    #    - @linked_battlers << [$1.downcase.to_sym, $2.downcase.to_sym,
    #      $3.downcase.to_sym] in load_linked_battlers_notes
    # lbwx are used in methods included in LINKED_STAT
    # lbwx are strings of names of methods under DoubleX_RMVXA::Linked_Battlers
    # lbwx names can only use alphanumeric characters and can't use uppercase
    # letters
    # It must return a real number
    # The battler having a stat to be changed can be referenced by target
    # Each of the rest of the linked battlers can be referenced by battler
    # The below lbwx are examples added to help you set your lbwx
    # You can freely use, rewrite and/or delete these examples

    # Sets the linked battler weight to be the same for all linked battlers
    def self.lbw1(battler, target)
      1
    end

    # Sets the linked battler weight to be multiplied by x if the linked battler
    # is the one having a stat to be changed
    def self.lbw2(battler, target)
      battler == target ? x : 1
    end

    # Sets the linked battler weight to be 0 for all linked battlers
    def self.lbw3(battler, target)
      0
    end

    # Adds new lbwx here
   

    # Sets the battler methods to be used by linked battlers
    # Its keys must be the battler stat getter method string
    # Its values must be an array containing the battler stat setter method,
    # its argument list, the one being modified, and the minimum and maximum
    # value of that battler stat of each linked battler
    # The methods returning those minimum and maximum values must be referenced
    # by battler
    # Methods with name method_name will be aliased to
    # linked_battlers_method_name
    LINKED_STATS = {

      # General form:
      # [:def_class, :super_class] => {
      #   "getter" => ["setter", "args", "mod arg", "stat_min", "stat_max"]
      # }

      [:Game_BattlerBase] => {
        # General form:
        # "getter" => ["setter", "args", "mod arg", "stat_min", "stat_max"]
        "hp" => ["hp=", "hp", "hp", "0", "battler.mhp"],
        "mp" => ["mp=", "mp", "mp", "0", "battler.mmp"],
        "tp" => ["tp=", "tp", "tp", "0", "battler.max_tp"]
        # Adds new methods here
       
      }

      # Adds new classes here
     

    }

Compatibility Fix
Coming Soon

Prerequisites

Abilities:
1. Some RGSS3 scripting proficiency to fully utilize this script

Terms Of Use

You shall:
1. Keep this script's Script Info part's contents intact
You shalln't:
1. Claim that this script is written by anyone other than DoubleX or his aliases
None of the above applies to DoubleX or his/her aliases

Instructions

Open the script editor and put this script into an open slot between Materials and Main. Save to take effect.
Title: Re: DoubleX RMVXA Linked Battlers
Post by: DoubleX on November 08, 2015, 03:26:10 AM
Updates
Code: [Select]
#    v1.00b(GMT 0400 8-11-2015):                                               |
#    1. Notetag values are now symbols of methods in the configuration regions |
#    2. This script doesn't need DoubleX RMVXA Linked Battlers Compatibility to|
#       be compatible with all its addressed scripts                           |
#    3. Further improved this script's compatibility, efficiency and simplicity|