From 86e5e4181e7ad6b18dd6e0b0fa648f27a655b552 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Fri, 30 Jul 2021 22:00:46 -0400 Subject: [PATCH] v0.9.4: rebalanced runestones that now have reduced quantity: - stone of flock AOE up to 5x5, duration slightly up - stone of clairvoyance AOE up to 20x20, from 12x12 - stone of aggression duration against enemies up 5, now works on bosses, and always forces attacking - stone of deepend sleep is now stone of deep sleep, puts one enemy into magical sleep - stone of affection is now stone of fear, fears one target for 20 turns - stone of intuition can now be used twice if the guess was correct --- .../assets/messages/items/items.properties | 15 ++++----- core/src/main/assets/sprites/items.png | Bin 19909 -> 19913 bytes .../ShatteredPixelDungeon.java | 8 +++++ .../shatteredpixeldungeon/actors/Char.java | 2 +- .../actors/mobs/Mob.java | 11 ++++--- .../items/Generator.java | 9 +++--- .../items/scrolls/Scroll.java | 8 ++--- .../items/stones/StoneOfAggression.java | 4 +-- .../items/stones/StoneOfClairvoyance.java | 2 +- ...epenedSleep.java => StoneOfDeepSleep.java} | 27 +++++++--------- ...StoneOfAffection.java => StoneOfFear.java} | 27 ++++++++-------- .../items/stones/StoneOfFlock.java | 29 +++++++++--------- .../items/stones/StoneOfIntuition.java | 14 +++++++++ 13 files changed, 88 insertions(+), 68 deletions(-) rename core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/{StoneOfDeepenedSleep.java => StoneOfDeepSleep.java} (80%) rename core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/{StoneOfAffection.java => StoneOfFear.java} (71%) diff --git a/core/src/main/assets/messages/items/items.properties b/core/src/main/assets/messages/items/items.properties index 1308c4e47..b48b2c1b3 100644 --- a/core/src/main/assets/messages/items/items.properties +++ b/core/src/main/assets/messages/items/items.properties @@ -1076,7 +1076,7 @@ items.stones.inventorystone.ac_use=USE items.stones.runestone$placeholder.name=runestone items.stones.stoneofaggression.name=stone of aggression -items.stones.stoneofaggression.desc=When this stone is thrown at an ally or enemy, all nearby enemies will be forced to attack that character for a short time.\n\nWhen used on enemies, the magic will only last for a few moments, but when used on yourself or allies it will last significantly longer. Powerful enemies will resist the effect as well. +items.stones.stoneofaggression.desc=When this stone is thrown at an ally or enemy, all nearby enemies will be forced to attack that character for a short time.\n\nWhen used on enemies, the magic will only last for a few turns, but when used on yourself or allies it will last significantly longer. items.stones.stoneofaggression$aggression.name=Targeted items.stones.stoneofaugmentation.name=stone of augmentation @@ -1090,9 +1090,6 @@ items.stones.stoneofaugmentation$wndaugment.defense=Defense items.stones.stoneofaugmentation$wndaugment.none=Remove Augmentation items.stones.stoneofaugmentation$wndaugment.cancel=Never mind -items.stones.stoneofaffection.name=stone of affection -items.stones.stoneofaffection.desc=When this stone is thrown on or next to an enemy they will be temporarily charmed, and will attempt to target your allies instead of you. - items.stones.stoneofblast.name=stone of blast items.stones.stoneofblast.desc=This runestone will instantly explode at the location it is thrown to. Just like a bomb, the explosion will deal damage to anything nearby. @@ -1102,8 +1099,8 @@ items.stones.stoneofblink.desc=This runestone will teleport the user to the loca items.stones.stoneofclairvoyance.name=stone of clairvoyance items.stones.stoneofclairvoyance.desc=This stone will instantly reveal all tiles in a very wide area around where it is thrown. Its effect will even reach through walls. -items.stones.stoneofdeepenedsleep.name=stone of deepened sleep -items.stones.stoneofdeepenedsleep.desc=When this stone is thrown near a sleeping enemy, it will magically deepen their sleep. Magically slept enemies will sleep forever until disturbed. +items.stones.stoneofdeepsleep.name=stone of deep sleep +items.stones.stoneofdeepsleep.desc=When this stone is thrown at an enemy, it will put them into a deep magical sleep. Magically slept enemies will sleep forever until disturbed. items.stones.stoneofdisarming.name=stone of disarming items.stones.stoneofdisarming.desc=This runestone holds magic that can disable malicious traps hidden throughout the dungeon. It will disarm up to 9 traps around the area it is thrown at. @@ -1114,14 +1111,18 @@ items.stones.stoneofenchantment.weapon=Your weapon glows in the darkness! items.stones.stoneofenchantment.armor=Your armor glows in the darkness! items.stones.stoneofenchantment.desc=This runestone possesses enchanting magic. Unlike a scroll of upgrade, it will not increase the direct power of an item, but will instead imbue a weapon or armor with an enchantment, granting it a new power. +items.stones.stoneoffear.name=stone of fear +items.stones.stoneoffear.desc=When this stone is thrown onto a character they will be overwhelmed with terror, and will turn and flee. Attacking a fleeing character will shorten the effect. + items.stones.stoneofflock.name=stone of flock items.stones.stoneofflock.desc=This runestone summons magical sheep for a short time around the location it is thrown to. items.stones.stoneofintuition.name=stone of intuition items.stones.stoneofintuition.inv_title=Select an item -items.stones.stoneofintuition.desc=This runestone holds a weaker version of the magic found in scrolls of identification. Rather than directly identifying an item, it will work on your intuition, allowing you to attempt to identify the type of a potion, scroll, or ring by guessing. +items.stones.stoneofintuition.desc=This runestone holds a weaker version of the magic found in scrolls of identification. Rather than directly identifying an item, it will work on your intuition, allowing you to attempt to identify the type of a potion, scroll, or ring by guessing. A correct guess will also preserve the magic in the stone, allowing it to be used a second time! items.stones.stoneofintuition$wndguess.text=Guess what the type of the unidentified item is. If you guess correctly, the type will be identified! items.stones.stoneofintuition$wndguess.correct=Correct. The item's type has been identified! +items.stones.stoneofintuition$wndguess.preserved=Your stone of intuition has been preserved! items.stones.stoneofintuition$wndguess.incorrect=Your guess was incorrect. items.stones.stoneofshock.name=stone of shock diff --git a/core/src/main/assets/sprites/items.png b/core/src/main/assets/sprites/items.png index 8262cf905fbf79cb799592bec1248258240559ab..6245d887903311c4a42144fe2b572985e17f0588 100644 GIT binary patch literal 19913 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 literal 19909 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 diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java index 957ee81f9..d811db33a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java @@ -46,6 +46,14 @@ public class ShatteredPixelDungeon extends Game { public ShatteredPixelDungeon( PlatformSupport platform ) { super( sceneClass == null ? WelcomeScene.class : sceneClass, platform ); + //v0.9.4 + com.watabou.utils.Bundle.addAlias( + com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfFear.class, + "com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfAffection" ); + com.watabou.utils.Bundle.addAlias( + com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfDeepSleep.class, + "com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfDeepenedSleep" ); + //v0.9.3 com.watabou.utils.Bundle.addAlias( com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Tengu.class, diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java index 06c28443c..00919d7ec 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java @@ -875,7 +875,7 @@ public abstract class Char extends Actor { public enum Property{ BOSS ( new HashSet( Arrays.asList(Grim.class, GrimTrap.class, ScrollOfRetribution.class, ScrollOfPsionicBlast.class)), - new HashSet( Arrays.asList(Corruption.class, StoneOfAggression.Aggression.class) )), + new HashSet( Arrays.asList(Corruption.class) )), MINIBOSS ( new HashSet(), new HashSet( Arrays.asList(Corruption.class) )), UNDEAD, 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 7ac2f99cb..b675f5df5 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 @@ -212,13 +212,16 @@ public abstract class Mob extends Char { } } - //if we are an enemy, and have no target or current target isn't affected by aggression - //then auto-prioritize a target that is affected by aggression, even another enemy - if (alignment == Alignment.ENEMY - && (enemy == null || enemy.buff(StoneOfAggression.Aggression.class) == null)) { + //if we are an alert enemy, auto-hunt a target that is affected by aggression, even another enemy + if (alignment == Alignment.ENEMY && state != PASSIVE && state != SLEEPING) { + if (enemy != null && enemy.buff(StoneOfAggression.Aggression.class) != null){ + state = HUNTING; + return enemy; + } for (Char ch : Actor.chars()) { if (ch != this && fieldOfView[ch.pos] && ch.buff(StoneOfAggression.Aggression.class) != null) { + state = HUNTING; return ch; } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java index e28fb06b9..919e01304 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java @@ -42,7 +42,6 @@ import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.SandalsOfNature; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.TalismanOfForesight; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.TimekeepersHourglass; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.UnstableSpellbook; -import com.shatteredpixel.shatteredpixeldungeon.items.bags.Bag; import com.shatteredpixel.shatteredpixeldungeon.items.food.Food; import com.shatteredpixel.shatteredpixeldungeon.items.food.MysteryMeat; import com.shatteredpixel.shatteredpixeldungeon.items.food.Pasty; @@ -85,13 +84,13 @@ import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTerror; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTransmutation; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfUpgrade; import com.shatteredpixel.shatteredpixeldungeon.items.stones.Runestone; -import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfAffection; +import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfFear; import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfAggression; import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfAugmentation; import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfBlast; import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfBlink; import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfClairvoyance; -import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfDeepenedSleep; +import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfDeepSleep; import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfDisarming; import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfEnchantment; import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfFlock; @@ -297,11 +296,11 @@ public class Generator { StoneOfFlock.class, StoneOfShock.class, StoneOfBlink.class, - StoneOfDeepenedSleep.class, + StoneOfDeepSleep.class, StoneOfClairvoyance.class, StoneOfAggression.class, StoneOfBlast.class, - StoneOfAffection.class, + StoneOfFear.class, StoneOfAugmentation.class //1 is sold in each shop }; STONE.defaultProbs = new float[]{ 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0 }; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/Scroll.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/Scroll.java index e915e6f3b..15221b021 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/Scroll.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/Scroll.java @@ -37,13 +37,13 @@ import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.UnstableSpellboo import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ExoticScroll; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ScrollOfAntiMagic; import com.shatteredpixel.shatteredpixeldungeon.items.stones.Runestone; -import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfAffection; +import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfFear; import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfAggression; import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfAugmentation; import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfBlast; import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfBlink; import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfClairvoyance; -import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfDeepenedSleep; +import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfDeepSleep; import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfDisarming; import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfEnchantment; import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfFlock; @@ -285,7 +285,7 @@ public abstract class Scroll extends Item { private static HashMap, Class> stones = new HashMap<>(); static { stones.put(ScrollOfIdentify.class, StoneOfIntuition.class); - stones.put(ScrollOfLullaby.class, StoneOfDeepenedSleep.class); + stones.put(ScrollOfLullaby.class, StoneOfDeepSleep.class); stones.put(ScrollOfMagicMapping.class, StoneOfClairvoyance.class); stones.put(ScrollOfMirrorImage.class, StoneOfFlock.class); stones.put(ScrollOfRetribution.class, StoneOfBlast.class); @@ -293,7 +293,7 @@ public abstract class Scroll extends Item { stones.put(ScrollOfRecharging.class, StoneOfShock.class); stones.put(ScrollOfRemoveCurse.class, StoneOfDisarming.class); stones.put(ScrollOfTeleportation.class, StoneOfBlink.class); - stones.put(ScrollOfTerror.class, StoneOfAffection.class); + stones.put(ScrollOfTerror.class, StoneOfFear.class); stones.put(ScrollOfTransmutation.class, StoneOfAugmentation.class); stones.put(ScrollOfUpgrade.class, StoneOfEnchantment.class); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfAggression.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfAggression.java index 129cb1726..baca46888 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfAggression.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfAggression.java @@ -49,7 +49,7 @@ public class StoneOfAggression extends Runestone { if (ch != null) { if (ch.alignment == Char.Alignment.ENEMY) { - Buff.prolong(ch, Aggression.class, Aggression.DURATION / 5f); + Buff.prolong(ch, Aggression.class, Aggression.DURATION / 4f); } else { Buff.prolong(ch, Aggression.class, Aggression.DURATION); } @@ -64,7 +64,7 @@ public class StoneOfAggression extends Runestone { } } - + public static class Aggression extends FlavourBuff { public static final float DURATION = 20f; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfClairvoyance.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfClairvoyance.java index 02468dbbb..e1c1bf5c8 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfClairvoyance.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfClairvoyance.java @@ -33,7 +33,7 @@ import com.watabou.utils.Point; public class StoneOfClairvoyance extends Runestone { - private static final int DIST = 12; + private static final int DIST = 20; { image = ItemSpriteSheet.STONE_CLAIRVOYANCE; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfDeepenedSleep.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfDeepSleep.java similarity index 80% rename from core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfDeepenedSleep.java rename to core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfDeepSleep.java index 3ca6eaf77..190d59b5d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfDeepenedSleep.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfDeepSleep.java @@ -33,7 +33,7 @@ import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.watabou.noosa.audio.Sample; import com.watabou.utils.PathFinder; -public class StoneOfDeepenedSleep extends Runestone { +public class StoneOfDeepSleep extends Runestone { { image = ItemSpriteSheet.STONE_SLEEP; @@ -41,22 +41,17 @@ public class StoneOfDeepenedSleep extends Runestone { @Override protected void activate(int cell) { - - for (int i : PathFinder.NEIGHBOURS9){ - - CellEmitter.get(cell + i).start( Speck.factory( Speck.NOTE ), 0.1f, 2 ); - - if (Actor.findChar(cell + i) != null) { - - Char c = Actor.findChar(cell + i); - - if ((c instanceof Mob && ((Mob) c).state == ((Mob) c).SLEEPING)){ - - Buff.affect(c, MagicalSleep.class); - - } - + + if (Actor.findChar(cell) != null) { + + Char c = Actor.findChar(cell); + + if (c instanceof Mob){ + + Buff.affect(c, MagicalSleep.class); + } + } Sample.INSTANCE.play( Assets.Sounds.LULLABY ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfAffection.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfFear.java similarity index 71% rename from core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfAffection.java rename to core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfFear.java index 9b82bcf1d..86b62e9d2 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfAffection.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfFear.java @@ -22,17 +22,21 @@ package com.shatteredpixel.shatteredpixeldungeon.items.stones; import com.shatteredpixel.shatteredpixeldungeon.Assets; +import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Charm; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Terror; import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter; +import com.shatteredpixel.shatteredpixeldungeon.effects.Flare; import com.shatteredpixel.shatteredpixeldungeon.effects.Speck; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; +import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonTilemap; import com.watabou.noosa.audio.Sample; import com.watabou.utils.PathFinder; -public class StoneOfAffection extends Runestone { +public class StoneOfFear extends Runestone { { image = ItemSpriteSheet.STONE_AFFECTION; @@ -40,20 +44,15 @@ public class StoneOfAffection extends Runestone { @Override protected void activate(int cell) { - - for (int i : PathFinder.NEIGHBOURS9){ - - CellEmitter.center(cell + i).start( Speck.factory( Speck.HEART ), 0.2f, 5 ); - - - Char ch = Actor.findChar( cell + i ); - - if (ch != null && ch.alignment == Char.Alignment.ENEMY){ - Buff.prolong(ch, Charm.class, Charm.DURATION).object = curUser.id(); - } + + Char ch = Actor.findChar( cell ); + + if (ch != null){ + Buff.affect( ch, Terror.class, Terror.DURATION ).object = curUser.id(); } - - Sample.INSTANCE.play( Assets.Sounds.CHARMS ); + + new Flare( 5, 16 ).color( 0xFF0000, true ).show(Dungeon.hero.sprite.parent, DungeonTilemap.tileCenterToWorld(cell), 2f ); + Sample.INSTANCE.play( Assets.Sounds.READ ); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfFlock.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfFlock.java index d60e2c6b4..b4ad4aa26 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfFlock.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfFlock.java @@ -29,6 +29,7 @@ import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter; import com.shatteredpixel.shatteredpixeldungeon.effects.Speck; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; +import com.shatteredpixel.shatteredpixeldungeon.utils.BArray; import com.watabou.noosa.audio.Sample; import com.watabou.utils.PathFinder; import com.watabou.utils.Random; @@ -44,20 +45,20 @@ public class StoneOfFlock extends Runestone { @Override protected void activate(int cell) { - - for (int i : PathFinder.NEIGHBOURS9){ - - if (!Dungeon.level.solid[cell + i] - && !Dungeon.level.pit[cell + i] - && Actor.findChar(cell + i) == null) { - - Sheep sheep = new Sheep(); - sheep.lifespan = Random.IntRange(5, 8); - sheep.pos = cell + i; - GameScene.add(sheep); - Dungeon.level.occupyCell(sheep); - - CellEmitter.get(sheep.pos).burst(Speck.factory(Speck.WOOL), 4); + + PathFinder.buildDistanceMap( cell, BArray.not( Dungeon.level.solid, null ), 2 ); + for (int i = 0; i < PathFinder.distance.length; i++) { + if (PathFinder.distance[i] < Integer.MAX_VALUE) { + if (Dungeon.level.insideMap(i) + && Actor.findChar(i) == null + && !(Dungeon.level.pit[i])) { + Sheep sheep = new Sheep(); + sheep.lifespan = Random.NormalIntRange( 6, 8 ); + sheep.pos = i; + Dungeon.level.occupyCell(sheep); + GameScene.add(sheep); + CellEmitter.get(i).burst(Speck.factory(Speck.WOOL), 4); + } } } CellEmitter.get(cell).burst(Speck.factory(Speck.WOOL), 4); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfIntuition.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfIntuition.java index 9567e396a..f354ffa05 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfIntuition.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfIntuition.java @@ -22,6 +22,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.stones; import com.shatteredpixel.shatteredpixeldungeon.Assets; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.effects.Identification; import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion; @@ -69,6 +70,8 @@ public class StoneOfIntuition extends InventoryStone { GameScene.show( new WndGuess(item)); } + + public static class IntuitionUseTracker extends Buff {{ revivePersists = true; }}; private static Class curGuess = null; @@ -104,7 +107,18 @@ public class StoneOfIntuition extends InventoryStone { } GLog.p( Messages.get(WndGuess.class, "correct") ); curUser.sprite.parent.add( new Identification( curUser.sprite.center().offset( 0, -16 ) ) ); + + if (curUser.buff(IntuitionUseTracker.class) == null){ + GLog.h( Messages.get(WndGuess.class, "preserved") ); + new StoneOfIntuition().collect(); + Buff.affect(curUser, IntuitionUseTracker.class); + } else { + curUser.buff(IntuitionUseTracker.class).detach(); + } } else { + if (curUser.buff(IntuitionUseTracker.class) != null) { + curUser.buff(IntuitionUseTracker.class).detach(); + } GLog.n( Messages.get(WndGuess.class, "incorrect") ); } curGuess = null;