Jump to content
Sign in to follow this  
Wispmage

Implementing a visual Turn Tracker during Battles

Recommended Posts

Hey everyone. Anyone aware of a script that can implement a visual turn tracker (Hero 1, Monster 1, Hero 2, Monster 3, etc) to the battle screen? From what I understand, VX Ace doesn't compute turns in advance during battles, so this might be a big ask. That said, any help or advice would be much appreciated. Thanks!

Edited by Wispmage

Share this post


Link to post
Share on other sites
Spoiler

# ╔══════════════════════════════════════════════════════╤═══════╤════════════╗
# ║ Battle Turn Indicator                                │ v1.00 │ 10/16/2020 ║
# ╠══════════════════════════════════════════════════════╧═══════╧════════════╣
# ║ Author  : Coolie                                                          ║
# ║ E-Mail  : cooliebk18@yahoo.com                                            ║
# ║ Website : http://twitch.tv/CoolieBK18                                     ║
# ╠═══════════════════════════════════════════════════════════════════════════╣
# ║ ABOUT                                                                     ║
# ╠═══════════════════════════════════════════════════════════════════════════╣
# ║ This script adds a battle turn indicator in battles. It starts at turn 1  ║
# ║ even though a battle is actually at turn 0 when a battle begins.          ║
# ╠═══════════════════════════════════════════════════════════════════════════╣
# ║ TERMS OF USE                                                              ║
# ╠═══════════════════════════════════════════════════════════════════════════╣
# ║ ► Do not edit the script's header or comments.                            ║
# ║ ► Free to use in commercial projects as long as proper credit is given to ║
# ║   ALL the names individually in the above header.                         ║
# ╠═══════════════════════════════════════════════════════════════════════════╣
# ║ FEATURES                                                                  ║
# ╠═══════════════════════════════════════════════════════════════════════════╣
# ║ ► Adds a battle turn indicator in battle.                                 ║
# ╠═══════════════════════════════════════════════════════════════════════════╣
# ║ KNOWN ISSUES                                                              ║
# ╠═══════════════════════════════════════════════════════════════════════════╣
# ║ ► None so far!                                                            ║
# ╠═══════════════════════════════════════════════════════════════════════════╣
# ║ CHANGE LOG                                                                ║
# ╠═════════════════════════════════════════════════════════════════╤═════════╣
# ║ ■ October 16, 2020  : Initial version                           │ (v1.00) ║
# ╠═════════════════════════════════════════════════════════════════╧═════════╣
# ║ NEXT VERSION                                                              ║
# ╠═══════════════════════════════════════════════════════════════════════════╣
# ║ ■ TBA                                                                     ║
# ╠═══════════════════════════════════════════════════════════════════════════╣
# ║ NEW METHODS                                                               ║
# ╠═══════════════════════════════════════════════════════════════════════════╣
# ║   There is one new class and several new methods added.                   ║
# ╟───────────────────────────────────────────────────────────────────────────╢
# ║ ■ class Window_TurnCount < Window_Base                                    ║
# ║    ► def initialize                                                       ║
# ║    ► def window_width                                                     ║
# ║    ► def update                                                           ║
# ║    ► def def refresh                                                      ║
# ║ ■ class Scene_Battle < Scene_Base                                         ║
# ║    ► def create_all_windows [Alias]                                       ║
# ║    ► def create_turn_count_window                                         ║
# ║    ► def battle_start [Alias]                                             ║
# ║    ► def turn_start [Alias]                                               ║
# ║    ► def turn_end [Alias]                                                 ║
# ╠═══════════════════════════════════════════════════════════════════════════╣
# ║ INSTRUCTIONS                                                              ║
# ╠═══════════════════════════════════════════════════════════════════════════╣
# ║ Simply paste this script anywhere above the Main Process script and below ║
# ║ the "Materials" section.                                                  ║
# ╠═══════════════════════════════════════════════════════════════════════════╣
# ║ IMPORT SETTING                                                            ║
# ╚═══════════════════════════════════════════════════════════════════════════╝
$imported = {} if $imported.nil?             # Do not edit
$imported["WC-Turn-Indicator-1.00"] = true   # Do not edit

# ╔═══════════════════════════════════════════════════════════════════════════╗
# ║ NEW CLASS: Window_TurnCount                                               ║
# ╟───────────────────────────────────────────────────────────────────────────╢
# ║ This window displays the turn count in battle                             ║
# ╚═══════════════════════════════════════════════════════════════════════════╝
class Window_TurnCount < Window_Base
  # ╔═════════════════════════════════════════════════════════════════════════╗
  # ║ Object Initialization                                                   ║
  # ╚═════════════════════════════════════════════════════════════════════════╝
  def initialize
    super(0, 0, window_width, fitting_height(1))
    self.opacity = 0
    self.back_opacity = 0
    self.contents_opacity = 255
    refresh
  end
  # ╔═════════════════════════════════════════════════════════════════════════╗
  # ║ Get Window Width                                                        ║
  # ╚═════════════════════════════════════════════════════════════════════════╝
  def window_width
    return 80
  end
  # ╔═════════════════════════════════════════════════════════════════════════╗
  # ║ Frame Update                                                            ║
  # ╚═════════════════════════════════════════════════════════════════════════╝
  def update
    super
  end
  # ╔═════════════════════════════════════════════════════════════════════════╗
  # ║ Refresh                                                                 ║
  # ╚═════════════════════════════════════════════════════════════════════════╝
  def refresh
    contents.clear
    $turn_counter = 1 + $game_troop.turn_count
    change_color(system_color)
    # Change "Turn" to whatever text you want to display in battle
    draw_text(0, 0, 68, 24, "Turn ", 0)
    change_color(normal_color)
    draw_text(36, 0, 68, 24, $turn_counter.to_s, 0)
  end
  # ╔═════════════════════════════════════════════════════════════════════════╗
  # ║ End: Window_TurnCount                                                   ║
  # ╚═════════════════════════════════════════════════════════════════════════╝
