Breath meter

The breath meter appears when a player's head is under either water or honey, representing the time the player has until they begin drowning. The breath meter consists of 10 / 5  air bubbles (one shown on the right) which fade and disappear gradually as long as the character's head is submerged. When the breath meter is depleted, the player begins to drown and health is lost. The breath meter refills in 1.12seconds (from zero breath; quicker when more is left, e.g. 0.56seconds from half breath) as soon as the player emerges from liquid.

For breathing purposes, the player is considered "under water" when the pixel right above their eye is under water. This roughly correlates to just a pixel above where the water will be if the player stands in two full tiles of water with a tile of air in the third tile they occupy. Half-blocks can leave players drowning. In older versions and the, this was actually the very top pixel of the head. It was changed to prevent players from drowning when their head bumped water-filled blocks.

If a Fish Bowl is worn in the equipment slot, the breath meter appears because the player's head is technically underwater. Breathing equipment and potions can still be used to counter this effect.

Breathing time
The breath meter's duration changes depending on which breathing equipment or potions are used. Times shown below are in real-world time (not game time).


 * Without any equipment, the breath meter lasts for 23.33seconds.
 * With a Breathing Reed, breathing time is doubled to 46.67seconds.
 * While wearing diving equipment, the breath meter lasts 93.33seconds, i.e. 1minute and 33.33seconds.
 * When both the Breathing Reed and diving equipment are used, the breath meter lasts 186.67seconds, i.e. 3minutes and 6.67seconds.
 * Neptune's Shell and its upgrades — Moon Shell and Celestial Shell — eliminate the breath meter while underwater, making breathing time unlimited.
 * The Gills Potion eliminates the breath meter while underwater for the length of the buff (2minutes in total).

Technical explanation
Every player in Terraria bears two attributes called breath and breathCD. breath is initially (i.e, upon every spawn) set to a constant value of 200 and breathCD to 0. When the player is detected to be submerged in water or honey and neither the Gills buff nor the Merfolk buff is active/applicable, breathCD is incremented by 1. This happens every tick✅ and as soon as breathCD surpasses a certain limit, it is reset to 0. This limit is 7 by default, multiplied by 2 to 14 if a Breathing Reed is held and further multiplied by 4 to 28 or 56 if diving equipment is equipped (also checked and updated every tick). As soon as breathCD hits the limit, breath is decremented by 1. This is repeated until breath reaches 0, at which point the player starts drowning. In result, it takes breath * limit ticks until breath reaches 0.

History
呼吸条