diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/AdrenalineSurge.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/AdrenalineSurge.java index c9bdc14c7..163c0629f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/AdrenalineSurge.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/AdrenalineSurge.java @@ -32,7 +32,7 @@ public class AdrenalineSurge extends Buff { } private int boost; - private static final float INTERVAL = TICK * 500f; + private static final float INTERVAL = TICK * 800f; public void reset(){ boost = 2; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/MagicalSight.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/MagicalSight.java index 683743bee..6d34496f1 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/MagicalSight.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/MagicalSight.java @@ -29,7 +29,7 @@ import com.watabou.noosa.Image; public class MagicalSight extends FlavourBuff { - public static final float DURATION = 30f; + public static final float DURATION = 50f; public int distance = 8; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/PotionOfCorrosiveGas.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/PotionOfCorrosiveGas.java index 6c59d8c4b..2c70e3edf 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/PotionOfCorrosiveGas.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/PotionOfCorrosiveGas.java @@ -44,6 +44,6 @@ public class PotionOfCorrosiveGas extends ExoticPotion { Sample.INSTANCE.play( Assets.SND_SHATTER ); } - GameScene.add( Blob.seed( cell, 120, CorrosiveGas.class ).setStrength( 1 + Dungeon.depth/5)); + GameScene.add( Blob.seed( cell, 200, CorrosiveGas.class ).setStrength( 1 + Dungeon.depth/5)); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfDivination.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfDivination.java index 97c58a773..fa004cce8 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfDivination.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfDivination.java @@ -74,26 +74,43 @@ public class ScrollOfDivination extends ExoticScroll { ArrayList IDed = new ArrayList<>(); int left = 4; + float[] baseProbs = new float[]{3, 3, 3}; + float[] probs = baseProbs.clone(); + while (left > 0 && total > 0) { try { - switch (Random.Int(3)) { - case 0: + switch (Random.chances(probs)) { default: - if (potions.isEmpty()) continue; + probs = baseProbs.clone(); + continue; + case 0: + if (potions.isEmpty()) { + probs[0] = 0; + continue; + } + probs[0]--; Potion p = Random.element(potions).newInstance(); p.setKnown(); IDed.add(p); potions.remove(p.getClass()); break; case 1: - if (scrolls.isEmpty()) continue; + if (scrolls.isEmpty()) { + probs[1] = 0; + continue; + } + probs[1]--; Scroll s = Random.element(scrolls).newInstance(); s.setKnown(); IDed.add(s); scrolls.remove(s.getClass()); break; case 2: - if (rings.isEmpty()) continue; + if (rings.isEmpty()) { + probs[2] = 0; + continue; + } + probs[2]--; Ring r = Random.element(rings).newInstance(); r.setKnown(); IDed.add(r); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfForesight.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfForesight.java index 23883d24d..3a80a738b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfForesight.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfForesight.java @@ -40,7 +40,7 @@ public class ScrollOfForesight extends ExoticScroll { Sample.INSTANCE.play( Assets.SND_READ ); Invisibility.dispel(); - Buff.affect(curUser, Foresight.class, 500f); + Buff.affect(curUser, Foresight.class, 600f); setKnown(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfPolymorph.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfPolymorph.java index 35220047d..34e064f5d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfPolymorph.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfPolymorph.java @@ -33,6 +33,7 @@ import com.shatteredpixel.shatteredpixeldungeon.effects.Speck; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.ui.TargetHealthIndicator; import com.watabou.noosa.audio.Sample; +import com.watabou.utils.Random; public class ScrollOfPolymorph extends ExoticScroll { @@ -54,6 +55,12 @@ public class ScrollOfPolymorph extends ExoticScroll { Sheep sheep = new Sheep(); sheep.lifespan = 10; sheep.pos = mob.pos; + + //awards half exp for each sheep-ified mob + //50% chance to round up, 50% to round down + if (mob.EXP % 2 == 1) mob.EXP += Random.Int(2); + mob.EXP /= 2; + mob.destroy(); mob.sprite.killAndErase(); Dungeon.level.mobs.remove(mob); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfPsionicBlast.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfPsionicBlast.java index a676683ac..19dae9c64 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfPsionicBlast.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfPsionicBlast.java @@ -58,7 +58,7 @@ public class ScrollOfPsionicBlast extends ExoticScroll { } } - curUser.damage(Math.max(0, Math.round(curUser.HT*(0.35f - 0.5f*targets))), this); + curUser.damage(Math.max(0, Math.round(curUser.HT*(0.5f * (float)Math.pow(0.9, targets)))), this); if (curUser.isAlive()) { Buff.prolong(curUser, Blindness.class, 10); Buff.prolong(curUser, Weakness.class, 100);