diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Regeneration.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Regeneration.java index 4802abc4e..aa05e5234 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Regeneration.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Regeneration.java @@ -86,6 +86,23 @@ public class Regeneration extends Buff { return true; } + + //helper method for resetting the delay when salt cube buff changes, to counter exploits + public void resetDelay( SaltCube cube ){ + ChaliceOfBlood.chaliceRegen regenBuff = Dungeon.hero.buff( ChaliceOfBlood.chaliceRegen.class); + float delay = REGENERATION_DELAY; + if (regenBuff != null && target.buff(MagicImmune.class) == null) { + if (regenBuff.isCursed()) { + delay *= 1.5f; + } else { + //15% boost at +0, scaling to a 500% boost at +10 + delay -= 1.33f + regenBuff.itemLevel()*0.667f; + delay /= RingOfEnergy.artifactChargeMultiplier(target); + } + } + delay /= SaltCube.healthRegenMultiplier(cube.level()); + postpone( delay ); + } public int regencap(){ return target.HT; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/trinkets/SaltCube.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/trinkets/SaltCube.java index 27e9618b2..7fb197752 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/trinkets/SaltCube.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/trinkets/SaltCube.java @@ -21,6 +21,10 @@ package com.shatteredpixel.shatteredpixeldungeon.items.trinkets; +import com.shatteredpixel.shatteredpixeldungeon.Dungeon; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Regeneration; +import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; @@ -36,6 +40,19 @@ public class SaltCube extends Trinket { return 6+2*level(); } + @Override + protected void onDetach() { + //resets regen delay to counter exploits involving juggling the salt cube. + Buff.affect(Dungeon.hero, Regeneration.class).resetDelay(this); + } + + @Override + public boolean doPickUp(Hero hero, int pos) { + //resets regen delay to counter exploits involving juggling the salt cube. + Buff.affect(Dungeon.hero, Regeneration.class).resetDelay(this); + return super.doPickUp(hero, pos); + } + @Override public String statsDesc() { if (isIdentified()){