JABS - J's Action Battle System
J / JE / Jragyn
v3.1.0
Introduction
Using this engine will enable you, the RM dev, to create a game where battles take place in real-time on the map between the player (with their allies if they wish) and the enemy. Interactions between enemies are by-design expected to be fast paced, no more than 5-10 seconds at most, allowing for development of zelda-like games from the SNES era.
This was largely inspired by
Blizzard's ABS (BlizzABS / BABS, for XP) and
Moghunter's ABS (XAS / Chrono Engine, for XP+/MV).
Features
- JABS stands for J's Action Battle System. (Clever, huh?)
- Enemy battlers can be created via events w/ specific comments.
- Enemy battlers will follow their configured AI (that you decide with comments).
- Enemies can have default parameters to reduce the overhead for enemy creation.
- Ally battlers will follow their designated AI mode (changeable via menu and tags).
- Ally AI is a separate plugin and can be disabled if a solo game is desired.
- Ally AI can be toggled with switches and by enabling/disabling followers via event command.
- An aggro system that works for both enemies and allies(if used).
- Aggro is based on damage dealt (all kinds), and is configurable.
- Tags are used on skills to allow for creation of things like aggro-generating or reduction.
- Tags are used on states to enable aggro multipliers (positive or negative) or aggro locks.
- Basic 8-directional movement (doesn't support 8-dir character sheets though).
- The demo has DOES have an adapter plugin that enables Cyclone-Movement to grant pseudo pixel movement as well.
- Crude animation support.
- Animation as in, changing of the character sheet to something else for a short duration to give the illusion of animation.
- I am no sprite artist and opted against commissioning folks for assets just for testing this functionality, so it may be kinda glitchy. When I get my hands on the type of assets I'm looking for, I will revisit this.
plugins I wrote and included that aren't JABS but do make JABS a little bit better
This comes with a bundle of plugins that are designed as "extensions" of JABS:
- AllyAi: enables allies/followers to fight alongside the player.
- InputManager: a plugin that translates button/key input to JABS actions.
- This is effectively a sample for how to build your own input mappers for JABS should you want to change your input layout or what have you.
- Diagonals: enables 8-directions for actions (such as a fireball).
- CycloneAdapter: a plugin that fixes some of the quirks with how Cyclone-Movement works in the context of JABS. This should be disabled if not using Cyclone-Movement.
- Speed: enables the ability to set custom move speeds across the database and/or for events.
- Timing: enables cooldown reduction and the like.
- Charge: enables charging a skill one or many times to release and perform a different skill.
- DangerIndicator: enables little icons that show up near enemy battlers that indicate how dangerous they are to the player based on magic formulas.
- Log: a log window that reflects various things that have happened, such as gaining experience or being afflicted with a state.
This also comes with a slew of other plugins that were designed to work with JABS, but not necessarily as an extension, just compatible:
- DropControl: enables greater control of drop count, drop rates, and so on.
- SDP: enables custom stat growth by spending points (earned by defeating enemies) towards collections of stats called "panels".
- LevelMaster: enables giving enemies levels, scales exp/gold rewards, scales damage, all based on level differences.
- Escriptions: formerly known as "Event Descriptions"; enables icon/text descriptions to be available over events with event comment commands.
- SkillExtend: enables skills to give other skills various features (mostly in the context of JABS parameters).
- Proficiency: enables skills to have proficiency based on use, and to potentially give rewards such as learning new skills.
- TextPops: enables popups on the map for text, such as damage popups.
- Elementalistics: enables greater control over elements, including allowing absorbing elements, having multiple elements, etc.
- CriticalFactors: enables greater control over critical hits, including critical damage reductions, multipliers, chances, etc.
- NaturalGrowth: enables temporary or permanent stat growth from various things in the database, such as equipment or states.
- Difficulty: a custom difficulty system that modifies enemy parameters and rewards based on the chosen difficulty.
- MessageTextCodes: adds a few new text codes for use throughout RMMZ, such as weapon or armor references.
- OneTimeItemBoost: enables permanent flat/percent stat growth on the first time an item was used.
- PassiveSkills: enables learned skills to also passively grant the effects of one or more states.
Screenshots
How to Use
Due to the nature of new battle systems, it would be best to download the demo which showcases its features.
Fortunately, you can just use the demo as a base and build from there.
Additionally,
this engine was built with using a controller in mind. Though the keyboard does
work, I'd strongly recommend using a controller to play any game created using this engine. A variety of controllers I'm sure will work, though I used
this controller for development.
Plugin Commands / Script Calls
Plugin Commands
View attachment 182125
From top to bottom (in plugin command screenshot):
-
Enable JABS = turns on the ABS.
-
Disable JABS = turns off the ABS (most base code I've tweaked will revert to normal while JABS is turned off).
-
Force-assign a JABS skill = manually assigns a skill to one of the L1/R1 (3-0) slots, and locks that slot.
-
Unlock a single JABS skill slot = unlocks a slot from being force-assigned, allowing the player to reassign skills to the skill slot.
-
Unlock all JABS skill slots = unlocks all slots (for those who force-assigned multiple slots).
-
Cycle to next leader = party cycles to the next member of the party (if they are alive).
-
Disable Party Rotation = prevents the player from being able to rotate the party with the party cycle button. This does not prevent the player from changing the party formation or anything like that, though.
-
Enable Party Rotation = re-enables the player's ability to party cycle (if disabled from above).
-
Refresh JABS Menu = refreshes the JABS quick menu. This is probably only useful for developers who are manipulating the items in the menu for one reason or another (like adding/removing commands to/from it).
Demo
A demo showcasing the primary functionalities can be found at the download link below.
Download
- JABS Demo (in the form of "chef adventure")
- See the plugin help/description in RMMZ for details.
Final Note
I deliberately left all code open for the public to view and edit as they see fit (please be kind and give credit where credit is due!). If you're savvy enough to tweak the code, I'd wager that you can also probably submit a pull request against my github repo if you want to contribute! If you do and your pull request is merged in, I'll add your name to the credits below! Hurray for open-source!
If you have questions about the code, I'd be happy to explain most anything you'd see in the J-ABS.js file (or any of my plugins).
Thank you, and happy RM-ing!
Credits
Before releasing to the public, this project has undergone many transformations through its iterations. Those with sharper eyes may recognize these assets! This project initially started as many do: I downloaded VisuStella and co.'s sample starter project and got to work. As a result, there are a few artifacts I didn't think twice about, most namely the tilesets and some of the sprites.
- The tilesets and some characters/faces are not mine, they were from VisuStella and co., so... thank you for making even other devs lives like my own easier to just pick up and get started doing actual content creation! Additionally, there are various other plugins within the sample project linked above that don't belong to me and weren't written by me. See their respective plugin help sections for additional details on credits etc.
- I believe it was Avy's work that created the icons in the iconset. It is a bit patchwork-ey because I wanted more things, but still, credit is due where credit is due. Additionally, it was Frankenstein'd with a huge number of other icons I acquired that probably aren't friendly about redistribution, so stay honest and don't use them!
- The characters/faces that are named with the pattern: "chara_*" are just characters I made using the built-in character generator. You are free to use them if you want, but know that with a little bit of time you could probably make your own! (and a bit of paint.net efforts)
- Moghunter and Blizzard provided inspiration and indirect guidance via their patterns in-code. When I was a lost lamb, unsure how to tackle a particular problem, their code showed me a means to do it myself. Though there isn't really any direct copy-paste (obviously due to engine differences and stuff), there is surely a distinct familiarity in-pattern on how my architecture was for JABS was shaped. Thank you, folks.
- My lovely lady who has had to tolerate the weeks if not months years of time dedicated to writing and refining this engine for the public to use (and myself!). She has had to listen to me rant and rave about why the sprites aren't doing what I tell them, but I don't actually think she knows what a sprite is, but she listened anyway <3. She deserves credit, too.
FAQs
Can I use this engine in a commercial game?
Any developer would be flattered to know that there are people who want to utilize their code for something that will reach the masses, me among them! If you decide to use JABS (or any of my plugins following the "J-*" naming pattern) in a commercial project, do let me know! We can discuss the finer details of what that all entails.
I see other J-* plugins in the project, but I can't find a support page for them anywhere! How do I use them?
The project that contains JABS doubles as my test bed for all plugins I make. Some of them are simple (like J-Hud), while others are more complex (like J-JAFTING). I encourage you reach out to me to discuss them if you can't find anything about them anywhere as I just might've forgotten release them publicly, or I may have opted against it for other reasons.
I ran into a bug with JABS and it crashed the game (or it just isn't working as-expected). What do I do?
If you encountered a bug/defect, post a screenshot of the console (if possible) along with as much detail as you can gather that you believe is related to the problem. I'm a professional developer by day, but definitely no QA! I'd be happy to fix any defects related to my code, or try my best to add compatibility to play nice with other plugins assuming their code is open as well (like f0mor's plugins, visustella plugins are a bit more difficult to deal with due to the code being obfuscated and you may need to have them reach out to me so we can talk about how to solve it).