From 03a4ffb652b3d92fd2f022fec16cde963bbbb349 Mon Sep 17 00:00:00 2001
From: Evan Debenham <Evan.SHPX@gmail.com>
Date: Sat, 16 Apr 2016 22:49:17 -0400
Subject: [PATCH] v0.3.5: lots of berserker polish

---
 assets/buffs.png                              | Bin 3768 -> 3813 bytes
 assets/icons.png                              | Bin 4456 -> 2344 bytes
 assets/large_buffs.png                        | Bin 4992 -> 5168 bytes
 assets/spell_icons.png                        | Bin 392 -> 472 bytes
 .../actors/buffs/Berserk.java                 |  47 +++++++++++-------
 .../actors/hero/Hero.java                     |   8 ++-
 .../effects/SpellSprite.java                  |  11 ++--
 .../items/TomeOfMastery.java                  |  14 +++---
 .../messages/actors/actors.properties         |  12 ++++-
 .../ui/BuffIndicator.java                     |  14 ++++--
 10 files changed, 70 insertions(+), 36 deletions(-)

diff --git a/assets/buffs.png b/assets/buffs.png
index 10d33f2661c3b0c7c550d374eb11e3674f1d027a..bea4c80447a62a304c8accf535ba5665e59e0ba1 100644
GIT binary patch
delta 899
zcmV-}1AP3r9pxRcX$q5L3mXdH1P~T14Im<jtdnL6^?ynp47J7p00TuyL_t(o!|j!A
zSK3ezgg3<&8@2cvPzxr2TG5I^d?8{0!4mTSe^6)cCV`^0#~y3HFq>;m5ZLEVW`i_U
zyQ*HVH^i!`#;QQoQVmoeRgx->W05u02USjWsESqVsxuWn)a;B#qYeQYaSVV-&j4&}
zYyjW@-+z2C4(__A-MgT5jnj2&aDo?448YP70K%}s{w@jt4-XFnD3{9yAfE!P5WpdT
zy}Z0^&j55r%}#UF+1<rIjRO-{P&1pVjRpIcanMEQZqPEP)<6bdv2^=%pb`?m)I2~w
zpI3kt063=5pT`tn)NJx#e*z3A6A;uyOJs}{oPSb5%bW-xCk8+S4uohQX1BltfX7=<
z<}JumIc|T2x4>~=0rtO+bta}}9KaVe5`Z6cVDkkB2F3w&HGe|QfDqt;${a`luzhCW
zHx8s3_)Y^d2hd(NU(SGO3kNE~42X*YfQKRgEy#UB|4+HYl{AFUW?+5_hC^ncwuySx
z6o0Tk08CA%AphqnNc34%SKX>CRWg*xRNbhyRQPBgtDq{WR#jhA2|v3_J8d`xsDxAn
z&5sDMP1SGjA8#M;0pR;S0M32?901#<Zp^3?;L-r>^mhQTkNMfp0QM*XR0&X|g0`@I
z92o(?P!PbRXdd8^y0!c$j(n@;*LdXWrhjhMOrifJ2xO<-ZtqB;R{%lb;)=T9_V-p(
zfMW6Z__$caoG_`;`MF3G%>X1098pgIU>g8x-;4t(fI4tVZT0(YR6hZ@DwTL>e*jdg
zAV7ZsK@1DvK?ZOpNd`hQNvQ)QU<TMfbAbCN0L2WfF#`%Pb)Zn71Eq@+9oSo)0e?^j
z%>H9}3P1}gQ-J!mhVapZP&2>~_y{5U1Aqo(x8T<d@E%-b8K_ce2GE`{$TE-tykZIx
zfWMrAwwOVfpMpe5ujI<MZ3j!9Q~b8#6U4<c#PY2OOFTS?JODJ%-{u7_UGq-Yb}0MJ
z0rZ61jksCfFbu+>hvp4f;E4=HJZP6sdU0Wh19RRUz?2ms@R2nPLmsx%Xn^3o9B`jH
zK!AqL{d2|U*N*$gdUF8o&z;YJI*?o?ZxLEx|BDdvhirZd*z0|!ApXx<04x9&01JQx
Zz)v9KL6|kuUZ(&6002ovPDHLkV1ihKjP?Kk

delta 854
zcmV-c1F8Jw9k?B^X$q5(3i1U2hy@);lV%DYf8PrU2LUa7?*VWC00S6FL_t(o!|j$^
zSK3ezg-?nt7PNTdq80>#TG0YRREQYvCFKAApzb}B1d6R)_JO{zC&w&x!F*?*Jpt2H
zovH?d!34`z%~h_dts1F5s!XIH2#ncReNZJ-m#RQ@pt@7xMa|xHI_(jl9s~eb3<Tit
zfAA0h7kKB3x%=F|?LWKiN8BFUqZ|D3MgVqp0N{Bg_AjFVFdmNyP%IV&AQ=Iq36LW|
zYIk=xwF1zaHhax!@AMS^6bBZtz?MzfbA$bxx!XtQzT1{tdt^pmv2^=%pyUxiY8@b%
zOe#Pc068i2=d}cwHk-WIp8%7^0tB|ve==r{<=#?mTW$m}Hv(V`9PrTIi;tiJfC`VG
z$RkKn32r~lBgo}o0rr1@b!Vhj9KajYLx3N2;OGqpM&bav$`4O7U<fd#Vh2J1Y@ZqU
zg9A|pzSDr%0kk(qZ)ZT-!hw=u222?RfC`ELv>@>b{XZox(@_Y2n}PKym`s=ffBOja
zt|?%D07xyTAo=$x2=!T2Q*~9ADjdpis-9HGD!g=vl~EN`d#W$0ke}U6Cu+C^D0x%~
z&94Y>Le;u2v+nE#0FL7Tpy4<T0GvoY$*2?HUI4PgEC9|iKj$&P8AX690rHgFF>D|B
zA^->l0VGB105hs<Iey?fmhITQe-bsRr+q2(zXyTIb~>G`$qX_e$h01)7Po)47Xjq+
z*VotiJm!Q+^&1Uie18QXbl{451pwOsV1E+_A^>&Zo;n^5JE&m@@K7l5(*6LbRzZON
z1_S{tfCn+aoe4AG$s|P%kboIr|JVWUp8ymyu+I!Az|w(Ch7J^31v+rHf42gl4#@rk
z^BRB_l$HRs6Aj@^LZ}&F2poiv{Q*D&;v@Jq13ZIPoPjD8WdQ9NgE#{*z&oZO1o+1(
z=olG<^(hDy_6mPXrBXSpU<2Y4q>N{X<ybzJso+6W0YE*qF#x^cxDhw2GVxq*QbF^2
zZesvamXE;u*2MF8rE>K;KnOPFK>4);1gLKa0PTbFdImP>fPRp!PXWF>Y$yZ4f7TXY
g3$O*)0&D?(0=WQRj`{=l%K!iX07*qoM6N<$f>ge3)&Kwi

diff --git a/assets/icons.png b/assets/icons.png
index 23b90de7b19e225ac54b29b564cc56139f188673..e808bfc4c1f31ca57745eba4da8cab19f353fe9f 100644
GIT binary patch
delta 2305
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
V$gzB4uKWstzfZ9DZO<6t{{Uhi_~ifq

delta 4434
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
YKP#;mw;8vbz5oCK07*qoM6N<$f|Lw;(f|Me

diff --git a/assets/large_buffs.png b/assets/large_buffs.png
index 27a7de2cc15b1f6e3ac4f6505e86e7097f819fbe..801bd85bb6ddd45034589942c6fa98ff4d688ef0 100644
GIT binary patch
delta 2278
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

delta 2099
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
R=RcDVyxe?T|GR^m`Zp;sqj>-T

diff --git a/assets/spell_icons.png b/assets/spell_icons.png
index 2923c5876996237c0bfdd3239bbe5cbbad197ccd..ceb35c73a975a18ec213b3cda48b94e95a1199ba 100644
GIT binary patch
literal 472
zcmeAS@N?(olHy`uVBq!ia0vp^4L~fw!VDyJ%CdF?Db50q$YKTtZeb8+WSBKa0w~B{
z;_2(k{(wb5RL7u-r|Jn%NF~50#1%;YM*<DJyk~&m|No~?pZ=GU`v2b;DEX-W5i3v~
zPf3tpFatwy#>Ddw@cQM}T|jZhByV>Y#{W#Z_ke6APZ!4!3;(5)4gHQ72)NoODQg!A
zb9I%h-eSje)+<IqM6;-oqx0C@d<SRYE|Hf(%ex{t70*7M@v$mV@O1^Nf1Z-1{{4Cx
zg@e9L>w8aCzPZoJwW03s5{GLhrt20l_3~bPSG9gh@Hd~PMY1y$^>#2D>M*!BY@N}{
zX|P2gH?VKs^&JV$=le_cKW8`<DdzL(F6XbcMxm}6uXAKx=eRDg-}NpvatascvP!nJ
z4Cgj+FNODwrU$F9+ipC-|Hx%S>%-Pf?$!$X9Ujc-|Df%-in-Q?Y5IzDDm!FV9DfUl
z{}3v_#OPjdU$u?JRsa0YTecGnlRnCx5<DbPsv4Yduwj|w>|Gv84}_j@F!~+X@Zf@D
vOu>^04_pM^IZizJ`zveH|9?J)K~4V5YO@P>%EW&I1|5T^tDnm{r-UW|s>Z^x

literal 392
zcmeAS@N?(olHy`uVBq!ia0vp^4nQox!VDxsPNql!DajJoh?3y^w370~qErUQl>DSr
z1<%~X^wgl##FWaylc_d9MJfS4A+8M#4QKuXfiZ}Hfipnx|NqmcPa)zneRqEZs^=*Q
z@(Tvi48a)_&x63Fs{8~X_mQWIV~EDY-iaHz4jG8JGAD^I-=3Pc|3DgNO3wD0CU5cm
z3p;|h{b_8DKJMqFtMvZ)9#3hljEl}3l6>ax)tvr1ENT8GxLwcVmh~e4gB?9PZ}vr1
zzul)Q!@|s=!pZ3OwQ*g*H1=m)PRFJT%e%i_`i0MFdh<Gi@3*d*I^VFp{mqIe>Kte6
z{ppqQQm4hVIr_KRIx9?)NE8xj@rqoda)<4T3x8D0l!Qm30tQRw2w$mg>U1_sWLtmI
z-#IB-D9M+xk!fXG-m43TmbG&=eYc94=&!)&5TLYarjWvv%@giDe1AUbF{{|k`RYNB
RZCpXV_jL7hS?83{1ORE|rj!5x

diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Berserk.java b/src/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Berserk.java
index c5d1acb28..f5538209b 100644
--- a/src/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Berserk.java
+++ b/src/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Berserk.java
@@ -1,12 +1,15 @@
 package com.shatteredpixel.shatteredpixeldungeon.actors.buffs;
 
+import com.shatteredpixel.shatteredpixeldungeon.Assets;
+import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
+import com.shatteredpixel.shatteredpixeldungeon.effects.SpellSprite;
 import com.shatteredpixel.shatteredpixeldungeon.items.BrokenSeal.WarriorShield;
+import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
+import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
 import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
+import com.watabou.noosa.audio.Sample;
 import com.watabou.utils.Bundle;
 
-/**
- * Created by Evan on 20/03/2016.
- */
 public class Berserk extends Buff {
 
 	private enum State{
@@ -47,6 +50,7 @@ public class Berserk extends Buff {
 				target.SHLD -= Math.min(target.SHLD, 2);
 				if (target.SHLD == 0) {
 					target.die(this);
+					Dungeon.fail(this.getClass());
 				}
 			} else {
 				state = State.EXHAUSTED;
@@ -67,10 +71,14 @@ public class Berserk extends Buff {
 	}
 
 	public int damageFactor(int dmg){
-		float percentMissing = 1f - target.HP/(float)target.HT;
-		float bonus = 1f + (percentMissing * percentMissing);
+		float bonus;
 
-		if (state == State.EXHAUSTED) bonus *= (50 - exhaustion) / 50f;
+		if (state == State.EXHAUSTED) {
+			bonus = (50 - exhaustion) / 50f;
+		} else {
+			float percentMissing = 1f - target.HP/(float)target.HT;
+			bonus = 1f + (percentMissing * percentMissing);
+		}
 
 		return Math.round(dmg * bonus);
 	}
@@ -83,6 +91,10 @@ public class Berserk extends Buff {
 				state = State.BERSERK;
 				BuffIndicator.refreshHero();
 				target.SHLD = sigil.maxShield() * 5;
+
+				SpellSprite.show(target, SpellSprite.BERSERK);
+				Sample.INSTANCE.play( Assets.SND_CHALLENGE );
+				GameScene.flash(0xFF0000);
 			}
 
 		}
@@ -105,13 +117,13 @@ public class Berserk extends Buff {
 	public int icon() {
 		switch (state){
 			case NORMAL: default:
-				return BuffIndicator.NONE;
+				return BuffIndicator.ANGERED;
 			case BERSERK:
 				return BuffIndicator.FURY;
 			case EXHAUSTED:
-				return BuffIndicator.FURY;
+				return BuffIndicator.EXHAUSTED;
 			case RECOVERING:
-				return BuffIndicator.FURY;
+				return BuffIndicator.RECOVERING;
 		}
 	}
 
@@ -119,27 +131,28 @@ public class Berserk extends Buff {
 	public String toString() {
 		switch (state){
 			case NORMAL: default:
-				return "";
+				return Messages.get(this, "angered");
 			case BERSERK:
-				return "BERSERK!";
+				return Messages.get(this, "berserk");
 			case EXHAUSTED:
-				return "Exhausted";
+				return Messages.get(this, "exhausted");
 			case RECOVERING:
-				return "Recovering";
+				return Messages.get(this, "recovering");
 		}
 	}
 
 	@Override
 	public String desc() {
+		float dispDamage = damageFactor(10000)/100f;
 		switch (state){
 			case NORMAL: default:
-				return "";
+				return Messages.get(this, "angered_desc", dispDamage);
 			case BERSERK:
-				return "Berserking, you're invincible!";
+				return Messages.get(this, "berserk_desc");
 			case EXHAUSTED:
-				return "Exhausted! Damage down!";
+				return Messages.get(this, "exhausted_desc", exhaustion , dispDamage);
 			case RECOVERING:
-				return "Recovering from rage, can't do it again.";
+				return Messages.get(this, "recovering_desc", levelRecovery, dispDamage);
 		}
 	}
 }
diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java b/src/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java
index a6459f66f..891b4a227 100644
--- a/src/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java
+++ b/src/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java
@@ -1293,7 +1293,13 @@ public class Hero extends Char {
 
 	@Override
 	public boolean isAlive() {
-		return super.isAlive() || (subClass == HeroSubClass.BERSERKER && Buff.affect(this, Berserk.class).berserking());
+		if (subClass == HeroSubClass.BERSERKER){
+			Berserk berserk = buff(Berserk.class);
+			if (berserk != null && berserk.berserking()){
+				return true;
+			}
+		}
+		return super.isAlive();
 	}
 
 	@Override
diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/effects/SpellSprite.java b/src/com/shatteredpixel/shatteredpixeldungeon/effects/SpellSprite.java
index 28c7d4d8d..64a50ad4a 100644
--- a/src/com/shatteredpixel/shatteredpixeldungeon/effects/SpellSprite.java
+++ b/src/com/shatteredpixel/shatteredpixeldungeon/effects/SpellSprite.java
@@ -20,14 +20,14 @@
  */
 package com.shatteredpixel.shatteredpixeldungeon.effects;
 
-import java.util.HashMap;
-
-import com.watabou.noosa.Game;
-import com.watabou.noosa.Image;
-import com.watabou.noosa.TextureFilm;
 import com.shatteredpixel.shatteredpixeldungeon.Assets;
 import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
 import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
+import com.watabou.noosa.Game;
+import com.watabou.noosa.Image;
+import com.watabou.noosa.TextureFilm;
+
+import java.util.HashMap;
 
 public class SpellSprite extends Image {
 
@@ -35,6 +35,7 @@ public class SpellSprite extends Image {
 	public static final int MAP			= 1;
 	public static final int CHARGE		= 2;
 	public static final int MASTERY		= 3;
+	public static final int BERSERK     = 4;
 	
 	private static final int SIZE	= 16;
 	
diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/items/TomeOfMastery.java b/src/com/shatteredpixel/shatteredpixeldungeon/items/TomeOfMastery.java
index fdce8a667..61ab58622 100644
--- a/src/com/shatteredpixel/shatteredpixeldungeon/items/TomeOfMastery.java
+++ b/src/com/shatteredpixel/shatteredpixeldungeon/items/TomeOfMastery.java
@@ -20,22 +20,22 @@
  */
 package com.shatteredpixel.shatteredpixeldungeon.items;
 
-import java.util.ArrayList;
-
-import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
-import com.watabou.noosa.audio.Sample;
 import com.shatteredpixel.shatteredpixeldungeon.Assets;
 import com.shatteredpixel.shatteredpixeldungeon.Badges;
+import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Berserk;
 import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
-import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Fury;
 import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
 import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass;
 import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
 import com.shatteredpixel.shatteredpixeldungeon.effects.SpellSprite;
+import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
 import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
 import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
 import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
 import com.shatteredpixel.shatteredpixeldungeon.windows.WndChooseWay;
+import com.watabou.noosa.audio.Sample;
+
+import java.util.ArrayList;
 
 public class TomeOfMastery extends Item {
 	
@@ -124,8 +124,8 @@ public class TomeOfMastery extends Item {
 		curUser.sprite.emitter().burst( Speck.factory( Speck.MASTERY ), 12 );
 		GLog.w( Messages.get(this, "way", way.title()) );
 		
-		if (way == HeroSubClass.BERSERKER && curUser.HP <= curUser.HT * Fury.LEVEL) {
-			Buff.affect( curUser, Fury.class );
+		if (way == HeroSubClass.BERSERKER) {
+			Buff.affect( curUser, Berserk.class );
 		}
 	}
 }
diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/messages/actors/actors.properties b/src/com/shatteredpixel/shatteredpixeldungeon/messages/actors/actors.properties
index 914e7bad8..e0d9537e5 100644
--- a/src/com/shatteredpixel/shatteredpixeldungeon/messages/actors/actors.properties
+++ b/src/com/shatteredpixel/shatteredpixeldungeon/messages/actors/actors.properties
@@ -36,6 +36,16 @@ actors.buffs.amok.desc=Amok causes a state of great rage and confusion in its ta
 actors.buffs.barkskin.name=Barkskin
 actors.buffs.barkskin.desc=Your skin is hardened, it feels rough and solid like bark.\n\nThe hardened skin increases your effective armor, allowing you to better defend against physical attack. The armor bonus will decrease by one point each turn until it expires.\n\nYour armor is currently increased by: %d.
 
+actors.buffs.berserk.angered=Angered
+actors.buffs.berserk.berserk=Berserking
+actors.buffs.berserk.exhausted=Exhausted
+actors.buffs.berserk.recovering=Recovering
+actors.buffs.berserk.angered_desc=The severity of the berserker's injuries strengthen his blows. The lower the berserker's health is, the more bonus damage he will deal. This bonus is significantly stronger when the berserker is close to death.\n\nWhen the berserker is brought to 0 hp and is wearing his seal, he will go berserk and _refuse to die_ for a short time.\n\nCurrent damage: %.2f%%.
+actors.buffs.berserk.berserk_desc=At the brink of death, fear and uncertainty bleed away, leaving only anger. In this state of near-death the berserker is incredibly powerful, _dealing double damage, gaining bonus shielding, and refusing to die._\n\nThis bonus shielding is stronger the better the berserker's armor, and will slowly deplete over time. When this shielding is reduced to 0, the berserker will give in and die.\n\nAny form of healing will return the berserker to stability, but he will be exhausted. While exhausted, the berserker will suffer a large reduction in damage for a short time, and then will need to gain experience before being able to berserk again.
+actors.buffs.berserk.exhausted_desc=Inner strength has its limits. The berserker is exhausted, weakening him and making him unable to rage.\n\nIn this state The berserker deals significantly reduced damage, and will immediately die at 0 health.\n\nTurns of exhaustion remaining: %d\nCurrent damage: %.2f%%.
+actors.buffs.berserk.recovering_desc=Inner strength has its limits. The berserker must rest before using his rage again.\n\nWhile recovering the berserker still deals bonus damage, but will immediately die at 0 health.\n\nLevels until recovered: %.2f\nCurrent damage: %.2f%%.
+actors.buffs.berserk.rankings_desc=Berserked to Death
+
 actors.buffs.bleeding.name=Bleeding
 actors.buffs.bleeding.ondeath=You bled to death...
 actors.buffs.bleeding.heromsg=You are bleeding!
@@ -231,7 +241,7 @@ actors.hero.heroclass.huntress_perk5=Potions of Mind Vision are identified from
 actors.hero.herosubclass.gladiator=gladiator
 actors.hero.herosubclass.gladiator_desc=A successful attack with a melee weapon allows the _Gladiator_ to start a combo, in which every next successful hit inflicts more damage.
 actors.hero.herosubclass.berserker=berserker
-actors.hero.herosubclass.berserker_desc=When severely wounded, the _Berserker_ enters a state of wild fury significantly increasing his damage output.
+actors.hero.herosubclass.berserker_desc=The _Berserker_ deals bonus damage scaling with the severity of his wounds. When reduced to 0 health, he will REFUSE TO DIE for a short time, at the cost of exhaustion.
 actors.hero.herosubclass.warlock=warlock
 actors.hero.herosubclass.warlock_desc=When using wands on an enemy, the _Warlock_ has a chance to mark their soul. Marked enemies will heal him and restore his hunger whenever they take physical damage.
 actors.hero.herosubclass.battlemage=battlemage
diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/ui/BuffIndicator.java b/src/com/shatteredpixel/shatteredpixeldungeon/ui/BuffIndicator.java
index d633bc2c3..8c7d28ead 100644
--- a/src/com/shatteredpixel/shatteredpixeldungeon/ui/BuffIndicator.java
+++ b/src/com/shatteredpixel/shatteredpixeldungeon/ui/BuffIndicator.java
@@ -20,6 +20,10 @@
  */
 package com.shatteredpixel.shatteredpixeldungeon.ui;
 
+import com.shatteredpixel.shatteredpixeldungeon.Assets;
+import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
+import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
+import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
 import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
 import com.shatteredpixel.shatteredpixeldungeon.windows.WndInfoBuff;
 import com.watabou.gltextures.SmartTexture;
@@ -29,16 +33,13 @@ import com.watabou.noosa.TextureFilm;
 import com.watabou.noosa.tweeners.AlphaTweener;
 import com.watabou.noosa.ui.Button;
 import com.watabou.noosa.ui.Component;
-import com.shatteredpixel.shatteredpixeldungeon.Assets;
-import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
-import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
-import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
 import com.watabou.utils.SparseArray;
 
 public class BuffIndicator extends Component {
 
 	public static final int NONE	= -1;
-	
+
+	//TODO consider creating an enum to store both index, and tint. Saves making separate images for color differences.
 	public static final int MIND_VISION	= 0;
 	public static final int LEVITATION	= 1;
 	public static final int FIRE		= 2;
@@ -79,6 +80,9 @@ public class BuffIndicator extends Component {
 	public static final int BLESS       = 37;
 	public static final int RAGE		= 38;
 	public static final int SACRIFICE	= 39;
+	public static final int ANGERED     = 40;
+	public static final int EXHAUSTED   = 41;
+	public static final int RECOVERING  = 42;
 
 	public static final int SIZE	= 7;