Aggro

Aggro, short for aggression, is an invisible statistic that determines the distance at which enemies will begin to attack the player. Terraria features various items that can alter this statistic when equipped.

All enemies target the player based on criteria set in their AI. Most will constantly try for a target, while others may only target if the player is in water, for example.

Currently, the Stardust Guardian is the only summon able to divert an enemy's target away from the player. It overrides the player's presence, but only if it is closer than 200 pixels from said enemy. Otherwise, an enemy may target the player or the Guardian – whichever is closer. It is best to summon the Stardust Guardian closer to hordes of enemies, rather than a small few, to avoid being targeted when a few enemies disperse or die. Note that in version 1.4.0.1, the Stardust Guardian targets the closest enemy and whose actions can no longer be influenced by the player.

Armor and other items that "increase/decrease enemy targeting" cause enemies to consider a player to be closer or farther away than they actually are. Therefore, having a Stardust Guardian close to an enemy but also having aggro-increasing accessories equipped, the player could be considered "closer" than the Stardust Guardian is, potentially resulting in temporarily being targeted instead of the Guardian.

If the is present, the Old One's Army will target it by default, only targeting the player or Guardian if they get "in the way".

Decrease
The following items reduce the player's aggro statistic, meaning that enemies will have to get closer to target the player.


 * Aggro reductions of -750 (or more) nearly guarantee the player will not be targeted.
 * Vortex armor provides the largest aggro reduction available in the game.

Increase
These items increase the player's aggro statistic, meaning that enemies can be farther from the player and still target them.

Formula
Most enemies will only attack the target they are closest to. They will determine the player's distance first, then the Stardust Guardian's (if applicable) and finally the distance to the (if applicable). The distance for the player formula is abs(targetPlayer.x + 10 - enemy.x + (enemy.width / 2)) + abs(targetPlayer.y + 21 - enemy.y + (enemy.height / 2)) - targetPlayer.aggro The result from that formula is then compared to the guardians formula result: abs(guardian.x + 25 - enemy.x + (enemy.width / 2)) + abs(guardian.y + 40 - enemy.y + (enemy.height / 2)) - 200 Whichever results in the higher value is targeted.

Old One's Army formula
Enemies in the Old One's Army follow a separate formula due to having to attack the player, as well as the crystal. An enemy will first determine the distance between the Eternia Crystal and it with a simple distance formula. Then, barring the chance the enemy is currently "ghosted", the enemy determines the "distance" to the player with the following formula. distance(enemy.position, targetPlayer.position) - targetPlayer.aggro Even though this formula does account for aggro, a player will be ignored if they are not within 200 pixels of the specified enemy. Like with regular enemies, if the Guardian is closer to an enemy than the player is, and is within 400 pixels of it, then the Guardian is targeted instead of the player.

History
Aggro 仇恨