- Joined
- Jan 2, 2014
- Messages
- 1,787
- Reaction score
- 939
- First Language
- Chinese
- Primarily Uses
- N/A
DoubleX RMVXA Substitute Edit v1.01b
by DoubleX
Compatibility Fix
DoubleX RMVXA Substitute Compatibility Fix
Introduction
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.
To understand why it's the case, let's compare the default with the "how this script works" part(and the only part) of this script(little scripting knowledge is needed to understand the following):
The default
def substitute_battler members.find {|member| member.substitute? } endThe one with the lowest id among all having the substitute flag will be returned by the method substitute_battler, and thus doing the job. Whether the returned member has the highest hp isn't checked at all.
"how this script works" part of this script
def substitute_battler # This part is rewritten by this script to return the one having the highest hp among all having the substitute flag member_hp = member_temp_hp = 0 member_temp = [] members.each { |member| next if !member.substitute? if member.state_resist?(member.death_state_id) member_temp.push(member) member_temp_hp = member.hp if member_temp_hp < member.hp else member_hp = member.hp if member_hp < member.hp end } if !member_temp.empty? member_hp = member_temp_hp member_temp = members end member_temp.find {|member| member.substitute? && member.hp == member_hp} # end # substitute_battlerThe addition of member_hp is to store the highest hp value among all battlers having the substitute flag. The one with the lowest id among all having the highest hp in those having the substitute flag will be returned by the method substitute_battler, and thus doing the job.
def substitute_battler members.find {|member| member.substitute? } endThe one with the lowest id among all having the substitute flag will be returned by the method substitute_battler, and thus doing the job. Whether the returned member has the highest hp isn't checked at all.
"how this script works" part of this script
def substitute_battler # This part is rewritten by this script to return the one having the highest hp among all having the substitute flag member_hp = member_temp_hp = 0 member_temp = [] members.each { |member| next if !member.substitute? if member.state_resist?(member.death_state_id) member_temp.push(member) member_temp_hp = member.hp if member_temp_hp < member.hp else member_hp = member.hp if member_hp < member.hp end } if !member_temp.empty? member_hp = member_temp_hp member_temp = members end member_temp.find {|member| member.substitute? && member.hp == member_hp} # end # substitute_battlerThe addition of member_hp is to store the highest hp value among all battlers having the substitute flag. The one with the lowest id among all having the highest hp in those having the substitute flag will be returned by the method substitute_battler, and thus doing the job.
(v1.00c+)Compatible with DoubleX RMVXA Counterattack Edit(by putting below it)
(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.
Default setting:
With this script:
Default setting:
With this script:
Open the script editor and put this script into an open slot between Materials and Main. Save to take effect.
FAQ
None
Credit and Thanks
DoubleX(Giving me credit is completely optional)
No terms of use other than not claiming this script as created by anyone except DoubleX or his alias
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
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
(DoubleX)Substitute Edit v1.01b.rar
Attachments
-
323 bytes Views: 9
Last edited by a moderator:

