How to make an enemy change it's attack patterns based on elemental states.

  • McTricky
  • 12/14/2012 04:31 PM

So today, I happened to be on YouTube watching the Seymour Omnis fight from Final Fantasy X. It's a popular boss fight amongst players and non-players, though I'm not sure whether it's because of the strategy involved or because of the music. As I was watching the boss fight, I started thinking about how I could replicate something like that in Ace, minus all the aesthetic candy.

For those not familiar, the Seymour Omnis fight basically involves elemental switching. Seymour has 4 circular glyphs each with four coloured node at 4 sides of each glyph. The colours represented the primary elements of the game (in order): Red (Fire), (Light Blue) Ice, (Yellow) Thunder and (Dark Blue) Water. What ever colour node was aligned would be the magic he'd cast, and he'd cast this FOUR TIMES. He'd also absorb the element if used against him, and would be vulnerable to the opposite element. Each time a magic of a certain element was used, Seymour would automatically rotate the glyphs behind him so that the nodes that were aligned would the next element in line.

For example, if the all the nodes aligned were red, then he'd be casting Firaga (the game's highest tier Fire spell) four times, whilst absorbing any Fire attacks flung at him, and would take heavy damage from Ice attacks. If Ice were to be used at this point he'd switch over the nodes so that the light blue ones were aligned, making him use Ice attacks and be weak against Fire.

It's important to note that what I'm about to explain here may not be an exact replica of how the Seymour Omnis fight works, mainly because I haven't played the game myself in a long time, and I'm not particularly sure if what I just explained is how the battle actually works. That was just from one observation. None the less, this tutorial will teach you how to make a boss that will change it's elemental attributes upon being hit with a certain element.

- RPG Maker VX Ace, of course.
- Victor Engine - Element States (by Victor Sant)
- Victor Engine - Enemy Attack Conditions (by Victor Sant)
- Yanfly Engine Ace - Element Absorb (by Yanfly)
- Knowledge in notetagging.
- Ability to follow instructions well.

Now for starters we will need to download Victor's Element States and Enemy Attack Conditions scripts as this wasn't possible (for me at least) without those two scripts. Place them where they need to be. I personally have Victor's scripts above everything, and Yanfly's scripts below his. Though, if you experience any problems with Element States, such as states not being applied when they're hit with the element, if you're using Yanfly's Lunatic Damage script, place it under that script.

Next we will need to set up your elements. Elements would be found in the top left box under the System tab of the database. You would probably have all your elements there already. With the first two being Physical and Magical and the rest being the actual elements. Whenever I mention Element IDs, remember to refer back to this.

Now head to the States tab. For this tutorial we're going to utilize Fire, Ice, Thunder and Water as our 4 primary elements. (Fire vs Ice, Thunder vs Water). So what we're going to do is make 4 new states, one for each element. Name them ' Alignment' ( being...the element or attribute xD). Or you can name them whatever, but just know which one is which. Now leave the main settings blank, but in the Traits section, under Attribute Efficiency, put as *200%. So for example, for the 'Fire Alignment' state, in the trait section I would be put under Attribute Efficiency, Ice, *200%. Doing this will make the battler with this take twice the damage from Ice attacks when under the state. Do the same for the rest of these new states.

OPTIONAL: If you have Yanfly's Absorb Element script, you can add this bit of code to each state's Note's section to make them absorb an element.

<element absorb: x>

x = the Element ID.
So essentially, for Fire Alignment state, you want x to be the Element ID of whatever the Fire attribute is (by default it should be 3).

Here's where there's a lot of notetagging involved so try and bear with me here.
Note that in the video of the Seymour Omnis fight that I watched, Seymour only quad-cast the magic element he was aligned to. He only used a Dispel spell on one occasion and an Ultima spell on one occasion (though this was used when a summon was out).

Reason why I mention that is because this is where Victor's Enemy Attack Conditions script comes in. This script allows for a bit more flexibility regarding the conditions of enemy attacks and when they attack, whilst also bringing back some functions from RMXP.

Now the idea is that the enemy is going to quadruple cast his elemental magic. So in the enemy's Traits section, put in Additional Actions as 100% and then do this another 2 times, so that you have 3 of them there in the Traits tab. This will make the enemy attack 4 times without fail. You can make this lower or higher if you want.

<enemy action: x, y>

</enemy action>

X = the Skill ID
Y = Skill rating/priority
conditions = the condition that must be met for the skill to be used

Refer to the script's instructions for more details at the script's header, however the condition we're going to be using is this one:


This will check if a certain state (x) is applied. So essentially, what we're going to put in the enemy's Notes section is this

<enemy action: x, 10>

</enemy action>

X = will be the elemental skill/magic the enemy will use
10 = this will set the priority rating to 10 making it so the enemy will use it for sure.
Z = will be the state ID. You want this to be the state for the element she's going to use.

