v0.6.1: further improved imp spawning logic, reverted changes to regular spawning logic
This commit is contained in:
parent
591b1b570e
commit
d407144e28
|
@ -32,12 +32,14 @@ import com.shatteredpixel.shatteredpixeldungeon.items.quest.DwarfToken;
|
|||
import com.shatteredpixel.shatteredpixeldungeon.items.rings.Ring;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.journal.Notes;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.CityLevel;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ImpSprite;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.windows.WndImp;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.windows.WndQuest;
|
||||
import com.watabou.utils.Bundle;
|
||||
import com.watabou.utils.PathFinder;
|
||||
import com.watabou.utils.Random;
|
||||
|
||||
public class Imp extends NPC {
|
||||
|
@ -184,7 +186,13 @@ public class Imp extends NPC {
|
|||
Imp npc = new Imp();
|
||||
do {
|
||||
npc.pos = level.randomRespawnCell();
|
||||
} while (npc.pos == -1 || level.heaps.get( npc.pos ) != null || level.findMob( npc.pos ) != null);
|
||||
} while (
|
||||
npc.pos == -1 ||
|
||||
level.heaps.get( npc.pos ) != null ||
|
||||
level.findMob( npc.pos ) != null ||
|
||||
//The imp doesn't move, so he cannot obstruct a passageway
|
||||
!(Level.passable[npc.pos + PathFinder.CIRCLE4[0]] && Level.passable[npc.pos + PathFinder.CIRCLE4[2]]) ||
|
||||
!(Level.passable[npc.pos + PathFinder.CIRCLE4[1]] && Level.passable[npc.pos + PathFinder.CIRCLE4[3]]));
|
||||
level.mobs.add( npc );
|
||||
|
||||
spawned = true;
|
||||
|
|
|
@ -255,13 +255,8 @@ public abstract class RegularLevel extends Level {
|
|||
if (room == null || room == roomEntrance) {
|
||||
continue;
|
||||
}
|
||||
|
||||
//if we can avoid it, don't place along the perimiter
|
||||
if (room.width() >= 6 && room.height() >= 6) {
|
||||
cell = pointToCell(room.random(2));
|
||||
} else {
|
||||
cell = pointToCell(room.random(1));
|
||||
}
|
||||
|
||||
cell = pointToCell(room.random(1));
|
||||
if (!Dungeon.visible[cell]
|
||||
&& Actor.findChar( cell ) == null
|
||||
&& Level.passable[cell]
|
||||
|
|
Loading…
Reference in New Issue
Block a user