diff --git a/core/src/main/assets/messages/actors/actors.properties b/core/src/main/assets/messages/actors/actors.properties index b9a6c8402..0db0ff8f9 100644 --- a/core/src/main/assets/messages/actors/actors.properties +++ b/core/src/main/assets/messages/actors/actors.properties @@ -935,7 +935,7 @@ actors.hero.talent.enraged_catalyst.desc=_+1:_ Enchantments and curses on the Be actors.hero.talent.cleave.title=cleave actors.hero.talent.cleave.desc=_+1:_ When the Gladiator kills an enemy, the combo cooldown for his next hit is increased to _15 turns_.\n\n_+2:_ When the Gladiator kills an enemy, the combo cooldown for his next hit is increased to _30 turns_.\n\n_+3:_ When the Gladiator kills an enemy, the combo cooldown for his next hit is increased to _45 turns_. actors.hero.talent.lethal_defense.title=lethal defense -actors.hero.talent.lethal_defense.desc=_+1:_ When the Gladiator kills an enemy with a combo move, he gains _7 shielding_.\n\n_+2:_ When the Gladiator kills an enemy with a combo move, he gains _13 shielding_.\n\n_+3:_ When the Gladiator kills an enemy with a combo move, he gains _20 shielding_. +actors.hero.talent.lethal_defense.desc=_+1:_ When the Gladiator kills an enemy with a combo move, the cooldown on his broken seal shielding is _reduced by 33%_.\n\n_+2:_ When the Gladiator kills an enemy with a combo move, the cooldown on his broken seal shielding is _reduced by 67%_.\n\n_+3:_ When the Gladiator kills an enemy with a combo move, the cooldown on his broken seal shielding is _reduced by 100%_.\n\nThe shield cooldown can be reduced to at low as -100% this way, which means it will immediately be available again once it is activated. actors.hero.talent.enhanced_combo.title=enhanced combo actors.hero.talent.enhanced_combo.desc=_+1:_ When the Gladiator's combo is 7 or higher, Clobber's knockback range increases to 3, it inflicts vertigo, and it can knock enemies into pits.\n\n_+2:_ In addition to the benefits of +1, when the Gladiator's combo is 9 or higher Parry works on multiple attacks.\n\n_+3:_ In addition to the benefits of +1 and +2, the Gladiator can leap up to combo/3 tiles when using Slam, Crush, or Fury. diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Combo.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Combo.java index b78f338aa..4464622bf 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Combo.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Combo.java @@ -29,7 +29,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.DwarfKing; -import com.shatteredpixel.shatteredpixeldungeon.effects.FloatingText; +import com.shatteredpixel.shatteredpixeldungeon.items.BrokenSeal; import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfBlastWave; import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; @@ -410,10 +410,10 @@ public class Combo extends Buff implements ActionIndicator.Action { ch.sprite.bloodBurstA(target.sprite.center(), aoeHit); ch.sprite.flash(); - if (!ch.isAlive() && hero.hasTalent(Talent.LETHAL_DEFENSE)) { - int shieldToGive = Math.round(6.67f*hero.pointsInTalent(Talent.LETHAL_DEFENSE)); - hero.sprite.showStatusWithIcon(CharSprite.POSITIVE, Integer.toString(shieldToGive), FloatingText.SHIELDING); - Buff.affect(hero, Barrier.class).setShield(shieldToGive); + if (!ch.isAlive() + && hero.hasTalent(Talent.LETHAL_DEFENSE) + && hero.buff(BrokenSeal.WarriorShield.class) != null) { + hero.buff(BrokenSeal.WarriorShield.class).reduceCooldown(hero.pointsInTalent(Talent.LETHAL_DEFENSE)/3f); } } } @@ -466,9 +466,7 @@ public class Combo extends Buff implements ActionIndicator.Action { if (!enemy.isAlive() || (!wasAlly && enemy.alignment == target.alignment)) { if (hero.hasTalent(Talent.LETHAL_DEFENSE)){ - int shieldToGive = Math.round(6.67f * hero.pointsInTalent(Talent.LETHAL_DEFENSE)); - hero.sprite.showStatusWithIcon(CharSprite.POSITIVE, Integer.toString(shieldToGive), FloatingText.SHIELDING); - Buff.affect(hero, Barrier.class).setShield(shieldToGive); + hero.buff(BrokenSeal.WarriorShield.class).reduceCooldown(hero.pointsInTalent(Talent.LETHAL_DEFENSE)/3f); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/BrokenSeal.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/BrokenSeal.java index cdd0bba3c..800035424 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/BrokenSeal.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/BrokenSeal.java @@ -325,7 +325,6 @@ public class BrokenSeal extends Item { if (shielding() > 0){ if (Dungeon.hero.visibleEnemies() == 0){ turnsSinceEnemies++; - //TODO if (turnsSinceEnemies >= 5){ float percentLeft = shielding() / (float)maxShield(); cooldown -= COOLDOWN_START*(percentLeft/2f); //max of 50% cooldown refund @@ -345,21 +344,18 @@ public class BrokenSeal extends Item { } public synchronized void activate() { - setShield(maxShield()); - cooldown = COOLDOWN_START; + incShield(maxShield()); + cooldown += COOLDOWN_START; turnsSinceEnemies = 0; } public boolean coolingDown(){ return cooldown > 0; } - - public synchronized void supercharge(int maxShield){ - if (maxShield > shielding()){ - setShield(maxShield); - } - cooldown = COOLDOWN_START; - turnsSinceEnemies = 0; + + public void reduceCooldown(float percentage){ + cooldown -= Math.round(COOLDOWN_START*percentage); + cooldown = Math.max(cooldown, -COOLDOWN_START); } public synchronized void setArmor(Armor arm){