Short and simple
Multiple battle managers.
Multiple battle scenes
Easy to extend, easy to override
I didn't include the RGSS dll cause everyone should have one already. Just copy it over from one of your own projects.
NPC on the top-left gives arena battle
NPC on the top-right gives Timed battle
NPC on the right gives chain battle, using Kread EX's chain battle add-on
NPC on the left gives sideview battle using Fomar's basic sideview
NPC on the bottom-left gives ATB battle using Fomar's ATB
Rest of the story
I am writing a script that will allow you to specify multiple battle systems and battle managers.
It is a battle manager plugin system that supports multiple battle managers, battle scenes, and battle windows.
Essentially, this system will in theory allow you to plug in as many battle systems as you want into your project, and they will all be compatible with each other assuming they are isolated to their own little boxes. That means, if they *only* add new attributes/methods to shared classes (Game_Actor, Game_Party, etc) and do not *override* any methods/attributes in those shared classes, tthey should be fine.
Here is a quick demo of what I've done: http://www.mediafire.com/?xpp9310aasucywb
It shows off three separate battle managers, each extending the basic battle manager with a couple different behaviors depending on the type of battle I am in.
Anyone have thoughts on whether multiple battle systems is a good idea?
And does anyone know whether such a system already exists?
Some technical details for those that are interested in my design, or wish to comment on it or point out flaws.
Since I have not written a battle system myself, I don't know of any specific details that I need to consider. For now I am just providing functionality that will allow you to add multiple battle managers to the system as well as multiple battle scenes.
The number of battle systems you can use with this current design is quite limited: you can't have real-time battles on the map (unless you change scenes). That effectively takes out all of the action battle systems, and I would like to come up with a design that will support those as well.
The changes I am making are as follows:
1. Introduce a new BattleManagerPlus class
2. Override *every* method that calls BattleManager to call my new BattleManagerPlus
3. Override SceneManager call/goto methods to accept multiple arguments. If one argument, then default behavior. If multiple arguments, then check which ones to process (for now, just check which Battle System to use)
4. Add a "battle_manager" attribute to Game_System, which will store the current battle manager that is being used. This allows all classes to access it through $game_system.battle_manager
For the second point, although I override absolutely every method (about 15 of them), they are all methods from the default engine. So...if you just place the script that overrides all of sorts things at the top of all the custom scripts, it should be fine.
All additional battle managers will extend the BattleManagerPlus class (using inheritance). It is the same as the original BattleManager, but the difference is that because you are given your own battle manager class, you don't need to alias: just override anything you need. Or even write your own battle manager!
Same goes for Battle_Scene; an updated version of the default battle scene is provided for you, you just need to extend it and write your own scenes and windows.
The design uses some simple OO-programming principles.
Here is how I imagine the battle scenes
The same applies for battle managers.
Furthermore, we can even write wrapper classes. After all, any battle manager class that you write, is still a battle manager.
I have put together a very system based on the above design, and have implemented 3 types of battle systems
-default battle system
-timed battle system
-arena battle system
Along with three types of battle managers
-default battle manager
-timed battle manager: this specifies a count down in addition to your default battle
-arena battle manager: this provides a different way to handle arena matches (for example, reward systems, etc).
You can mix and match battle systems and battle managers as well.
If they are written well, you may include certain functionality as modules and simply include them in other battle managers.
It is still very premature so I have hardcoded a bunch of script calls, but it illustrates the point.