I've been looking for a standalone CTB battle system with a built-in order gauge, if possible.
It needs to be simple to use, preferably a single script, with clear instructions on how to use it. That means, all of the script calls, note tags, and options are in their own areas, each one clearly explained as to what they do and how they do it.
If there's anything like this, please share.
Needing a CTB system similar to FFX.
● ARCHIVED · READ-ONLY
-
-
You need to explain how the battle system works, and not just how you want the script to be presented.
-
For now try Ao No Kiseki Battle System by Saba Kan, AFAIK that's the most similar system, if I'm not wrong.
EDIT : Oh yeah I never use or download it, just looking at it(in a flash) XD so maybe sorry if that's not what you want. -
CTB works as such: An actor or enemy has a certain amount of agility, which influences the battle order. However, unlike other turn-based battles, when an actor's turn comes up, they act immediately when you chose what they do.
Along with this, there are abilities that raise agility or lower it, thus allowing actors to have more or less turns, and abilities that delay attacks.
Also, actors can be exchanged at will in battle, allowing for the player to switch up their strategy. -
Yami's PCTB + it's visual add on for seeing the turn order. That is simpler than Saba Kan's (which is really like Ao No Kiseki's battle system which involves lots of extras) and is more FFX like :)
Though for the change actor part, you would need a combat change party member command script. I think yanfly has one. -
The thing is, that was the first thing I went to, but given every script they have is only obtainable through Dropbox, I cannot get it because of the stupid error that happens.
-
Then probably just wait until you could get it.
Though AFAIK, Yami's scripts are also now on Github. At the very least I'm sure some of it were. And you could always message Yami here :)
EDIT: Look for it on the linked github, hopefully it's there
https://github.com/suppayami/rmvxa-collection
If not, maybe you could ask Yami for a copy. -
Here it is.
The problem is that Yami PCTB is no longer supported, and I need help with it (it is not working with Yanfly Instant Cast and sometimes makes a crash) but that is something that I will open my own thread for, Adiktuzmiko knows I've been looking for a nice CTB haha.
Anyway here you go inside spoiler:
Additional notes, I highly recommend to add the Disable L/R selection and YEA Turn Fix from TheoAllen, otherwise you will run in to some problems.Spoiler
Main Script
#==============================================================================# # ▼ YSA Battle System: Predicted Charge Turn Battle# -- Last Updated: 2012.03.17# -- Level: Easy, Normal# -- Requires: n/a# #==============================================================================$imported = {} if $imported.nil?$imported["YSA-PCTB"] = true#==============================================================================# ▼ Updates# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# 2012.03.17 - Compatible Issue: YEA - Battle Engine Ace.# - Stand Alone fixed.# 2012.02.20 - Reduced lag a little.# 2012.02.19 - Fixed: Press Left/Right when choose action for actor.# - Script now can work alone, without YEA - Battle Engine Ace.# 2012.02.16 - Finished Script.# 2012.02.07 - Started Script.# #==============================================================================# ▼ Introduction# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# Battle Type: Predicted CTB.# #==============================================================================# ▼ Instructions# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# To install this script, open up your script editor and copy/paste this script# to an open slot below ▼ Materials/素材 but above ▼ Main. Remember to save.## To get this work with YEA - Ace Battle Engine, set the default battle system # for your game to be :pctb by either going to the Ace Battle Engine script and # setting DEFAULT_BATTLE_SYSTEM as :pctb or by using the following script call: # # $game_system:set_battle_system:)pctb)## -----------------------------------------------------------------------------# Skill and Item Database# -----------------------------------------------------------------------------# SPEED FIX# ~ When set SPEED FIX to a number larger than 0, battler's Speed will be reseted# by value, equal to SPEED_FIX * :speed_rate.# ~ When set SPEED FIX to a number smaller than 0, battler's Speed will be# reduced by value, equal to SPEED_FIX * :speed_rate. This Skill/Item will be# counted as a charging skill/item.## -----------------------------------------------------------------------------# Skill and Item Notetags# -----------------------------------------------------------------------------# <charge rate: x%># Change battler's speed rate when charging a skill or item.## <ctb cost: x%> or <ctb cost: x># Decide how much Speed will be reduced after an action.# If it's a percent, Battler's Speed will be reduced x percents of Max Threshold.# If it's a normal value, Battler's Speed will be reduced by x.# Default: CTB COST 100% in percent and 0 in value## <ctb change: +x%> or <ctb change: +x># <ctb change: -x%> or <ctb change: -x># Change target's Speed when use this skill/item.# If it's a percent, Battler's Speed will be increase or decrease x percents of # Max Threshold.# If it's a normal value, Battler's Speed will be increase or decrease by x.##==============================================================================# ▼ Compatibility# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# This script is made strictly for RPG Maker VX Ace. It is highly unlikely that# it will run with RPG Maker VX without adjusting.# # This script is compatible with Yanfly Engine Ace - Ace Battle Engine v1.15+ # and the script must be placed under Ace Battle Engine in the script listing.# #==============================================================================#==============================================================================# ▼ Configuration#==============================================================================module YSAmodule PCTB#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-# - Mechanic Configuration -#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-CTB_MECHANIC = { # Start:dyn_threshold => true,# Threshold Offset. If Dynamic Threshold is set to false, this will be# threshold:threshold_offset => 400,# For Dynamic Threshold:threshold_min => 800,:threshold_rate => 4.0,# Ticks per turn:turn_ctr => 32,:wait_after_turn => 5, # Frames# Predict Type# Type 0: Show Battlers Order only.# Type 1: Show Battlers Order and Re-order when active battler chooses# an action.# Type 2: Show Battlers Order in X Turns (FFX Style).:predict => 2,:pre_turns => 22,} # Do not remove this.#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-# - Battler Configuration -#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-BATTLER_RULES = { # Start# Speed offset when reset, multiply with Skill/Item speed:speed_rate => 16.0,:speed_limit => 0.75, # Set to 0 to disable limit.# Initialize speed:initial => 0.10,:surprise => 0.75,:random_rate => 8.0, # Multiply with AGI.# Charging Term:charge_text => "%s is charging %s!",:charge_text_dur => 4,# Can't take action Term:cant_text => "%s cannot take an action!",:cant_text_dur => 4,:show_cant_text => true,} # Do not remove this.#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-# - Event Configuration -#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-CTB_COMMON_EVENT = { # Start# Set to 0 to disable this.:turn_update => 0, # Run common event whenever turn updates.:end_action => 0, # Run common event whenever an action finishes.} # Do not remove this.endend#==============================================================================# ▼ Editting anything past this point may potentially result in causing# computer damage, incontinence, explosion of user's head, coma, death, and/or# halitosis so edit at your own risk.#==============================================================================module YSAmodule REGEXPmodule USABLEITEMCHARGE_RATE = /<(?:CHARGE_RATE|charge rate):[ ](\d+)?([%%])>/iCTB_COST_PER = /<(?:CTB_COST|ctb cost):[ ](\d+)?([%%])>/iCTB_COST_VAL = /<(?:CTB_COST|ctb cost):[ ](\d+)?>/iCHANGE_CTB_PER = /<(?:CTB_CHANGE|ctb change):[ ]([\+\-]\d+)([%%])?>/iCHANGE_CTB_VAL = /<(?:CTB_CHANGE|ctb change):[ ]([\+\-]\d+)?>/iend # USABLEITEMend # REGEXPend # YSA#==============================================================================# ■ DataManager#==============================================================================module DataManager#--------------------------------------------------------------------------# alias method: load_database#--------------------------------------------------------------------------class <<self; alias load_database_pctb load_database; enddef self.load_databaseload_database_pctbload_notetags_pctbend#--------------------------------------------------------------------------# new method: load_notetags_pctb#--------------------------------------------------------------------------def self.load_notetags_pctbgroups = [$data_skills, $data_items]for group in groupsfor obj in groupnext if obj.nil?obj.load_notetags_pctbendendendend # DataManager#==============================================================================# ■ RPG::UsableItem#==============================================================================class RPG::UsableItem < RPG::BaseItem#--------------------------------------------------------------------------# public instance variables#--------------------------------------------------------------------------attr_accessor :charge_rateattr_accessor :ctb_costattr_accessor :ctb_cost_valattr_accessor :ctb_changeattr_accessor :ctb_change_val#--------------------------------------------------------------------------# common cache: load_notetags_pctb#--------------------------------------------------------------------------def load_notetags_pctb@charge_rate = 100@ctb_cost = 100@ctb_cost_val = 0@ctb_change = 0@ctb_change_val = 0#---self.note.split(/[\r\n]+/).each { |line|case line#---when YSA::REGEXP::USABLEITEM::CHARGE_RATE@charge_rate = $1.to_iwhen YSA::REGEXP::USABLEITEM::CTB_COST_PER@ctb_cost = $1.to_iwhen YSA::REGEXP::USABLEITEM::CTB_COST_VAL@ctb_cost_val = $1.to_iwhen YSA::REGEXP::USABLEITEM::CHANGE_CTB_PER@ctb_change = $1.to_iwhen YSA::REGEXP::USABLEITEM::CHANGE_CTB_VAL@ctb_change_val = $1.to_i#---end} # self.note.split#---@charge_rate = 100 if @charge_rate <= 0@ctb_cost = 100 if @ctb_cost > 100endend # RPG::UsableItem#==============================================================================# ■ BattleManager#==============================================================================module BattleManager#--------------------------------------------------------------------------# alias method:# - make_action_orders# - prior_command# - next_command# - in_turn?# - battle_start#--------------------------------------------------------------------------class <<selfalias pctb_make_action_orders make_action_ordersalias pctb_prior_command prior_commandalias pctb_next_command next_commandalias pctb_next_subject next_subjectalias pctb_battle_start battle_startalias pctb_input_start input_startalias pctb_turn_start turn_startend#--------------------------------------------------------------------------# battle_start#--------------------------------------------------------------------------def self.battle_startpctb_battle_startif btype?:)pctb)make_pctb_action_orders make_pctb_thresholdmake_pctb_first_speedendend#--------------------------------------------------------------------------# make_action_orders#--------------------------------------------------------------------------def self.make_action_ordersreturn if btype?:)pctb)pctb_make_action_orders unless btype?:)pctb)end#--------------------------------------------------------------------------# next_command#--------------------------------------------------------------------------def self.next_commandreturn false if btype?:)pctb)pctb_next_commandend#--------------------------------------------------------------------------# prior_command#--------------------------------------------------------------------------def self.prior_commandreturn false if btype?:)pctb)pctb_prior_commandend#--------------------------------------------------------------------------# new method: make_pctb_action_orders#--------------------------------------------------------------------------def self.make_pctb_action_orders@action_battlers = []end#--------------------------------------------------------------------------# new method: make_pctb_threshold#--------------------------------------------------------------------------def self.make_pctb_threshold@threshold = YSA::pCTB::CTB_MECHANIC[:threshold_offset]return unless YSA::pCTB::CTB_MECHANIC[:dyn_threshold]offset = 0battlers = $game_party.members + $game_troop.membersbattlers.each { |battler| offset += battler.agi}@threshold += offset * YSA::pCTB::CTB_MECHANIC[:threshold_rate]@threshold = @threshold >= YSA::pCTB::CTB_MECHANIC[:threshold_min] ? @threshold : YSA::pCTB::CTB_MECHANIC[:threshold_min]end#--------------------------------------------------------------------------# new method: make_pctb_first_speed#--------------------------------------------------------------------------def self.make_pctb_first_speedinit_value = YSA::pCTB::BATTLER_RULES[:initial] * pctb_thresholdsurprise_value = YSA::pCTB::BATTLER_RULES[:surprise] * pctb_thresholdbattlers = $game_party.members + $game_troop.membersbattlers.each { |battler|check = (battler.actor? && @preemptive) || (battler.enemy? && @surprise)battler.pctb_speed = init_valuebattler.pctb_speed = surprise_value if checkrandom = YSA::pCTB::BATTLER_RULES[:random_rate] * battler.agi + 1battler.pctb_speed += rand(random)}end#--------------------------------------------------------------------------# new method: pctb_threshold#--------------------------------------------------------------------------def self.pctb_thresholdreturn @thresholdend#--------------------------------------------------------------------------# new method: set_actor#--------------------------------------------------------------------------def self.set_actor(actor_index)@actor_index = actor_indexend#--------------------------------------------------------------------------# new method: action_list_ctb#--------------------------------------------------------------------------def self.action_list_ctbreturn @action_battlersend#--------------------------------------------------------------------------# alias method: next_subject#--------------------------------------------------------------------------def self.next_subjectreturn pctb_next_subject unless btype?:)pctb)loop dobattler = @action_battlers[0]return nil unless battlerunless battler.index && battler.alive?@action_battlers.shiftnextendreturn battlerendend#--------------------------------------------------------------------------# alias method: input_start#--------------------------------------------------------------------------def self.input_startreturn pctb_input_start unless btype?:)pctb)@phase = :inputreturn falseend#--------------------------------------------------------------------------# alias method: turn_start#--------------------------------------------------------------------------def self.turn_startreturn pctb_turn_start unless btype?:)pctb)@phase = :turnclear_actorend#--------------------------------------------------------------------------# alias method: turn_start#--------------------------------------------------------------------------def self.sort_battlers(cache = false)if btype?:)pctb)battlers = []for battler in ($game_party.members + $game_troop.members)next if battler.dead?battlers.push(battler)endbattlers.sort! { |a,b|if a.pctb_ctr(cache) != b.pctb_ctr(cache)a.pctb_ctr(cache) <=> b.pctb_ctr(cache)elsif a.pctb_prediction != b.pctb_predictionb.pctb_prediction <=> a.pctb_predictionelsif a.agi != b.agib.agi <=> a.agielsif a.screen_x != b.screen_xa.screen_x <=> b.screen_xelsea.name <=> b.nameend}return battlersendend#--------------------------------------------------------------------------# new method: btype?#--------------------------------------------------------------------------unless $imported["YEA-BattleEngine"]def self.btype?(btype)return true if btype == :pctbendendend # BattleManager#==============================================================================# ■ Game_System#==============================================================================class Game_Systemif $imported["YEA-BattleEngine"]#--------------------------------------------------------------------------# alias method: set_battle_system#--------------------------------------------------------------------------alias pctb_set_battle_system set_battle_systemdef set_battle_system(type)case typewhen :pctb; @battle_system = :pctbelse; pctb_set_battle_system(type)endend#--------------------------------------------------------------------------# alias method: battle_system_corrected#--------------------------------------------------------------------------alias pctb_battle_system_corrected battle_system_correcteddef battle_system_corrected(type)case typewhen :pctb; return :pctbelse; return pctb_battle_system_corrected(type)endendendend # Game_System#==============================================================================# ■ Game_Battler#==============================================================================class Game_Battler < Game_BattlerBase#--------------------------------------------------------------------------# public instance variables#--------------------------------------------------------------------------attr_accessor :pctb_speedattr_accessor :pctb_predictionattr_accessor :last_objattr_accessor :pctb_forcedattr_accessor :pctb_speed_cache#--------------------------------------------------------------------------# alias method: initialize#--------------------------------------------------------------------------alias pctb_initialize initializedef initializepctb_initialize@pctb_speed = 0@pctb_prediction = 0@pctb_speed_cache = 0end#--------------------------------------------------------------------------# new method: base_gain_pctb#--------------------------------------------------------------------------def base_gain_pctbreturn self.agiend#--------------------------------------------------------------------------# new method: real_gain_pctb#--------------------------------------------------------------------------def real_gain_pctbobj = current_action.item if current_actionvalue = base_gain_pctbvalue = value * obj.charge_rate / 100 if obj && @charging_pctbreturn valueend#--------------------------------------------------------------------------# new method: pctb_ctr#--------------------------------------------------------------------------def pctb_ctr(cache = false)@pctb_prediction = @pctb_speed unless cache@pctb_prediction = @pctb_speed_cache if cachereturn 0 if @pctb_prediction >= BattleManager.pctb_thresholdvalue = (BattleManager.pctb_threshold.to_f - @pctb_prediction.to_f) / real_gain_pctb.to_fvalue = value.ceil@pctb_prediction += value * real_gain_pctbreturn valueend#--------------------------------------------------------------------------# new method: reset_pctb_speed#--------------------------------------------------------------------------def reset_pctb_speed(cache = false)return @pctb_forced = false if @pctb_forcedif actor?obj = input ? input.item : @last_objelseobj = @last_objendreal_cache = @pctb_speedif objlimit_rate = YSA::pCTB::BATTLER_RULES[:speed_limit]limit = BattleManager.pctb_threshold * limit_ratereal_cache -= obj.ctb_cost * BattleManager.pctb_threshold / 100real_cache -= obj.ctb_cost_valvalue = YSA::pCTB::BATTLER_RULES[:speed_rate] * obj.speedvalue = [value, 0].maxvalue = [value, limit].min if limit > 0real_cache += valueelsereal_cache -= BattleManager.pctb_thresholdendreal_cache = [real_cache, 0].max@pctb_speed = real_cache if cache == false@pctb_speed_cache = real_cache if cache@charging_pctb = false unless cache@last_obj = nil unless cacheend#--------------------------------------------------------------------------# new method: charging_start#--------------------------------------------------------------------------def charging_startreturn false unless BattleManager.btype?:)pctb)return false if @charging_pctbreturn false unless current_actionobj = current_action.itemreturn false unless objreturn false if obj.speed >= 0value = obj.speed * YSA::pCTB::BATTLER_RULES[:speed_rate]@pctb_speed += value@pctb_speed = [@pctb_speed, 0].maxBattleManager.action_list_ctb.shift@charging_pctb = trueSceneManager.scene.charging_start(self)SceneManager.scene.update_pctb_speedreturn trueend#--------------------------------------------------------------------------# new method: pctb_active?#--------------------------------------------------------------------------def pctb_active?return @pctb_speed >= BattleManager.pctb_threshold && movable?end#--------------------------------------------------------------------------# new method: storage_speed#--------------------------------------------------------------------------def storage_speedreturn if @cache_speed@cache_speed = @pctb_speedend#--------------------------------------------------------------------------# new method: restore_speed#--------------------------------------------------------------------------def restore_speedreturn unless @cache_speed@pctb_speed = @cache_speed@cache_speed = nilend#--------------------------------------------------------------------------# alias method: update_state_turns#--------------------------------------------------------------------------alias pctb_update_state_turns update_state_turnsdef update_state_turnsif BattleManager.btype?:)pctb)states.each do |state|@state_turns[state.id] -= 1 if @state_turns[state.id] > 0 && state.auto_removal_timing == 2endelsepctb_update_state_turnsendend#--------------------------------------------------------------------------# new method: update_state_actions#--------------------------------------------------------------------------def update_state_actionsreturn unless BattleManager.btype?:)pctb)states.each do |state|@state_turns[state.id] -= 1 if @state_turns[state.id] > 0 && state.auto_removal_timing == 1endend#--------------------------------------------------------------------------# alias method: on_action_end#--------------------------------------------------------------------------alias pctb_on_action_end on_action_enddef on_action_endpctb_on_action_endupdate_state_actionsend#--------------------------------------------------------------------------# alias method: force_action#--------------------------------------------------------------------------alias pctb_force_action force_actiondef force_action(skill_id, target_index)if BattleManager.btype?:)pctb)action = Game_Action.new(self, true)action.set_skill(skill_id)if target_index == -2action.target_index = last_target_indexelsif target_index == -1action.decide_random_targetelseaction.target_index = target_indexend@actions = [action] + @actions@pctb_forced = trueendpctb_force_action(skill_id, target_index) unless BattleManager.btype?:)pctb)end#--------------------------------------------------------------------------# alias method: make_action_times#--------------------------------------------------------------------------alias pctb_make_action_times make_action_timesdef make_action_timesBattleManager.btype?:)pctb) ? 1 : pctb_make_action_timesendend # Game_Battler#==============================================================================# ■ Game_Actor#==============================================================================class Game_Actor < Game_Battler#--------------------------------------------------------------------------# overwrite method: input#--------------------------------------------------------------------------if $imported["YEA-BattleEngine"]def inputgame_actor_input_abeendend#--------------------------------------------------------------------------# new method: screen_x | screen_y#--------------------------------------------------------------------------unless $imported["YEA-BattleEngine"]def screen_x0enddef screen_y0endendend # Game_Actor#==============================================================================# ■ Scene_Battle#==============================================================================class Scene_Battle < Scene_Base#--------------------------------------------------------------------------# new method: battle_start#--------------------------------------------------------------------------alias pctb_battle_start battle_startdef battle_startpctb_battle_startupdate_pctb_speed if BattleManager.btype?:)pctb)end#--------------------------------------------------------------------------# new method: charging_start#--------------------------------------------------------------------------def charging_start(battler)@status_window.show@status_window.openif $imported["YEA-BattleEngine"]redraw_current_status@status_aid_window.hideelserefresh_statusend@actor_command_window.showstring = YSA::pCTB::BATTLER_RULES[:charge_text]skill = battler.current_action.itemskill_text = sprintf("\\i[%d]%s", skill.icon_index, skill.name)text = sprintf(string, battler.name, skill_text)@log_window.add_text(text)YSA::pCTB::BATTLER_RULES[:charge_text_dur].times do @log_window.wait end@log_window.back_oneend#--------------------------------------------------------------------------# new method: update_pctb_speed#--------------------------------------------------------------------------def update_pctb_speedreturn if scene_changing?@clocktick = 0 if @clocktick.nil?ctr = YSA::pCTB::CTB_MECHANIC[:turn_ctr]#---battlers = BattleManager.sort_battlersfirst_battler = battlers[0]tick = first_battler.pctb_ctr#---battlers.each { |battler|battler.pctb_speed += tick * battler.real_gain_pctb}#---@clocktick = @clocktick + tickpass_turn = @clocktick / ctrpass_turn = pass_turn.floor.to_ipass_turn.times {$game_temp.reserve_common_event(YSA::pCTB::CTB_COMMON_EVENT[:turn_update]) if YSA::pCTB::CTB_COMMON_EVENT[:turn_update] > 0 && $data_common_events[YSA::pCTB::CTB_COMMON_EVENT[:turn_update]]process_event$game_troop.increase_turnturn_endwait(YSA::pCTB::CTB_MECHANIC[:wait_after_turn])}@clocktick = @clocktick % ctr#---if first_battler.movable?BattleManager.action_list_ctb.push(first_battler)elsestring = YSA::pCTB::BATTLER_RULES[:cant_text]text = sprintf(string, first_battler.name)@log_window.add_text(text)YSA::pCTB::BATTLER_RULES[:cant_text_dur].times do @log_window.wait end@log_window.back_onefirst_battler.clear_actionsfirst_battler.reset_pctb_speedreturn update_pctb_speed && update_order_gaugeend#---update_order_gauge#---start_pctb_actionend#--------------------------------------------------------------------------# new method: start_pctb_action#--------------------------------------------------------------------------def start_pctb_actionbattler = BattleManager.action_list_ctb[0]battler.make_actions if battler.actions.size == 0return if battler.charging_start && battler.enemy?if battler.actor? && battler.input && battler.input.item.nil?BattleManager.input_startBattleManager.set_actor(battler.index) start_actor_command_selectionif $imported["YEA-BattleEngine"]redraw_current_status@status_aid_window.hideelserefresh_statusend@status_window.show@status_window.openendturn_start if battler.enemy?turn_start if battler.actor? && battler.input && battler.input.itemend#--------------------------------------------------------------------------# new method: update_order_gauge#--------------------------------------------------------------------------def update_order_gaugebattler = BattleManager.action_list_ctb[0]return unless $imported["YSA-OrderBattler"]BattleManager.make_ctb_battler_order@active_order_sprite.battler = battler if @active_order_spritefor order in @spriteset_orderorder.make_destinationendend#--------------------------------------------------------------------------# alias method: execute_action#--------------------------------------------------------------------------alias scene_battle_execute_action_pctb execute_actiondef execute_actionscene_battle_execute_action_pctbunless BattleManager.action_forced?@subject.last_obj = @subject.current_action.item unless @subject.last_obj endend#--------------------------------------------------------------------------# alias method: execute_action#--------------------------------------------------------------------------alias scene_battle_invoke_item_pctb invoke_itemdef invoke_item(target, item)scene_battle_invoke_item_pctb(target, item)#---change_per = item.ctb_change * BattleManager.pctb_threshold / 100change_val = item.ctb_change_valtarget.pctb_speed += change_pertarget.pctb_speed = 0 if target.pctb_speed < 0target.pctb_speed += change_valtarget.pctb_speed = 0 if target.pctb_speed < 0#---end#--------------------------------------------------------------------------# alias method: process_action_end#--------------------------------------------------------------------------alias scene_battle_process_action_end_pctb process_action_enddef process_action_endscene_battle_process_action_end_pctbunless BattleManager.action_forced?$game_temp.reserve_common_event(YSA::pCTB::CTB_COMMON_EVENT[:end_action]) if YSA::pCTB::CTB_COMMON_EVENT[:end_action] > 0 && $data_common_events[YSA::pCTB::CTB_COMMON_EVENT[:end_action]]process_event@subject.restore_speed@subject.reset_pctb_speedreturn start_pctb_action if @subject.pctb_active?BattleManager.action_list_ctb.shiftupdate_pctb_speedendend#--------------------------------------------------------------------------# alias method: next_command#--------------------------------------------------------------------------alias pctb_next_command next_commanddef next_commandif BattleManager.actorif BattleManager.actor != BattleManager.action_list_ctb[0]BattleManager.action_list_ctb[0].make_actionsstart_pctb_actionreturnendendreturn @subject = nil if BattleManager.actor && BattleManager.actor.charging_startpctb_next_commandend#--------------------------------------------------------------------------# alias method: create_actor_command_window#--------------------------------------------------------------------------alias yctb_create_actor_command_window create_actor_command_windowdef create_actor_command_windowyctb_create_actor_command_window@actor_command_window.set_handler:)cancel, method:)ctb_prior_actor))@actor_command_window.set_handler:)dir4, method:)ctb_prior_actor))@actor_command_window.set_handler:)dir6, method:)ctb_next_command))end#--------------------------------------------------------------------------# new method: ctb_prior_actor#--------------------------------------------------------------------------def ctb_prior_actorBattleManager.actor.make_actionslast_index = BattleManager.actor.indexprior_index = last_index - 1if prior_index < 0@actor_command_window.close@party_command_window.setupelsereturn ctb_prior_actor if !$game_party.members[prior_index].movable?$game_party.members[prior_index].make_actionsBattleManager.input_startBattleManager.set_actor(prior_index) start_actor_command_selectionif $imported["YEA-BattleEngine"]redraw_current_status@status_aid_window.hideelserefresh_statusend@status_window.show@status_window.openendend#--------------------------------------------------------------------------# new method: ctb_next_command#--------------------------------------------------------------------------def ctb_next_commandBattleManager.actor.make_actionslast_index = BattleManager.actor.indexnext_index = last_index + 1if next_index > ($game_party.members.size - 1)return start_confirm_command_selection if $imported["YEA-BattleCommandList"] && YEA::BATTLE_COMMANDS::USE_CONFIRM_WINDOWBattleManager.action_list_ctb[0].make_actionsstart_pctb_actionelsereturn ctb_next_command if !$game_party.members[next_index].movable?$game_party.members[next_index].make_actionsBattleManager.input_startBattleManager.set_actor(next_index) start_actor_command_selectionif $imported["YEA-BattleEngine"]redraw_current_status@status_aid_window.hideelserefresh_statusend@status_window.show@status_window.openendend#--------------------------------------------------------------------------# alias method: command_fight#--------------------------------------------------------------------------alias command_fight_pctb command_fightdef command_fightreturn command_fight_pctb unless BattleManager.btype?:)pctb)if BattleManager.action_list_ctb[0].nil? update_pctb_speed elseBattleManager.action_list_ctb[0].make_actionsstart_pctb_actionendend#--------------------------------------------------------------------------# alias method: turn_start#--------------------------------------------------------------------------alias pctb_turn_start turn_startdef turn_startlast_subject = @subject if BattleManager.btype?:)pctb)pctb_turn_start@subject = last_subject if BattleManager.btype?:)pctb)endend # Scene_Battle#==============================================================================# # ▼ End of File# #==============================================================================
Turn fix
credit to Blackmorning89 at rpgmakervxace.net, place it under PCTB:
class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # * Get Action Being Input #-------------------------------------------------------------------------- def input if @action_input_index != nil game_actor_input_abe end endend
Hope it helps! -
Do you also have the PCTB gauges? It would be really helpful to him in order to achieve the FFX feel.
But yeah, it causes quite a number of problems. It's better to use it if you only have a few other scripts that modify the battle scene. On mine, I only had my own custom script for command drives, and I already got a few errors before I got to make it work. XD -
That script he shared doesn't have the gauges? (I'm away from a computer that can actually play test, at the moment, as I'm helping a cousin with things.)
-
I think so, I'm pretty sure the gauges (actually the list showing turn order via icons) was an add-on.
EDIT: Wait, I have it here
SpoilerCode:#==============================================================================# # ▼ YSA Battle Add-On: Order Battlers# -- Last Updated: 2012.02.20# -- Level: Easy# -- Requires: n/a# #==============================================================================$imported = {} if $imported.nil?$imported["YSA-OrderBattler"] = true#==============================================================================# ▼ Updates# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# 2012.02.20 - Reduced lag a little.# - Hide Gauge when victory.# 2012.02.16 - Compatible with: Yami's PCTB.# 2012.01.01 - Bug fixed: No-skill/item issue.# 2011.12.28 - Bug fixed: Speed Fix issue.# - Groundwork is also made to support future battle system types.# - Can show/hide by a switch.# 2011.12.27 - Started Script and Finished.# #==============================================================================# ▼ Instructions# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# To install this script, open up your script editor and copy/paste this script# to an open slot below ▼ Materials/素材 but above ▼ Main. Remember to save.# # -----------------------------------------------------------------------------# Actor Notetags - These notetags go in the actor notebox in the database.# -----------------------------------------------------------------------------# <battler icon: x># Change actor's icon into x.## <icon hue: x># Change icon hue.# # -----------------------------------------------------------------------------# Enemy Notetags - These notetags go in the enemy notebox in the database.# -----------------------------------------------------------------------------# <battler icon: x># Change enemy's icon into x.## <icon hue: x># Change icon hue.##==============================================================================# ▼ Compatibility# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# This script is made strictly for RPG Maker VX Ace. It is highly unlikely that# it will run with RPG Maker VX without adjusting.# #==============================================================================module YSA module ORDER_GAUGE # Default Icon for actor and enemy DEFAULT_ENEMY_ICON = 1 DEFAULT_ACTOR_ICON = 128 # Order Sprite Visual. Decide Order's Background and Border. BATTLER_ICON_BORDERS = { # Do not remove this. # Type => [Back, Border, ], :actor => [ 528, 532, ], :enemy => [ 529, 533, ], } # Do not remove this. # Turn this to true if you want to show death battlers. # SHOW_DEATH = false # Coordinate-X of order gauge GAUGE_X = 32 # Coordinate-Y of order gauge GAUGE_Y = 48 # Show Switch. Turn this switch on to show it. If you want to disable, set this # to 0. SHOW_SWITCH = 0 endend#==============================================================================# ▼ Editting anything past this point may potentially result in causing# computer damage, incontinence, explosion of user's head, coma, death, and/or# halitosis so edit at your own risk.#==============================================================================#==============================================================================# ■ Regular Expression#==============================================================================module YSA module REGEXP module ACTOR BATTLER_ICON = /<(?:BATTLER_ICON|battler icon):[ ](\d+)?>/i ICON_HUE = /<(?:ICON_HUE|icon hue):[ ](\d+)?>/i end # ACTOR module ENEMY BATTLER_ICON = /<(?:BATTLER_ICON|battler icon):[ ](\d+)?>/i ICON_HUE = /<(?:ICON_HUE|icon hue):[ ](\d+)?>/i end # ENEMY end # REGEXPend # YSA#==============================================================================# ■ DataManager#==============================================================================module DataManager #-------------------------------------------------------------------------- # alias method: load_database #-------------------------------------------------------------------------- class <<self; alias load_database_orbt load_database; end def self.load_database load_database_orbt load_notetags_orbt end #-------------------------------------------------------------------------- # new method: load_notetags_orbt #-------------------------------------------------------------------------- def self.load_notetags_orbt groups = [$data_enemies + $data_actors] for group in groups for obj in group next if obj.nil? obj.load_notetags_orbt end end end end # DataManager#==============================================================================# ■ BattleManager#==============================================================================module BattleManager #-------------------------------------------------------------------------- # public instance variables #-------------------------------------------------------------------------- class <<self attr_accessor :action_battlers attr_accessor :performed_battlers attr_accessor :ctb_battlers alias order_gauge_make_action_orders make_action_orders end #-------------------------------------------------------------------------- # new method: make_ctb_battler_order #-------------------------------------------------------------------------- def self.make_ctb_battler_order @ctb_battlers = [] if $imported["YSA-PCTB"] && YSA::PCTB::CTB_MECHANIC[:predict] == 2 battlers = self.sort_battlers battlers.each { |battler| battler.pctb_speed_cache = battler.pctb_speed } number = YSA::PCTB::CTB_MECHANIC[:pre_turns] i = 0 number.times { add_ctb_battler_order(i) i += 1 } return end ctb_battlers_dummy = self.sort_battlers ctb_battlers_dummy.each { |battler| @ctb_battlers.push(battler) unless battler.dead? } end #-------------------------------------------------------------------------- # new method: add_ctb_battler_order #-------------------------------------------------------------------------- def self.add_ctb_battler_order(i) battlers = self.sort_battlers(true) first_battler = battlers[0] tick = first_battler.pctb_ctr(true) battlers.each { |battler| battler.pctb_speed_cache += tick * battler.real_gain_pctb } first_battler.reset_pctb_speed(true) if i == 0 first_battler.pctb_speed_cache -= self.pctb_threshold if i != 0 @ctb_battlers.push(first_battler) end #-------------------------------------------------------------------------- # alias method: make_action_orders #-------------------------------------------------------------------------- def self.make_action_orders return if btype?(:pctb) order_gauge_make_action_orders end end # BattleManager#==============================================================================# ■ RPG::Actor#==============================================================================class RPG::Actor < RPG::BaseItem #-------------------------------------------------------------------------- # public instance variables #-------------------------------------------------------------------------- attr_accessor :battler_icon attr_accessor :icon_hue #-------------------------------------------------------------------------- # common cache: load_notetags_orbt #-------------------------------------------------------------------------- def load_notetags_orbt @battler_icon = YSA::ORDER_GAUGE::DEFAULT_ACTOR_ICON #--- self.note.split(/[\r\n]+/).each { |line| case line #--- when YSA::REGEXP::ACTOR::BATTLER_ICON @battler_icon = $1.to_i when YSA::REGEXP::ACTOR::ICON_HUE @icon_hue = $1.to_i end } # self.note.split #--- end end # RPG::Actor#==============================================================================# ■ RPG::Enemy#==============================================================================class RPG::Enemy < RPG::BaseItem #-------------------------------------------------------------------------- # public instance variables #-------------------------------------------------------------------------- attr_accessor :battler_icon attr_accessor :icon_hue #-------------------------------------------------------------------------- # common cache: load_notetags_orbt #-------------------------------------------------------------------------- def load_notetags_orbt @battler_icon = YSA::ORDER_GAUGE::DEFAULT_ENEMY_ICON #--- self.note.split(/[\r\n]+/).each { |line| case line #--- when YSA::REGEXP::ENEMY::BATTLER_ICON @battler_icon = $1.to_i when YSA::REGEXP::ENEMY::ICON_HUE @icon_hue = $1.to_i end } # self.note.split #--- end end # RPG::Enemy#==============================================================================# ■ Game_Battler#==============================================================================class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # new method: battler_icon #-------------------------------------------------------------------------- def battler_icon actor? ? actor.battler_icon : enemy.battler_icon end #-------------------------------------------------------------------------- # new method: battler_icon_hue #-------------------------------------------------------------------------- def battler_icon_hue actor? ? actor.icon_hue : enemy.icon_hue end end # Game_Battler #==============================================================================# ■ Sprite_OrderBattler#==============================================================================class Sprite_OrderBattler < Sprite_Base #-------------------------------------------------------------------------- # initialize #-------------------------------------------------------------------------- def initialize(viewport, battler, battle = :dtb, number = 0) super(viewport) @battler = battler @battle = battle @move_rate_x = 1 @move_rate_y = 1 @move_x = nil @move_y = nil @first_time = true @update_wait = 0 @show_dead = false @number = number if $imported["YSA-PCTB"] type = YSA::PCTB::CTB_MECHANIC[:predict] num = YSA::PCTB::CTB_MECHANIC[:pre_turns] end self.y = num * 24 + 36 if @battle == :pctb2 && type && type == 2 create_battler_bitmap end #-------------------------------------------------------------------------- # create_battler_bitmap #-------------------------------------------------------------------------- def create_battler_bitmap return unless @battler create_dtb_style if @battle == :dtb || @battle == :pctb end #-------------------------------------------------------------------------- # create_dtb_style #-------------------------------------------------------------------------- def create_dtb_style bitmap = Bitmap.new(24, 24) if $imported["YEA-BattleEngine"] icon_bitmap = $game_temp.iconset else icon_bitmap = Cache.system("IconSet") end #--- Create Battler Background --- icon_index = @battler.actor? ? YSA::ORDER_GAUGE::BATTLER_ICON_BORDERS[:actor][0] : YSA::ORDER_GAUGE::BATTLER_ICON_BORDERS[:enemy][0] rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24) bitmap.blt(0, 0, icon_bitmap, rect) #--- Create Battler Icon --- icon_index = @battler.battler_icon rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24) temp_bitmap = Bitmap.new(24, 24) temp_bitmap.blt(0, 0, icon_bitmap, rect) temp_bitmap.hue_change(@battler.battler_icon_hue) if @battler.battler_icon_hue bitmap.blt(0, 0, temp_bitmap, Rect.new(0, 0, 24, 24)) temp_bitmap.dispose #--- Create Battler Border --- icon_index = @battler.actor? ? YSA::ORDER_GAUGE::BATTLER_ICON_BORDERS[:actor][1] : YSA::ORDER_GAUGE::BATTLER_ICON_BORDERS[:enemy][1] rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24) bitmap.blt(0, 0, icon_bitmap, rect) #--- self.bitmap.dispose if self.bitmap != nil self.bitmap = bitmap return if @created_icon @created_icon = true self.ox = 12; self.oy = 12 self.x = 24 if @battle != :pctb2 && @battle != :pctb3 self.y = 24 self.z = 8000 end #-------------------------------------------------------------------------- # update #-------------------------------------------------------------------------- def update super return unless SceneManager.scene_is?(Scene_Battle) if $imported["YSA-PCTB"] type = YSA::PCTB::CTB_MECHANIC[:predict] num = YSA::PCTB::CTB_MECHANIC[:pre_turns] end self.y = BattleManager.ctb_battlers.size * 24 + 36 if BattleManager.ctb_battlers && @battle == :pctb2 && type && type == 1 return if @battle == :pctb2 || @battle == :pctb3 #--- update_dtb_style if @battle == :dtb || @battle == :pctb self.opacity = 0 if @battle == :catb end #-------------------------------------------------------------------------- # battler= #-------------------------------------------------------------------------- def battler=(battler) @battler = battler return unless @battler create_dtb_style end #-------------------------------------------------------------------------- # update_dtb_style #-------------------------------------------------------------------------- def update_dtb_style #--- actor_window = SceneManager.scene.actor_window enemy_window = SceneManager.scene.enemy_window if actor_window.active if $game_party.members[actor_window.index] == @battler @move_y = 12 else @move_y = 24 end end if enemy_window.active if $game_troop.members[enemy_window.index] == @battler @move_y = 12 else @move_y = 24 end end if !actor_window.active && !enemy_window.active @move_y = 24 end #--- return if !@move_x && !@move_y if @battler.hidden? || (!@show_dead && @battler.dead?) self.opacity -= 20 end if self.x != @move_x && @move_x if @move_x > self.x @move_y = 30 elsif @move_x < self.x @move_y = 16 else @move_y = 20 end self.z = (@move_x < self.x) ? 7500 : 8500 if @move_x >= self.x self.x += [@move_rate_x, @move_x - self.x].min else self.x -= [@move_rate_x, - @move_x + self.x].min end end if self.y != @move_y && @move_y self.y += (self.y > @move_y) ? -@move_rate_y : @move_rate_y end if self.x == @move_x && @move_x @first_time = false if @first_time @move_x = nil end if self.y == @move_y && @move_y @move_y = nil end end #-------------------------------------------------------------------------- # make_destination #-------------------------------------------------------------------------- def make_destination make_dtb_destination if @battle == :dtb make_pctb_destination if @battle == :pctb make_pctb2_image if @battle == :pctb3 end #-------------------------------------------------------------------------- # make_dtb_destination #-------------------------------------------------------------------------- def make_dtb_destination #--- BattleManager.performed_battlers = [] if !BattleManager.performed_battlers array = BattleManager.performed_battlers.reverse action = BattleManager.action_battlers.reverse - BattleManager.performed_battlers.reverse array += action action.uniq! array.uniq! #--- result = [] for member in array next if member.hidden? result.push(member) unless member.dead? action.delete(member) if member.dead? and !@show_dead end if @show_dead for member in array next if member.hidden? result.push(member) if member.dead? end end #--- index = result.index(@battler).to_i @move_x = 24 + index * 24 if BattleManager.in_turn? @move_x += 6 if action.include?(@battler) @move_x += 6 if (index + 1 == result.size) and action.size > 1 end den = @first_time ? 12 : 24 @move_rate_x = [((@move_x - self.x)/den).abs, 1].max end #-------------------------------------------------------------------------- # make_pctb_destination #-------------------------------------------------------------------------- def make_pctb_destination return unless BattleManager.ctb_battlers #--- array = BattleManager.ctb_battlers.reverse #--- result = [] for member in array next if member.hidden? result.push(member) unless member.dead? end if @show_dead for member in array next if member.hidden? result.push(member) if member.dead? end end #--- index = result.index(@battler).to_i @move_x = 24 + index * 24 den = @first_time ? 12 : 24 @move_rate_x = [((@move_x - self.x)/den).abs, 1].max end #-------------------------------------------------------------------------- # make_pctb2_image #-------------------------------------------------------------------------- def make_pctb2_image return unless BattleManager.ctb_battlers num = YSA::PCTB::CTB_MECHANIC[:pre_turns] - 1 array = BattleManager.ctb_battlers self.battler = array[@number] self.y = 24 + (num - @number) * 24 end end # Sprite_OrderBattler#==============================================================================# ■ Spriteset_Battle#==============================================================================class Spriteset_Battle #-------------------------------------------------------------------------- # public instance variables #-------------------------------------------------------------------------- attr_accessor :viewportOrder #-------------------------------------------------------------------------- # alias method: create_viewports #-------------------------------------------------------------------------- alias order_gauge_create_viewports create_viewports def create_viewports order_gauge_create_viewports @viewportOrder = Viewport.new @viewportOrder.z = 1000 if YSA::ORDER_GAUGE::SHOW_SWITCH == 0 || $game_switches[YSA::ORDER_GAUGE::SHOW_SWITCH] @viewportOrder.ox = -YSA::ORDER_GAUGE::GAUGE_X @viewportOrder.oy = -YSA::ORDER_GAUGE::GAUGE_Y else @viewportOrder.ox = Graphics.width @viewportOrder.oy = Graphics.height end end end # Spriteset_Battle#==============================================================================# ■ Scene_Battle#==============================================================================class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # public instance variables #-------------------------------------------------------------------------- attr_accessor :actor_window attr_accessor :enemy_window #-------------------------------------------------------------------------- # alias method: create_all_windows #-------------------------------------------------------------------------- alias order_gauge_create_all_windows create_all_windows def create_all_windows order_gauge_create_all_windows @spriteset_order = [] if $imported["YSA-PCTB"] && YSA::PCTB::CTB_MECHANIC[:predict] == 1 @active_order_sprite = Sprite_OrderBattler.new(@spriteset.viewportOrder, nil, :pctb2) end if $imported["YSA-PCTB"] && YSA::PCTB::CTB_MECHANIC[:predict] == 2 num = YSA::PCTB::CTB_MECHANIC[:pre_turns] i = 0 num.times { order = Sprite_OrderBattler.new(@spriteset.viewportOrder, nil, :pctb3, i) @spriteset_order.push(order) i += 1 } return end for battler in $game_party.members + $game_troop.members battle_type = :dtb battle_type = :pctb if BattleManager.btype?(:pctb) battle_type = :catb if BattleManager.btype?(:catb) order = Sprite_OrderBattler.new(@spriteset.viewportOrder, battler, battle_type) @spriteset_order.push(order) end end #-------------------------------------------------------------------------- # alias method: battle_start #-------------------------------------------------------------------------- alias order_gauge_battle_start battle_start def battle_start order_gauge_battle_start unless BattleManager.btype?(:pctb) BattleManager.make_action_orders for order in @spriteset_order order.make_destination end end end #-------------------------------------------------------------------------- # alias method: dispose_spriteset #-------------------------------------------------------------------------- alias order_gauge_dispose_spriteset dispose_spriteset def dispose_spriteset for order in @spriteset_order order.bitmap.dispose order.dispose end order_gauge_dispose_spriteset end #-------------------------------------------------------------------------- # alias method: update_basic #-------------------------------------------------------------------------- alias order_gauge_update_basic update_basic def update_basic order_gauge_update_basic for order in @spriteset_order order.update end @active_order_sprite.update if @active_order_sprite if $imported["YSA-PCTB"] type = YSA::PCTB::CTB_MECHANIC[:predict] end if @update_ordergauge if type && type == 1 BattleManager.actor.restore_speed BattleManager.actor.storage_speed BattleManager.actor.reset_pctb_speed end BattleManager.make_action_orders BattleManager.make_ctb_battler_order if BattleManager.btype?(:pctb) for order in @spriteset_order order.make_destination end @update_ordergauge = false end if YSA::ORDER_GAUGE::SHOW_SWITCH == 0 || $game_switches[YSA::ORDER_GAUGE::SHOW_SWITCH] @spriteset.viewportOrder.ox = -YSA::ORDER_GAUGE::GAUGE_X if @spriteset.viewportOrder.ox != -YSA::ORDER_GAUGE::GAUGE_X @spriteset.viewportOrder.oy = -YSA::ORDER_GAUGE::GAUGE_Y if @spriteset.viewportOrder.oy != -YSA::ORDER_GAUGE::GAUGE_Y else @spriteset.viewportOrder.ox = Graphics.height if @spriteset.viewportOrder.ox != Graphics.width @spriteset.viewportOrder.oy = Graphics.width if @spriteset.viewportOrder.oy != Graphics.height end if $game_party.all_dead? || $game_troop.all_dead? @spriteset.viewportOrder.ox = Graphics.height if @spriteset.viewportOrder.ox != Graphics.width @spriteset.viewportOrder.oy = Graphics.width if @spriteset.viewportOrder.oy != Graphics.height end end #-------------------------------------------------------------------------- # alias method: update #-------------------------------------------------------------------------- alias order_gauge_update update def update order_gauge_update #return if YSA::PCTB::CTB_MECHANIC[:predict] == 2 if @actor_command_window.active return if BattleManager.actor.input.nil? if @actor_command_window.current_symbol == :attack && !BattleManager.actor.input.attack? BattleManager.actor.input.set_attack if BattleManager.actor.usable?($data_skills[BattleManager.actor.attack_skill_id]) @update_ordergauge = true end if @actor_command_window.current_symbol == :guard && BattleManager.actor.input.item != $data_skills[BattleManager.actor.guard_skill_id] BattleManager.actor.input.set_guard if BattleManager.actor.usable?($data_skills[BattleManager.actor.guard_skill_id]) @update_ordergauge = true end if $imported["YEA-BattleCommandList"] if @actor_command_window.current_symbol == :use_skill && BattleManager.actor.input.item != $data_skills[@actor_command_window.current_ext] BattleManager.actor.input.set_skill(@actor_command_window.current_ext) if BattleManager.actor.usable?($data_skills[@actor_command_window.current_ext]) @update_ordergauge = true end end end if @skill_window.active && BattleManager.actor && BattleManager.actor.input.item != @skill_window.item && @skill_window.current_item_enabled? BattleManager.actor.input.set_skill(@skill_window.item.id) if BattleManager.actor.usable?(@skill_window.item) @update_ordergauge = true end if @item_window.active && BattleManager.actor && BattleManager.actor.input.item != @item_window.item && @item_window.current_item_enabled? BattleManager.actor.input.set_item(@item_window.item.id) if BattleManager.actor.usable?(@item_window.item) @update_ordergauge = true end end #-------------------------------------------------------------------------- # alias method: on_skill_cancel #-------------------------------------------------------------------------- alias order_gauge_on_skill_cancel on_skill_cancel def on_skill_cancel order_gauge_on_skill_cancel BattleManager.actor.input.clear @update_ordergauge = true end #-------------------------------------------------------------------------- # alias method: on_item_cancel #-------------------------------------------------------------------------- alias order_gauge_on_item_cancel on_item_cancel def on_item_cancel order_gauge_on_item_cancel BattleManager.actor.input.clear @update_ordergauge = true end #-------------------------------------------------------------------------- # alias method: turn_start #-------------------------------------------------------------------------- alias order_gauge_turn_start turn_start def turn_start order_gauge_turn_start for order in @spriteset_order order.make_destination end end #-------------------------------------------------------------------------- # alias method: process_action_end #-------------------------------------------------------------------------- alias order_gauge_process_action_end process_action_end def process_action_end order_gauge_process_action_end for order in @spriteset_order order.make_destination end end end # Scene_Battle#==============================================================================# # ▼ End of File# #============================================================================== -
Thanks. I'll reply with feedback when I can get to my computer at home.
-
The PCTB script appears to do what I need it to do, though the order gauge, while useful, is a bit clunky and requires the use of icons, rather than images that represent the battlers.
What I need for that is, at least, a gauge that shows the order of attacking creatures in a horizontal field near the top of the screen.
It would have to show either faceset or picture to indicate which character/battler is which, with notetags (with clear instruction on how to use them) that call those faceset/images to the gauge. -
You could maybe request an edit of the order gauge...