#==============================================================================| # ** DoubleX RMVXA Permanent States v1.00c | #------------------------------------------------------------------------------| # * Changelog | # v1.00c(GMT 1400 14-7-2015): | # - Increased this script's compactness and efficiency | # v1.00b(GMT 0200 12-3-2014): | # - Fixed permanent states bug upon battler's revival | # v1.00a(GMT 0700 13-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: | # - Use of notetags | #------------------------------------------------------------------------------| # * Functions | # - Sets specific states to be always added back automatically upon revival | #------------------------------------------------------------------------------| # * 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 or rewriting method: | # - clear_states under class Game_BattlerBase | # - revive under class Game_Battler | # may have compatibility issues with this script | # Place this script above those aliasing any of these methods if possible | #==============================================================================| ($imported ||= {})["DoubleX RMVXA Permanent States"] = true #==============================================================================| # ** You only need to edit this part as it's about what this script does | #------------------------------------------------------------------------------| module DoubleX_RMVXA module Permanent_States #------------------------------------------------------------------------------| # * Notetag <permanent state> for states | # To make a state always being automatically added back upon revival, put | # the above notetag into that state's notebox in the database. | #------------------------------------------------------------------------------| #------------------------------------------------------------------------------| # * ALL_STATES_PERMANENT, default = false | # Notetags will be ignored and all states will be permanent states | #------------------------------------------------------------------------------| ALL_STATES_PERMANENT = false end # Permanent_States end # DoubleX_RMVXA #==============================================================================| #==============================================================================| # ** You need not edit this part as it's about how this script works | #------------------------------------------------------------------------------| class << DataManager #----------------------------------------------------------------------------| # Alias method: load_database | #----------------------------------------------------------------------------| alias load_database_permanent_state load_database def load_database load_database_permanent_state # Added to load permanent state notetags load_notetags_permanent_state # end # load_database #----------------------------------------------------------------------------| # New method: load_notetags_permanent_state | #----------------------------------------------------------------------------| def load_notetags_permanent_state $data_states.each { |obj| obj.load_notetags_permanent_state if obj } end # load_notetags_permanent_state end # DataManager class RPG::State < RPG::BaseItem #----------------------------------------------------------------------------| # New public instance variable | #----------------------------------------------------------------------------| attr_accessor :permanent_state #----------------------------------------------------------------------------| # New method: load_notetags_permanent_state | #----------------------------------------------------------------------------| def load_notetags_permanent_state if DoubleX_RMVXA::Permanent_States::ALL_STATES_PERMANENT return @permanent_state = true end @note.split(/[\r\n]+/).each { |line| case line when /<(?:PERMANENT_STATE|permanent state)>/i return @permanent_state = true end } end # load_notetags_permanent_state end # RPG::State class Game_BattlerBase #----------------------------------------------------------------------------| # Alias method: clear_states | #----------------------------------------------------------------------------| alias clear_states_permanent_state clear_states def clear_states # Added to store permanent states @permanent_states = [] @permanent_states_turns = {} if @states && @states.size > 0 @states.each { |state| next unless $data_states[state].permanent_state @permanent_states << state @permanent_states_turns[state] = @state_turns[state] } end # clear_states_permanent_state end # clear_states end # Game_BattlerBase class Game_Battler < Game_BattlerBase #----------------------------------------------------------------------------| # Alias method: revive | #----------------------------------------------------------------------------| alias revive_permanent_states revive def revive # Added to add permanent states upon revival add_permanent_states # revive_permanent_states end # revive #----------------------------------------------------------------------------| # New method: add_permanent_states | #----------------------------------------------------------------------------| def add_permanent_states @states = @permanent_states @state_turns = @permanent_states_turns end # add_permanent_states end # Game_Battler #==============================================================================|