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:
Evan Debenham 2019-10-29 16:14:07 -04:00
parent b88036da0b
commit 05363c95fd
8 changed files with 25 additions and 18 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

@ -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);

View File

@ -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);

View File

@ -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;

View File

@ -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);
}
}

View File

@ -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 );
}
}
}

View File

@ -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;
@ -52,6 +54,8 @@ public class ChangesScene extends PixelScene {
public void create() {
super.create();
Music.INSTANCE.play( Assets.THEME, true );
int w = Camera.main.width;
int h = Camera.main.height;

View File

@ -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 );