diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Dungeon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Dungeon.java index 892fdfa09..9d57eef77 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Dungeon.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Dungeon.java @@ -377,7 +377,6 @@ public class Dungeon { hero.curAction = hero.lastAction = null; - observe(); try { saveAll(); } catch (IOException e) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Buff.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Buff.java index 8dc10d52c..50e68d892 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Buff.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Buff.java @@ -44,6 +44,9 @@ public class Buff extends Actor { //whether or not the buff announces its name public boolean announced = false; + + //whether a buff should persist through revive effects for the hero + public boolean revivePersists = false; protected HashSet resistances = new HashSet<>(); 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 8c97197e7..dad3f9a1b 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 @@ -380,7 +380,7 @@ public class Hero extends Char { public void live() { for (Buff b : buffs()){ - b.detach(); + if (!b.revivePersists) b.detach(); } Buff.affect( this, Regeneration.class ); Buff.affect( this, Hunger.class ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Talent.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Talent.java index c4256ebb2..7f16d7bcd 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Talent.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Talent.java @@ -157,7 +157,7 @@ public enum Talent { }; public static class LethalMomentumTracker extends FlavourBuff{}; public static class StrikingWaveTracker extends FlavourBuff{}; - public static class WandPreservationCounter extends CounterBuff{}; + public static class WandPreservationCounter extends CounterBuff{{revivePersists = true;}}; public static class EmpoweredStrikeTracker extends FlavourBuff{}; public static class BountyHunterTracker extends FlavourBuff{}; public static class RejuvenatingStepsCooldown extends FlavourBuff{ @@ -167,7 +167,7 @@ public enum Talent { public String toString() { return Messages.get(this, "name"); } public String desc() { return Messages.get(this, "desc", dispTurns(visualcooldown())); } }; - public static class RejuvenatingStepsFurrow extends CounterBuff{}; + public static class RejuvenatingStepsFurrow extends CounterBuff{{revivePersists = true;}}; public static class SeerShotCooldown extends FlavourBuff{ public int icon() { return target.buff(RevealedArea.class) != null ? BuffIndicator.NONE : BuffIndicator.TIME; } public void tintIcon(Image icon) { icon.hardlight(0.7f, 0.4f, 0.7f); } @@ -269,8 +269,8 @@ public enum Talent { } } - public static class CachedRationsDropped extends CounterBuff{}; - public static class NatureBerriesAvailable extends CounterBuff{}; + public static class CachedRationsDropped extends CounterBuff{{revivePersists = true;}}; + public static class NatureBerriesAvailable extends CounterBuff{{revivePersists = true;}}; public static void onFoodEaten( Hero hero, float foodVal, Item foodSource ){ if (hero.hasTalent(HEARTY_MEAL)){ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/mage/WarpBeacon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/mage/WarpBeacon.java index 0130966e0..449e17594 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/mage/WarpBeacon.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/mage/WarpBeacon.java @@ -212,6 +212,10 @@ public class WarpBeacon extends ArmorAbility { public static class WarpBeaconTracker extends Buff { + { + revivePersists = true; + } + int pos; int depth; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/bombs/Noisemaker.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/bombs/Noisemaker.java index 95b7738e0..1f638ac94 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/bombs/Noisemaker.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/bombs/Noisemaker.java @@ -55,6 +55,10 @@ public class Noisemaker extends Bomb { public static class Trigger extends Buff { + { + revivePersists = true; + } + int cell; int floor; int left; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/food/Berry.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/food/Berry.java index b5eaf4482..20cca8738 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/food/Berry.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/food/Berry.java @@ -63,5 +63,5 @@ public class Berry extends Food { return 5 * quantity; } - public static class SeedCounter extends CounterBuff{}; + public static class SeedCounter extends CounterBuff{{revivePersists = true;}}; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/HeavyBoomerang.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/HeavyBoomerang.java index a8db109b0..e0f79920e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/HeavyBoomerang.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/HeavyBoomerang.java @@ -65,6 +65,10 @@ public class HeavyBoomerang extends MissileWeapon { } public static class CircleBack extends Buff { + + { + revivePersists = true; + } private MissileWeapon boomerang; private int thrownPos; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/PitfallTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/PitfallTrap.java index 338425946..ab765a1a3 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/PitfallTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/PitfallTrap.java @@ -73,6 +73,10 @@ public class PitfallTrap extends Trap { public static class DelayedPit extends FlavourBuff { + { + revivePersists = true; + } + int pos; int depth; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java index 4850728b8..a018d6fe4 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java @@ -361,9 +361,10 @@ public class GameScene extends PixelScene { switch (InterlevelScene.mode) { case RESURRECT: + Sample.INSTANCE.play(Assets.Sounds.TELEPORT); ScrollOfTeleportation.appear( Dungeon.hero, Dungeon.hero.pos ); SpellSprite.show(Dungeon.hero, SpellSprite.ANKH); - new Flare( 5, 16 ).color( 0xFFFF00, true ).show( hero, 6f ) ; + new Flare( 5, 16 ).color( 0xFFFF00, true ).show( hero, 4f ) ; break; case RETURN: ScrollOfTeleportation.appear( Dungeon.hero, Dungeon.hero.pos ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/InterlevelScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/InterlevelScene.java index a76583d96..11701bf3f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/InterlevelScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/InterlevelScene.java @@ -455,6 +455,7 @@ public class InterlevelScene extends PixelScene { } else { Dungeon.hero.resurrect(); level = Dungeon.level; + BArray.setFalse(level.heroFOV); BArray.setFalse(level.visited); BArray.setFalse(level.mapped); int invPos = Dungeon.hero.pos;