Enmity System Explanation and Planned Adjustments
Matsui here. Sorry to keep you all waiting so long.
I'd like to take a moment to explain about the workings of the enmity system, which will include some numbers. Furthermore, I would like to touch on the aspects we are trying to adjust.
Before I get into it, I'd like you all to understand that we will not be revealing all of the formulas and inner workings moving forward. Since we are dealing with the adjustment of the enmity system, which is very large, I feel it necessary to know the fundamentals and where we are coming from, and have decided to make a special exception this time.
Due to this, writing up this post was a bit tricky and there is quite a bit of text. However, in order to deepen the discussion related to enmity, please take a moment and read over the post.
• The Enmity System
The enmity system is such that a monster will attack the player that is threatening them the most. In order to determine which player is the most threatening, the parameter known as enmity is used to make it possible to measure and compare the amount of threat.
The enmity system is not in place to make monster AI more intelligent. It's more of a stronger significance for securing battle strategy elements by giving players a means of controlling the monster's target (to some extent).
• Types of Enmity (Classification by the method of enmity decay)
Depending on the method of decay, enmity in FFXI is separated into two groups and logged.
• Time-volatile Enmity
Enmity which decays over time.
• Damage-volatile Enmity
Enmity which decays when players take damage.
Due to the fact that multiple players are generating enmity against a monster, the work of recording enmity is accomplished by creating a list for the characters. (Though I use the term “enmity list” here, this will not be popping up again in this post.) Based on this list, the monster will target (auto-attack target) the player with the highest value of combined time-volatile enmity and damage-volatile enmity.
• Enmity related data embedded in actions (commands, magic, etc.)
• Classification based on how it influences enmity (direct, indirect, none)
Ignoring the type of actions that have no influence towards enmity, actions are classified into two groups based on how they influence enmity.
Players perform enmity generating actions towards a monster, and the monster’s enmity for the player increases. This mainly consists of damage and enfeebling type commands.
A player performs an action towards another player that already has enmity from a monster, and enmity increases towards the player performing the action. This mainly consists of healing and enhancing type commands.
• Classification based on how enmity increases are calculated (fixed, effect dependent)
A set value is added to time-volatile enmity and damage-volatile enmity when an action is successful. This is applies to enhancements and enfeebles that generally do not have numerical results.
• Effect Dependent
A set calculation is added to time-volatile enmity and damage-volatile enmity proportional to the amount of damage dealt or the amount of HP healed
• Finally, the formula
• Defining 1 enmity
When we were revamping the enmity system for FFXIV I explained a bit about this, but we start out by calculating 1 enmity= 1 damage. Also, system-wise enmity will not decay.
For FFXI on the other hand, while there is quite a bit of management work for dividing the enmity system into time-volatile enmity and damage-volatile enmity, since this isn't sufficient for the amount of damage of NM battles and such, we adopted a method of using a formula for scaling effect dependent type enmity to fixed type enmity, as well as the use of a decay system.
With that said, 1 enmity has been set based on the principle that the amount of time-volatile enmity that decays in a single second is equal to 60 (Since the developers first began making the game on PS2, this was adopted due to the fact that the smallest unit of frame rate measurement was 1/60 seconds.). For example (I'm hesitant to give numbers, but whatevs), the job command “Provoke” is a fixed-type action, and has 1800 time-volatile enmity. This means that this amount of enmity will decay completely in 30 seconds.
• Enmity calculation for effect variations
For each level there is data known as standard damage which is used for enmity calculation. *This value was made to be almost the same damage value as the baseline value when weapon data is created (240 attack delay sword).
The below is how enmity is calculated at the time of dealing “d” damage:
Time-volatile enmity = 240*d/standard damage
Damage-volatile enmity= 80*d/standard damage
(Standard damage is obtained based on the level of the monster)
In other words, if you are dealing standard damage every 4 seconds, time-volatile enmity is repeatedly decaying from 240 to 0. Also, damage-volatile enmity is 1/3 of the time-volatile enmity (25% of total enmity), and the coefficient value is 80.
Currently the amount of fire power is much higher than the initially set standard, so I feel we need to rectify the situation where it is easy to reach the cap for volatile enmity by revamping the standard damage used for enmity calculations.
• Calculation for the amount of decay of damage-volatile enmity
When a player takes “d” damage from a monster, the damage-volatile enmity of a monster towards a player decreases.
Damage-volatile enmity = 1800*d/player's max HP
In other words, when a player takes the same amount of damage as their max HP, enmity decays by 1800 (one Provoke).
*This amount can be modified by the effect of Sentinel.
*1800 might feel a bit rough from the perspective of backline jobs.
If we were to make this value larger, it would make it easier to get rid of enmity by damage taken, but it would make it difficult for tanks to maintain their target when they take damage. If we make adjustments to this, it will be necessary to look into setting up a special rule of sorts.
*For healing magic, the value is half of the above calculation.
• Enmity increase from resting
By distancing yourself from the targeted monster at a set distance, it's possible to make the amount of enmity generated from resting zero. The distance is approximately half the distance in which spells can be executed.
• Enmity cap
The enmity limit is common for all jobs and the same is true for time-volatile and damage-volatile enmity. As to whether increasing this cap will make it so players don’t get stuck at the enmity cap, since it is only possible work size-wise for us to raise the value approximately three times of what it is currently, this is not an effective way to go.
While there were suggestions to change the cap values for each job, assuming that the suggestions were based on getting stuck at the cap, if this situation were to arise, it would ultimately boil down to whether you can or cannot maintain the target, so for the current conditions we are currently looking at pairing this with something else.
• First step for adjustments
• Standard damage (time-volatile)
First, we are planning to make adjustments to the standard damage. Since we are able to set the standard damage for each level, it will be possible to only adjust this for high levels without affecting other levels.
• Damage-volatile enmity
After adjusting the standard damage, we will make adjustments to damage-volatile enmity.
The ratio of time-volatile enmity and damage-volatile enmity when dealing damage or curing, as well as the amount of enmity decay when a player takes damage will be adjusted.
• Individual commands and abilities
If there are problems with fixed-type data we will make adjustments.
The time it takes to defeat a monster with double HP that takes double damage is the same as the amount of time it takes to defeat a monster with 50% HP that takes 50% damage; however, enmity-wise there are large differences. If the damage taken by a monster is suppressed too much, it becomes possible to generate a lot more enmity with actions that have fixed-type enmity as opposed to those that have effect dependent enmity. We will need to check content to see if monster parameters have been set properly with an understanding of these systems.