v1.3.0: fixed various rare oddities with mind vision and fog of war
This commit is contained in:
@@ -830,7 +830,7 @@ public class Dungeon {
|
|||||||
if (hero.buff(MindVision.class) != null){
|
if (hero.buff(MindVision.class) != null){
|
||||||
for (Mob m : level.mobs.toArray(new Mob[0])){
|
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 - 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 );
|
BArray.or( level.visited, level.heroFOV, m.pos - 1 + level.width(), 3, level.visited );
|
||||||
//updates adjacent cells too
|
//updates adjacent cells too
|
||||||
GameScene.updateFog(m.pos, 2);
|
GameScene.updateFog(m.pos, 2);
|
||||||
|
|||||||
@@ -205,7 +205,7 @@ public class Hero extends Char {
|
|||||||
private ArrayList<Mob> visibleEnemies;
|
private ArrayList<Mob> visibleEnemies;
|
||||||
|
|
||||||
//This list is maintained so that some logic checks can be skipped
|
//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 ArrayList<Mob> mindVisionEnemies = new ArrayList<>();
|
||||||
|
|
||||||
public Hero() {
|
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.Corruption;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Dread;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Dread;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Hunger;
|
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.Preparation;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Sleep;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Sleep;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.SoulMark;
|
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.levels.features.Chasm;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.plants.Swiftthistle;
|
import com.shatteredpixel.shatteredpixeldungeon.plants.Swiftthistle;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
||||||
import com.watabou.noosa.audio.Sample;
|
import com.watabou.noosa.audio.Sample;
|
||||||
@@ -690,7 +692,12 @@ public abstract class Mob extends Char {
|
|||||||
super.destroy();
|
super.destroy();
|
||||||
|
|
||||||
Dungeon.level.mobs.remove( this );
|
Dungeon.level.mobs.remove( this );
|
||||||
|
|
||||||
|
if (Dungeon.hero.buff(MindVision.class) != null){
|
||||||
|
Dungeon.observe();
|
||||||
|
GameScene.updateFog(pos, 2);
|
||||||
|
}
|
||||||
|
|
||||||
if (Dungeon.hero.isAlive()) {
|
if (Dungeon.hero.isAlive()) {
|
||||||
|
|
||||||
if (alignment == Alignment.ENEMY) {
|
if (alignment == Alignment.ENEMY) {
|
||||||
|
|||||||
Reference in New Issue
Block a user