diff --git a/core/src/main/assets/messages/journal/journal.properties b/core/src/main/assets/messages/journal/journal.properties index eb4732e6e..35fc04733 100644 --- a/core/src/main/assets/messages/journal/journal.properties +++ b/core/src/main/assets/messages/journal/journal.properties @@ -5,6 +5,8 @@ journal.bestiary.rare.title=rare enemies journal.bestiary.quest.title=quest enemies & bosses journal.bestiary.neutral.title=neutral characters journal.bestiary.ally.title=allies +journal.bestiary.trap.title=traps +journal.bestiary.plant.title=plants journal.catalog.melee_weapons.title=melee weapons journal.catalog.armor.title=armor diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/AllyBuff.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/AllyBuff.java index dd8bc0b1e..4a0dacbe6 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/AllyBuff.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/AllyBuff.java @@ -61,7 +61,7 @@ public abstract class AllyBuff extends Buff{ Statistics.enemiesSlain++; Badges.validateMonstersSlain(); Statistics.qualifiedForNoKilling = false; - Bestiary.trackKill(enemy.getClass()); + Bestiary.trackEncounter(enemy.getClass()); AscensionChallenge.processEnemyKill(enemy); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/ReclaimTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/ReclaimTrap.java index 540cae765..5f9d0e37d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/ReclaimTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/ReclaimTrap.java @@ -27,6 +27,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.items.quest.MetalShard; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfMagicMapping; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfRecharging; +import com.shatteredpixel.shatteredpixeldungeon.journal.Bestiary; import com.shatteredpixel.shatteredpixeldungeon.levels.traps.Trap; import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; @@ -81,6 +82,7 @@ public class ReclaimTrap extends TargetedSpell { storedTrap = null; t.pos = bolt.collisionPos; + Bestiary.trackEncounter(t.getClass()); t.activate(); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/journal/Bestiary.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/journal/Bestiary.java index a6ad3d988..f8b788ff2 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/journal/Bestiary.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/journal/Bestiary.java @@ -102,8 +102,53 @@ import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfLivingEarth; import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfRegrowth; import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfWarding; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.SentryRoom; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.AlarmTrap; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.BlazingTrap; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.BurningTrap; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.ChillingTrap; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.ConfusionTrap; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.CorrosionTrap; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.CursingTrap; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.DisarmingTrap; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.DisintegrationTrap; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.DistortionTrap; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.ExplosiveTrap; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.FlashingTrap; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.FlockTrap; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.FrostTrap; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.GatewayTrap; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.GeyserTrap; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.GnollRockfallTrap; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.GrimTrap; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.GrippingTrap; import com.shatteredpixel.shatteredpixeldungeon.levels.traps.GuardianTrap; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.OozeTrap; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.PitfallTrap; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.PoisonDartTrap; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.RockfallTrap; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.ShockingTrap; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.StormTrap; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.SummoningTrap; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.TeleportationTrap; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.TenguDartTrap; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.ToxicTrap; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.WarpingTrap; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.WeakeningTrap; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.WornDartTrap; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; +import com.shatteredpixel.shatteredpixeldungeon.plants.BlandfruitBush; +import com.shatteredpixel.shatteredpixeldungeon.plants.Blindweed; +import com.shatteredpixel.shatteredpixeldungeon.plants.Earthroot; +import com.shatteredpixel.shatteredpixeldungeon.plants.Fadeleaf; +import com.shatteredpixel.shatteredpixeldungeon.plants.Firebloom; +import com.shatteredpixel.shatteredpixeldungeon.plants.Icecap; +import com.shatteredpixel.shatteredpixeldungeon.plants.Mageroyal; +import com.shatteredpixel.shatteredpixeldungeon.plants.Rotberry; +import com.shatteredpixel.shatteredpixeldungeon.plants.Sorrowmoss; +import com.shatteredpixel.shatteredpixeldungeon.plants.Starflower; +import com.shatteredpixel.shatteredpixeldungeon.plants.Stormvine; +import com.shatteredpixel.shatteredpixeldungeon.plants.Sungrass; +import com.shatteredpixel.shatteredpixeldungeon.plants.Swiftthistle; import com.watabou.utils.Bundle; import java.util.ArrayList; @@ -111,42 +156,44 @@ import java.util.Collection; import java.util.HashMap; import java.util.LinkedHashMap; +//contains all the game's various entities, mostly enemies, NPCS, and allies, but also traps and plants public enum Bestiary { - REGIONAL, BOSSES, UNIVERSAL, RARE, QUEST, NEUTRAL, - ALLY; //the journal tracks kills with allies, or quest completions, or shop purchases (eventually?) + ALLY, + TRAP, + PLANT; - //while this is all internally reported as kills, it's effectively 1 = seen for allies/NPCs - private LinkedHashMap, Integer> killCount = new LinkedHashMap<>(); + //tracks enemy kills, trap activations, plant tramples, or just sets to 1 for seen on allies + private LinkedHashMap, Integer> encounterCount = new LinkedHashMap<>(); //should only be used when initializing - private void addMobs( Class... mobs ){ - for (Class mob : mobs){ - killCount.put(mob, 0); + private void addEntities(Class... classes ){ + for (Class cls : classes){ + encounterCount.put(cls, 0); } } - public Collection> mobs(){ - return killCount.keySet(); + public Collection> entities(){ + return encounterCount.keySet(); } public String title(){ return Messages.get(this, name() + ".title"); } - public int totalMobs(){ - return killCount.size(); + public int totalEntities(){ + return encounterCount.size(); } public int totalSeen(){ int seenTotal = 0; - for (int count : killCount.values()){ + for (int count : encounterCount.values()){ if (count > 0) seenTotal++; } return seenTotal; @@ -154,78 +201,95 @@ public enum Bestiary { static { - REGIONAL.addMobs(Rat.class, Snake.class, Gnoll.class, Swarm.class, Crab.class, Slime.class, + REGIONAL.addEntities(Rat.class, Snake.class, Gnoll.class, Swarm.class, Crab.class, Slime.class, Skeleton.class, Thief.class, DM100.class, Guard.class, Necromancer.class, Bat.class, Brute.class, Shaman.RedShaman.class, Shaman.BlueShaman.class, Shaman.PurpleShaman.class, Spinner.class, DM200.class, Ghoul.class, Elemental.FireElemental.class, Elemental.FrostElemental.class, Elemental.ShockElemental.class, Warlock.class, Monk.class, Golem.class, RipperDemon.class, DemonSpawner.class, Succubus.class, Eye.class, Scorpio.class); - BOSSES.addMobs(Goo.class, + BOSSES.addEntities(Goo.class, Tengu.class, Pylon.class, DM300.class, DwarfKing.class, YogDzewa.Larva.class, YogFist.BurningFist.class, YogFist.SoiledFist.class, YogFist.RottingFist.class, YogFist.RustedFist.class,YogFist.BrightFist.class, YogFist.DarkFist.class, YogDzewa.class); - UNIVERSAL.addMobs(Wraith.class, Piranha.class, Mimic.class, GoldenMimic.class, Statue.class, GuardianTrap.Guardian.class, SentryRoom.Sentry.class); + UNIVERSAL.addEntities(Wraith.class, Piranha.class, Mimic.class, GoldenMimic.class, Statue.class, GuardianTrap.Guardian.class, SentryRoom.Sentry.class); - RARE.addMobs(Albino.class, CausticSlime.class, + RARE.addEntities(Albino.class, CausticSlime.class, Bandit.class, SpectralNecromancer.class, ArmoredBrute.class, DM201.class, Elemental.ChaosElemental.class, Senior.class, Acidic.class, TormentedSpirit.class, PhantomPiranha.class, CrystalMimic.class, EbonyMimic.class, ArmoredStatue.class); - QUEST.addMobs(FetidRat.class, GnollTrickster.class, GreatCrab.class, + QUEST.addEntities(FetidRat.class, GnollTrickster.class, GreatCrab.class, Elemental.NewbornFireElemental.class, RotLasher.class, RotHeart.class, CrystalWisp.class, CrystalGuardian.class, CrystalSpire.class, GnollGuard.class, GnollSapper.class, GnollGeomancer.class); - NEUTRAL.addMobs(Ghost.class, Shopkeeper.class, Wandmaker.class, Blacksmith.class, Imp.class, Sheep.class, RatKing.class, Bee.class); + NEUTRAL.addEntities(Ghost.class, RatKing.class, Shopkeeper.class, Wandmaker.class, Blacksmith.class, Imp.class, Sheep.class, Bee.class); - ALLY.addMobs(MirrorImage.class, PrismaticImage.class, + ALLY.addEntities(MirrorImage.class, PrismaticImage.class, DriedRose.GhostHero.class, - WandOfWarding.Ward.class, WandOfLivingEarth.EarthGuardian.class, WandOfRegrowth.Lotus.class, + WandOfWarding.Ward.class, WandOfLivingEarth.EarthGuardian.class, ShadowClone.ShadowAlly.class, SmokeBomb.NinjaLog.class, SpiritHawk.HawkAlly.class); + TRAP.addEntities(WornDartTrap.class, PoisonDartTrap.class, DisintegrationTrap.class, GatewayTrap.class, + ChillingTrap.class, BurningTrap.class, ShockingTrap.class, AlarmTrap.class, GrippingTrap.class, TeleportationTrap.class, OozeTrap.class, + FrostTrap.class, BlazingTrap.class, StormTrap.class, GuardianTrap.class, FlashingTrap.class, WarpingTrap.class, + ConfusionTrap.class, ToxicTrap.class, CorrosionTrap.class, + FlockTrap.class, SummoningTrap.class, WeakeningTrap.class, CursingTrap.class, + GeyserTrap.class, ExplosiveTrap.class, RockfallTrap.class, PitfallTrap.class, + DistortionTrap.class, DisarmingTrap.class, GrimTrap.class); + + PLANT.addEntities(Rotberry.class, Sungrass.class, Fadeleaf.class, Icecap.class, + Firebloom.class, Sorrowmoss.class, Swiftthistle.class, Blindweed.class, + Stormvine.class, Earthroot.class, Mageroyal.class, Starflower.class, + BlandfruitBush.class, + WandOfRegrowth.Dewcatcher.class, WandOfRegrowth.Seedpod.class, WandOfRegrowth.Lotus.class); + } - public static int killCount(Class mobClass) { + public static int encounterCount(Class cls) { for (Bestiary cat : values()) { - if (cat.killCount.containsKey(mobClass)) { - return cat.killCount.get(mobClass); + if (cat.encounterCount.containsKey(cls)) { + return cat.encounterCount.get(cls); } } return 0; } - public static boolean isSeen(Class mobClass){ - return killCount(mobClass) > 0; + public static boolean isSeen(Class cls){ + return encounterCount(cls) > 0; } - //some mobs have different internal classes when they are minions, so need to convert here - private static final HashMap, Class> minionConversions = new HashMap<>(); + //some mobs and traps have different internal classes in some cases, so need to convert here + private static final HashMap, Class> classConversions = new HashMap<>(); static { - minionConversions.put(CorpseDust.DustWraith.class, Wraith.class); + classConversions.put(CorpseDust.DustWraith.class, Wraith.class); - minionConversions.put(Necromancer.NecroSkeleton.class, Skeleton.class); + classConversions.put(Necromancer.NecroSkeleton.class, Skeleton.class); - minionConversions.put(DwarfKing.DKGhoul.class, Ghoul.class); - minionConversions.put(DwarfKing.DKWarlock.class, Warlock.class); - minionConversions.put(DwarfKing.DKMonk.class, Monk.class); - minionConversions.put(DwarfKing.DKGolem.class, Golem.class); + classConversions.put(TenguDartTrap.class, PoisonDartTrap.class); + classConversions.put(GnollRockfallTrap.class, RockfallTrap.class); - minionConversions.put(YogDzewa.YogRipper.class, RipperDemon.class); - minionConversions.put(YogDzewa.YogEye.class, Eye.class); - minionConversions.put(YogDzewa.YogScorpio.class, Scorpio.class); + classConversions.put(DwarfKing.DKGhoul.class, Ghoul.class); + classConversions.put(DwarfKing.DKWarlock.class, Warlock.class); + classConversions.put(DwarfKing.DKMonk.class, Monk.class); + classConversions.put(DwarfKing.DKGolem.class, Golem.class); + + classConversions.put(YogDzewa.YogRipper.class, RipperDemon.class); + classConversions.put(YogDzewa.YogEye.class, Eye.class); + classConversions.put(YogDzewa.YogScorpio.class, Scorpio.class); } public static boolean setSeen(Class mobClass){ - if (minionConversions.containsKey(mobClass)){ - mobClass = minionConversions.get(mobClass); + if (classConversions.containsKey(mobClass)){ + mobClass = classConversions.get(mobClass); } for (Bestiary cat : values()) { - if (cat.killCount.containsKey(mobClass)) { - if (cat.killCount.get(mobClass) == 0){ - cat.killCount.put(mobClass, 1); + if (cat.encounterCount.containsKey(mobClass)) { + if (cat.encounterCount.get(mobClass) == 0){ + cat.encounterCount.put(mobClass, 1); Journal.saveNeeded = true; } } @@ -233,14 +297,14 @@ public enum Bestiary { return false; } - public static void trackKill(Class mobClass){ - if (minionConversions.containsKey(mobClass)){ - mobClass = minionConversions.get(mobClass); + public static void trackEncounter(Class mobClass){ + if (classConversions.containsKey(mobClass)){ + mobClass = classConversions.get(mobClass); } for (Bestiary cat : values()) { - if (cat.killCount.containsKey(mobClass)) { - if (cat.killCount.get(mobClass) != Integer.MAX_VALUE){ - cat.killCount.put(mobClass, cat.killCount.get(mobClass)+1); + if (cat.encounterCount.containsKey(mobClass)) { + if (cat.encounterCount.get(mobClass) != Integer.MAX_VALUE){ + cat.encounterCount.put(mobClass, cat.encounterCount.get(mobClass)+1); Journal.saveNeeded = true; } } @@ -248,19 +312,18 @@ public enum Bestiary { } private static final String BESTIARY_CLASSES = "bestiary_classes"; - private static final String BESTIARY_KILLS = "bestiary_kills"; + private static final String BESTIARY_ENCOUNTERS = "bestiary_encounters"; public static void store( Bundle bundle ){ - Bundle bestiaryBundle = new Bundle(); ArrayList> classes = new ArrayList<>(); ArrayList kills = new ArrayList<>(); for (Bestiary cat : values()) { - for (Class mob : cat.mobs()) { - if (cat.killCount.get(mob) > 0){ + for (Class mob : cat.entities()) { + if (cat.encounterCount.get(mob) > 0){ classes.add(mob); - kills.add(cat.killCount.get(mob)); + kills.add(cat.encounterCount.get(mob)); } } } @@ -271,7 +334,7 @@ public enum Bestiary { } bundle.put( BESTIARY_CLASSES, classes.toArray(new Class[0]) ); - bundle.put( BESTIARY_KILLS, killsToStore ); + bundle.put( BESTIARY_ENCOUNTERS, killsToStore ); } @@ -279,12 +342,12 @@ public enum Bestiary { if (bundle.contains(BESTIARY_CLASSES)){ Class[] classes = bundle.getClassArray(BESTIARY_CLASSES); - int[] kills = bundle.getIntArray(BESTIARY_KILLS); + int[] kills = bundle.getIntArray(BESTIARY_ENCOUNTERS); for (int i = 0; i < classes.length; i++){ for (Bestiary cat : values()){ - if (cat.killCount.containsKey(classes[i])){ - cat.killCount.put(classes[i], kills[i]); + if (cat.encounterCount.containsKey(classes[i])){ + cat.encounterCount.put(classes[i], kills[i]); } } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/DistortionTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/DistortionTrap.java index 413b339ac..68175848b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/DistortionTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/DistortionTrap.java @@ -41,6 +41,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Statue; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Wraith; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.RatKing; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTeleportation; +import com.shatteredpixel.shatteredpixeldungeon.journal.Bestiary; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.watabou.utils.PathFinder; import com.watabou.utils.Random; @@ -155,6 +156,7 @@ public class DistortionTrap extends Trap{ if ((t = Dungeon.level.traps.get(mob.pos)) != null && t.active){ if (t.disarmedByActivation) t.disarm(); t.reveal(); + Bestiary.trackEncounter(t.getClass()); t.activate(); } ScrollOfTeleportation.appear(mob, mob.pos); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/FlockTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/FlockTrap.java index afa917830..9b4b62626 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/FlockTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/FlockTrap.java @@ -27,6 +27,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Sheep; import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter; import com.shatteredpixel.shatteredpixeldungeon.effects.Speck; +import com.shatteredpixel.shatteredpixeldungeon.journal.Bestiary; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.watabou.utils.BArray; import com.watabou.noosa.audio.Sample; @@ -66,6 +67,7 @@ public class FlockTrap extends Trap { if ((t = Dungeon.level.traps.get(i)) != null && t.active){ if (t.disarmedByActivation) t.disarm(); t.reveal(); + Bestiary.trackEncounter(t.getClass()); t.activate(); } Dungeon.level.occupyCell(sheep); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/SummoningTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/SummoningTrap.java index d83b7d409..9d6fd24b4 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/SummoningTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/SummoningTrap.java @@ -26,6 +26,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTeleportation; +import com.shatteredpixel.shatteredpixeldungeon.journal.Bestiary; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.watabou.utils.PathFinder; import com.watabou.utils.Random; @@ -92,6 +93,7 @@ public class SummoningTrap extends Trap { if ((t = Dungeon.level.traps.get(mob.pos)) != null && t.active){ if (t.disarmedByActivation) t.disarm(); t.reveal(); + Bestiary.trackEncounter(t.getClass()); t.activate(); } ScrollOfTeleportation.appear(mob, mob.pos); 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 3a69955c9..882575524 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 @@ -23,6 +23,7 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.traps; import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; +import com.shatteredpixel.shatteredpixeldungeon.journal.Bestiary; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.watabou.noosa.audio.Sample; @@ -93,6 +94,7 @@ public abstract class Trap implements Bundlable { } if (disarmedByActivation) disarm(); Dungeon.level.discover(pos); + Bestiary.trackEncounter(getClass()); activate(); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/plants/Plant.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/plants/Plant.java index b2ef7ec9e..0bded424a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/plants/Plant.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/plants/Plant.java @@ -34,6 +34,7 @@ import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter; import com.shatteredpixel.shatteredpixeldungeon.effects.particles.LeafParticle; import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfRegrowth; +import com.shatteredpixel.shatteredpixeldungeon.journal.Bestiary; import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; @@ -70,6 +71,7 @@ public abstract class Plant implements Bundlable { wither(); activate( ch ); + Bestiary.trackEncounter(getClass()); } public abstract void activate( Char ch );