So let's say X was 52 (by default this is Fire II). By putting this notetag in the enemy's Notes section, if the enemy has state z (whichever is your Fire Alignment state) applied, then Fire II will be used 4 times (because of the enemy's Trait settings we edited earlier) with a priority rating of 10.

Make four of these. One for each element. By the end, you should have it so that when the enemy has any of the of ' Alignment' states applied, the enemy would use the corresponding skill.

Next it's time to work on making sure these states are applied correctly during battle with the Element States script. We're going to be using these two notetags.

<element state add x: y>
<element state remove x: y>

X = Element ID
Y = State ID

With these we can contol which states stay on and which states go away. This is to prevent multiple different ' Alignment' states piling on, making things awkward and silly...and wrong. This is where the notetagging gets a bit confusing so I'm gonna layout some ID examples of mine.

Going by default, Element ID 3 = Fire, 4 = Ice, 5 = Thunder, 6 = Water.
Going by my setup in my project, State ID 46 = Fire Alignment, 47 = Ice Alignment, 48 = Thunder Alignment, 49 = Water Alignment

So let's say that our enemy is currently under the Water Alignment (State ID 49), and we attack with Thunder (Element ID 5). If I were to use use this notetag:

<element state add 5: 48>

We change the enemy's state to be under the Thunder Alignment. But what about the Water Alignment state? Won't that still be there? This is where I would use this notetag:

<element state remove 5: 49>

This would remove the Water Alignment state upon being hit with the Thunder element as well. Of course, we have to do this with the other element states as well. So in this case we'd have to remove State IDs 46 (fire) and 47 (ice) as well, just in case they were applied instead of State ID 49 (water).

So using my own ID examples I'd have something like this:
<element state add 3: 46>

<element state add 4: 47>
<element state add 5: 48>
<element state add 6: 49>

<element state remove 3: 47>
<element state remove 3: 48>
<element state remove 3: 49>
<element state remove 4: 46>
<element state remove 4: 48>
<element state remove 4: 49>
<element state remove 5: 46>
<element state remove 5: 47>
<element state remove 5: 49>
<element state remove 6: 45>
<element state remove 6: 47>
<element state remove 6: 48>

I hope I've made some sort of sense so far. Feel free to comment if I haven't. Almost done here, and this section is partially optional. Everything should be set up to get the fight to work the way it should by now, but obviously we need to start the battle with the enemy already having one of the ' Alignment' states applied. You can simply do that by using the Troop event page, and adding a Change Enemy State event command, so that the enemy has whichever element state you want applied. You could also randomize it a bit, by using a randomizer variable that will determine which element the enemy will start off aligned with.

And to be honest, it's all customizable from here, really. Even the way the battle works. With the right understanding, you can make it so that instead of a A vs B, C vs D, elemental system, you can have a A > B > C rock-paper-scissors sort of elemental system which would work great with this.

I didn't understand a part of this tutorial!
Please post in this thread with your concern and I'll try and clarify myself. I tend to get a bit long-winded in my explanations and sometimes they seem rather complex ><. I'm holding off making a demo unless there's like pandemonium and a desperate cry for one.

I want my enemy to use another magic/skill/attack just once.
I mentioned somewhere in this tutorial that in the video I watched of the Seymour Omnis fight, Seymour broke out of his element quad-casting routine and casted dispel once and Ultima once. I've not figured out the kinks just yet but if you want your enemy to be able to do this, then you can try putting the three 'Additional Attacks: 100%' traits in each of the ' Alignment' states instead of them being on the enemy's traits. That way it'll only quad-cast the magic. Then to have the enemy cast something else, I can only think of manually removing the state(s) through events, allowing the enemy to use something else. OR you can Force Action it through the troop events and conditions.

The scripts needed for this have bugs/incompatibility issues/etc!
Essentially not my problem. The only problem I had was with Victor Engine - Element States, and that was an issue with Yanfly's Lunatic Damage scripts. I solved the problem by putting the Element States script under that. As for bugs please use Victor's Bug Report page and/or if you're using the optional Absorb Element script by Yanfly, use Yanfly/Archeia_Nessiah/Yami's Bug Fix Report page.

This doesn't work exactly the way the Seymour Omnis fight did!
Though I have played the game myself, that was years ago and this system was conceived after only one observation of the video I watched of the boss fight (had no internet soon after), so therefore there are things that are wrong/missing/different from the actual fight. But the main thing about this is the ability for enemies to change elements via being hit with an element.

How do you make those glyph things from the Seymour Omnis fight?
That isn't what this tutorial is for. Heck even I'm thinking about a way I could represent the elements visually. I'm not so good when it comes to graphical things and aesthetics in RM'ing.

I'm using certain scripts that cause the name of the state to pop-up when it's afflicted!
I would suggest leaving the state names blank in the database. That way, it won't pop up in battle and also this way, you can keep what elemental alignment the enemy has changed to a secret.

There are simpler ways to go about this/I have something to add.
Post it here, I'll add it to a certain part of the tutorial crediting you.

Victor Sant - for his Element States and Enemy Action Condition scripts that made this possible
Yanfly - for extra options in adding an element absorb feature with his Element Absorb script
Chaos-Avian - for helping me out and contributing ideas into making this work


Pages: 1
Incredibly useful and easy to understand. I have a boss or two set up with some special stuff like this as well.
Pages: 1