v0.8.0: Various bugfixes for:
- shurikens not getting an instant attack in lots of cases - dried rose appearing overcharged in quickslot sometimes - rounding errors and incorrect debuff resistance values in corruption wand - heap type not being preserved by teleportation traps - traps on Tengu phase 1 incorrectly triggering right as phase 1 ends - traps on Tengu phase 2 not being revealed by stone of clairvoyance - music not playing if the player goes right to the changes scene - caustic slimes having a slower attack animation than regular slimes - one incorrect green pixel in furrowed grass for prison tileset
This commit is contained in:
parent
b88036da0b
commit
05363c95fd
Binary file not shown.
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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<Class<? extends Buff>, 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<Class<? extends Buff>, 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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 );
|
||||
|
|
Loading…
Reference in New Issue
Block a user