Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

[Review]DoubleX RMVXA State Triggers

DoubleX

Just a nameless weakling
Member

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

Notetag
Code:
#  * 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:
    #--------------------------------------------------------------------------|

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

Games Using This Script
None so far

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

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

Instructions
1. Open the script editor and put this script into an open slot between Materials and Main, save to take effect.

Authors
DoubleX

Changelog
Code:
#    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                                    |

Download Link
http://pastebin.com/BBNR4MBR
 

DoubleX

Just a nameless weakling
Member

Updates
Code:
#    v1.02a(GMT 1300 26-2-2016):                                               |

#    1. stcx and stax take the state calling them as an argument as well       |
 

DoubleX

Just a nameless weakling
Member

Updates
Code:
#    v1.03a(GMT 1500 9-5-2016):                                                |

#    1. adding the timing while to <timing state trigger: stcx, stax>          |
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top