v2.0.1: fixed necromancers not properly handling particle refs

This commit is contained in:
Evan Debenham
2023-03-21 13:52:58 -04:00
parent 70af94f30b
commit 4f1b50de25
2 changed files with 27 additions and 19 deletions
@@ -83,6 +83,7 @@ public class NecromancerSprite extends MobSprite {
super.die(); super.die();
if (summoningBones != null){ if (summoningBones != null){
summoningBones.on = false; summoningBones.on = false;
summoningBones = null;
} }
} }
@@ -90,13 +91,15 @@ public class NecromancerSprite extends MobSprite {
public void kill() { public void kill() {
super.kill(); super.kill();
if (summoningBones != null){ if (summoningBones != null){
summoningBones.killAndErase(); summoningBones.on = false;
summoningBones = null;
} }
} }
public void cancelSummoning(){ public void cancelSummoning(){
if (summoningBones != null){ if (summoningBones != null){
summoningBones.on = false; summoningBones.on = false;
summoningBones = null;
} }
} }
@@ -107,6 +110,7 @@ public class NecromancerSprite extends MobSprite {
} else { } else {
summoningBones.on = false; summoningBones.on = false;
} }
summoningBones = null;
idle(); idle();
} }
@@ -34,7 +34,7 @@ import com.watabou.noosa.particles.Emitter;
public class SpectralNecromancerSprite extends MobSprite { public class SpectralNecromancerSprite extends MobSprite {
private Animation charging; private Animation charging;
private Emitter summoningBones; private Emitter summoningParticles;
public SpectralNecromancerSprite(){ public SpectralNecromancerSprite(){
super(); super();
@@ -75,40 +75,44 @@ public class SpectralNecromancerSprite extends MobSprite {
@Override @Override
public void update() { public void update() {
super.update(); super.update();
if (summoningBones != null && ((Necromancer) ch).summoningPos != -1){ if (summoningParticles != null && ((Necromancer) ch).summoningPos != -1){
summoningBones.visible = Dungeon.level.heroFOV[((Necromancer) ch).summoningPos]; summoningParticles.visible = Dungeon.level.heroFOV[((Necromancer) ch).summoningPos];
} }
} }
@Override @Override
public void die() { public void die() {
super.die(); super.die();
if (summoningBones != null){ if (summoningParticles != null){
summoningBones.on = false; summoningParticles.on = false;
summoningParticles = null;
} }
} }
@Override @Override
public void kill() { public void kill() {
super.kill(); super.kill();
if (summoningBones != null){ if (summoningParticles != null){
summoningBones.killAndErase(); summoningParticles.on = false;
summoningParticles = null;
} }
} }
public void cancelSummoning(){ public void cancelSummoning(){
if (summoningBones != null){ if (summoningParticles != null){
summoningBones.on = false; summoningParticles.on = false;
summoningParticles = null;
} }
} }
public void finishSummoning(){ public void finishSummoning(){
if (summoningBones.visible) { if (summoningParticles.visible) {
Sample.INSTANCE.play(Assets.Sounds.CURSED); Sample.INSTANCE.play(Assets.Sounds.CURSED);
summoningBones.burst(ShadowParticle.CURSE, 5); summoningParticles.burst(ShadowParticle.CURSE, 5);
} else { } else {
summoningBones.on = false; summoningParticles.on = false;
} }
summoningParticles = null;
idle(); idle();
} }
@@ -120,13 +124,13 @@ public class SpectralNecromancerSprite extends MobSprite {
public void zap(int cell) { public void zap(int cell) {
super.zap(cell); super.zap(cell);
if (ch instanceof Necromancer && ((Necromancer) ch).summoning){ if (ch instanceof Necromancer && ((Necromancer) ch).summoning){
if (summoningBones != null){ if (summoningParticles != null){
summoningBones.on = false; summoningParticles.on = false;
} }
summoningBones = CellEmitter.get(((Necromancer) ch).summoningPos); summoningParticles = CellEmitter.get(((Necromancer) ch).summoningPos);
summoningBones.pour(ShadowParticle.MISSILE, 0.1f); summoningParticles.pour(ShadowParticle.MISSILE, 0.1f);
summoningBones.visible = Dungeon.level.heroFOV[((Necromancer) ch).summoningPos]; summoningParticles.visible = Dungeon.level.heroFOV[((Necromancer) ch).summoningPos];
if (visible || summoningBones.visible ) Sample.INSTANCE.play( Assets.Sounds.CHARGEUP, 1f, 0.8f ); if (visible || summoningParticles.visible ) Sample.INSTANCE.play( Assets.Sounds.CHARGEUP, 1f, 0.8f );
} }
} }