From ddaa763a86b60a020ea62b24810c093e3c1fe1b1 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Mon, 18 Sep 2017 22:38:42 -0400 Subject: [PATCH] v0.6.2: many buffs now grey out their icons as they expire --- .../shatteredpixeldungeon/actors/buffs/Bless.java | 10 +++++++++- .../shatteredpixeldungeon/actors/buffs/Combo.java | 12 ++++++------ .../actors/buffs/EarthImbue.java | 6 ++++++ .../actors/buffs/FireImbue.java | 11 ++++++++++- .../actors/buffs/FlavourBuff.java | 10 ++++++++++ .../actors/buffs/GasesImmunity.java | 8 +++++++- .../actors/buffs/Invisibility.java | 6 ++++++ .../actors/buffs/Levitation.java | 8 +++++++- .../shatteredpixeldungeon/actors/buffs/Light.java | 6 ++++++ .../actors/buffs/MindVision.java | 6 ++++++ .../actors/buffs/Recharging.java | 8 +++++++- .../shatteredpixeldungeon/actors/buffs/Shadows.java | 6 ++++++ .../actors/buffs/ToxicImbue.java | 6 ++++++ .../shatteredpixeldungeon/actors/hero/Hero.java | 4 ++++ .../shatteredpixeldungeon/plants/Earthroot.java | 7 +++++++ .../shatteredpixeldungeon/plants/Starflower.java | 2 +- .../shatteredpixeldungeon/plants/Sungrass.java | 7 +++++++ 17 files changed, 111 insertions(+), 12 deletions(-) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Bless.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Bless.java index 2043e73dc..1a1ed8182 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Bless.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Bless.java @@ -23,9 +23,12 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.buffs; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; +import com.watabou.noosa.Image; public class Bless extends FlavourBuff { - + + public static final float DURATION = 30f; + { type = buffType.POSITIVE; } @@ -34,6 +37,11 @@ public class Bless extends FlavourBuff { public int icon() { return BuffIndicator.BLESS; } + + @Override + public void tintIcon(Image icon) { + greyIcon(icon, 5f, cooldown()); + } @Override public String toString() { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Combo.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Combo.java index 9489f0fdc..c29bd62cb 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Combo.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Combo.java @@ -59,12 +59,11 @@ public class Combo extends Buff implements ActionIndicator.Action { @Override public void tintIcon(Image icon) { - if (count >= 10) icon.hardlight(1f, 0f, 0f); - else if (count >= 8)icon.hardlight(1f, 0.8f, 0f); - else if (count >= 6)icon.hardlight(1f, 1f, 0f); - else if (count >= 4)icon.hardlight(0.8f, 1f, 0f); - else if (count >= 2)icon.hardlight(0f, 1f, 0f); - else icon.resetColor(); + if (comboTime >= 3f){ + icon.resetColor(); + } else { + icon.tint(0xb3b3b3, 0.5f + 0.5f*(3f + 1 - comboTime)/3f); + } } @Override @@ -108,6 +107,7 @@ public class Combo extends Buff implements ActionIndicator.Action { public boolean act() { comboTime-=TICK; spend(TICK); + BuffIndicator.refreshHero(); if (comboTime <= 0) { detach(); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/EarthImbue.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/EarthImbue.java index 0bddb4c1a..7d7a07562 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/EarthImbue.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/EarthImbue.java @@ -26,6 +26,7 @@ import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter; import com.shatteredpixel.shatteredpixeldungeon.effects.particles.EarthParticle; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; +import com.watabou.noosa.Image; public class EarthImbue extends FlavourBuff { @@ -40,6 +41,11 @@ public class EarthImbue extends FlavourBuff { public int icon() { return BuffIndicator.ROOTS; } + + @Override + public void tintIcon(Image icon) { + greyIcon(icon, 5f, cooldown()); + } @Override public String toString() { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/FireImbue.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/FireImbue.java index 4794b9895..cdf0b25be 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/FireImbue.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/FireImbue.java @@ -28,6 +28,7 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; +import com.watabou.noosa.Image; import com.watabou.utils.Bundle; import com.watabou.utils.Random; @@ -65,8 +66,11 @@ public class FireImbue extends Buff { spend(TICK); left -= TICK; - if (left <= 0) + if (left < 5){ + BuffIndicator.refreshHero(); + } else if (left <= 0) { detach(); + } return true; } @@ -82,6 +86,11 @@ public class FireImbue extends Buff { public int icon() { return BuffIndicator.FIRE; } + + @Override + public void tintIcon(Image icon) { + FlavourBuff.greyIcon(icon, 5f, left); + } @Override public String toString() { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/FlavourBuff.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/FlavourBuff.java index 0f07a396d..472501e4d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/FlavourBuff.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/FlavourBuff.java @@ -21,6 +21,8 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.buffs; +import com.watabou.noosa.Image; + //buff whose only internal logic is to wait and detach after a time. public class FlavourBuff extends Buff { @@ -29,6 +31,14 @@ public class FlavourBuff extends Buff { detach(); return true; } + + public static void greyIcon(Image icon, float startGrey, float remaining){ + if (remaining >= startGrey){ + icon.resetColor(); + } else { + icon.tint(0xb3b3b3, 0.6f + 0.3f*(startGrey - remaining)/startGrey); + } + } //flavour buffs can all just rely on cooldown() protected String dispTurns() { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/GasesImmunity.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/GasesImmunity.java index 5a962d3f2..074c75e20 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/GasesImmunity.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/GasesImmunity.java @@ -28,16 +28,22 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.ToxicGas; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.VenomGas; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; +import com.watabou.noosa.Image; public class GasesImmunity extends FlavourBuff { - public static final float DURATION = 15f; + public static final float DURATION = 20f; @Override public int icon() { return BuffIndicator.IMMUNITY; } + @Override + public void tintIcon(Image icon) { + greyIcon(icon, 5f, cooldown()); + } + @Override public String toString() { return Messages.get(this, "name"); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Invisibility.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Invisibility.java index def02a8c2..1dacc3822 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Invisibility.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Invisibility.java @@ -30,6 +30,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.TimekeepersHourg import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; +import com.watabou.noosa.Image; public class Invisibility extends FlavourBuff { @@ -63,6 +64,11 @@ public class Invisibility extends FlavourBuff { public int icon() { return BuffIndicator.INVISIBLE; } + + @Override + public void tintIcon(Image icon) { + greyIcon(icon, 5f, cooldown()); + } @Override public void fx(boolean on) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Levitation.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Levitation.java index 2a0b4ea5f..e32847c5e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Levitation.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Levitation.java @@ -26,6 +26,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; +import com.watabou.noosa.Image; public class Levitation extends FlavourBuff { @@ -53,7 +54,12 @@ public class Levitation extends FlavourBuff { public int icon() { return BuffIndicator.LEVITATION; } - + + @Override + public void tintIcon(Image icon) { + greyIcon(icon, 5f, cooldown()); + } + @Override public void fx(boolean on) { if (on) target.sprite.add(CharSprite.State.LEVITATING); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Light.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Light.java index a8cafb7a1..f1b3c0489 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Light.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Light.java @@ -26,6 +26,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; +import com.watabou.noosa.Image; public class Light extends FlavourBuff { @@ -56,6 +57,11 @@ public class Light extends FlavourBuff { public int icon() { return BuffIndicator.LIGHT; } + + @Override + public void tintIcon(Image icon) { + greyIcon(icon, 20f, cooldown()); + } @Override public void fx(boolean on) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/MindVision.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/MindVision.java index 78dbb9538..dfa8f5297 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/MindVision.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/MindVision.java @@ -25,6 +25,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; +import com.watabou.noosa.Image; public class MindVision extends FlavourBuff { @@ -41,6 +42,11 @@ public class MindVision extends FlavourBuff { return BuffIndicator.MIND_VISION; } + @Override + public void tintIcon(Image icon) { + greyIcon(icon, 5f, cooldown()); + } + @Override public String toString() { return Messages.get(this, "name"); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Recharging.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Recharging.java index 3666cab46..6791182e0 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Recharging.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Recharging.java @@ -23,6 +23,7 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.buffs; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; +import com.watabou.noosa.Image; public class Recharging extends FlavourBuff { @@ -30,7 +31,12 @@ public class Recharging extends FlavourBuff { public int icon() { return BuffIndicator.RECHARGING; } - + + @Override + public void tintIcon(Image icon) { + FlavourBuff.greyIcon(icon, 5f, cooldown()); + } + @Override public String toString() { return Messages.get(this, "name"); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Shadows.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Shadows.java index 24924b14e..0b2b0bdb5 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Shadows.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Shadows.java @@ -26,6 +26,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; +import com.watabou.noosa.Image; import com.watabou.noosa.audio.Sample; import com.watabou.utils.Bundle; @@ -98,6 +99,11 @@ public class Shadows extends Invisibility { return BuffIndicator.SHADOWS; } + @Override + public void tintIcon(Image icon) { + icon.resetColor(); + } + @Override public String toString() { return Messages.get(this, "name"); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/ToxicImbue.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/ToxicImbue.java index 89699b7d1..bc66537e2 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/ToxicImbue.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/ToxicImbue.java @@ -26,6 +26,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.ToxicGas; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; +import com.watabou.noosa.Image; import com.watabou.utils.Bundle; public class ToxicImbue extends Buff { @@ -70,6 +71,11 @@ public class ToxicImbue extends Buff { public int icon() { return BuffIndicator.IMMUNITY; } + + @Override + public void tintIcon(Image icon) { + FlavourBuff.greyIcon(icon, 5f, left); + } @Override public String toString() { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java index b6f3fea9c..a037f438b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java @@ -36,6 +36,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Bless; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Combo; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Drowsy; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FlavourBuff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Fury; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Hunger; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Invisibility; @@ -478,6 +479,9 @@ public class Hero extends Char { Dungeon.level.updateFieldOfView( this, fieldOfView ); } checkVisibleMobs(); + if (buff(FlavourBuff.class) != null) { + BuffIndicator.refreshHero(); + } if (paralysed > 0) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/plants/Earthroot.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/plants/Earthroot.java index 22e925ef0..f10f8c761 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/plants/Earthroot.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/plants/Earthroot.java @@ -25,6 +25,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FlavourBuff; import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter; import com.shatteredpixel.shatteredpixeldungeon.effects.particles.EarthParticle; import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfParalyticGas; @@ -32,6 +33,7 @@ import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; import com.watabou.noosa.Camera; +import com.watabou.noosa.Image; import com.watabou.utils.Bundle; public class Earthroot extends Plant { @@ -113,6 +115,11 @@ public class Earthroot extends Plant { return BuffIndicator.ARMOR; } + @Override + public void tintIcon(Image icon) { + FlavourBuff.greyIcon(icon, target.HT/4f, level); + } + @Override public String toString() { return Messages.get(this, "name"); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/plants/Starflower.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/plants/Starflower.java index 17796ef66..b2db1714f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/plants/Starflower.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/plants/Starflower.java @@ -40,7 +40,7 @@ public class Starflower extends Plant { public void activate() { Char ch = Actor.findChar(pos); - if (ch != null) Buff.prolong(ch, Bless.class, 30f); + if (ch != null) Buff.prolong(ch, Bless.class, Bless.DURATION); if (Random.Int(5) == 0){ Dungeon.level.drop(new Seed(), pos).sprite.drop(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/plants/Sungrass.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/plants/Sungrass.java index cfb3297cd..18b64d0f1 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/plants/Sungrass.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/plants/Sungrass.java @@ -25,6 +25,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FlavourBuff; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter; import com.shatteredpixel.shatteredpixeldungeon.effects.Speck; @@ -33,6 +34,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfHealing; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; +import com.watabou.noosa.Image; import com.watabou.utils.Bundle; public class Sungrass extends Plant { @@ -125,6 +127,11 @@ public class Sungrass extends Plant { return BuffIndicator.HEALING; } + @Override + public void tintIcon(Image icon) { + FlavourBuff.greyIcon(icon, target.HT/4f, level); + } + @Override public String toString() { return Messages.get(this, "name");