I have a few battle concepts.
The first concept is based on Final Fantasy X's battle system. Different characters are able to effectively attack different enemies like some being good against high armored enemies and some against evasive enemies and so on. You can also easily switch characters in and out of the fray so if you need a high accuracy character you can swap one in and have a low accuracy character serve as bench warmer instead.
The major difference is that this also applies to defense. Some characters have strong armor, some have good evasion and some have good magic resistance. Enemies are just like characters suited to different targets. So, not only do you want to attack enemies with the right characters, you also want to make sure the right characters are currently in the active party when it's the enemies who attacks. While accomplishing one of those objectives should be easy, doing both is trickier.
To encourage the player to learn both effective offense and defense, I don't want to include any MP replenishing items, instead characters recover MP every time they injure enemies. The MP recovery formula is something like following:
MP recovered = 10% of character's Max MP * damage dealt / expected damage
Expected damage is some sort of number the game calculates which will among other things assume the character uses an effective attack. For those who have played FFX, it works kind of like the warrior overdrive mode except you get MP instead of overdrive. This will discourage MP farming since killing an enemy with ten weak attacks will give you just as much MP back as killing it with two strong attacks will. Leaving a high defense enemy alive and have the mage hit it repeatedly for a pitiful damage won't be an effective strategy.
With that feature in effect, the player will want to minimize the amount of damage taken. If you spend more MP on healing than you recover by attacking enemies you will eventually run out of MP. The damage you take will count even if it doesn't actually kill the character.
The only issue is status attacks and defensive spells. Since status attacks and defensive spells don't give you MP back unlike offensive skills, they are rather unattractive. However, as long as they can save more MP from being used due to the player having to heal characters than what they cost to cast, they are useful. So if I for example make a sleep spell I have to make sure putting an enemy asleep can be a better option than not putting the enemy asleep and heal the injury you take due to the enemy now being able to attack.
Another battle idea I have is making skills that are both offensive and defensive in nature. A problem I've seen is that many want the battles to be fast, but it's hard to make battles both fast and strategical. Several strategies are factored out if enemies are quickly defeated. Inflicting a status effect can prevent an enemy from acting. Killing the enemy also prevents it from acting. A defensive spell can decrease the damage you take. Killing an enemy will decrease the amount of enemies that attacks and therefore also decrease the damage you take. As a result, attacking enemies have the same benefits as defensive spells and status effects have and they also progress you towards victory.
If enemies take three hits or so to kill then a status effect can be worthwhile since only one one casting can prevent one from acting while you need three actions to prevent it from acting by killing it. A defensive spell can also with one action accomplish what you otherwise need three actions to accomplish by killing the enemy. However the faster the enemies are defeated, the less useful anything which doesn't damage or heal becomes.
My idea of a solution is to give skills both offensive and defensive properties. When you choose how to attack an enemy you also choose how to defend against retaliating attacks. Exactly how I'm to accomplish that I don't know. I could use a rock, paper and scissor system, but I want more dept. Ideally I want something that allows you to affect what the enemies can do, but which requires some brainpower to pull of.
This idea is not that different from my first idea in that it focuses on both offense and defense. The difference is that my first idea is more about which character you use and my second idea more about which skill you use. As such, the first idea would be more appropriate for a large cast while the second can be used for small casts.
I have a third idea, but it's more of a problem I'm hoping to be able to solve than an actual idea. One problem is that battles can easily become repetitive. The fourth time you encounter two frost wolves and an ice giant the battle will likely be the same as the third time that happened. The first encounter often differs a lot from the rest since you likely are testing things out and trying to figure out the best strategy to use. However, the more times you fight an enemy, the more it will be just the same. You can make the encounter rate really low, but fight can get repetitive really fast and sometimes different enemies fight fairly similar (elite soldier being a beefed up version of the veteran soldier and so on).
This would be solved if there was a way to make enemies action actually heavily affect what strategy you should use. That way, the random number generator will make the battles different unless it just happens to make the enemies use the same skills.
My experience so far is that even if enemies have a pool of different skills, what they happen to use rarely affects your strategy significantly. If they status a character to uselessness, it's more a speed bump than a change in strategy. You may sacrifice an action to cure the condition or you may just make due with the rest, but you will otherwise keep grinding the enemies down just as before.
If what actions the enemies chooses effectively opens and closes your available options, then battles would become much less repetitive.