Does adrenaline have an exact formula, and if so what is it?
Not a formula, but an interesting algorithm.
Let's define a few variables:
gained: The number of attacks a creature will gain from Adrenaline.
round: The current attack that a creature is carrying out - 1 for first attack, 2 for second, etc.
currentatk: The current attack power of the creature. This is initially set to the ATK of the creature (the creature's first hit will always be its full attack power), and generally diminishes.
So, first let's deal with the formula of gained:
gained = 4 - floor( √|currentatk| )
And now, the formula of currentatk:
new currentatk = ceiling( old currentatk - ((3 - gained) / 3) * old currentatk * round)
Applying this to some creatures:
Horned Frog (3 ATK):gained = 4 - floor (√3)
= 4 - 1
= 3
So, it gains 3 attacks.
1. new currentatk = ceiling( old currentatk - ((3 - gained) / 3) * old currentatk * round )
= ceiling( 3 - ((3 - 3) / 3) * 3 * 1 )
= ceiling( 3 - 0 * 3 * 1 )
= 3
2, 3. Since ((3 - gained) / 3) * old currentatk * round will always = 0, as gained = 3, the other 2 attacks will deal 3 damage.
So, Horned Frog deals 3 damage then gains 3 additional 3-damage shots (3, 3, 3, 3).
Ruby Dragon (15 ATK):gained = 4 - floor (√15)
= 4 - 3
= 1
So, it gains 1 attack.
1. new currentatk = ceiling( old currentatk - ((3 - gained) / 3) * old currentatk * round )
= ceiling( 15 - ((3 - 1) / 3) * 15 * 1 )
= ceiling( 15 - (2/3) * 15 )
= ceiling( 15 - 10 )
= 5
So, Ruby Dragon deals 15 damage then gains 1 additional 5-damage shot (15, 5).
Notice that when you reach 16 damage, gained = 4 - floor( √|16| ) = 4 - 4 = 0. So, a 16+ damage creature will deal no additional attacks.