v1.4.0: implemented a brimstone effect for ring of arcana

This commit is contained in:
Evan Debenham
2022-08-17 18:55:57 -04:00
parent c208c55369
commit 68ec7c4296

View File

@@ -31,10 +31,12 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Thief;
import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ElmoParticle;
import com.shatteredpixel.shatteredpixeldungeon.items.Heap;
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.items.armor.glyphs.Brimstone;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.TimekeepersHourglass;
import com.shatteredpixel.shatteredpixeldungeon.items.food.ChargrilledMeat;
import com.shatteredpixel.shatteredpixeldungeon.items.food.FrozenCarpaccio;
import com.shatteredpixel.shatteredpixeldungeon.items.food.MysteryMeat;
import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfArcana;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.Scroll;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
@@ -170,6 +172,23 @@ public class Burning extends Buff implements Hero.Doom {
}
public void reignite( Char ch, float duration ) {
if (ch.isImmune(Burning.class)){
//TODO this only works for the hero, not others who can have brimstone+arcana effect
// e.g. prismatic image, shadow clone
if (ch instanceof Hero
&& ((Hero) ch).belongings.armor() != null
&& ((Hero) ch).belongings.armor().hasGlyph(Brimstone.class, ch)){
//has a 2*boost/50% chance to generate 1 shield per turn, to a max of 4x boost
float shieldChance = 2*(RingOfArcana.enchantPowerMultiplier(ch) - 1f);
int shieldCap = Math.round(shieldChance*4f);
if (shieldCap > 0 && Random.Float() < shieldChance){
Barrier barrier = Buff.affect(ch, Barrier.class);
if (barrier.shielding() < shieldCap){
barrier.incShield(1);
}
}
}
}
left = duration;
}