+- Save-Point (https://www.save-point.org)
+-- Forum: Material Development (https://www.save-point.org/forum-8.html)
+--- Forum: Scripts Database (https://www.save-point.org/forum-39.html)
+---- Forum: RPGMaker XP (RGSS) Engine (https://www.save-point.org/forum-116.html)
+---- Thread: RTAB fix for @action == 1 (/thread-2421.html)
RTAB fix for @action == 1 - VinVulpis - 03-07-2008
RTAB fix for @action == 1
Version: 1.3
Introduction
I has a script... sorta... c.c
Anyway, this is a simple bug fix for the RTAB battle system by Cogwheel.. Originally the script has a bug with the action setting of @action == 1, where the game will freeze when you use any skill or item that targets the user of the skill, such as ally, all allies, user.
With this fix, I simply put in break commands for ally scoping skills and for when you use items. I would have just used a condition for certain item scopes, but for some reason, when I do that, it eather makes it act like @action == 2, and comes up with an undefined error for "scope", but this seems to be working just fine... since I know only a little bit about scripting, this was a couple of hours of "trial and error". ':|
This script is beneficial to those who use Minkoff's Animated Battlers - Enhanced by DerVVulfman and use "Blank sprites". @action == 1 restricts a battler from action on another battler who is already in action, fixing the problem of battlers running to where a target "was" and not where it currently "is", but also if you are using "Blank sprites" on your sprite sheet and animating your character preforming skills -in- the battle animation. For example: If Hero is running up to Badguy then preforming a skill that is, say, 42 frames long. Badguy and his buddies he may have with him, must wait until that 42 frames are finished, and Hero is running back to his normal position before they can retaliate. Which brings me to my LAST reason for this fix: With using "Blank Sprites", it is important that Badguy and his buddies wait for Hero to return to his position before attacking because, if Hero is attacked while using a "Blank sprite", the blank sprite will be interrupted and will show a "damaged pose" then automatically started running back, WHILE THE ATTACK ANIMATION IS STILL GOING.
With my last reason, you may be thinking whats the big deal with the battle animation still going, because RTAB has a @anime_wait option, to make the system pause during an animation. MY PROBLEM with that is that it -RUINS- the "Real Time" feature by STOPPING ALL ATB GAUGES! @action == 1 only stops the action of those already giving or receiving an action, while still allowing all others to still act.
Did you all understand that whole rant!? I tried my best to make it easy to understand.
Scripts
"Normal Version"
Code:
#==============================================================================
# ** VinVulpis's RTAB fix (Regular Version) -V1.3-
#------------------------------------------------------------------------------
# This fixes the 'target user and all targets' / 'Type 1 Action' bug in RTAB.
#
# If used with RTAB, place this script patch directly below the RTAB system.
#
# Not required if using the Connected Attacking patch instead.
#==============================================================================
#==============================================================================
# ** Scene_Battle
#------------------------------------------------------------------------------
# This class performs battle screen processing.
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# * Action renewal (main phase)
#--------------------------------------------------------------------------
def action_phase(battler)
# When action 1 is, verification whether or not the battler while acting
if @action == 1 and battler.phase <= 3
for target in battler.target
speller = synthe?(target)
if speller == nil
# When the target is in the midst of usual acting,
if @action_battlers.include?(target)
if target.phase > 2
if @active_actor.current_action.kind == 2
break
break if (@scope == 3 or @scope == 4 or
@scope == 5 or @scope == 6 or @scope == 7)
return
end
end
end
else
# When the target is in the midst of cooperation skill moving,
for spell in speller
if @action_battlers.include?(spell)
if spell.phase > 2
return
end
end
end
end
end
end
case battler.phase
when 1
update_phase4_step1(battler)
when 2
update_phase4_step2(battler)
when 3
update_phase4_step3(battler)
when 4
update_phase4_step4(battler)
when 5
update_phase4_step5(battler)
when 6
update_phase4_step6(battler)
end
end
end
"Connected Attacking Version"
Code:
#==============================================================================
# ** VinVulpis's RTAB fix (for Connected Attacking) -V1.3-
#------------------------------------------------------------------------------
# This fixes the 'all targets' / 'Type 1 Action' bug in RTAB.
#
# If used with RTAB's Connected Attacking script, place this script patch
# directly below the Connected Attacking for this to work.
#
# NOTE: If used with Minkoff's Animated Battlers - Enhanced, please use the
# VinVulpis RTAB fix (regular version) instead.
#==============================================================================
#==============================================================================
# ** Scene_Battle
#------------------------------------------------------------------------------
# This class performs battle screen processing.
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# * Action renewal (main phase)
#--------------------------------------------------------------------------
def action_phase(battler)
# When action 1 is, verification whether or not the battler while acting
if @action == 1 and battler.phase <= 3
for target in battler.target
speller = synthe?(target)
if speller == nil
# When the target is in the midst of usual acting,
if @action_battlers.include?(target)
if target.phase > 2
if @active_actor.current_action.kind == 2
break
break if (@scope == 3 or @scope == 4 or
@scope == 5 or @scope == 6 or @scope == 7)
return
end
end
end
else
# When the target is in the midst of cooperation skill moving,
for spell in speller
if @action_battlers.include?(spell)
if spell.phase > 2
return
end
end
end
end
end
end
case battler.phase
when 1
update_phase4_step1(battler)
when 2
update_phase4_step2(battler)
when 3
update_phase4_step3(battler)
when 4
update_phase4_step4(battler)
when 5
update_phase4_step5(battler)
when 6
update_phase4_step6(battler)
end
# When it is in wait
if battler.wait > 0
# Wait count is decreased
battler.wait -= 1
break
end
# When you act end the loop is passed through
unless @action_battlers.include?(battler)
break
end
end
end
end
Instructions
This script is "Plug'n'Play" so all you need to do is insert it directly under the RTAB script. IMPORTANT: Use the first one is you are using RTAB without Connected Attacting - OR If you are using RATB and Connected attacking WITH Minkoff's Animated Battlers - Enhanced by DerVVulfman. If you are NOT using Animated Battlers and are using RATB with Connected attacking, that is the only case where you with need the second one.
Credits and Thanks
To DerVVulfman for makin me this little Plug'n'Play version.
Author's Notes
I played with this for a while and rewote it 3 times, so thats why its 1.2. Overall, it seems to be workin flawlessly at this point. If anyone does find another weird bug with it, or if anyone knows how to make this better, or safer or somethin, lemme know!
Terms and Conditions
Free to use for whatever you want, I only ask that you credit me.