Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

[Review]DoubleX RMVXA ECATB(Yami CATB Rewrite)

DoubleX

Just a nameless weakling
Member

Disclaimer
Although I've completely rewritten Yami CATB into this script on my own, it's still an edit(albeit heavily modified) of someone else's script so it's still not 100% of my original work.
ALL CREDITS GO TO YAMI(YOU'VE TO CREDIT HIM/HER) EVEN THOUGH HE/SHE ALLOWED ME TO BE CREDITED AS WELL.

Patches
(DoubleX)ECATB Base Formula(Possibly hurts code performance but frees you from copying the same <ecatb rate: RX> to every battler):
http://pastebin.com/PRwkrQKb


Note
Even though it's indeed a complete script, I still decided to call its 1st version a testing version, as it's the 1st time I write such a massive script(8500+ lines) with such a huge user settings region(2400+ lines), and the user scripting proficiency demand is so high that I want to know how can I make it more user-friendly by listening to user feedbacks.
Right now I'm especially worrying about:
1. If the instructions aren't helpful enough
2. If this script's too hard for even an user with decent scripting knowledge to use
3. If the user settings region is too big
4. If the user's control and freedom aren't enough
5. If this script's too unperformant

Introduction
Back on last year's September, I've begun to think of rewriting the CATB system entirely. I thought "Maybe the rewrite should bundle everything into a single package, as right now the CATB isn't in this way and some users may prefer the former."
As I began working on it, I realized my desired style's quite different from Yami's. For instance, I prefer methods with no more than 10 lines(although a few of mines still breached this limit), while Yami clearly doesn't mind the long methods(up to 60+ lines afaik). The style difference led to more and more redesign and refactoring, to the point that this script might seem to be completely different from CATB, even though this script's core skeleton's still quite similar to CATB's.
I learned a lot during this 7 months(although the actual time I've put is about 7 full weeks), and I want to know how much I've improved. So I used this script as a test. I want to give users as many control and freedom as possible while still keeping this script as user-friendly as possible. That's an extremely tough balance for me to work with and right now I'm not satisfied with this yet. So I want to listen to user feedbacks to see how can I get a better balance.
Finally, I want to emphasize that Yami deserves all the credits, and I'm still going to support CATB as some users may prefer the CATB's easy-to-use and modular addons style.

Purpose
Be an enhanced version of YSA-CATB with bug fixes and addons integrated

Features
Code:
#    1. Action Input Events(Core)                                              |

#        You can set something to occur right before/after inputting actions   |

#    2. Action Input Speed(Speed)                                              |

#       You can set some enemys and/or actors with autobattle and/or confusion |

#       to have action input speeds set by you                                 |

#    3. ATB Bar Colors(Core)                                                   |

#       You can set some actors, classes, weapons, armors, enemies and/or      |

#       states to alter their owner's atb bar colors by ways set by you        |

#    4. ATB Clock Window(Clock)                                                |

#       You can set if and how the atb clock info will be shown in battle      |

#    5. ATB Fill Rate(Core)                                                    |

#       You can set some actors, classes, weapons, armors, enemies and/or      |

#       states to alter their owner's atb fill rate by ways set by you         |

#    6. ATB Force Run/Stop(Force)                                              |

#       You can set keys to force the atb clock to run or stop when pressed    |

#       You can also set if and how the atb force status will be shown         |

#    7. ATB Pool(Pool)                                                         |

#       You can set the atb and action points to be shared among the party or  |

#       troop                                                                  |

#       Right now it doesn't support toogling this feature in battles          |

#       (v0.05a+)Right now it doesn't work well with the Gradual Action Points |

#       Gain feature                                                           |

#    8. ATB Reset Events(Core)                                                 |

#       You can set something to occur right before and/or after an atb reset  |

#    9. ATB Reset Value(Core)                                                  |

#       You can set some skill or items to reset their users' atb value by     |

#       values set by You                                                      |

#    10. ATB Turn Type(Core)                                                   |

#        You can set if the turn is based on time, number of actions/battlers  |

#    11. ATB Update Events(Core)                                               |

#        You can set something to occur right before and/or after an atb update|

#    12. Battler Charging Cancellation/Setup/Target Selection Hotkeys(Hotkey)  |

#        You can set hotkeys to call actors/enemies that can input actions, be |

#        targeted or are charging skills/items                                 |

#    13. Battler Cool Down(Cooldown)                                           |

#        You can set some skills or items to cause their users to have to cool |

#        down for a while before their atb bar will be filled again            |

#    14. Battler Order Window(Order)                                           |

#        You can set if and how the battler orders will be shown in battle     |

#    15. Battler Ready SE(SE)                                                  |

#        You can set some battlers to play a se set by users when the battlers |

#        become able to act                                                    |

#    16. Battler Sprite ATB Bars(Bar)                                          |

#        You can set the contents and layouts of the battler sprite atb bars   |

#        and the conditions for them to be shown                               |

#    17. Changing battle systems(Core)                                         |

#        You can change the battle system to any of those supported by         |

#        Yanfly Engine Ace - Ace Battle Engine outside battles                 |

#    18. Cooldown Finish Events(Cooldown)                                      |

#        You can set something to occur right after finishing cooldown normally|

#    19. Countdown States(Countdown)                                           |

#        You can set some states having duration in seconds and conditions     |

#        that trigger actions when they're met                                 |

#    20. (v0.04a+)CTB Replication(Core)                                        |

#        You can set this script to replicate a CTB system by skipping the atb,|

#        charge and cooldown filling times, and the global atb tick clock      |

#    21. Dynamic configuration values(Core)                                    |

#        Almost all user configuration values can be changed by you on the fly |

#    22. Escape/ATB Wait Conditions(Core)                                      |

#        You can set the conditions for party escape and/or the atb clock to   |

#        stop running                                                          |

#    23. Failed Escape Attempt Action Cost(Core)                               |

#        You can set the action costed paid by all party members right after   |

#        a failed escape attempt                                               |

#    24. (v0.05a+)Gradual Action Points Gain(Action)                           |

#        You can set some battlers' action points to be gained 1 by 1 instead  |

#        of gaining all action points at once                                  |

#        Right now it doesn't work well with the ATB Pool feature              |

#    25. Skill/Item Action Cost(Core)                                          |

#        You can set some skills or items to have their own action point       |

#        demands                                                               |

#    26. Skill/Item Cancel(Cancel)                                             |

#        You can cancel party members' charging skill/items                    |

#    27. Skill/Item Charging(Charge)                                           |

#        You can set party escape, some skills or items to demand users to     |

#        charge for a while before executing them                              |

#        You can also set some skills or items requiring charging to demands   |

#        their users to pay the costs after started or finished charging       |

#    28. Start ATB Value(Core)                                                 |

#        You can set some battlers to have their own initial atb values at     |

#        the beginning of a battle under conditions set by you                 |

#    29. Unison Skills(Unison)                                                 |

#        You can set some skills/items to need more than 1 battler to use      |

#        Right now it only supports actor unison skills/items                  |

Possibly upcoming features
Code:
#    1. Action Batch Execution                                                 |

#       You can set some battlers to input and execute more than 1 actions in a|

#       single action input and execution phase respectively                   |

#    2. Multiple ATB Types                                                     |

#       You can set some skills/items to use some ATB types and some other     |

#       skills/items to use some other ATB types                               |

#    3. Premature Discharge                                                    |

#       You can set some skills/items to be able to be prematurely executed    |

#       before it finishes charging under some conditions and trade offs       |

Games Using This Script
None so far

Compatibility Fix
http://www.arpgmaker.com/viewtopic.php?f=11&t=78867

Screenshots
ECATB%20Battler%20Order%20Window%20Feature.jpg

Video

Demo
Coming Soon

Tutorial
http://forums.rpgmakerweb.com/index...ced-ysa-battle-system-classical-atb-tutorial/

Prerequisites
Scripts:
Yanfly Engine Ace - Ace Battle Engine:
https://yanflychannel.wordpress.com/rmvxa/battle-scripts/ace-battle-engine/
Abilities:
1. Solid understanding of the basic active time battle concept
2. Solid understanding of the RMVXA notetag and script call usages
3. Decent RGSS3 scripting proficiency to fully utilize this script

Terms Of Use
Code:
#    You shall:                                                                |

#    1. Follow the terms of use of YSA Battle System: Classical ATB            |

#    2. Let your published edits of this script be integrated as parts of it   |

#    3. Keep this script's Script Info part's contents intact                  |

#    You shalln't:                                                             |

#    1. Claim that this script's written by anyone other than DoubleX, his     |

#       aliases, Yami, or his/her aliases                                      |

#    2. Make an edit of this script while saying it isn't                      |

#    3. Make a RMVXA project based on this script's demo while saying it isn't |

#    None of the above applies to Yami or his/her aliases                      |

Instructions
Code:
#    1. Open the script editor and put this script into an open slot between   |

#       Yanfly Engine Ace - Ace Battle Engine and Main. Save to take effect.   |

#    2. This script can't be used with YSA Battle System: Classical ATB.       |

#    3. Set DEFAULT_BATTLE_SYSTEM in Yanfly Engine Ace - Ace Battle Engine as  |

#       :ecatb to set the default battle system as that of this script.        |

Author's Notes
1. Using Yanfly Engine Ace - Ace Core Engine as well is highly recommended as it fixes the force action bug of this script and improve the atb percent and action points display in the actor atb bars:
https://yanflychannel.wordpress.com/rmvxa/core-scripts/ace-core-engine/
2. Using Yanfly Engine Ace - Buff & State Manager is highly recommended as it displays the states' remaining turns:
https://yanflychannel.wordpress.com/rmvxa/gameplay-scripts/buff-state-manager/
3. Using Yanfly Engine Ace - Skill Cost Manager is highly recommended as it can display the skills/items' action point requirements by adding AC0 in front of ACX used by those skills/items and using <custom cost: skill.ecatb_act_cost[@actor]>:
https://yanflychannel.wordpress.com/rmvxa/gameplay-scripts/skill-cost-manager/
4. Using Cidiomar's Input as well is highly recommended as it lets users set custom keymaps, which is useful for features using keyboard inputs:
https://himeworks.wordpress.com/2013/07/07/full-input-keyboard/
5. Using DoubleX RMVXA Dynamic Data is highly recommemded as it lets you change the notetag values on the fly:
http://www.arpgmaker.com/viewtopic.php?f=11&t=78863
- ecatb_note_strings[note] is an accessor letting you store your new notetag values of notetag note.
- reset_ecatb_notes(note) applies the above changes.
6. Using DoubleX RMVXA State Counters is highly recommended as it displays the enemy countdown states:
http://www.arpgmaker.com/viewtopic.php?f=11&t=78864
7. Using DoubleX RMVXA State Triggers is highly recommended as the CATB Clear Addon and some features of the CATB Countdown Addon are outsourced to that script:
http://www.arpgmaker.com/viewtopic.php?f=11&t=78861
8. This is an advanced complicated script, meaning testings are likely needed to comprehend the use of every configuration of this script.
9. This script can run using the default settings but you're still highly recommended to comprehend all user settings of this script.
10. This script checks and corrects most configuration(but not notetag) values, but you're still highly recommended to validate every configuration(and notetag) values themselves.
11. Using too many notetags and/or complicated configuration settings and/or notetag values can cause severe performance issues.

FAQ
Code:
#    Q1. What's the main difference between ECATB and CATB?                    |

#    A1. 1. The former integrates everything except compatibility fix into 1   |

#           script while the addons and bug fix of the latter are all separate |

#           scripts.                                                           |

#        2. Almost all user settings of the former can be changed on the fly   |

#           easily while lots of the latter are always fixed once set by users |

#           or even just hardcoded.                                            |

#        3. Some notetags of the former lets users do more stuffs than some of |

#           those of the latter.                                               |

#        4. The code structures and documentations of the former are generally |

#           clearer, neater and more logical than those of the latter.         |

#        5. The codes of the former are generally more effective, efficient,   |

#           flexible, maintainable, reliable and robust than the latter.       |

#        6. The former does a more thorough user error checking and corrections|

#           than the latter for most user settings in most cases.              |

#        7. The former generally demands much more from both the users and     |

#           scripters than the latter.                                         |

#        8. Users can't disable addons in the former while they can add and/or |

#           remove the addon of the latter effortlessly.                       |

#        9. The latter outsources little features to other scripts while the   |

#           former does this significantly more heavily.                       |

#    Q2. Some settings need scripting knowledge to use. May you please teach me|

#        scripting?                                                            |

#    A2. You can ask me how to set specific settings to meet your specific     |

#        needs, but it seems to me that there are many good scripting teachers |

#        so you may want to ask them instead of me for learning scripting.     |

#    Q3. Why don't you implement the reverse atb bar feature in this script    |

#        like what Victor Sant did in his atb script?                          |

#    A3. It's implicitly implemented but the feature is still in this script&#058;  |

#        1. Set :ecatb_bar_colors as %Q(Color.new(0, 0, 0, 0),                 |

#           Color.new(0, 0, 0, 0)).                                            |

#           It makes the atb bar invisible.                                    |

#        2. Set :ecatb_base_fill_t as %Q(1 / Graphics.frame_rate).             |

#           It sets the base atb fill rate to be 100% per frame.               |

#        3. Set the charge rate of each skill or item as "x".                  |

#           It makes the skill or item to charge x% atb per frame.             |

#    Q4. Why I'll have to credit Yami but not you when it's your work?         |

#    A4. It's because this script's an edit of CATB and is heavily based on it.|

#        Without Yami's CATB, this script won't exist; Without his term of use |

#        permitting editing his CATB, this script won't exist as well.         |

#    Q5. What's the point of making ECATB when we've CATB?                     |

#    A5. 1. Some users may prefer having everything bundled into a single      |

#           script and that's the main reason for me to make ECATB.            |

#        2. Lets advanced users have much more control and freedom over the    |

#           script settings. ECATB does that at the cost of significantly      |

#           raising the demand of user proficiency, while CATB keeps the       |

#           settings simple at the cost of obviously reducing the settting     |

#           flexibilities.                                                     |

#    Q6. Can you make this script easier for non-scripters to use?             |

#    A6. I tried to make it as easy as I can but right now that's my limit.    |

#    Q7. Why some settings aren't hardcoded when no users would change them?   |

#    A7. If that's really the case, I'll consider making them hardcoded.       |

#    Q8. Why the script configuration part needs to have 2100+ lines?          |

#    A8. That's because this script does need that many lines to let users set |

#        the configurations of this script. You may want to use CATB instead if|

#        you don't need most of this script's configurations.                  |

#    Q9. Why 'Let your published edits of this script be integrated as parts of|

#        it' is included in the terms of use?                                  |

#    A9. 1. It means I want to reserve that right but that doesn't mean I'll   |

#           always do so. I'll never do so without discussing that with you.   |

#           I'll even try to have your permissions beforehand.                 |

#        2. Integrating the edits into this script may perform better in some  |

#           cases. A case-by-case approach will be used for discussing that.   |

#        3. If I didn't reserve that right, things could be chaotic when some  |

#           edits done by some people did conflict with some of the others by  |

#           some other people. Reserving this right can indeed be an insurance.|

#        4. I'll credit you and clearly stating which parts are your work.     |

Authors
Code:
#    DoubleX:                                                                  |

#    1. This script                                                            |

#    Yami:                                                                     |

#    1. YSA Battle System: Classical ATB                                       |

Changelog
Code:
#    v0.05c(GMT 0600 28-11-2021):                                              |
#    1. Fixed wrong eval of ecatb_battler_scale and uninitialized battler turn |
#       bugs                                                                   |
#    v0.05b(GMT 0200 7-11-2015):                                               |

#    1. Updated (DoubleX)ECATB Base Formula                                    |

#    2. Notetag values are now symbols of methods in the configuration regions |

#    3. Fixed battler order icon not placed correctly when atb >= 100.0 bug    |

#    4. Simplified the party/troop atb pool reset implementations              |

#    5. Updated some outdated documentations                                   |

#    6. Further improved this script's compatibility, efficiency and simplicity|

#    v0.05a(GMT 0400 21-10-2015):                                              |

#    1. Implemented the Gradual Action Points Gain feature                     |

#       - Right now it doesn't work well with the ATB Pool feature             |

#    2. Updated (DoubleX)ECATB Base Formula                                    |

#    3. Added configuration :ecatb_countdown_mib in the added feature COUNTDOWN|

#    4. ecatb_se_ready_act changed to take SE or nil instead of an array       |

#    5. Fixed battler order and se notetags falsely returning nil bug          |

#    6. Fixed undisposed battler atb order icons upon battle end bug           |

#    7. Fixed repeated actor sprite creation bug                               |

#    8. Fixed battler atb order icons not keeping updated upon icon change bug |

#    9. Fixed pre ecatb input act only triggering upon becoming able to act bug|

#    10. Fixed split second countdown interval never updating turns bug        |

#    11. Fixed active actor command window not showing in atb pool mode bug    |

#    12. Fixed enemy atb bar not showing for those having at least 1 state bug |

#    13. Fixed nil cooldown rate when the atb gain rate remain unchanged bug   |

#    14. Fixed false unison charging for non unison skills/items after using   |

#        unison ones bug                                                       |

#    15. Fixed corrupted battler's last skill/item cache bug                   |

#    16. Fixed running the atb frame update upon battle end bug                |

#    17. Fixed non-sync unison cooldown with party/troop atb pool mode bug     |

#    18. Fixed troop atb pool reset not resetting all enemies' atb values bug  |

#    19. Fixed party/troop atb pool reset falsely resetting other members'     |

#        actions bug                                                           |

#        Right now all members' actions will still be reset when the action    |

#        point pool's depleted                                                 |

#    21. Fixed battler ready se not playing when the battler's become able to  |

#        act bug                                                               |

#    22. Debugging this script becomes easier and simpler with the console open|

#    23. Removed some more redundant variables and methods                     |

#    24. Further boosted this script's compactness, correctness, effectiveness,|

#        efficiency, maintainability, readability, robustness and simplicity   |

#    v0.04f(GMT 0400 12-9-2015):                                               |

#    1. Added 3 script calls for notifying changes of new status window methods|

#    2. The battler sprite atb bar methods are now under ECATB_Bar             |

#    3. Fixed issues with clearing/resetting battler blocks twice consecutively|

#    4. Further improved this script's effectiveness, efficiency and robustness|

#    v0.04e(GMT 1500 11-8-2015):                                               |

#    1. Fixed crash upon changing equips outside battles bug                   |

#    2. Fixed triggering pre and post atb reset effects upon battle end bug    |

#    3. Fixed enemy ecatb bar show not working properly bug                    |

#    4. Fixed actors added during battles not properly initialized bug         |

#    5. Fixed disabling party escape if not all party members are movable bug  |

#    6. Fixed failed party escape attempts not cooling down properly bug       |

#    7. Updated the outdated configuration documentations                      |

#    8. Further improved this script's compactness, memory usage and robustness|

#    v0.04d(GMT 1400 1-8-2015):                                                |

#    1. Updated (DoubleX)ECATB Base Formula                                    |

#    2. Changed :color to :atb and %Q(%Q()) to %Q()                            |

#    3. Added configuration :ecatb_bar_multiplayer in feature BAR              |

#    4. Changed configuration :ecatb_actor_hotkeys to :ecatb_battler_hotkeys   |

#    5. UNISON_DEFS doesn't have to include method arguments now               |

#    6. Battler bars displayed on their sprites can overlap with status window |

#    7. Added video [url=https://www.youtube.com/watch?v=6E0-X0wbLAM]https://www.youtube.com/watch?v=6E0-X0wbLAM[/url]                |

#    8. Fixed complete freeze upon battle end in the ctb replication mode bug  |

#    9. Fixed actors being inputable without action points in the atb pool mode|

#    10. Fixed uncleared blocks for actors not in the party when saving bug    |

#    11. Fixed unison rules not being properly applied to user's methods bug   |

#    12. Fixed countdown freeze not freezing the countdown clock entirely bug  |

#    13. Fixed notetag value reevaluation not always correctly triggered bug   |

#    14. Further increased this script's compactness, compatibility,           |

#        correctness, effectiveness, efficiency, flexibility, maintainability, |

#        modularity, readability, robustness, simplicity and user-friendliness |

#    v0.04c(GMT 1400 6-7-2015):                                                |

#    1. Fixed duplicate actor sprite creations from other scripts doing so     |

#    2. Fixed executing and/or inputting actions from/to hidden battlers bug   |

#    3. Fixed battler icons in the order window not working with ctb mode bug  |

#    4. Further increased this script's compactness and efficiency             |

#    5. Removed some more redundant variables and compatibility socket methods |

#    v0.04b(GMT 1600 29-6-2015):                                               |

#    1. Reduced lag right after executing actions with ctb replication         |

#    2. Fixed nil atb bar color bug upon party member change at battle end     |

#    3. Removed some redundant compatibility socket methods                    |

#    v0.04a(GMT 0300 27-6-2015):                                               |

#    1. Implemented the CTB Replication feature                                |

#    2. Lets users set if problematic configuration values will be reset       |

#    3. Fixed retrieving nil battler name bug in the help window               |

#    4. Increased this script's compactness and memory performance             |

#    v0.03a(GMT 0900 27-5-2015):                                               |

#    1. Implemented these features:                                            |

#       -  Action Input Events                                                 |

#       -  ATB Reset Events                                                    |

#       -  Cooldown Finish Events                                              |

#    2. Improved this script's efficiency and robustness                       |

#    v0.02d(GMT 0400 25-5-2015):                                               |

#    1. Fixed starting atb value not working bug                               |

#    2. Fixed some typos and outdated stuffs                                   |

#    v0.02c(GMT 1300 15-5-2015):                                               |

#    1. Fixed default atb starting value not working bug                       |

#    2. Fixed nil color upon victory and unexpected change equip results bug   |

#    3. Fixed not clearing battlers' lambdas before calling Marshal bug        |

#    4. Fixed failing to load saved games upon restarting the game bug         |

#    5. Fixed unison method rules not working bug                              |

#    6. Improved the battler cooldown and party escape implementations         |

#    7. Further improved this script's efficiency                              |

#    v0.02b(GMT 1500 12-5-2015):                                               |

#    1. Fixed some typos and outdated stuffs                                   |

#    2. Fixed order battler icon bugs upon adding/removing party members       |

#    v0.02a(GMT 0700 9-5-2015):                                                |

#    1. Implemented the Action Input Speed feature                             |

#    2. Further improved this script's efficiency                              |

#    v0.01b(GMT 1600 4-5-2015):                                                |

#    1. Improved this script's efficiency                                      |

#    v0.01a(GMT 1300 2-5-2015):                                                |

#    1. Implemented the Battler Order Window feature                           |

#    v0.00d(GMT 0800 22-4-2015):                                               |

#    1. Fixed actor auto battle and confusion action not executing properly bug|

#    2. Fixed compatibility methods not being called bug                       |

#    3. Fixed unison charging value reset bug(the charging finishes upon reset)|

#    v0.00c(GMT 1200 18-4-2015):                                               |

#    1. Fixed the atb bar y offset not working bug                             |

#    2. Fixed the faulty example notetag values of <ecatb color: type, num, CX>|

#    3. Found unison charging value reset bug(the charging finishes upon reset)|

#    v0.00b(GMT 0900 15-4-2015):                                               |

#    1. Outsourced the countdown state sprite display to                       |

#       DoubleX RMVXA State Counters                                           |

#    2. Actor atb bars can be displayed on their sprites                       |

#    v0.00a(GMT 1200 9-4-2015):                                                |

#    1. 1st testing version of this script finished                            |

Download Link
http://pastebin.com/HvfKwmrR
 
Last edited:

DoubleX

Just a nameless weakling
Member

Updates
Code:
#    v0.05c(GMT 0600 28-11-2021):                                              |
#    1. Fixed wrong eval of ecatb_battler_scale and uninitialized battler turn |
#       bugs                                                                   |
[code]
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top