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 5a80ad689..9b7d71e93 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 @@ -106,6 +106,7 @@ import com.shatteredpixel.shatteredpixeldungeon.journal.Notes; import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; import com.shatteredpixel.shatteredpixeldungeon.levels.features.Chasm; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.Trap; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.plants.Earthroot; import com.shatteredpixel.shatteredpixeldungeon.plants.Swiftthistle; @@ -1646,6 +1647,11 @@ public class Hero extends Char { if (Dungeon.level.secret[p]){ + Trap trap = Dungeon.level.traps.get( p ); + if (trap != null && !trap.canBeSearched){ + continue; + } + float chance; //intentional searches always succeed if (intentional){ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/TalismanOfForesight.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/TalismanOfForesight.java index 5dce5eb9c..8e4178a1f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/TalismanOfForesight.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/TalismanOfForesight.java @@ -182,8 +182,11 @@ public class TalismanOfForesight extends Artifact { if (Dungeon.level.heroFOV[p] && Dungeon.level.secret[p] - && Dungeon.level.map[p] != Terrain.SECRET_DOOR) + && Dungeon.level.map[p] != Terrain.SECRET_DOOR) { + if (Dungeon.level.traps.get(p) == null || Dungeon.level.traps.get(p).canBeSearched) { smthFound = true; + } + } } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/DisintegrationTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/DisintegrationTrap.java index f94c1f87a..0e66446ad 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/DisintegrationTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/DisintegrationTrap.java @@ -43,12 +43,8 @@ public class DisintegrationTrap extends Trap { { color = VIOLET; shape = CROSSHAIR; - } - - @Override - public Trap hide() { - //this one can't be hidden - return reveal(); + + canBeHidden = false; } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/GrimTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/GrimTrap.java index 5fde36d2c..3711fe5fd 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/GrimTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/GrimTrap.java @@ -40,12 +40,8 @@ public class GrimTrap extends Trap { { color = GREY; shape = LARGE_DOT; - } - - @Override - public Trap hide() { - //cannot hide this trap - return reveal(); + + canBeHidden = false; } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/PoisonDartTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/PoisonDartTrap.java index 8f079291d..e9cec27eb 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/PoisonDartTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/PoisonDartTrap.java @@ -40,12 +40,12 @@ public class PoisonDartTrap extends Trap { { color = GREEN; shape = CROSSHAIR; + + canBeHidden = false; } - @Override - public Trap hide() { - //this one can't be hidden - return reveal(); + protected int poisonAmount(){ + return 8 + Math.round(2*Dungeon.depth / 3f); } @Override @@ -85,8 +85,7 @@ public class PoisonDartTrap extends Trap { if (finalTarget == Dungeon.hero && !finalTarget.isAlive()){ Dungeon.fail( trap.getClass() ); } - Buff.affect( finalTarget, Poison.class ) - .set( 8 + Math.round(2*Dungeon.depth / 3f) ); + Buff.affect( finalTarget, Poison.class ).set( poisonAmount() ); Sample.INSTANCE.play(Assets.SND_HIT, 1, 1, Random.Float(0.8f, 1.25f)); finalTarget.sprite.bloodBurstA(finalTarget.sprite.center(), dmg); finalTarget.sprite.flash(); @@ -99,8 +98,7 @@ public class PoisonDartTrap extends Trap { }); } else { finalTarget.damage(Random.NormalIntRange(1, 4) - finalTarget.drRoll(), trap); - Buff.affect( finalTarget, Poison.class ) - .set( 8 + Math.round(2*Dungeon.depth / 3f) ); + Buff.affect( finalTarget, Poison.class ).set( poisonAmount() ); } } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/RockfallTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/RockfallTrap.java index 6407a1e04..9aa07787e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/RockfallTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/RockfallTrap.java @@ -47,12 +47,8 @@ public class RockfallTrap extends Trap { { color = GREY; shape = DIAMOND; - } - - @Override - public Trap hide() { - //this one can't be hidden - return reveal(); + + canBeHidden = false; } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/Trap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/Trap.java index 36400ce8e..5f31621ce 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/Trap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/Trap.java @@ -60,6 +60,9 @@ public abstract class Trap implements Bundlable { public boolean visible; public boolean active = true; + + public boolean canBeHidden = true; + public boolean canBeSearched = true; public Trap set(int pos){ this.pos = pos; @@ -73,9 +76,13 @@ public abstract class Trap implements Bundlable { } public Trap hide() { - visible = false; - GameScene.updateMap(pos); - return this; + if (canBeHidden) { + visible = false; + GameScene.updateMap(pos); + return this; + } else { + return reveal(); + } } public void trigger() { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/WornDartTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/WornDartTrap.java index 030955654..119cedb27 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/WornDartTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/WornDartTrap.java @@ -40,12 +40,6 @@ public class WornDartTrap extends Trap { shape = CROSSHAIR; } - @Override - public Trap hide() { - //this one can't be hidden - return reveal(); - } - @Override public void activate() { Char target = Actor.findChar(pos);