diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfTransfusion.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfTransfusion.java index 2586562af..59b47e41d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfTransfusion.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfTransfusion.java @@ -67,18 +67,18 @@ public class WandOfTransfusion extends Wand { Char ch = Actor.findChar(cell); - if (ch != null && ch instanceof Mob){ + if (ch instanceof Mob){ - // 10% of max hp - int selfDmg = (int)Math.ceil(curUser.HT*0.10f); - processSoulMark(ch, chargesPerCast()); //this wand does different things depending on the target. - //heals/shields an ally, or a charmed enemy + //heals/shields an ally or a charmed enemy while damaging self if (ch.alignment == Char.Alignment.ALLY || ch.buff(Charm.class) != null){ + // 10% of max hp + int selfDmg = Math.round(curUser.HT*0.10f); + int healing = selfDmg + 3*level(); int shielding = (ch.HP + healing) - ch.HT; if (shielding > 0){ @@ -92,28 +92,31 @@ public class WandOfTransfusion extends Wand { ch.sprite.emitter().burst(Speck.factory(Speck.HEALING), 2 + level() / 2); ch.sprite.showStatus(CharSprite.POSITIVE, "+%dHP", healing + shielding); - - //harms the undead - } else if (ch.properties().contains(Char.Property.UNDEAD)){ - int damage = selfDmg + 3*level(); - ch.damage(damage, this); - ch.sprite.emitter().start(ShadowParticle.UP, 0.05f, 10 + level()); - Sample.INSTANCE.play(Assets.SND_BURNING); + if (!freeCharge) { + damageHero(selfDmg); + } else { + freeCharge = false; + } - //charms an enemy + //for enemies... } else { - Buff.affect(ch , Charm.class, 4 + level() ).object = curUser.id(); + //charms living enemies + if (!ch.properties().contains(Char.Property.UNDEAD)) { + Buff.affect(ch, Charm.class, 3 + level() / 2).object = curUser.id(); + ch.sprite.centerEmitter().start( Speck.factory( Speck.HEART ), 0.2f, 3 + level()/2 ); + + //harms the undead + } else { + ch.damage(Random.NormalIntRange(3 + level()/2, 6+level()), this); + ch.sprite.emitter().start(ShadowParticle.UP, 0.05f, 10 + level()); + Sample.INSTANCE.play(Assets.SND_BURNING); + } + + //and grants a self shield + Buff.affect(curUser, Barrier.class).setShield((5 + 2*level())); - ch.sprite.centerEmitter().start( Speck.factory( Speck.HEART ), 0.2f, 5 ); - - } - - if (!freeCharge) { - damageHero(selfDmg); - } else { - freeCharge = false; } } 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 94b392c91..20bfd3d8d 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 @@ -1127,7 +1127,7 @@ items.wands.wandoftransfusion.staff_name=staff of transfusion items.wands.wandoftransfusion.ondeath=You killed yourself with your own Wand of Transfusion... items.wands.wandoftransfusion.charged=Your staff is charged with the life energy of your enemy! items.wands.wandoftransfusion.desc=A fairly plainly shaped wand, it stands out due to its magenta hue and pitch black gem at the tip. -items.wands.wandoftransfusion.stats_desc=This wand will sap some of your life energy and blast it at a target. This effect is very versatile: allies will be healed or shielded, enemies will be temporarily charmed, and hostile undead will take considerable damage. +items.wands.wandoftransfusion.stats_desc=When used on allies, this wand saps some of your own health to heal or shield them. When used on enemies, the wand briefly charms them while pulling a bit of energy back to you. Hostile undead will be damaged instead of charmed. items.wands.wandofcorrosion.name=wand of corrosion items.wands.wandofcorrosion.staff_name=staff of corrosion