v1.4.0: fixed necromancers being able to summon through crystal doors

This commit is contained in:
Evan Debenham
2022-08-26 11:38:01 -04:00
parent 0f7a873ede
commit cd05ee3e58

View File

@@ -37,6 +37,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTeleportat
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.sprites.NecromancerSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.NecromancerSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.SkeletonSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.SkeletonSprite;
import com.shatteredpixel.shatteredpixeldungeon.utils.BArray;
import com.watabou.utils.Bundle; 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;
@@ -263,8 +264,13 @@ public class Necromancer extends Mob {
if (enemySeen && Dungeon.level.distance(pos, enemy.pos) <= 4 && mySkeleton == null){ if (enemySeen && Dungeon.level.distance(pos, enemy.pos) <= 4 && mySkeleton == null){
summoningPos = -1; summoningPos = -1;
//we can summon around blocking terrain, but not through it
PathFinder.buildDistanceMap(pos, BArray.not(Dungeon.level.solid, null), Dungeon.level.distance(pos, enemy.pos)+3);
for (int c : PathFinder.NEIGHBOURS8){ for (int c : PathFinder.NEIGHBOURS8){
if (Actor.findChar(enemy.pos+c) == null if (Actor.findChar(enemy.pos+c) == null
&& PathFinder.distance[enemy.pos+c] != Integer.MAX_VALUE
&& Dungeon.level.passable[enemy.pos+c] && Dungeon.level.passable[enemy.pos+c]
&& fieldOfView[enemy.pos+c] && fieldOfView[enemy.pos+c]
&& Dungeon.level.trueDistance(pos, enemy.pos+c) < Dungeon.level.trueDistance(pos, summoningPos)){ && Dungeon.level.trueDistance(pos, enemy.pos+c) < Dungeon.level.trueDistance(pos, summoningPos)){