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 9b12ff1ea..62b9c68b9 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java @@ -52,6 +52,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.ShieldBuff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Slow; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Speed; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Stamina; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Terror; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Vertigo; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass; @@ -326,6 +327,14 @@ public abstract class Char extends Actor { if (!isAlive() || dmg < 0) { return; } + Terror t = buff(Terror.class); + if (t != null){ + t.recover(); + } + Charm c = buff(Charm.class); + if (c != null){ + c.recover(); + } if (this.buff(Frost.class) != null){ Buff.detach( this, Frost.class ); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Charm.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Charm.java index 286726ebe..0f23aa82c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Charm.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Charm.java @@ -63,7 +63,15 @@ public class Charm extends FlavourBuff { } @Override + //TODO public String desc() { return Messages.get(this, "desc", dispTurns()); } + + public void recover() { + spend(-5f); + if (cooldown() <= 0){ + detach(); + } + } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Terror.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Terror.java index 3265b38e3..4614817b0 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Terror.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Terror.java @@ -21,15 +21,12 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.buffs; -import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; import com.watabou.utils.Bundle; public class Terror extends FlavourBuff { - public static final float DURATION = 10f; - public int object = 0; private static final String OBJECT = "object"; @@ -61,14 +58,15 @@ public class Terror extends FlavourBuff { } @Override + //TODO public String desc() { return Messages.get(this, "desc", dispTurns()); } - public static void recover( Char target ) { - Terror terror = target.buff( Terror.class ); - if (terror != null && terror.cooldown() < DURATION) { - target.remove( terror ); + public void recover() { + spend(-5f); + if (cooldown() <= 0){ + detach(); } } } 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 a3bae7a19..a640af8fc 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 @@ -545,8 +545,6 @@ public abstract class Mob extends Char { @Override public void damage( int dmg, Object src ) { - Terror.recover( this ); - if (state == SLEEPING) { state = WANDERING; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Succubus.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Succubus.java index c968d6c54..9a7a10142 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Succubus.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Succubus.java @@ -40,6 +40,7 @@ import com.watabou.utils.Random; import java.util.ArrayList; +//TODO desc changes public class Succubus extends Mob { private static final int BLINK_DELAY = 5; @@ -71,8 +72,13 @@ public class Succubus extends Mob { public int attackProc( Char enemy, int damage ) { damage = super.attackProc( enemy, damage ); - if (Random.Int( 3 ) == 0) { - Buff.affect( enemy, Charm.class, Random.IntRange( 3, 7 ) ).object = id(); + if (enemy.buff(Charm.class) != null ){ + HP = Math.min(HT, HP + damage); + sprite.emitter().burst( Speck.factory( Speck.HEALING ), 2 ); + Sample.INSTANCE.play( Assets.SND_CHARMS ); + } else if (Random.Int( 3 ) == 0) { + //attack will reduce by 5 turns, so effectively 3-6 turns + Buff.affect( enemy, Charm.class, Random.IntRange( 3, 6 ) + 5 ).object = id(); enemy.sprite.centerEmitter().start( Speck.factory( Speck.HEART ), 0.2f, 5 ); Sample.INSTANCE.play( Assets.SND_CHARMS ); } @@ -138,5 +144,6 @@ public class Succubus extends Mob { { immunities.add( Sleep.class ); + immunities.add( Charm.class ); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/glyphs/Affection.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/glyphs/Affection.java index 4b5594470..b7c5cbb59 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/glyphs/Affection.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/glyphs/Affection.java @@ -42,7 +42,7 @@ public class Affection extends Glyph { if (Random.Int( level / 2 + 10 ) >= 9) { - int duration = Random.IntRange( 2, 5 ); + int duration = Random.IntRange( 4, 12 ); Buff.affect( attacker, Charm.class, duration ).object = defender.id(); attacker.sprite.centerEmitter().start( Speck.factory( Speck.HEART ), 0.2f, 5 ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfTerror.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfTerror.java index 9f19da621..a4d6d1a38 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfTerror.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfTerror.java @@ -50,7 +50,7 @@ public class ScrollOfTerror extends Scroll { Mob affected = null; for (Mob mob : Dungeon.level.mobs.toArray( new Mob[0] )) { if (Dungeon.level.heroFOV[mob.pos]) { - Buff.affect( mob, Terror.class, Terror.DURATION ).object = curUser.id(); + Buff.affect( mob, Terror.class, 20f ).object = curUser.id(); if (mob.buff(Terror.class) != null){ count++; @@ -81,8 +81,8 @@ public class ScrollOfTerror extends Scroll { if (Dungeon.level.heroFOV[mob.pos]) { Terror t = mob.buff(Terror.class); if (t != null){ - Buff.prolong(mob, Terror.class, Terror.DURATION*1.5f); - Buff.affect(mob, Paralysis.class, Terror.DURATION*.5f); + Buff.prolong(mob, Terror.class, 15f); + Buff.affect(mob, Paralysis.class, 5f); } } } 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 1c3f796ff..255cd3c4d 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 @@ -103,8 +103,7 @@ public class WandOfTransfusion extends Wand { //charms an enemy } else { - Buff.affect(ch , Charm.class, 5 + level() ).object = curUser.id(); - Buff.affect(curUser , Charm.class, 5 ).object = ch.id(); + Buff.affect(ch , Charm.class, 4 + level() ).object = curUser.id(); ch.sprite.centerEmitter().start( Speck.factory( Speck.HEART ), 0.2f, 5 ); curUser.sprite.centerEmitter().start( Speck.factory( Speck.HEART ), 0.2f, 5 ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/curses/Friendly.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/curses/Friendly.java index 886d6e141..4c6a9d6e4 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/curses/Friendly.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/curses/Friendly.java @@ -38,10 +38,13 @@ public class Friendly extends Weapon.Enchantment { if (Random.Int(10) == 0){ - Buff.affect( attacker, Charm.class, Random.IntRange(9, 15) ).object = defender.id(); + int base = Random.IntRange(3, 5); + + Buff.affect( attacker, Charm.class, base + 10 ).object = defender.id(); attacker.sprite.centerEmitter().start( Speck.factory( Speck.HEART ), 0.2f, 5 ); - Buff.affect( defender, Charm.class, Random.IntRange(3, 5) ).object = attacker.id(); + //5 turns will be reduced by the attack, so effectively lasts for base turns + Buff.affect( defender, Charm.class, base + 5 ).object = attacker.id(); defender.sprite.centerEmitter().start( Speck.factory( Speck.HEART ), 0.2f, 5 ); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/enchantments/Eldritch.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/enchantments/Eldritch.java index 21fc62263..02a6a050f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/enchantments/Eldritch.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/enchantments/Eldritch.java @@ -47,7 +47,8 @@ public class Eldritch extends Weapon.Enchantment { if (defender == Dungeon.hero) { Buff.affect( defender, Vertigo.class, Vertigo.DURATION ); } else { - Buff.affect( defender, Terror.class, Terror.DURATION ).object = attacker.id(); + //damage will reduce by 5 turns, so effectively 10 turns of terror + Buff.affect( defender, Terror.class, 10f + 5f ).object = attacker.id(); } }