Toggle Background Color

Game Mechanics: Aggro

When an enemy decides to attack, it has to decide who will be on the receiving end of it. There’s a lot of steps involved in this process, and this update will be covering just how enemy aggro works in this game.

Enemies have an AI routine they follow to determine how to behave. Each enemy has its own individual routine, and their AI also tells them who they should be targeting when performing certain actions. While the action the enemy takes is determined at the start of the turn after all speed calculations are finished, who they target is determined the moment it’s their turn.

Attacks that hit multiple times but can hit different party members during the entire attack will have the aggro determined for each hit.

The first thing checked for is if the enemy should go after a specific party member, such as one with the highest amount of current LIFE. If that’s the case, they’ll always target that party member, no questions asked, and they can’t be persuaded otherwise. Certain attacks are always hard-coded to go after a specific target no matter what, like everyone in the front row.

That won’t always be the case and most of the time enemies will go after a semi-random party member. This is the part of aggro calculations that’s the most involved, as this is pretty much what this entire update is about. Some general rules to keep in mind is that enemies will try to go after the party member with the highest amount of current LIFE and they like to target the front row more often than not. When checking for current LIFE, they check the raw number, not a percentage of it. This means that a party member with 100/200 LIFE will be targeted more often than a party member with 50/50 LIFE.

When an enemy decides to go after a random target, they first decide which row they want to go after. The chances of this depends on the enemy’s AI. More often than not, this is weighted in favor of the front row. Once an enemy has decided which row to target, they cannot be persuaded otherwise outside of one case.

After the enemy decided on a row to target, the game then checks to see if the Provoke buff is active on anyone in that row. Provoke is a skill that Knights and Princesses have access to. For the Knight, it gives a 35% to 70% chance of forcing the enemy to go after them depending on the skill level. And for the Princess, the chance is 35% to 60% instead. If this chance succeeds, that party member is targeted and that’s the end of that.

In the case of multiple Provoke checks succeeding in a row, the enemy just randomly decides which party member they wish to go after among the ones that have the Provoke buff. However, because Provoke cannot influence which row gets targeted, this means that Provoke does absolutely nothing if the party member with Provoke active is the only person in that row.

If the checks fail or no one has Provoke active, the game then checks to see if the Hide buff is active in the chosen row. Hide is a skill exclusive to Rogues. What it does is grant a 30% to 50% chance to delete the Rogue from the enemy’s aggro calculations, and shrinks the row count by 1 in said calculations.

Unlike with Provoke, multiple Hide checks in the same row cannot succeed at once. The moment one Hide check succeeds, the game will immediately move onto the next step. The same also goes if all Hide checks fail, or the Hide buff simply isn’t active.

However, remember what I said about shrinking the row count by 1? If the Rogue is alone in that row, that will cause the enemy to think there are 0 party members in that row if their Hide checks succeeds. In that case, the enemy will then target the other row and repeat all these procedures so far. That's the only possible way to force an enemy to change their mind about what row they go after.

But what if you only have 1 Rogue on each row and both of their Hide checks succeed? In that case, the enemy will think there are 0 party members in the battle, and will just randomly go after any party member, overriding any successful Hide checks.

If the Hide checks fail or no one has a Hide buff active, the game will then sort the current LIFE stats among all valid targets and ranks the party members accordingly. With party members with higher amounts of current LIFE being more likely to be targeted. If multiple party members have the exact same amounts of current LIFE, then they’re sorted randomly.

If 2 party members are in that row:
-60% chance to target the party member with the highest current LIFE.
-40% chance to target the party member with the lowest current LIFE.

If 3 party members are in that row:
-60% chance to target the party member with the highest current LIFE.
-30% chance to target the party member with the 2nd highest current LIFE.
-10% chance to target the party member with the lowest current LIFE.

If 4 party members are in that row:
-50% chance to target the party member with the highest current LIFE.
-25% chance to target the party member with the 2nd highest current LIFE.
-15% chance to target the party member with the 3rd highest current LIFE.
-10% chance to target the party member with the lowest current LIFE.

If there's only 1 party member in that row... they obviously get targeted. The targeting routine is then terminated, and the game goes on to other combat related calculations, such as accuracy and damage.

The reason the game handles things this way is to make it so that party members with lower amounts of LIFE are less likely to be ganged up on, and this helps spread out the damage your party takes more since the party member with the highest current LIFE will constantly change.

Incidentally this isn’t possible in normal play, but if you somehow cause the enemy to target an invalid party member after everything is said and done, the attack will be ignored by everyone and disappear into thin air.