Battle System: Free Turn Battle

Last Updated: 2012.01.10
Download Link
Github Link

Free Turn Battle is a type of battle system made for Ace Battle Engine, where actors perform their actions immediately (unless under the effects of berserk or any other form of autobattle) as they’re selected. After all of their actions have been performed, the enemies will take their turn in battling the actors. This becomes a system where actors and enemies will take turns attacking one another as a whole.

THIS SCRIPT REQUIRES ACE BATTLE ENGINE!

Get Ace Battle Engine here. The following is a video of the script in action:

To enable Free Turn Battle for your game, either change the DEFAULT_BATTLE_SYSTEM constant in Ace Battle Engine to :ftb or make an script call during a game using:

$game_system:set_battle_system(:ftb)

To revert back to DTB mid-game, use the following script call:

$game_system:set_battle_system(:dtb)

In a Free Turn Battle, the player can select an action and it will perform immediately for any actor in any order until all actions are used. The number of actions available to the party is indicated in the upper right (marked by the blue orbs). The number of actions granted to the player will depend on the number of members, the extra actions they can perform, and other various bonuses.

If an actor’s AGI is higher than his or her base AGI, the actor may receive bonus actions to perform. You can adjust the amount of extra AGI needed in order to reap this effect.

You can make certain skills or items require and consume more than one action on usage, too. Use the following notetag in either a skill or item’s notebox:

<ftb cost: x>

This causes the skill to have an FTB cost of x. The FTB Cost does not occur for individual chain skills, individual input skills, specialized input skills, or instant skills. However, an FTB Cost can be used to put a specific requirement on those listed types of skills.

This causes the item to have an FTB cost of x. The FTB Cost does not occur for instant items. If items cost more actions than the party has available, then the items will not appear in the usable item list during battle.

Actors, classes, weapons, armours, and states can increase the maximum amount of actions. Insert these notetags in their respective noteboxes:

<ftb actions: +x>
<ftb actions: -x>

This increases or decreases the maximum number of actions available to an actor by x. While an actor’s individual maximum can be any value, it does not provide more than the party maximum applied in the module. An actor’s total maximum cannot go below 1.

After the player has used up all actions available, it’s the enemy’s turn to attack. Enemies will follow standard attacking rules. They do not benefit from having extra actions unless through RPG Maker VX Ace’s traits.

Once enemies finish attacking, it’s the player’s turn once again. The player and the other enemies will take “turns” fighting each other. The Free Turn Battle system revolves around the entire party acting at once and then the enemies acting all at once.

And that’s all folks!

