diff --git a/core/src/main/assets/tiles_prison.png b/core/src/main/assets/tiles_prison.png index 33a02cf42..d9a5fd569 100644 Binary files a/core/src/main/assets/tiles_prison.png and b/core/src/main/assets/tiles_prison.png differ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java index 3ac9d2a96..0a200f10b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java @@ -615,14 +615,9 @@ public class Hero extends Char { next(); } - //FIXME this is a fairly crude way to track this, really it would be nice to have a short - //history of hero actions - public boolean justMoved = false; - private boolean actMove( HeroAction.Move action ) { if (getCloser( action.dst )) { - justMoved = true; return true; } else { @@ -852,7 +847,8 @@ public class Hero extends Char { private boolean actDescend( HeroAction.Descend action ) { int stairs = action.dst; - if (pos == stairs) { + if (pos == stairs && (Dungeon.level.map[pos] == Terrain.EXIT + || Dungeon.level.map[pos] == Terrain.UNLOCKED_EXIT)) { curAction = null; @@ -878,7 +874,7 @@ public class Hero extends Char { private boolean actAscend( HeroAction.Ascend action ) { int stairs = action.dst; - if (pos == stairs) { + if (pos == stairs && Dungeon.level.map[pos] == Terrain.ENTRANCE) { if (Dungeon.depth == 1) { @@ -1096,6 +1092,10 @@ public class Hero extends Char { private boolean walkingToVisibleTrapInFog = false; + //FIXME this is a fairly crude way to track this, really it would be nice to have a short + //history of hero actions + public boolean justMoved = false; + private boolean getCloser( final int target ) { if (target == pos) @@ -1179,6 +1179,7 @@ public class Hero extends Char { move(step); spend( 1 / speed ); + justMoved = true; search(false); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java index 55c60b744..d5e291c96 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java @@ -250,12 +250,12 @@ public class DriedRose extends Artifact { if (ghost == null){ if (charge < chargeCap) { charge += 4; - updateQuickslot(); if (charge >= chargeCap) { charge = chargeCap; partialCharge = 0; GLog.p(Messages.get(DriedRose.class, "charged")); } + updateQuickslot(); } } else { ghost.HP = Math.min( ghost.HT, ghost.HP + 1 + level()/3); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorruption.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorruption.java index 90b17bac6..0e3c60da3 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorruption.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorruption.java @@ -85,7 +85,7 @@ public class WandOfCorruption extends Wand { // This is because the wand of corruption considers them to be a certain level of harmful // for the purposes of reducing resistance, but does not actually apply them itself - private static final float MINOR_DEBUFF_WEAKEN = 7/8f; + private static final float MINOR_DEBUFF_WEAKEN = 1/4f; private static final HashMap, Float> MINOR_DEBUFFS = new HashMap<>(); static{ MINOR_DEBUFFS.put(Weakness.class, 2f); @@ -103,7 +103,7 @@ public class WandOfCorruption extends Wand { MINOR_DEBUFFS.put(Poison.class, 0f); } - private static final float MAJOR_DEBUFF_WEAKEN = 4/5f; + private static final float MAJOR_DEBUFF_WEAKEN = 1/2f; private static final HashMap, Float> MAJOR_DEBUFFS = new HashMap<>(); static{ MAJOR_DEBUFFS.put(Amok.class, 3f); @@ -130,7 +130,7 @@ public class WandOfCorruption extends Wand { Mob enemy = (Mob) ch; - float corruptingPower = 3 + level()/2; + float corruptingPower = 3 + level()/2f; //base enemy resistance is usually based on their exp, but in special cases it is based on other criteria float enemyResist = 1 + enemy.EXP; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/NewPrisonBossLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/NewPrisonBossLevel.java index 887aae26b..73e6c125d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/NewPrisonBossLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/NewPrisonBossLevel.java @@ -441,14 +441,14 @@ public class NewPrisonBossLevel extends Level { clearEntities( tenguCell ); //clear anything not in tengu's cell + setMapMazes(); + cleanMapState(); + Actor.remove(tengu); mobs.remove(tengu); TargetHealthIndicator.instance.target(null); tengu.sprite.kill(); - setMapMazes(); - cleanMapState(); - GameScene.flash(0xFFFFFF); Sample.INSTANCE.play(Assets.SND_BLAST); @@ -571,8 +571,8 @@ public class NewPrisonBossLevel extends Level { if (maze[x][y]){ int cell = mazeCells[i].left+x + width()*(mazeCells[i].top+y); if (heaps.get(cell) == null){ + Level.set( cell, Terrain.SECRET_TRAP ); setTrap(new TenguDartTrap().hide(), cell); - Painter.set(this, cell, Terrain.SECRET_TRAP); CellEmitter.get(cell).burst(Speck.factory(Speck.LIGHT), 2); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/TeleportationTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/TeleportationTrap.java index 5fa7b16bc..6de6be30c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/TeleportationTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/TeleportationTrap.java @@ -88,7 +88,9 @@ public class TeleportationTrap extends Trap { Item item = heap.pickUp(); if (cell != -1) { - Dungeon.level.drop( item, cell ); + Heap dropped = Dungeon.level.drop( item, cell ); + dropped.type = heap.type; + dropped.sprite.view( dropped ); } } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/ChangesScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/ChangesScene.java index aa8994459..9c5890b60 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/ChangesScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/ChangesScene.java @@ -21,6 +21,7 @@ package com.shatteredpixel.shatteredpixeldungeon.scenes; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Chrome; import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; @@ -40,6 +41,7 @@ import com.shatteredpixel.shatteredpixeldungeon.ui.changelist.v0_6_X_Changes; import com.shatteredpixel.shatteredpixeldungeon.ui.changelist.v0_7_X_Changes; import com.watabou.noosa.Camera; import com.watabou.noosa.NinePatch; +import com.watabou.noosa.audio.Music; import com.watabou.noosa.ui.Component; import java.util.ArrayList; @@ -51,6 +53,8 @@ public class ChangesScene extends PixelScene { @Override public void create() { super.create(); + + Music.INSTANCE.play( Assets.THEME, true ); int w = Camera.main.width; int h = Camera.main.height; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/CausticSlimeSprite.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/CausticSlimeSprite.java index 163c85773..773250f2e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/CausticSlimeSprite.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/CausticSlimeSprite.java @@ -41,8 +41,8 @@ public class CausticSlimeSprite extends MobSprite { run = new Animation( 10, true ); run.frames( frames, c+0, c+2, c+3, c+3, c+2, c+0 ); - attack = new Animation( 10, false ); - attack.frames( frames, c+2, c+3, c+4, c+5, c+2 ); + attack = new Animation( 15, false ); + attack.frames( frames, c+2, c+3, c+4, c+6, c+5 ); die = new Animation( 10, false ); die.frames( frames, c+0, c+5, c+6, c+7 );