v3.1.0: fixed sheep lifespan being reset on save/load

This commit is contained in:
Evan Debenham
2025-04-06 12:57:46 -04:00
parent d730f3b49f
commit 0cc6a7f223
5 changed files with 14 additions and 16 deletions

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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();

View File

@@ -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);