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