In the default setting, if more than one battler in the same side have the substitute flag, the one with the lowest id(the leftmost one) will always do the job, even if his/her/its hp isn't the highest among them all.
With this script, it's the one with the highest hp that'll always do the job, thus increasing the effectiveness of the substitute flag if more than one battler in the same side have it.
(v1.00b+)Substitute flag applies to magic reflection and counterattack as well.
(v1.00d+)Battlers resisting state with death_state_id take the substitute role.
Features
* Plug and play(You don't need to edit anything in this script but you may still do so)
Screenshots
Believe it or not, in the following 2 screenshots, Eric, Terence and Ernest have substitute flag while Isabelle doesn't.
# ** DoubleX RMVXA Substitute Edit v1.01b |
#------------------------------------------------------------------------------|
# * Changelog |
# v1.01b(GMT 1200 21-7-2014): |
# - Compatible with DoubleX RMVXA Formulae Edit |
# v1.01a(GMT 0700 4-7-2015): |
# - Lets users set if the substitute only triggers if the skill/item hits |
# - Improved this script's readibility |
# v1.00h(GMT 0200 5-7-2014): |
# - Improved the compatibility with DoubleX RMVXA Counterattack Edit |
# v1.00g(GMT 0500 14-3-2014): |
# - Substitute flag applies to mp damage also |
# v1.00f(GMT 1200 8-2-2014): |
# - Substitute flag doesn't apply to item targeting friends |
# v1.00e(GMT 0900 16-1-2014): |
# - Fixed a & b bug in damage formula of counterattack skills |
# v1.00d(GMT 0000 9-1-2014): |
# - Battlers resisting state with death_state_id take the substitute role |
# v1.00c(GMT 0400 5-1-2014): |
# - Compatible with DoubleX RMVXA Counterattack Edit(by putting below it) |
# v1.00b(GMT 0000 5-1-2014): |
# - Substitute flag applies to MRF and CNT also |
# v1.00a(GMT 1200 2-1-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: |
# - nothing special |
#------------------------------------------------------------------------------|
# * Functions |
# - Alters the effect of special flag substitute to be the one with the |
# highest hp among all having this flag to take the substitute role |
#------------------------------------------------------------------------------|
# * 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: |
# - item_apply under Game_Battler |
# - substitute_battler under Game_Unit |
# - invoke_item, invoke_counter_attack, invoke_magic_reflection or |
# check_substitute under Scene_Battle |
# may have compatibility issues with this script |
# Place this script above those aliasing any of these methods if possible |
#==============================================================================|
#==============================================================================|
# ** You only need to edit this part as it's about what this script does |
#------------------------------------------------------------------------------|
module DoubleX_RMVXA
module Substitute_Edit
#------------------------------------------------------------------------------|
# * (v1.01a+)Hit_Substitute, default = false |
# If Hit_Substitute is true, substitute won't trigger if the skill/item |
# would miss the original target |
#------------------------------------------------------------------------------|
Hit_Substitute = false
end # Substitute_Edit
end # DoubleX_RMVXA
#==============================================================================|
# ** You need not edit this part as it's about how this script works |
#------------------------------------------------------------------------------|
#----------------------------------------------------------------------------|
# New public instance variable |
#----------------------------------------------------------------------------|
attr_accessor :substitute_edit
#----------------------------------------------------------------------------|
# Rewrite method: substitute_battler |
#----------------------------------------------------------------------------|
def substitute_battler
# Rewritten to return the one with highest hp among all with substitute flag
member_hp = member_temp_hp = 0
member_temp = []
members.each { |member|
next unless member.substitute?
if $game_temp.substitute_edit == :mp
break member_hp = 0 if member.mp == 0
member_hp = member.mp if member_hp < member.mp
elsif $game_temp.substitute_edit == :hp
if member.state_resist?(member.death_state_id)
member_temp.push(member)
break member_temp_hp = 0 if member.hp == 0
member_temp_hp = member.hp if member_temp_hp < member.hp
else
member_hp = member.hp if member_hp < member.hp
end
end
}
if member_temp.empty?
member_temp_hp = member_hp
member_temp = members
end
if $game_temp.substitute_edit == :mp
member_temp.find {|m| m.substitute? && m.mp == member_temp_hp}
elsif $game_temp.substitute_edit == :hp
member_temp.find {|m| m.substitute? && m.hp == member_temp_hp}
end
#
end # substitute_battler
Open the script editor and put this script into an open slot between Materials and Main. Save to take effect.
FAQ
None
Compatibility
Scripts aliasing or rewriting method:
- substitute_battler under class Game_Unit
- invoke_counter_attack or invoke_magic_reflection under class Scene_Battle
may have compatibility issues with this script
Place this script above those aliasing any of these methods if possible
Credits and Thanks
None
Author's Notes
None
Terms and Conditions
None other than not claiming this script as created by anyone except DoubleX or his alias