DoubleX RMVXA State Triggers

0 Members and 1 Guest are viewing this topic.

***
Scripter
Rep:
Level 32
Changelog
Code: [Select]
#    v1.03b(GMT 1400 10-5-2016):                                               |
#    1. timing while won't replace but will combine the state's existing       |
#       features with all stax meeting the corresponding stcx                  |
#    v1.03a(GMT 1500 9-5-2016):                                                |
#    1. adding the timing while to <timing state trigger: stcx, stax>          |
#    v1.02a(GMT 1300 26-2-2016):                                               |
#    1. stcx and stax take the state calling them as an argument as well       |
#    v1.01b(GMT 0300 7-11-2015):                                               |
#    1. Notetag values are now symbols of methods in the configuration regions |
#    2. This script doesn't need DoubleX RMVXA State Triggers Compatibility to |
#       be compatible with all its addressed scripts                           |
#    3. Further improved this script's compatibility, efficiency and simplicity|
#    v1.01a(GMT 1100 8-5-2015):                                                |
#    1. Lets users use state triggers with timings set by them                 |
#    v1.00g(GMT 1600 4-5-2015):                                                |
#    1. Improved this script's efficiency                                      |
#    v1.00f(GMT 0300 25-4-2015):                                               |
#    1. Improved this script's effectiveness                                   |
#    v1.00e(GMT 1400 21-4-2015):                                               |
#    1. Further improved this script's robustness                              |
#    v1.00d(GMT 1500 14-4-2015):                                               |
#    1. Improved this script's robustness                                      |
#    v1.00c(GMT 0200 12-4-2015):                                               |
#    1. Fixed triggering remove actions upon adding state resists bug          |
#    2. Fixed not triggering remove actions upon death, escape and recovery bug|
#    v1.00b(GMT 1400 11-4-2015):                                               |
#    1. Fixed not supporting multiple notetags on the same state bug           |
#    v1.00a(GMT 1100 11-4-2015):                                               |
#    1. 1st version of this script finished                                    |

Authors
DoubleX

Credits
DoubleX(Optional)

Purpose
Sets some states to trigger additional effects when conditions are met

Games using this script
None so far

