v0.8.0: various fixes:

- fixed spinners not saving some info they should
- fixed rare crashes with ring of wealth and brutes
- blast wave and force cube no longer trigger tengu's traps
- fixed force cube not pressing on all cells in the AOE
- Tengu's traps now fade instantly much less often
This commit is contained in:
Evan Debenham 2019-12-12 16:07:37 -05:00
parent d2107356f0
commit 15879eafc8
5 changed files with 31 additions and 9 deletions

View File

@ -638,10 +638,10 @@ public abstract class Mob extends Char {
if (bonus != null && !bonus.isEmpty()) { if (bonus != null && !bonus.isEmpty()) {
for (Item b : bonus) Dungeon.level.drop(b, pos).sprite.drop(); for (Item b : bonus) Dungeon.level.drop(b, pos).sprite.drop();
if (RingOfWealth.latestDropWasRare){ if (RingOfWealth.latestDropWasRare){
new Flare(8, 48).color(0xAA00FF, true).show(sprite, 3f); if (sprite != null) new Flare(8, 48).color(0xAA00FF, true).show(sprite, 3f);
RingOfWealth.latestDropWasRare = false; RingOfWealth.latestDropWasRare = false;
} else { } else {
new Flare(8, 24).color(0xFFFFFF, true).show(sprite, 3f); if (sprite != null) new Flare(8, 24).color(0xFFFFFF, true).show(sprite, 3f);
} }
} }
} }

View File

@ -32,6 +32,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.food.MysteryMeat;
import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica; import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.sprites.SpinnerSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.SpinnerSprite;
import com.watabou.utils.Bundle;
import com.watabou.utils.PathFinder; import com.watabou.utils.PathFinder;
import com.watabou.utils.Random; import com.watabou.utils.Random;
@ -70,6 +71,23 @@ public class Spinner extends Mob {
private int webCoolDown = 0; private int webCoolDown = 0;
private int lastEnemyPos = -1; private int lastEnemyPos = -1;
private static final String WEB_COOLDOWN = "web_cooldown";
private static final String LAST_ENEMY_POS = "last_enemy_pos";
@Override
public void storeInBundle(Bundle bundle) {
super.storeInBundle(bundle);
bundle.put(WEB_COOLDOWN, webCoolDown);
bundle.put(LAST_ENEMY_POS, lastEnemyPos);
}
@Override
public void restoreFromBundle(Bundle bundle) {
super.restoreFromBundle(bundle);
webCoolDown = bundle.getInt( WEB_COOLDOWN );
lastEnemyPos = bundle.getInt( LAST_ENEMY_POS );
}
@Override @Override
protected boolean act() { protected boolean act() {
boolean result = super.act(); boolean result = super.act();

View File

@ -31,6 +31,7 @@ import com.shatteredpixel.shatteredpixeldungeon.effects.MagicMissile;
import com.shatteredpixel.shatteredpixeldungeon.effects.Pushing; import com.shatteredpixel.shatteredpixeldungeon.effects.Pushing;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Elastic; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Elastic;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff;
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.TenguDartTrap;
import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica; import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
@ -66,9 +67,11 @@ public class WandOfBlastWave extends DamageWand {
Sample.INSTANCE.play( Assets.SND_BLAST ); Sample.INSTANCE.play( Assets.SND_BLAST );
BlastWave.blast(bolt.collisionPos); BlastWave.blast(bolt.collisionPos);
//presses all tiles in the AOE first //presses all tiles in the AOE first, with the exception of tengu dart traps
for (int i : PathFinder.NEIGHBOURS9){ for (int i : PathFinder.NEIGHBOURS9){
Dungeon.level.pressCell( bolt.collisionPos+i ); if (!(Dungeon.level.traps.get(bolt.collisionPos+i) instanceof TenguDartTrap)) {
Dungeon.level.pressCell(bolt.collisionPos + i);
}
} }
//throws other chars around the center. //throws other chars around the center.

View File

@ -26,6 +26,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfBlastWave; import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfBlastWave;
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.TenguDartTrap;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
@ -58,7 +59,7 @@ public class ForceCube extends MissileWeapon {
if (Actor.findChar(cell) != null) targets.add(Actor.findChar(cell)); if (Actor.findChar(cell) != null) targets.add(Actor.findChar(cell));
for (int i : PathFinder.NEIGHBOURS8){ for (int i : PathFinder.NEIGHBOURS8){
Dungeon.level.pressCell(cell); if (!(Dungeon.level.traps.get(cell+i) instanceof TenguDartTrap)) Dungeon.level.pressCell(cell+i);
if (Actor.findChar(cell + i) != null) targets.add(Actor.findChar(cell + i)); if (Actor.findChar(cell + i) != null) targets.add(Actor.findChar(cell + i));
} }

View File

@ -585,7 +585,7 @@ public class NewPrisonBossLevel extends Level {
FadingTraps f = new FadingTraps(); FadingTraps f = new FadingTraps();
f.setCoveringArea(mazeCells[i]); f.setCoveringArea(mazeCells[i]);
f.fadeDelay = 1f; f.fadeDelay = 2f;
GameScene.add(f, false); GameScene.add(f, false);
customTiles.add(f); customTiles.add(f);
@ -680,7 +680,7 @@ public class NewPrisonBossLevel extends Level {
GameScene.updateMap(); GameScene.updateMap();
FadingTraps t = new FadingTraps(); FadingTraps t = new FadingTraps();
t.fadeDelay = 1f; t.fadeDelay = 2f;
t.setCoveringArea(tenguCell); t.setCoveringArea(tenguCell);
GameScene.add(t, false); GameScene.add(t, false);
customTiles.add(t); customTiles.add(t);
@ -795,7 +795,7 @@ public class NewPrisonBossLevel extends Level {
Actor.addDelayed(new Actor() { Actor.addDelayed(new Actor() {
{ {
actPriority = HERO_PRIO-1; actPriority = HERO_PRIO+1;
} }
@Override @Override