v2.2.1: added some safety checks to crystal guardians and newborn fire

This commit is contained in:
Evan Debenham
2023-10-19 17:03:23 -04:00
parent 26ca3549aa
commit ad669880fc
2 changed files with 17 additions and 15 deletions
@@ -201,7 +201,7 @@ public class CrystalGuardian extends Mob{
@Override
public boolean[] modifyPassable(boolean[] passable) {
//if we are hunting, we can stomp through crystals, but prefer not to
if (state == HUNTING){
if (state == HUNTING && target != -1){
PathFinder.buildDistanceMap(target, passable);
if (PathFinder.distance[pos] > 2*Dungeon.level.distance(pos, target)) {
@@ -327,26 +327,28 @@ public abstract class Elemental extends Mob {
@Override
protected void zap() {
spend( 1f );
if (targetingPos != -1) {
spend(1f);
Invisibility.dispel(this);
Invisibility.dispel(this);
for (int i : PathFinder.NEIGHBOURS9){
if (!Dungeon.level.solid[targetingPos + i]) {
CellEmitter.get(targetingPos+i).burst(ElmoParticle.FACTORY, 5);
if (Dungeon.level.water[targetingPos+i]){
GameScene.add(Blob.seed(targetingPos+i, 2, Fire.class));
} else {
GameScene.add(Blob.seed(targetingPos+i, 8, Fire.class));
}
for (int i : PathFinder.NEIGHBOURS9) {
if (!Dungeon.level.solid[targetingPos + i]) {
CellEmitter.get(targetingPos + i).burst(ElmoParticle.FACTORY, 5);
if (Dungeon.level.water[targetingPos + i]) {
GameScene.add(Blob.seed(targetingPos + i, 2, Fire.class));
} else {
GameScene.add(Blob.seed(targetingPos + i, 8, Fire.class));
}
Char target = Actor.findChar(targetingPos+i);
if (target != null && target != this){
Buff.affect(target, Burning.class).reignite(target);
Char target = Actor.findChar(targetingPos + i);
if (target != null && target != this) {
Buff.affect(target, Burning.class).reignite(target);
}
}
}
Sample.INSTANCE.play(Assets.Sounds.BURNING);
}
Sample.INSTANCE.play(Assets.Sounds.BURNING);
targetingPos = -1;
rangedCooldown = Random.NormalIntRange( 3, 5 );