v1.3.0: fixed various rare oddities with mind vision and fog of war

This commit is contained in:
Evan Debenham
2022-06-10 20:00:34 -04:00
parent 3035069a32
commit 791501bf25
3 changed files with 10 additions and 3 deletions
@@ -830,7 +830,7 @@ public class Dungeon {
if (hero.buff(MindVision.class) != null){
for (Mob m : level.mobs.toArray(new Mob[0])){
BArray.or( level.visited, level.heroFOV, m.pos - 1 - level.width(), 3, level.visited );
BArray.or( level.visited, level.heroFOV, m.pos, 3, level.visited );
BArray.or( level.visited, level.heroFOV, m.pos - 1, 3, level.visited );
BArray.or( level.visited, level.heroFOV, m.pos - 1 + level.width(), 3, level.visited );
//updates adjacent cells too
GameScene.updateFog(m.pos, 2);
@@ -205,7 +205,7 @@ public class Hero extends Char {
private ArrayList<Mob> visibleEnemies;
//This list is maintained so that some logic checks can be skipped
// for enemies we know we aren't seeing normally, resultign in better performance
// for enemies we know we aren't seeing normally, resulting in better performance
public ArrayList<Mob> mindVisionEnemies = new ArrayList<>();
public Hero() {
@@ -38,6 +38,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Charm;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Corruption;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Dread;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Hunger;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MindVision;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Preparation;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Sleep;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.SoulMark;
@@ -66,6 +67,7 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
import com.shatteredpixel.shatteredpixeldungeon.levels.features.Chasm;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.plants.Swiftthistle;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
import com.watabou.noosa.audio.Sample;
@@ -690,7 +692,12 @@ public abstract class Mob extends Char {
super.destroy();
Dungeon.level.mobs.remove( this );
if (Dungeon.hero.buff(MindVision.class) != null){
Dungeon.observe();
GameScene.updateFog(pos, 2);
}
if (Dungeon.hero.isAlive()) {
if (alignment == Alignment.ENEMY) {