v3.1.0: fixed sheep lifespan being reset on save/load
This commit is contained in:
@@ -41,28 +41,25 @@ public class Sheep extends NPC {
|
||||
spriteClass = SheepSprite.class;
|
||||
}
|
||||
|
||||
public float lifespan;
|
||||
|
||||
private boolean initialized = false;
|
||||
private float lifespan;
|
||||
|
||||
@Override
|
||||
protected boolean act() {
|
||||
if (Dungeon.level.heroFOV[pos]){
|
||||
Bestiary.setSeen(getClass());
|
||||
}
|
||||
if (initialized) {
|
||||
HP = 0;
|
||||
HP = 0;
|
||||
|
||||
destroy();
|
||||
sprite.die();
|
||||
|
||||
} else {
|
||||
initialized = true;
|
||||
spend( lifespan + Random.Float(-2, 2) );
|
||||
}
|
||||
destroy();
|
||||
sprite.die();
|
||||
return true;
|
||||
}
|
||||
|
||||
public void initialize(float lifespan){
|
||||
this.lifespan = lifespan;
|
||||
spend( lifespan + Random.Float(-2, 2) );
|
||||
}
|
||||
|
||||
@Override
|
||||
public int defenseSkill(Char enemy) {
|
||||
return INFINITE_EVASION;
|
||||
@@ -80,6 +77,7 @@ public class Sheep extends NPC {
|
||||
|
||||
@Override
|
||||
public boolean interact(Char c) {
|
||||
Bestiary.setSeen(getClass());
|
||||
sprite.showStatus( CharSprite.NEUTRAL, Messages.get(this, Random.element( LINE_KEYS )) );
|
||||
if (c == Dungeon.hero) {
|
||||
Dungeon.hero.spendAndNext(1f);
|
||||
|
||||
@@ -63,7 +63,7 @@ public class WoollyBomb extends Bomb {
|
||||
&& Actor.findChar(i) == null
|
||||
&& !(Dungeon.level.pit[i])) {
|
||||
Sheep sheep = new Sheep();
|
||||
sheep.lifespan = Dungeon.bossLevel() ? 20 : 200;
|
||||
sheep.initialize(Dungeon.bossLevel() ? 20 : 200);
|
||||
sheep.pos = i;
|
||||
GameScene.add(sheep);
|
||||
Dungeon.level.occupyCell(sheep);
|
||||
|
||||
@@ -57,7 +57,7 @@ public class StoneOfFlock extends Runestone {
|
||||
&& Actor.findChar(i) == null
|
||||
&& !(Dungeon.level.pit[i])) {
|
||||
Sheep sheep = new Sheep();
|
||||
sheep.lifespan = 8;
|
||||
sheep.initialize(8);
|
||||
sheep.pos = i;
|
||||
GameScene.add(sheep);
|
||||
Dungeon.level.occupyCell(sheep);
|
||||
|
||||
@@ -707,7 +707,7 @@ public class CursedWand {
|
||||
if (valid(origin, user, bolt, positiveOnly)){
|
||||
Char ch = Actor.findChar( bolt.collisionPos );
|
||||
Sheep sheep = new Sheep();
|
||||
sheep.lifespan = 10;
|
||||
sheep.initialize(10);
|
||||
sheep.pos = ch.pos;
|
||||
ch.destroy();
|
||||
ch.sprite.killAndErase();
|
||||
|
||||
@@ -59,7 +59,7 @@ public class FlockTrap extends Trap {
|
||||
&& Actor.findChar(i) == null
|
||||
&& !(Dungeon.level.pit[i])) {
|
||||
Sheep sheep = new Sheep();
|
||||
sheep.lifespan = 6;
|
||||
sheep.initialize(6);
|
||||
sheep.pos = i;
|
||||
GameScene.add(sheep);
|
||||
CellEmitter.get(i).burst(Speck.factory(Speck.WOOL), 4);
|
||||
|
||||
Reference in New Issue
Block a user