diff --git a/core/src/main/assets/messages/items/items.properties b/core/src/main/assets/messages/items/items.properties index de6faead5..66d60d3b3 100644 --- a/core/src/main/assets/messages/items/items.properties +++ b/core/src/main/assets/messages/items/items.properties @@ -1568,7 +1568,7 @@ items.weapon.melee.wornshortsword.desc=A quite short sword, worn down through he ###missile weapons items.weapon.missiles.darts.adrenalinedart.name=adrenaline dart -items.weapon.missiles.darts.adrenalinedart.desc=These darts are tipped with a swiftthistle-based compound which will give their target a boost in speed. This boost affects both speed of movement and of attacking, though movement is improved more. The dart itself is still harmful to enemies, but will not harm allies. +items.weapon.missiles.darts.adrenalinedart.desc=These darts are tipped with a swiftthistle-based compound which will boost the movement and attack speed of allies, or briefly lower the movement speed of enemies. The dart itself is still harmful to enemies, but will not harm allies. items.weapon.missiles.darts.blindingdart.name=blinding dart items.weapon.missiles.darts.blindingdart.desc=These darts are tipped with a blindweed-based compound which will blind their target for a short time. They do not disorient however, so an enemy will still know where they last saw you. @@ -1577,7 +1577,7 @@ items.weapon.missiles.darts.chillingdart.name=chilling dart items.weapon.missiles.darts.chillingdart.desc=These darts are tipped with an icecap-based compound which will significantly chill their target. items.weapon.missiles.darts.cleansingdart.name=cleansing dart -items.weapon.missiles.darts.cleansingdart.desc=These darts are tipped with a dreamfoil-based compound which will temporarily make their target immune to all negative effects. The dart itself is still harmful to enemies, but will not harm allies. +items.weapon.missiles.darts.cleansingdart.desc=These darts are tipped with a dreamfoil-based compound which will temporarily make allies immune to all negative effects, or will cleanse positive effects from enemies. Enemies may even briefly forget that they are attacking or fleeing from you. The dart itself is still harmful to enemies, but will not harm allies. items.weapon.missiles.darts.dart.name=dart items.weapon.missiles.darts.dart.ac_tip=TIP @@ -1598,7 +1598,7 @@ items.weapon.missiles.darts.healingdart.name=healing dart items.weapon.missiles.darts.healingdart.desc=These darts are tipped with a sungrass-based compound which grants a burst of healing to their target. The dart itself is still harmful to enemies, but will not harm allies. items.weapon.missiles.darts.holydart.name=holy dart -items.weapon.missiles.darts.holydart.desc=These darts are tipped with a starflower-based compound which grants a boost in power to their target. The dart itself is still harmful to enemies, but will not harm allies. +items.weapon.missiles.darts.holydart.desc=These darts are tipped with a starflower-based compound which infuses holy energy into their target. Allies and regular enemies will become blessed, but undead or demonic enemies will take heavy damage. The dart itself is still harmful to enemies, but will not harm allies. items.weapon.missiles.darts.incendiarydart.name=incendiary dart items.weapon.missiles.darts.incendiarydart.desc=These darts are tipped with a firebloom-based compound which will burst into brilliant flames on impact. diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/AdrenalineDart.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/AdrenalineDart.java index 109684c52..876f85f2a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/AdrenalineDart.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/AdrenalineDart.java @@ -24,6 +24,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Adrenaline; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Cripple; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; public class AdrenalineDart extends TippedDart { @@ -35,10 +36,11 @@ public class AdrenalineDart extends TippedDart { @Override public int proc(Char attacker, Char defender, int damage) { - Buff.prolong( defender, Adrenaline.class, 3*Adrenaline.DURATION); - if (attacker.alignment == defender.alignment){ + Buff.prolong( defender, Adrenaline.class, Adrenaline.DURATION); return 0; + } else { + Buff.prolong( defender, Cripple.class, Cripple.DURATION/2); } return super.proc(attacker, defender, damage); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/CleansingDart.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/CleansingDart.java index ca64b2f41..09f9f2fe7 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/CleansingDart.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/CleansingDart.java @@ -21,7 +21,12 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts; +import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.ChampionEnemy; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FlavourBuff; +import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob; import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.PotionOfCleansing; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; @@ -34,10 +39,29 @@ public class CleansingDart extends TippedDart { @Override public int proc(Char attacker, final Char defender, int damage) { - PotionOfCleansing.cleanse(defender, PotionOfCleansing.Cleanse.DURATION*2f); - if (attacker.alignment == defender.alignment){ + PotionOfCleansing.cleanse(defender, PotionOfCleansing.Cleanse.DURATION*2f); return 0; + } else { + for (Buff b : defender.buffs()){ + if (!(b instanceof ChampionEnemy) && b.type == Buff.buffType.POSITIVE){ + b.detach(); + } + } + if (defender instanceof Mob) { + //need to delay this so damage from the dart doesn't break wandering + new FlavourBuff(){ + {actPriority = VFX_PRIO;} + public boolean act() { + if (((Mob) defender).state == ((Mob) defender).HUNTING || ((Mob) defender).state == ((Mob) defender).FLEEING){ + ((Mob) defender).state = ((Mob) defender).WANDERING; + } + ((Mob) defender).beckon(Dungeon.level.randomDestination(defender)); + defender.sprite.showLost(); + return super.act(); + } + }.attachTo(defender); + } } return super.proc(attacker, defender, damage); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/HolyDart.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/HolyDart.java index 487e8ae81..f10bd1b57 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/HolyDart.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/HolyDart.java @@ -21,10 +21,15 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts; +import com.shatteredpixel.shatteredpixeldungeon.Assets; +import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Bless; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; +import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ShadowParticle; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; +import com.watabou.noosa.audio.Sample; +import com.watabou.utils.Random; public class HolyDart extends TippedDart { @@ -35,11 +40,18 @@ public class HolyDart extends TippedDart { @Override public int proc(Char attacker, Char defender, int damage) { - Buff.affect(defender, Bless.class, Math.round(3.33f*Bless.DURATION)); - if (attacker.alignment == defender.alignment){ + Buff.affect(defender, Bless.class, Math.round(Bless.DURATION)); return 0; } + + if (Char.hasProp(defender, Char.Property.UNDEAD) || Char.hasProp(defender, Char.Property.DEMONIC)){ + defender.sprite.emitter().start( ShadowParticle.UP, 0.05f, 10+buffedLvl() ); + Sample.INSTANCE.play(Assets.Sounds.BURNING); + defender.damage(Random.NormalIntRange(10 + Dungeon.depth/3, 20 + Dungeon.depth/3), this); + } else { + Buff.affect(defender, Bless.class, Math.round(Bless.DURATION)); + } return super.proc(attacker, defender, damage); }