98 comments on “Battle System: Free Turn Battle

  1. I suggest having an option to show the turns in numbers instead of orbs, for people who want a lot of turns with higher turn costs it could get real messy. It’d also be easier to calculate each turn for the basic user.

  2. Interesting indeed, pretty difficult to balance, though.
    The player could simply let the strongest actor attack all the time after clerics have buffed their stats. So having two damage dealers might make one of them useless, if you don’t balance them properly…

    • Cooldowns. Limited AP usage a turn. Risky attack moves. Proper balancing.

      Just throwing this into your game will cause balancing issues, yes. Part of game design is realizing when “HP/MP gogogo” isn’t going to cut it.

    • Play around with the HP on the actors and the damage formulas a little, the trick is to get a rough guess how much damage an enemy will do per free turn and how much damage the party will do to them. Know how many moderate hits each actor should be allowed to take before being KO’d.

      Limiting each actor’s ftb actions, their MP and their TP per turn should help keep their power in balanced, so they won’t become over powerful or under powerful.

      Eventually it should feel quite balanced, play testing and changing a couple numbers around is not really difficult to do.

  3. Pingback: YSA Battle System – Classical Active Time Battle | Yami World

  4. Yanfly I do believe I’ve found a bug with your script. I tried multiple different things hoping it was something else but I then tried a new project and put just this and the Ace Battle Engine Script in it and got the same problem.

    With the Victory Aftermath script I received an error
    “Script Victory Aftermath Line 442 No Method Error Occured
    undefined method ‘show victory display exp for <Scene_Map:(bunch of letters and numbers.)

    Without the Victory Aftermath I didn't necessarily receive an error but at the end of the battle it would repeat the victory log twice and then close out of the game. If I turn off the FTB I don't have this issue. I've recreated this in a fresh project using no other scripts. If this is user error somehow please tell me. Thank you for your time.

    • Only the FTB script had the error. I could not reproduce the error for Victory Aftermath. Furthermore, your line 442 in Victory Aftermath does not match anything that would call for the mentioned method. Make sure your Victory Aftermath is up to date. If your project remains bugged with the updated Victory Aftermath, upload your Scripts.RVDATA2 and I’ll take a look at it.

      v1.02 – Bug fixed: No more double victory log.

  5. \o/ AWESOME
    _ I tough you would add eventing features like “Start battle common event” an “Party turn common event” and such when you released other battle types :( . That was very usefull since i’m a big eventer.
    _ But i’m really glad you added the bonus with agility since in yem ptb the agility was … useless . But i will continue to use the default batlle type with ace battle engine. I’m pretty satisfied with it… i will just add some tweaks (which would be much easier to do with those eventing features but if you do not want to do it then don’t do it i’m not requesting anything).
    _ Thank you for your work Yanfly.
    Ps: Excuse my bas english; it’s not my first language

  6. I refrained on commenting on some things I noticed earlier because I saw them as minor inconveniences as opposed to issues, but I’ve finally told myself that I should at least say something.

    The turns indicator in the top-right corner of the screen shows on top of the message box if you display messages at the top of the screen during in-battle events (I’ve been doing so because I think it looks better in battle aesthetically). Also, if an in-battle event occurs in the middle of the party’s turn, the party status window doesn’t come back, just the command window (easily remedied by moving to the party command menu and I think the confirm menu, which brings it back for some reason).

    The last thing I noticed was that, when using the Command Autobattle script and activating party autobattle from the party command window, even if party members have more than one action available to them due to status effects, it acts as though the default battle system is enabled. I’m not sure if this is intended or what have you.

    Again, right now, these are just inconveniences (and I’m not sure if they’re problematic enough to warrant anything), but I just thought I’d let you know.

  7. always liked to see this in more games, reminds me of fallout 1 & 2

    also, kudos to the bug fixes, not gonna repeat what the others said before :)

  8. Yanfly, sorry to bother you– but I just wanted to know if there was any chance that this script will be updated to allow enemies to have/use extra turns as well? A simple yes/no will suffice thanks!

      • Thanks for the response, are you a representative :-p? I’m just kidding, but I did actually try a whole bunch of stuff — I just wanted to avoid a lengthy post. But you leave me no choice, lol!

        So, I tried setting up the “additional actions” for enemies to try to circumvent that problem. I looked at it and thought “hmm, it asks for a percentage, that’s strange”. So i go to try it, and apparently setting it at 1000% or 200% is the same thing? Either way the enemy gets +1 turn, so I don’t quite understand how that is supposed to work. Maybe it’s a bug in ace?

        Oh well, neat– a new battle system would be cool. I just wanted to know if he/she was planning on creating something for this. Since I noticed that the script assigns the enemy these “ftb” turns, but it doesn’t actually use them at all; that’s what got me wondering.

      • Well, in the past there was the PTB, so it’s not unexpected that he would develop it later (due to bug testing and such).

    • The Percent Rates are related to the chance that the enemy would get it. You can also make states and skills that give a negative rate at which an extra action occurs giving a boss that has a 100% rate x% rate dependent on the value you used.

      • Ahh, I see– thanks for the help Adalwulf. I had no idea, although I probably should have figured. The percentage kind of gives that part away. I guess I just figured that it would be more useful if they just let you set more extra turns, because it would be a lot more useful for epic bosses.

  9. I don’t know what’s wrong(and maybe this is caused by me), but why are dead actors able to use items?..o.o

  10. very curious, if it’s possible to also have the enemy use this battle-system in a full scale way? like showing how many turns the enemy has left and – by notetags – have enemy troops like bosses have additional turns?

  11. For some reason every time an actor dies, when they try to do another action the script says “undefined method: set_attack/skill/defend etc”. I’ve tried testing it with the only battle related scripts being this and free-turn, so I honestly don’t know what’s causing it.

  12. Perhaps I’m missing something but is there any way to make the enemies occasionally attack first with this battle system?

  13. Having an issue. I’m using Call Script: $game_system:set_battle_system(:ftb) to change the default battle system from DTB to FTB, but every time I try, it comes up with a syntax error in Game_Interpreter at line: 1409.

    “unexpected ‘:’, expecting $end
    $game_system:set_battle_system(:ftb)”

  14. Hi! I,ve found an error with this script, I´m using the battle core script, enemies life bar, custom popups in battle, custom team, victory window and Jet´s sideview battle modified for back-view of actors.
    When a battle finish, after the victory window, the program crashes and says an error in Scene_battle, line 408, something about “next_command”.
    If I delete this script everything works normally, so I think something in the script is not working.
    Thank you for your cool scripts and I hope this will help you to improve.
    Sorry for my english man

  15. I’m trying to make it so that the Free Turn Battle can be switched on and off via your System Options script. After some fumbling around with a minor error, I’ve got it so that it can be switched into the battle system, but cannot be switched back. I’m doing this by having Common Event 1 activate when the Switch is turned on.

  16. I experienced quite irritating bug. I gave all actors 2 actions per turn. Some of their skills cost 1 action, some cost 2 actions. When actor uses up one action, he can still use skills demading 2 actions. In that case, he uses up another actor’s actions. I tried to repair it using custom cost script, but i failed. Is there any solution?

    • I found w workaround, you need the skill restriction script, you can set a common event to run off of any skills that require 1 Actions, the event sets a switch that disables 2 action skills, when a 1 action skill runs again you need to set the event to turn the switch off. you will need a event for each character you have, but it works like a charm :) unless you want them to have more than 2 base actions.

      • Been messing around with the script. I think this works (haven’t tested it thoroughly yet). Find this:

        #————————————————————————–
        # new method: ftb_item_conditions_met?
        #————————————————————————–
        def ftb_item_conditions_met?(item)
        return true unless actor?
        return true unless SceneManager.scene_is?(Scene_Battle)
        return true unless BattleManager.btype?(:ftb)

        and add this:

        return false if (max_ftb_actions – ftb_actions) = item.ftb_cost

      • OK my comments seem to get cut off halfway for some reason. So basically just move that line I gave u near the bottom until it works. but above the last line…

  17. Is there any possible way that you could have some sort of…”actor cooldown”? I am doing a battle system in which has 8 party members, and I want to restrict the players to only using 3 actors per turn, however…In a sense, I want them to be forced to cycle between members. I tried messing with some states to make this possible, but just couldn’t get that to work either. Any suggestions?

  18. help this box shows up when i start game:

    Script “Free Turn Battle” line 573: NameError ocurred
    undefined method “action_icon” for class “window_battlestatus”

  19. Would it at all be possible to make a battle system that works like Persona 4?

    Simply put, agility determines who goes first, much like it does it RPG Maker’s default battle system, but you decide the actions of your character as there turn comes around, a little bit like you got here. In short, you decide a character’s action only once it is that character’s turn, and once finished, the system will read who should go next based on agility, regardless if it is an ally or enemy.

  20. You need to change this def in BattleManager to the following to avoid skipping your turn if u keep scrolling right without a execute window:

    #————————————————————————–
    # * To Next Command Input
    #————————————————————————–
    def self.next_command
    begin
    if !actor || !actor.next_command
    @actor_index += 1
    # The Princess Heart FTB System
    if SceneManager.scene_is?(Scene_Battle) && BattleManager.btype?(:ftb)
    if $game_party.meet_ftb_requirements?
    if @actor_index >= $game_party.members.size
    @actor_index = 0
    end
    end
    else
    return false if @actor_index >= $game_party.members.size
    end
    end
    end until actor.inputable?
    return true
    end

    • Hi Aaron,
      I’ve put this fix in but I’m getting the same problem when my turn ends.

      I can see a def for “inputable?” under “class Game_BattlerBase” but not battlemanager… where does your fix need to go exactly?

      • Ok, so me and a friend figured it out.

        Basically what’s wrong with this fix is once all the FTB actions are used up there are no more actors left to select, but the game still tries to identify if this non-existant actor is inputable – so it crashes.

        What you have to do:

        > Go to the Free Turn Battle script in your game
        > Go to line: 287 (should be just after module BattleManager)
        > Paste the following code:

        #————————————————————————–
        # * To Next Command Input
        #————————————————————————–
        def self.next_command
        begin
        if !actor || !actor.next_command
        @actor_index += 1

        # The Princess Heart FTB System
        if SceneManager.scene_is?(Scene_Battle) && BattleManager.btype?(:ftb)
        if $game_party.meet_ftb_requirements?
        if @actor_index >= $game_party.members.size
        @actor_index = 0
        end
        end
        else
        return false if @actor_index >= $game_party.members.size
        end
        end

        end until !actor || actor.inputable?

        return true
        end

        —————–

        The key change here being “!actor”, which adds an additional check to see if any other available actors actually exist.

        Credit to Aaron for the original code.

  21. I have a little problem, i’m using a lot of scripts from yanfly and all works fine. The only script actually giving problems is the ftb. If the character i’m using is below level 99 the FTB works fine but when i go over 99 (my limit is level 1000) my actions get cut to 2 per character, and when they level up again it goes to 1 action… I wonder if i messed up or someone else does have the same problem.

  22. This crashed for me when starting the battle with an equipped item when using “Actor Inventory” by Kread-EX.

    “Script ‘BattleSystem FTB’ line 371: TypeError occured.

    nil can’t be coerced into Fixnum”

    This apparantly can be fixed by changing line 370 in the BattleSystem FTB Script into the following:
    ” next if equip.nil? or equip.item?”

    At least it works for me, I am not an expert on the whole RGSS-scripting. :)
    I guess it’s because the script can’t deal with items being equipped when calculating FTB-boni.

    Now I am wondering: Is there also an easy way to add FTB-costs for changing the equipment via the Ace Equip Engine? Either per item or with a fixed cost for using the command.

  23. Is there any way to make it so each actor has their own ftb value? Because its really problematic when one character can use up the whole team’s actions.

  24. There’s a bug when I tried to put $game_system:set_battle_system(:ftb) in a Common Event and invoke it.. its says

    Scriipt Game Interpreter line 1411: Syntax Error occured.
    unexpected :, expecting $end
    $game_system:set_battle_system(:ftb)

    what is the cause of the problem? I can’t put in on a Common Event?

  25. I was wondering, how would choosing the guard command work on this script?
    If i select guard, would it not guard for that one instance? Then reset when the enemy begin attacking?
    Seeing as though your turn is used up as and when you select them.

    If I’m wrong (I probably am) could you let me know? Thanks.

  26. Found a few glitches with the script:

    When there is a “Show Text” event in mid-combat the characters faces at the bottom of the screen disappear when the text is over. You’re left with only the Command menu on the right-hand side. You have to scroll left to the Flee menu and back again to get them back.

    Also, when you instruct enemies to “Flee” from the battle, they reappear for a second as the battle is won, just before the looting screen.

    Hope that makes sense, let me know if I should reiterate.

    Thanks.

  27. i like this sistem but i was wondering if its posible for maker png grafics for the turn icons, i was traying to do but i can define the metod and constan intead… some body kwon to do that? i more grafic than programmer

  28. Is it possible to add more actions to the party as a whole, without adding more actions to an individual actor? I want to add bonus actions so that more than one actor can use multi-action cost skills, but if every actor uses their turn(s), I want the player turn to end even if there are still unused actions. I don’t know if that behavior would be possible without some modifications to this script.

  29. Add on Idea: Have it so that if the turn is skipped the points not used in that turn can be used on the next one. It could work with proper balance.

  30. Thanks for the script Yanfly,
    I keep getting this error when i start the game up:

    Script “Free Turn Battle” line 573: NameError ocurred
    undefined method “action_icon” for class “window_battlestatus”

    any fixes for this?

    • Hey, I’ve been getting the same error, but I fixed it. Make sure that the Ace Battle Engine script comes BEFORE the Free Turn Battle script, and make sure you change DEFAULT_BATTLE_ENGINE in Ace Battle System to “ftb”.

      • Aaand if we’re still getting that same line 573 error message? I’m terrible with code, and Yanfly’s been a lifesaver for my game, but this error message just won’t go away.
        The Battle Engine comes before the FTB script, and I changed DEFAULT_BATTLE_SYSTEM to :ftb
        Halp?

  31. Hey there, I’m getting a weird glitch and have no clue whats causing it.
    I tested the script(s) in a clean project first, and it worked all fine, but when I tried to implement it into my game, it only half-works. The character will attack when the command is selected, but it will ONLY let the character have 1 command per turn, no matter what settings I use. I know it SHOULD work because in the clean project, I got the base character to have 8 actions and they all worked fine.

    Now, I started moving all my other scripts over one-by-one into the clean project, seeing if it was one of those breaking it. But after I moved every single script, with the exact same settings, in the same positions and everything, it still worked on the clean project. And yes, I triple checked my actor note tags. It was

    Any idea what the heck I did wrong?

  32. Is it possible to make it so that takof weaknesses or hitting and missing adds and subtracts turns? Because that would make for a pretty challenging system!

  33. Is there any way I can increase the amount of points (the circley-turn things) without giving my actors the ability of attacking more than once per turn?
    I want to use them as a sort of limit; I have three actors and I want them to gain more points to use per turn as they level, but certain actions require multiple points, forcing the player to sacrifice moves for stronger attacks.

  34. I´m using your active chain skills script with this one but when I use a chainskill it isn`t taking away the FTB action points from that skill.
    What can I do?

  35. Hey there, I was wondering if it was possible to remove the maximum for the amount of actions per turn entirely. I am already regulating how many actions one actor can perform via TP costs (actions cost tp, 0 TP = no more actions) however, I’d like to keep the function of actors performing their actions right after input. Can somebody help me out?
    Thanks in advance!

  36. I’m having an issue here that I hope someone can help me with. I’m not getting any error messages or anything, but once I use up all the available turns in the FTB, the enemy moves. Everything works perfect up to this point. Once the enemy attacks, the turn counters fade back in and then immediately fades out. the enemy gets another action. This repeats until my party is dead. The FTB counter never refills.

    Has anyon else experienced this? I’ve tried installing and reinstalling the script but no luck. I’m using Theo’s SBS system.

  37. Hi, so, I’ve been trying this FTB thing out, but there is one downside : The characters get too many turns!
    So I am here to ask the question : How can I disable the AGI-based turn bonus?
    Because this is really hindering for my game, since it basically grants you to really beat up the supposed-to-be hard enemies with ease.

    • def max_ftb_actions
      n = make_action_times
      # n += agi_bonus_max_ftb_actions
      n += trait_bonus_max_ftb_actions
      return [n, 1].max
      end

      Try to mark as comment that line ;)

      • # new method: agi_bonus_max_ftb_actions
        #————————————————————————–
        # def agi_bonus_max_ftb_actions
        # bonus_agi = agi – param_base(6)
        # value_agi = param_base(6) * YEA::FTB::EXTRA_FTB_ACTION_BONUS
        # return (bonus_agi / value_agi).to_i
        # end

        and that ;)

  38. Pingback: Detour’s are sometimes good. | Rogue Development

  39. Great article, although there are a lot of sites already writing about this I actually find this post fairly useful. I recently started my own page which is called http://wpsyntaxerror.com to specifically talk about WordPress syntax errors and hopefully help some people who are having these problems. Please take a look at my site, or email me if you want to discuss ideas. I will make sure to keep coming back to the site to find more useful posts.

  40. Hi, I will be making post in script support and maybe try to tinker with the code but I have figured out that asking author woudn’t hurt anybody ;) Is it possible to add possibility of changing icons from lets say blue to red if there is some amount of action left.

    ICON_ACTION = 188 (y) # Icon displayed when there are actions left.
    ICON_EMPTY = 185 # Icon displayed to indicate a used action.
    Icon_custom = z # if actions left are =< than x every displayed (y )mark is changed to (z)

    I would be gratefull if you find some time to add this feature ;)

  41. ICON_ACTION = 188 # Icon displayed when there are actions left.
    ICON_EMPTY = 185 # Icon displayed to indicate a used action.
    ICON_C = 3

    def refresh
    contents.clear
    draw_empty_icons
    draw_filled_icons
    #moje
    draw_c_icons
    end

    def draw_c_icons
    n = $game_party.ftb_actions_maximum
    dx = contents.width
    if $game_party.ftb_actions_maximum < 3
    n.times do
    dx -= 24
    draw_icon(Icon.ftb_c, dx, 0)
    end
    end

    Well I have figure it out ;) I hope it will works without problems ;)

    • module Icon

      #————————————————————————–
      # self.ftb_action
      #————————————————————————–
      def self.ftb_action
      return YEA::FTB::ICON_ACTION
      end

      #————————————————————————–
      # self.ftb_empty
      #————————————————————————–
      def self.ftb_empty
      return YEA::FTB::ICON_EMPTY
      end
      #moje
      def self.ftb_c
      return YEA::FTB::ICON_C
      end
      end # Icon

      I have forgotten ;)

      • I am using nottag and stats with it to change maximum number of action available in a round. It is a form of cooldown. So if we have 3 AP in the first round, and we use 1 AP, we get status aftert action with -1MaxAP. Two icons that now indicate maximum number of actions we can take (blue marks by defoault) change into C icon :) I do not test it without states changing maximum AP. So maybe this solution only applies to my situation

  42. Hello, i have problem with this add-on. When i try to change :dtb to :ftb the system don’t change, so, i’m constricted to use the call script. But, when i try, i have problem, the game crash and give me problem with Game_interpreter at the line 1411 that is:
    “eval (script)”.
    The error is: “unexpected ‘:’, expecting $end
    $game_system:set_battle_system(:ftb)

    Could it be a problem about the stamina ? I added the ATB Stamina System by fomar. PLease, help me.

  43. Is it possible to have this system work simultaneously with an ATB system? Instead of getting a turn when the ATB fills, you get an Action Point to spent across the team. Enemies function the same and will use abilities as action points become available based on their ATB.

Leave a comment