From aa7b64564557e85e5a27424caa033b2f1f7fc126 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Thu, 27 Jun 2024 13:07:36 -0400 Subject: [PATCH] v2.5.0: adjusted logic for landmarks, now get added based on hero action --- .../actors/blobs/Alchemy.java | 10 +++++--- .../actors/blobs/Blob.java | 7 ++++++ .../actors/blobs/Foliage.java | 11 ++++---- .../actors/blobs/SacrificialFire.java | 9 ++++--- .../actors/blobs/WaterOfAwareness.java | 2 +- .../actors/blobs/WaterOfHealth.java | 2 +- .../actors/blobs/WellWater.java | 16 +++--------- .../actors/hero/Hero.java | 25 +++++++++++++++++++ .../actors/mobs/DemonSpawner.java | 11 ++++---- .../actors/mobs/Mob.java | 7 ++++++ .../actors/mobs/Statue.java | 19 ++++++-------- .../actors/mobs/npcs/Blacksmith.java | 15 ++++++----- .../actors/mobs/npcs/Ghost.java | 10 +++++--- .../actors/mobs/npcs/Imp.java | 9 ++++--- .../actors/mobs/npcs/RatKing.java | 9 ++++--- .../actors/mobs/npcs/Shopkeeper.java | 13 +++++----- .../actors/mobs/npcs/Wandmaker.java | 11 ++++---- .../shatteredpixeldungeon/journal/Notes.java | 4 +++ .../levels/rooms/special/WeakFloorRoom.java | 10 ++++---- 19 files changed, 125 insertions(+), 75 deletions(-) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Alchemy.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Alchemy.java index 30ef99e4a..8b1f2097f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Alchemy.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Alchemy.java @@ -29,7 +29,12 @@ import com.shatteredpixel.shatteredpixeldungeon.journal.Notes; public class Alchemy extends Blob { protected int pos; - + + @Override + public Notes.Landmark landmark() { + return Notes.Landmark.ALCHEMY; + } + @Override protected void evolve() { int cell; @@ -40,9 +45,6 @@ public class Alchemy extends Blob { off[cell] = cur[cell]; volume += off[cell]; - if (off[cell] > 0 && Dungeon.level.visited[cell]){ - Notes.add( Notes.Landmark.ALCHEMY ); - } } } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Blob.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Blob.java index 522a949d4..72f91b443 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Blob.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Blob.java @@ -24,6 +24,7 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.blobs; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.effects.BlobEmitter; +import com.shatteredpixel.shatteredpixeldungeon.journal.Notes; import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.watabou.utils.Bundle; import com.watabou.utils.Rect; @@ -222,6 +223,12 @@ public class Blob extends Actor { public void onBuildFlagMaps( Level l ){ //do nothing by default, only some blobs affect flags } + + //some blobs have an associated landmark entry, which is added when the hero sees them + //blobs may also remove this landmark in some cases, such as when they expire or are consumed + public Notes.Landmark landmark(){ + return null; + } public String tileDesc() { return null; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Foliage.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Foliage.java index 691b365eb..4ade5c030 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Foliage.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Foliage.java @@ -33,7 +33,12 @@ import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; public class Foliage extends Blob { - + + @Override + public Notes.Landmark landmark() { + return Notes.Landmark.GARDEN; + } + @Override protected void evolve() { @@ -70,10 +75,6 @@ public class Foliage extends Blob { s.prolong(); } } - - if (seen) { - Notes.add( Notes.Landmark.GARDEN ); - } } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/SacrificialFire.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/SacrificialFire.java index 7ba8a35d2..3a4543c66 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/SacrificialFire.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/SacrificialFire.java @@ -64,6 +64,11 @@ public class SacrificialFire extends Blob { private Item prize; + @Override + public Notes.Landmark landmark() { + return Notes.Landmark.SACRIFICIAL_FIRE; + } + @Override protected void evolve() { int cell; @@ -87,8 +92,6 @@ public class SacrificialFire extends Blob { if (off[cell] > 0 && Dungeon.level.visited[cell]) { - Notes.add( Notes.Landmark.SACRIFICIAL_FIRE); - if (Dungeon.level.mobCount() == 0 && bonusSpawns > 0) { if (Dungeon.level.spawnMob(4)) { @@ -187,7 +190,7 @@ public class SacrificialFire extends Blob { GLog.w( Messages.get(SacrificialFire.class, "worthy")); } else { clear(firePos); - Notes.remove(Notes.Landmark.SACRIFICIAL_FIRE); + if (volume <= 0) Notes.remove( landmark() ); for (int i : PathFinder.NEIGHBOURS9){ CellEmitter.get(firePos+i).burst( SacrificialParticle.FACTORY, 20 ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/WaterOfAwareness.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/WaterOfAwareness.java index d97aca62e..bf7f57ea0 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/WaterOfAwareness.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/WaterOfAwareness.java @@ -88,7 +88,7 @@ public class WaterOfAwareness extends WellWater { } @Override - protected Landmark record() { + public Landmark landmark() { return Landmark.WELL_OF_AWARENESS; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/WaterOfHealth.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/WaterOfHealth.java index 641cbe832..5006b4f93 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/WaterOfHealth.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/WaterOfHealth.java @@ -91,7 +91,7 @@ public class WaterOfHealth extends WellWater { } @Override - protected Landmark record() { + public Landmark landmark() { return Landmark.WELL_OF_HEALTH; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/WellWater.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/WellWater.java index 8c0e77690..be6030203 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/WellWater.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/WellWater.java @@ -44,17 +44,9 @@ public abstract class WellWater extends Blob { if (Dungeon.level.insideMap(cell)) { off[cell] = cur[cell]; volume += off[cell]; - if (off[cell] > 0 && Dungeon.level.visited[cell]) { - seen = true; - } } } } - if (seen){ - Notes.add(record()); - } else { - Notes.remove(record()); - } } protected boolean affect( int pos ) { @@ -63,7 +55,8 @@ public abstract class WellWater extends Blob { if (pos == Dungeon.hero.pos && affectHero( Dungeon.hero )) { - cur[pos] = 0; + clear(pos); + if (volume <= 0 && landmark() != null) Notes.remove(landmark()); return true; } else if ((heap = Dungeon.level.heaps.get( pos )) != null) { @@ -85,7 +78,8 @@ public abstract class WellWater extends Blob { } heap.sprite.link(); - cur[pos] = 0; + clear(pos); + if (volume <= 0 && landmark() != null) Notes.remove(landmark()); return true; @@ -112,8 +106,6 @@ public abstract class WellWater extends Blob { protected abstract Item affectItem( Item item, int pos ); - protected abstract Notes.Landmark record(); - public static void affectCell( int cell ) { Class[] waters = {WaterOfHealth.class, WaterOfAwareness.class}; 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 8d73d4104..7d837f43c 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 @@ -31,6 +31,7 @@ import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon; import com.shatteredpixel.shatteredpixeldungeon.Statistics; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; +import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.SacrificialFire; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.AdrenalineSurge; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.AnkhInvulnerability; @@ -1518,6 +1519,10 @@ public class Hero extends Char { Mob target = null; for (Mob m : Dungeon.level.mobs.toArray(new Mob[0])) { + if (fieldOfView[ m.pos ] && m.landmark() != null){ + Notes.add(m.landmark()); + } + if (fieldOfView[ m.pos ] && m.alignment == Alignment.ENEMY) { visible.add(m); if (!visibleEnemies.contains( m )) { @@ -1558,6 +1563,26 @@ public class Hero extends Char { } visibleEnemies = visible; + + //we also scan for blob landmarks here + for (Blob b : Dungeon.level.blobs.values().toArray(new Blob[0])){ + if (b.volume > 0 && b.landmark() != null && !Notes.contains(b.landmark())){ + int cell; + boolean found = false; + //if a single cell within the blob is visible, we add the landmark + for (int i=b.area.top; i < b.area.bottom; i++) { + for (int j = b.area.left; j < b.area.right; j++) { + cell = j + i* Dungeon.level.width(); + if (fieldOfView[cell] && b.cur[cell] > 0) { + Notes.add( b.landmark() ); + found = true; + break; + } + } + if (found) break; + } + } + } } public int visibleEnemies() { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DemonSpawner.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DemonSpawner.java index 5e00fea7a..e6ac89f7b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DemonSpawner.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DemonSpawner.java @@ -87,10 +87,6 @@ public class DemonSpawner extends Mob { spawnRecorded = true; } - if (Dungeon.level.visited[pos]){ - Notes.add( Notes.Landmark.DEMON_SPAWNER ); - } - if (Dungeon.hero.buff(AscensionChallenge.class) != null && spawnCooldown > 20){ spawnCooldown = 20; } @@ -145,11 +141,16 @@ public class DemonSpawner extends Mob { super.damage(dmg, src); } + @Override + public Notes.Landmark landmark() { + return Notes.Landmark.DEMON_SPAWNER; + } + @Override public void die(Object cause) { if (spawnRecorded){ Statistics.spawnersAlive--; - Notes.remove(Notes.Landmark.DEMON_SPAWNER); + Notes.remove(landmark()); } GLog.h(Messages.get(this, "on_death")); super.die(cause); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Mob.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Mob.java index c376fe113..becead124 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Mob.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Mob.java @@ -73,6 +73,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Lucky; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.MissileWeapon; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts.Dart; import com.shatteredpixel.shatteredpixeldungeon.journal.Bestiary; +import com.shatteredpixel.shatteredpixeldungeon.journal.Notes; import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.levels.features.Chasm; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; @@ -990,6 +991,12 @@ public abstract class Mob extends Char { GLog.n( "%s: \"%s\" ", Messages.titleCase(name()), str ); } + //some mobs have an associated landmark entry, which is added when the hero sees them + //mobs may also remove this landmark in some cases, such as when a quest is complete or they die + public Notes.Landmark landmark(){ + return null; + } + public interface AiState { boolean act( boolean enemyInFOV, boolean justAlerted ); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Statue.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Statue.java index 2fcaca14c..8925368f6 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Statue.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Statue.java @@ -84,14 +84,6 @@ public class Statue extends Mob { weapon = (Weapon)bundle.get( WEAPON ); } - @Override - protected boolean act() { - if (levelGenStatue && Dungeon.level.visited[pos]) { - Notes.add( Notes.Landmark.STATUE ); - } - return super.act(); - } - @Override public int damageRoll() { return weapon.damageRoll(this); @@ -160,11 +152,16 @@ public class Statue extends Mob { Dungeon.level.drop( weapon, pos ).sprite.drop(); super.die( cause ); } - + + @Override + public Notes.Landmark landmark() { + return levelGenStatue ? Notes.Landmark.STATUE : null; + } + @Override public void destroy() { - if (levelGenStatue) { - Notes.remove( Notes.Landmark.STATUE ); + if (landmark() != null) { + Notes.remove( landmark() ); } super.destroy(); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/Blacksmith.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/Blacksmith.java index bc91c2665..cb9310aba 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/Blacksmith.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/Blacksmith.java @@ -57,16 +57,20 @@ public class Blacksmith extends NPC { properties.add(Property.IMMOVABLE); } - + + @Override + public Notes.Landmark landmark() { + return (!Quest.completed() || Quest.rewardsAvailable()) ? Notes.Landmark.TROLL : null; + } + @Override protected boolean act() { if (Dungeon.hero.buff(AscensionChallenge.class) != null){ die(null); - Notes.remove( Notes.Landmark.TROLL ); + Notes.remove( landmark() ); return true; - } - if (Dungeon.level.visited[pos] && !Quest.started()){ - Notes.add( Notes.Landmark.TROLL ); + } else if (!Quest.rewardsAvailable() && Quest.completed()){ + Notes.remove( landmark() ); } return super.act(); } @@ -121,7 +125,6 @@ public class Blacksmith extends NPC { Quest.given = true; Quest.completed = false; - Notes.add( Notes.Landmark.TROLL ); Item pick = Quest.pickaxe != null ? Quest.pickaxe : new Pickaxe(); if (pick.doPickUp( Dungeon.hero )) { GLog.i( Messages.capitalize(Messages.get(Dungeon.hero, "you_now_have", pick.name()) )); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/Ghost.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/Ghost.java index db70bdaa4..317aaaefb 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/Ghost.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/Ghost.java @@ -81,15 +81,18 @@ public class Ghost extends NPC { } } + @Override + public Notes.Landmark landmark() { + return Notes.Landmark.GHOST; + } + @Override protected boolean act() { if (Dungeon.hero.buff(AscensionChallenge.class) != null){ die(null); + Notes.remove( landmark() ); return true; } - if (Dungeon.level.heroFOV[pos] && !Quest.completed()){ - Notes.add( Notes.Landmark.GHOST ); - } return super.act(); } @@ -184,7 +187,6 @@ public class Ghost extends NPC { if (questBoss.pos != -1) { GameScene.add(questBoss); Quest.given = true; - Notes.add( Notes.Landmark.GHOST ); Game.runOnRenderThread(new Callback() { @Override public void call() { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/Imp.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/Imp.java index 0de727d42..23655ac2e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/Imp.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/Imp.java @@ -54,7 +54,12 @@ public class Imp extends NPC { } private boolean seenBefore = false; - + + @Override + public Notes.Landmark landmark() { + return Notes.Landmark.IMP; + } + @Override protected boolean act() { if (Dungeon.hero.buff(AscensionChallenge.class) != null){ @@ -62,7 +67,6 @@ public class Imp extends NPC { return true; } if (!Quest.given && Dungeon.level.visited[pos]) { - Notes.add( Notes.Landmark.IMP ); if (!seenBefore && Dungeon.level.heroFOV[pos]) { yell(Messages.get(this, "hey", Messages.titleCase(Dungeon.hero.name()))); seenBefore = true; @@ -123,7 +127,6 @@ public class Imp extends NPC { tell( Quest.alternative ? Messages.get(this, "monks_1") : Messages.get(this, "golems_1") ); Quest.given = true; Quest.completed = false; - Notes.add( Notes.Landmark.IMP ); } return true; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/RatKing.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/RatKing.java index e46ff6d16..06d9eae5b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/RatKing.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/RatKing.java @@ -85,6 +85,11 @@ public class RatKing extends NPC { } } + @Override + public Notes.Landmark landmark() { + return Dungeon.depth == 5 ? Notes.Landmark.RAT_KING : null; + } + @Override protected boolean act() { if (Dungeon.depth < 5){ @@ -101,10 +106,6 @@ public class RatKing extends NPC { } else { target = Dungeon.level.entrance(); } - } else { - if (Dungeon.level.heroFOV[pos]){ - Notes.add(Notes.Landmark.RAT_KING); - } } return super.act(); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/Shopkeeper.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/Shopkeeper.java index 3b7e21ed8..50acd85e9 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/Shopkeeper.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/Shopkeeper.java @@ -68,14 +68,15 @@ public class Shopkeeper extends NPC { public ArrayList buybackItems = new ArrayList<>(); private int turnsSinceHarmed = -1; - + + @Override + public Notes.Landmark landmark() { + return Notes.Landmark.SHOP; + } + @Override protected boolean act() { - if (Dungeon.level.visited[pos]){ - Notes.add(Notes.Landmark.SHOP); - } - if (turnsSinceHarmed >= 0){ turnsSinceHarmed ++; } @@ -148,7 +149,7 @@ public class Shopkeeper extends NPC { public void flee() { destroy(); - Notes.remove(Notes.Landmark.SHOP); + Notes.remove( landmark() ); if (sprite != null) { sprite.killAndErase(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/Wandmaker.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/Wandmaker.java index 705a8c65a..596bd6abc 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/Wandmaker.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/Wandmaker.java @@ -65,16 +65,18 @@ public class Wandmaker extends NPC { properties.add(Property.IMMOVABLE); } - + + @Override + public Notes.Landmark landmark() { + return Notes.Landmark.WANDMAKER; + } + @Override protected boolean act() { if (Dungeon.hero.buff(AscensionChallenge.class) != null){ die(null); return true; } - if (Dungeon.level.visited[pos] && Quest.wand1 != null){ - Notes.add( Notes.Landmark.WANDMAKER ); - } return super.act(); } @@ -204,7 +206,6 @@ public class Wandmaker extends NPC { }); Quest.given = true; - Notes.add( Notes.Landmark.WANDMAKER ); } return true; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/journal/Notes.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/journal/Notes.java index e8e3292d8..bcc9e57a0 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/journal/Notes.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/journal/Notes.java @@ -367,6 +367,10 @@ public class Notes { } return false; } + + public static boolean contains( Landmark landmark ){ + return records.contains(new LandmarkRecord( landmark, Dungeon.depth)); + } public static boolean remove( Landmark landmark ) { return records.remove( new LandmarkRecord(landmark, Dungeon.depth) ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/WeakFloorRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/WeakFloorRoom.java index b53ba04fd..9b17a381c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/WeakFloorRoom.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/WeakFloorRoom.java @@ -105,6 +105,11 @@ public class WeakFloorRoom extends SpecialRoom { //we use a blob to track visibility of the well, yes this sucks public static class WellID extends Blob { + @Override + public Notes.Landmark landmark() { + return Notes.Landmark.DISTANT_WELL; + } + @Override protected void evolve() { int cell; @@ -115,11 +120,6 @@ public class WeakFloorRoom extends SpecialRoom { off[cell] = cur[cell]; volume += off[cell]; - if (off[cell] > 0 && Dungeon.level.visited[cell]){ - Notes.add( Notes.Landmark.DISTANT_WELL ); - fullyClear(); //deletes itself after fulfilling its purpose - return; - } } } }