end

# ╔═══════════════════════════════════════════════════════════════════════════╗
# ║ Scene_Battle                                                              ║
# ╟───────────────────────────────────────────────────────────────────────────╢
# ║ This class performs battle screen processing.                             ║
# ╚═══════════════════════════════════════════════════════════════════════════╝

class Scene_Battle < Scene_Base
  # ╔═════════════════════════════════════════════════════════════════════════╗
  # ║ Alias: Create All Windows                                               ║
  # ╚═════════════════════════════════════════════════════════════════════════╝
  alias coolie_create_all_windows create_all_windows
  def create_all_windows
    coolie_create_all_windows
    create_turn_count_window
  end
  
  # ╔═════════════════════════════════════════════════════════════════════════╗
  # ║ New: Create Turn Count Window                                           ║
  # ╚═════════════════════════════════════════════════════════════════════════╝
  def create_turn_count_window
    @turn_count_window = Window_TurnCount.new
    @turn_count_window.x = Graphics.width - 96
    @turn_count_window.width = 80
    @turn_count_window.y = 60
  end
  
  # ╔═════════════════════════════════════════════════════════════════════════╗
  # ║ Alias: Battle Start                                                     ║
  # ╚═════════════════════════════════════════════════════════════════════════╝
  alias coolie_battle_start battle_start
  def battle_start
    coolie_battle_start
    @turn_count_window.show
  end
  # ╔═════════════════════════════════════════════════════════════════════════╗
  # ║ Alias: Start Turn                                                       ║
  # ╚═════════════════════════════════════════════════════════════════════════╝
  alias coolie_turn_start turn_start
  def turn_start
    coolie_turn_start
    @turn_count_window.refresh
  end
  # ╔═════════════════════════════════════════════════════════════════════════╗
  # ║ Alias: End Turn                                                         ║
  # ╚═════════════════════════════════════════════════════════════════════════╝
  alias coolie_turn_end turn_end
  def turn_end
    coolie_turn_end
    @turn_count_window.refresh
  end
  # ╔═════════════════════════════════════════════════════════════════════════╗
  # ║ End: Scene_Battle                                                       ║
  # ╚═════════════════════════════════════════════════════════════════════════╝
end

 

This oughta work.

Edited by WCouillard

Share this post


Link to post
Share on other sites

Thanks for suggesting this. While it is a turn tracker, I was thinking more something akin to the system in FFX, with the hero and enemy turn order being displayed ahead of their actual turn. I should've been more specific in my initial request.

Edited by Wispmage

Share this post


Link to post
Share on other sites

Oh, you're looking for a CTB (Conditional Turn Battle) system for battles. There are a few for VX Ace, if I'm remembering right.

Share this post


Link to post
Share on other sites

Yeah, I found Archeia's CTB suite of scripts. After a lot of experimentation I finally have them working together with my existing Victor scripts without getting any program-crashing errors.

My issue now is that the Hero and Monsters aren't dealing any damage with their basic attacks. The battle log is saying that they're having no effect, and BattleLuna Popups are indicating that the strikes are "Failed" and "Null". Not sure what's causing it. I haven't looked at the CTB scripts in detail yet, so it's possible that I need to configure things. Any idea why that might be happening?

 

EDIT 1: I just removed Yanfly's Battle Symphony and that has solved my no-damage issue. My primary concern now is that my Hero has three turns for every one turn that a Monster has. That, and I've got a black border around the battle screen. Seems like the Turn Order display in the upper left might be causing it. My script list is below. I can provide any additional screenshots or full scripts if need be. Any help or advice would be much appreciated!

EDIT 2: I've got everything running pretty smoothly. Thanks for your suggestions Coolie. This thread can be closed.



Yanfly's Ace Core Engine
Lunatic States
Star Passability Bug Fix
Event Jitter Fix

Archeia's CTB
Archeia's Battle Manager
Archeia's Battle Core
Archeia's Turn Order
Archeia's Fixes

BattleLuna Battle Popups

Victor's Basic Module
Victor's Direct Commands
Victor's Animated Battle
Victor's Actors Battlers
Victor's Leap Attack

Yanfly's Steal Item
Yanfly's Message System

Casper Ghost's Vehicle Interiors
NerdiGaming's Custom Title Menu

Edited by Wispmage

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×