Notetag
Code: [Select]
#  * State Notetags:                                                           |
#    1. <timing state trigger: stcx, stax>                                     |
#       - Sets a state to trigger stax when timing and stcx are met            |
#       - timing can be add, turn, remove or custom timings set by you         |
#       - add means the state's just added                                     |
#       - turn means the state's remaining turn's just reduced by 1            |
#       - remove means the state's just removed                                |
#       - while means the stax effects are active as long as the state's active|
#       - timing must only consist of alphanumeric characters                  |
#       - stcx can be set in State Trigger Condition Notetag Values            |
#       - stax can be set in State Trigger Action Notetag Values               |
Code: [Select]
    #--------------------------------------------------------------------------|
    #  State Trigger Condition Notetag Values                                  |
    #  - Setups stcx used by this script's notetags                            |
    #--------------------------------------------------------------------------|
    # stcx are read at:
    # 1. RPG::State
    #    - (@state_triggers[$1.downcase.to_sym] ||= []).push(
    #      [$2.downcase, $3.downcase]) in load_state_triggers_notes
    # stcx are used at:
    # 1. Game_BattlerBase
    #    - triggers.any? { |trigger| st.send(trigger[0], self, state) } in
    #      meet_any_state_trigger?
    #    - st.send(trigger[0], self, state) in state_trigger_features
    # 2. Game_Battler
    #    - st.send(trigger[1], self) if st.send(trigger[0], self) in
    #      exec_state_triggers
    # stcx are strings names of methods under DoubleX_RMVXA::State_Triggers
    # stcx names can only use alphanumeric characters and can't use uppercase
    # letters
    # battler is the battler calling the stcx
    # state is the state using the stcx
    # The below stcx are examples added to help you set your stcx
    # You can freely use, rewrite and/or delete these examples

    # Sets the state trigger condition as always true
    def self.stc1(battler, state)
      true
    end

    # Sets the state trigger condition as always false
    def self.stc2(battler, state)
      false
    end

    # Sets the state trigger condition as needing switch with id x to be on
    def self.stc3(battler, state)
      $game_switches[x]
    end

    # Sets the state trigger condition as needing the state using this stcx to
    # have its number of remaining turns greater than x
    def self.stc4(battler, state)
      battler.instance_exec { @state_turns[state_id] > x }
    end

    # Adds new stcx here
   

    #--------------------------------------------------------------------------|
    #  State Trigger Action Notetag Values                                     |
    #  - Setups stax used by this script's notetags                            |
    #--------------------------------------------------------------------------|
    # stax are read at:
    # 1. RPG::State
    #    - (@state_triggers[$1.downcase.to_sym] ||= []).push(
    #      [$2.downcase, $3.downcase]) in load_state_triggers_notes
    # stax are used at:
    # 1. Game_BattlerBase
    #    - }.collect! { |trigger| st.send(trigger[1], self, state) }.flatten! in
    #      state_trigger_features
    # 2. Game_Battler
    #    - st.send(trigger[1], self) if st.send(trigger[0], self) in
    #      exec_state_triggers
    # stax are strings of names of methods under DoubleX_RMVXA::State_Triggers
    # stax names can only use alphanumeric characters and can't use uppercase
    # letters
    # battler is the battler calling the stax
    # state is the state using the stax
    # If the timing using the stax is while, the stax must return an array of
    # RPG::BaseItem::Feature
    # You can refer to Game_BattlerBase and RPG::BaseItem::Feature for more info
    # The below stax are examples added to help you set your stax
    # You can freely use, rewrite and/or delete these examples

    # Sets the state trigger action as what Special Effect Escape does
    # This stax's not supposed to work with the timing while as it doesn't
    # return an array of RPG::BaseItem::Feature
    def self.sta1(battler, state)
      battler.hide
    end

    # Sets the state trigger action as calling common event with id
    # common_event_id
    # This stax's not supposed to work with the timing while as it doesn't
    # return an array of RPG::BaseItem::Feature
    def self.sta2(battler, state)
      $game_temp.reserve_common_event(common_event_id)
    end

    # Sets the state trigger action as executing damage equal to the value of
    # game variable with id x to self with type equal to that of skill with id
    # equal to y
    # This stax's not supposed to work with the timing while as it doesn't
    # return an array of RPG::BaseItem::Feature
    def self.sta3(battler, state)
      battler.result.clear
      battler.result.make_damage($game_variables[x], $data_skills[y])
      battler.execute_damage(battler)
    end

    # Sets the state trigger action as multiplying the battler's atk by x * 100%
    # This stax's supposed to work with the timing while as it returns an array
    # of RPG::BaseItem::Feature
    def self.sta4(battler, state)
      [RPG::BaseItem::Feature.new(21, 2, x)]
    end

    # Adds new stax here
   

Script Call
Code: [Select]
#  * Battler manipulations                                                     |
#    1. exec_state_triggers(state_id, timing)                                  |
#       - Executes all state triggers with timing timing of state with id      |
#         state_id                                                             |
#    2. meet_any_state_trigger?(state, timing)                                 |
#       - Checks if any stcx with timing timing of state state is met          |
#    3. state_trigger_features(state, timing)                                  |
#       - Returns an array of features returned by all stax meeting stcx with  |
#         timing timing of state                                               |
#       - This script call's not supposed to work with timing add, turn nor    |
#         remove but supposed to work with timing while                        |

Prerequisites
Abilities:
1. Decent 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.
« Last Edit: May 14, 2016, 02:25:50 AM by DoubleX »

***
Scripter
Rep:
Level 32
Updates
Code: [Select]
#    v1.01b(GMT 0300 7-11-2015):                                               |
#    1. Notetag values are now symbols of methods in the configuration regions |
#    2. This script doesn't need DoubleX RMVXA State Triggers Compatibility to |
#       be compatible with all its addressed scripts                           |
#    3. Further improved this script's compatibility, efficiency and simplicity|

***
Scripter
Rep:
Level 32
Updates
Code: [Select]
#    v1.02a(GMT 1300 26-2-2016):                                               |
#    1. stcx and stax take the state calling them as an argument as well       |

***
Scripter
Rep:
Level 32
Updates
Code: [Select]
#    v1.03a(GMT 1500 9-5-2016):                                                |
#    1. adding the timing while to <timing state trigger: stcx, stax>          |

***
Scripter
Rep:
Level 32
Updates
Code: [Select]
#    v1.03b(GMT 1400 10-5-2016):                                               |
#    1. timing while won't replace but will combine the state's existing       |
#       features with all stax meeting the corresponding stcx                  |