From 9311cc298f60c8bedc08cb09a619405e7db0fd14 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Wed, 8 May 2024 12:24:41 -0400 Subject: [PATCH] v2.4.0: implemented the eye of newt trinket --- .../assets/messages/items/items.properties | 5 +- core/src/main/assets/sprites/items.png | Bin 23537 -> 23616 bytes .../shatteredpixeldungeon/Dungeon.java | 5 ++ .../items/Generator.java | 8 +- .../items/trinkets/EyeOfNewt.java | 70 ++++++++++++++++++ .../shatteredpixeldungeon/levels/Level.java | 37 +++++---- .../sprites/ItemSpriteSheet.java | 2 + 7 files changed, 109 insertions(+), 18 deletions(-) create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/trinkets/EyeOfNewt.java diff --git a/core/src/main/assets/messages/items/items.properties b/core/src/main/assets/messages/items/items.properties index 3eaea3ef4..ff29d2cbd 100644 --- a/core/src/main/assets/messages/items/items.properties +++ b/core/src/main/assets/messages/items/items.properties @@ -1301,7 +1301,10 @@ items.trinkets.dimensionalsundial.warning=Your sundial isn't casting a shadow, y items.trinkets.dimensionalsundial.desc=This small handheld sundial is somehow able to cast a shadow in the depths of the dungeon, even if you aren't holding it upright. Even more strangely, the shadow's position seems to have no relation to the sun in this world. When no shadow is cast, the sundial seems to attract danger.\n\nAt its current level, this trinket will increase the spawning rate of enemies by _%d%%_ when it is nighttime in real life (9pm to 7am).\n\nThis trinket costs relatively little energy to upgrade. items.trinkets.exoticcrystals.name=exotic crystals -items.trinkets.exoticcrystals.desc=These small pink crystals have the same shape as crystals of alchemical energy. While they can't be used for energy directly, they seem to be somehow influencing the potions and scrolls you find.\n\nAt its current level this trinket will replace _%d%%_ of potion or scroll drops with their exotic equivalents. This does not affect potions of strength, scrolls of upgrade, or items that are generated to help solve hazard rooms. +items.trinkets.exoticcrystals.desc=These small pink crystals have the same shape as crystals of alchemical energy. While they can't be used for energy directly, they seem to be somehow influencing the potions and scrolls you find.\n\nAt its current level this trinket will replace _%s%%_ of potion or scroll drops with their exotic equivalents. This does not affect potions of strength, scrolls of upgrade, or items that are generated to help solve hazard rooms. + +items.trinkets.eyeofnewt.name=eye of newt +items.trinkets.eyeofnewt.desc=This golden and black newt's eye is a common ingredient, now enhanced into a trinket. The eye seems to be reducing your vision in exchange for letting you see things in other ways.\n\nAt its current level this trinket will reduce your vision range by _%1$s%%_, but will also grant you mind vision on enemies within _%2$d_ tiles. items.trinkets.mimictooth.name=mimic tooth items.trinkets.mimictooth.desc=This large sharp tooth must have been pulled from a very unhappy mimic. It seems to be influencing the mimics of the dungeon, making them more frequent and dangerous.\n\nAt its current level this trinket will make all kinds of mimic _%1$sx_ more common, will make mimics much more difficult to detect, and will give each floor a _%2$s%%_ chance to contain an ebony mimic. diff --git a/core/src/main/assets/sprites/items.png b/core/src/main/assets/sprites/items.png index 7cab0ebe175b2f615c8a29e6f7f5c82370ca2e01..5752637074f7527791635a70dfb67ccfadc61b5c 100644 GIT binary patch delta 22175 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 + */ + +package com.shatteredpixel.shatteredpixeldungeon.items.trinkets; + +import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; +import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; + +public class EyeOfNewt extends Trinket { + + { + image = ItemSpriteSheet.EYE_OF_NEWT; + } + + @Override + protected int upgradeEnergyCost() { + //5 -> 8(13) -> 10(23) -> 12(35) + return 6+2*level(); + } + + @Override + public String desc() { + return Messages.get(this, "desc", + Messages.decimalFormat("#.##", 100*(1f-visionRangeMultiplier(buffedLvl()))), + mindVisionRange(buffedLvl())); + } + + public static float visionRangeMultiplier(){ + return visionRangeMultiplier(trinketLevel(EyeOfNewt.class)); + } + + public static float visionRangeMultiplier( int level ){ + if (level < 0){ + return 1; + } else { + return 0.875f - 0.125f*level; + } + } + + public static int mindVisionRange(){ + return mindVisionRange(trinketLevel(EyeOfNewt.class)); + } + + public static int mindVisionRange( int level ){ + if (level < 0){ + return 0; + } else { + return 2+level; + } + } + +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java index 44da2fd4f..8d4efd2d7 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java @@ -68,6 +68,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfStrength; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfUpgrade; import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfEnchantment; import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfIntuition; +import com.shatteredpixel.shatteredpixeldungeon.items.trinkets.EyeOfNewt; import com.shatteredpixel.shatteredpixeldungeon.items.trinkets.MimicTooth; import com.shatteredpixel.shatteredpixeldungeon.items.trinkets.MossyClump; import com.shatteredpixel.shatteredpixeldungeon.items.trinkets.DimensionalSundial; @@ -1286,13 +1287,14 @@ public abstract class Level implements Bundlable { if (blocking == null){ blocking = Dungeon.level.losBlocking; } - - int viewDist = c.viewDistance; + + float viewDist = c.viewDistance; if (c instanceof Hero){ viewDist *= 1f + 0.25f*((Hero) c).pointsInTalent(Talent.FARSIGHT); + viewDist *= EyeOfNewt.visionRangeMultiplier(); } - ShadowCaster.castShadow( cx, cy, width(), fieldOfView, blocking, viewDist ); + ShadowCaster.castShadow( cx, cy, width(), fieldOfView, blocking, Math.round(viewDist) ); } else { BArray.setFalse(fieldOfView); } @@ -1364,17 +1366,24 @@ public abstract class Level implements Bundlable { heroMindFov[mob.pos + i] = true; } } - } else if (((Hero) c).hasTalent(Talent.HEIGHTENED_SENSES)) { - Hero h = (Hero) c; - int range = 1+h.pointsInTalent(Talent.HEIGHTENED_SENSES); - for (Mob mob : mobs) { - if (stealthyMimics && mob instanceof Mimic && mob.alignment == Char.Alignment.NEUTRAL){ - continue; - } - int p = mob.pos; - if (!fieldOfView[p] && distance(c.pos, p) <= range) { - for (int i : PathFinder.NEIGHBOURS9) { - heroMindFov[mob.pos + i] = true; + } else { + + int mindVisRange = 0; + if (((Hero) c).hasTalent(Talent.HEIGHTENED_SENSES)){ + mindVisRange = 1+((Hero) c).pointsInTalent(Talent.HEIGHTENED_SENSES); + } + mindVisRange = Math.max(mindVisRange, EyeOfNewt.mindVisionRange()); + + if (mindVisRange >= 1) { + for (Mob mob : mobs) { + if (stealthyMimics && mob instanceof Mimic && mob.alignment == Char.Alignment.NEUTRAL) { + continue; + } + int p = mob.pos; + if (!fieldOfView[p] && distance(c.pos, p) <= mindVisRange) { + for (int i : PathFinder.NEIGHBOURS9) { + heroMindFov[mob.pos + i] = true; + } } } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java index c9ddc23c0..1553090fd 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java @@ -482,6 +482,7 @@ public class ItemSpriteSheet { public static final int TRAP_MECHANISM = TRINKETS+7; public static final int MIMIC_TOOTH = TRINKETS+8; public static final int WONDROUS_RESIN = TRINKETS+9; + public static final int EYE_OF_NEWT = TRINKETS+10; static{ assignItemRect(RAT_SKULL, 16, 11); assignItemRect(PARCHMENT_SCRAP, 10, 14); @@ -493,6 +494,7 @@ public class ItemSpriteSheet { assignItemRect(TRAP_MECHANISM, 13, 15); assignItemRect(MIMIC_TOOTH, 8, 15); assignItemRect(WONDROUS_RESIN, 12, 11); + assignItemRect(EYE_OF_NEWT, 12, 12); } private static final int SCROLLS = xy(1, 19); //16 slots