diff --git a/core/src/main/assets/items.png b/core/src/main/assets/items.png index 4e002f762..44cc1786e 100644 Binary files a/core/src/main/assets/items.png and b/core/src/main/assets/items.png differ 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 5807246f4..5aa29440b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java @@ -27,7 +27,6 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Electricity; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.ToxicGas; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Adrenaline; -import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Barrier; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Bleeding; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Bless; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; @@ -166,9 +165,6 @@ public abstract class Char extends Actor { //attempt to find the buff that may have given the shield ShieldBuff buff = buff(Brimstone.BrimstoneShield.class); if (buff != null) legacySHLD -= buff.shielding(); - //pre beta-2.0, remove for full release - buff = buff(Barrier.class); - if (buff != null) legacySHLD -= buff.shielding(); if (legacySHLD > 0){ BrokenSeal.WarriorShield buff2 = buff(BrokenSeal.WarriorShield.class); if (buff != null) buff2.supercharge(legacySHLD); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Barrier.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Barrier.java index c3e9414f2..6e48aaedb 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Barrier.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Barrier.java @@ -25,7 +25,6 @@ import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; import com.watabou.noosa.Image; -import com.watabou.utils.Bundle; public class Barrier extends ShieldBuff { @@ -59,15 +58,6 @@ public class Barrier extends ShieldBuff { else target.sprite.remove(CharSprite.State.SHIELDED); } - @Override - public void restoreFromBundle( Bundle bundle ) { - super.restoreFromBundle( bundle ); - if (bundle.contains("level")) { - //TODO pre beta-2.0, remove in full release - shielding = bundle.getInt("level"); - } - } - @Override public int icon() { return BuffIndicator.ARMOR; 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 5d3261b3d..f822716f3 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 @@ -31,6 +31,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Adrenaline; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Amok; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Charm; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Corruption; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Hunger; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Preparation; @@ -50,7 +51,6 @@ import com.shatteredpixel.shatteredpixeldungeon.items.rings.Ring; import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfAccuracy; import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfWealth; import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfAggression; -import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfAvoidance; import com.shatteredpixel.shatteredpixeldungeon.levels.features.Chasm; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite; @@ -213,9 +213,8 @@ public abstract class Mob extends Char { //We are amoked and current enemy is the hero else if (buff( Amok.class ) != null && enemy == Dungeon.hero) newEnemy = true; - //We have avoidance and current enemy is what should be avoided - else if (buff(StoneOfAvoidance.Avoidance.class) != null - && buff(StoneOfAvoidance.Avoidance.class).object == enemy.id()) + //We are charmed and current enemy is what charmed us + else if (buff(Charm.class) != null && buff(Charm.class).object == enemy.id()) newEnemy = true; if ( newEnemy ) { @@ -266,9 +265,9 @@ public abstract class Mob extends Char { } - StoneOfAvoidance.Avoidance avoid = buff( StoneOfAvoidance.Avoidance.class ); - if (avoid != null){ - Char source = (Char)Actor.findById( avoid.object ); + Charm charm = buff( Charm.class ); + if (charm != null){ + Char source = (Char)Actor.findById( charm.object ); if (source != null && enemies.contains(source) && enemies.size() > 1){ enemies.remove(source); } 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 20d47f069..89bea45b2 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java @@ -86,9 +86,9 @@ 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.StoneOfAggression; import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfAugmentation; -import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfAvoidance; import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfBlast; import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfBlink; import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfClairvoyance; @@ -282,7 +282,7 @@ public class Generator { StoneOfAugmentation.class, //1 is sold in each shop StoneOfIntuition.class, //1 additional stone is also dropped on floors 1-3 StoneOfAggression.class, - StoneOfAvoidance.class, + StoneOfAffection.class, StoneOfBlast.class, StoneOfBlink.class, StoneOfClairvoyance.class, 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 a38096519..e7e84ca2c 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 @@ -32,9 +32,9 @@ import com.shatteredpixel.shatteredpixeldungeon.items.Recipe; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.UnstableSpellbook; 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.StoneOfAggression; import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfAugmentation; -import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfAvoidance; import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfBlast; import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfBlink; import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfClairvoyance; @@ -278,7 +278,7 @@ public abstract class Scroll extends Item { stones.put(ScrollOfTeleportation.class, StoneOfBlink.class); amnts.put(ScrollOfTeleportation.class, 2); - stones.put(ScrollOfTerror.class, StoneOfAvoidance.class); + stones.put(ScrollOfTerror.class, StoneOfAffection.class); amnts.put(ScrollOfTerror.class, 3); stones.put(ScrollOfTransmutation.class, StoneOfAugmentation.class); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfAvoidance.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfAffection.java similarity index 59% rename from core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfAvoidance.java rename to core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfAffection.java index 473cbbeac..f2d5c992c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfAvoidance.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfAffection.java @@ -25,68 +25,34 @@ import com.shatteredpixel.shatteredpixeldungeon.Assets; 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.FlavourBuff; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Charm; import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter; import com.shatteredpixel.shatteredpixeldungeon.effects.Speck; -import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.watabou.noosa.audio.Sample; -import com.watabou.utils.Bundle; import com.watabou.utils.PathFinder; -public class StoneOfAvoidance extends Runestone { +public class StoneOfAffection extends Runestone { { - image = ItemSpriteSheet.STONE_AVOIDANCE; + image = ItemSpriteSheet.STONE_AFFECTION; } @Override protected void activate(int cell) { - CellEmitter.center(cell).start( Speck.factory( Speck.CALM ), 0.3f, 3 ); - Sample.INSTANCE.play( Assets.SND_READ ); + CellEmitter.center(cell).start( Speck.factory( Speck.HEART ), 0.2f, 5 ); + Sample.INSTANCE.play( Assets.SND_CHARMS ); for (int i : PathFinder.NEIGHBOURS9){ Char ch = Actor.findChar( cell + i ); if (ch != null && ch.alignment == Char.Alignment.ENEMY){ - Buff.prolong(ch, Avoidance.class, Avoidance.DURATION).object = curUser.id(); + Buff.prolong(ch, Charm.class, 10f).object = curUser.id(); } } } - public static class Avoidance extends FlavourBuff { - - public static final float DURATION = 10f; - - public int object = 0; - - private static final String OBJECT = "object"; - - { - type = buffType.NEGATIVE; - announced = true; - } - - @Override - public void storeInBundle( Bundle bundle ) { - super.storeInBundle(bundle); - bundle.put(OBJECT, object); - } - - @Override - public void restoreFromBundle( Bundle bundle ) { - super.restoreFromBundle( bundle ); - object = bundle.getInt( OBJECT ); - } - - @Override - public String toString() { - return Messages.get(this, "name"); - } - - } - } 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 319067500..548334d84 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java @@ -450,7 +450,7 @@ public class ItemSpriteSheet { private static final int STONES = xy(1, 21); //16 slots public static final int STONE_AGGRESSION = STONES+0; public static final int STONE_AUGMENTATION = STONES+1; - public static final int STONE_AVOIDANCE = STONES+2; + public static final int STONE_AFFECTION = STONES+2; public static final int STONE_BLAST = STONES+3; public static final int STONE_BLINK = STONES+4; public static final int STONE_CLAIRVOYANCE = STONES+5; diff --git a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/items/items.properties b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/items/items.properties index c1a6f20b4..cdc9b675b 100644 --- a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/items/items.properties +++ b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/items/items.properties @@ -980,9 +980,8 @@ items.stones.stoneofaugmentation$wndaugment.defense=Defense items.stones.stoneofaugmentation$wndaugment.none=Remove Augmentation items.stones.stoneofaugmentation$wndaugment.cancel=Never mind -items.stones.stoneofavoidance.name=stone of avoidance -items.stones.stoneofavoidance.desc=When this stone is thrown near an enemy, it will afflict them with avoidance magic.\n\nAn enemy under the influence of avoidance will be forced to attack any of your allies instead of you, if any allies are nearby. -items.stones.stoneofavoidance$avoidance.name=Avoidance +items.stones.stoneofaffection.name=stone of affection +items.stones.stoneofaffection.desc=When this stone is thrown on 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.