v0.3.0: slight refactor to hunger
This commit is contained in:
@@ -34,30 +34,30 @@ import com.watabou.utils.Random;
|
|||||||
public class Hunger extends Buff implements Hero.Doom {
|
public class Hunger extends Buff implements Hero.Doom {
|
||||||
|
|
||||||
private static final float STEP = 10f;
|
private static final float STEP = 10f;
|
||||||
|
|
||||||
public static final float HUNGRY = 260f;
|
public static final float HUNGRY = 260f;
|
||||||
public static final float STARVING = 360f;
|
public static final float STARVING = 360f;
|
||||||
|
|
||||||
private static final String TXT_HUNGRY = "You are hungry.";
|
private static final String TXT_HUNGRY = "You are hungry.";
|
||||||
private static final String TXT_STARVING = "You are starving!";
|
private static final String TXT_STARVING = "You are starving!";
|
||||||
private static final String TXT_DEATH = "You starved to death...";
|
private static final String TXT_DEATH = "You starved to death...";
|
||||||
|
|
||||||
private float level;
|
private float level;
|
||||||
|
|
||||||
private static final String LEVEL = "level";
|
private static final String LEVEL = "level";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void storeInBundle( Bundle bundle ) {
|
public void storeInBundle( Bundle bundle ) {
|
||||||
super.storeInBundle( bundle );
|
super.storeInBundle( bundle );
|
||||||
bundle.put( LEVEL, level );
|
bundle.put( LEVEL, level );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void restoreFromBundle( Bundle bundle ) {
|
public void restoreFromBundle( Bundle bundle ) {
|
||||||
super.restoreFromBundle( bundle );
|
super.restoreFromBundle( bundle );
|
||||||
level = bundle.getFloat( LEVEL );
|
level = bundle.getFloat( LEVEL );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean act() {
|
public boolean act() {
|
||||||
|
|
||||||
@@ -67,9 +67,9 @@ public class Hunger extends Buff implements Hero.Doom {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (target.isAlive()) {
|
if (target.isAlive()) {
|
||||||
|
|
||||||
Hero hero = (Hero)target;
|
Hero hero = (Hero)target;
|
||||||
|
|
||||||
if (isStarving()) {
|
if (isStarving()) {
|
||||||
|
|
||||||
if (Random.Float() < 0.3f && (target.HP > 1 || !target.paralysed)) {
|
if (Random.Float() < 0.3f && (target.HP > 1 || !target.paralysed)) {
|
||||||
@@ -78,40 +78,40 @@ public class Hunger extends Buff implements Hero.Doom {
|
|||||||
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
float newLevel = level + STEP;
|
float newLevel = level + STEP;
|
||||||
boolean statusUpdated = false;
|
boolean statusUpdated = false;
|
||||||
if (newLevel >= STARVING) {
|
if (newLevel >= STARVING) {
|
||||||
|
|
||||||
GLog.n( TXT_STARVING );
|
GLog.n( TXT_STARVING );
|
||||||
hero.damage( 1, this );
|
hero.damage( 1, this );
|
||||||
statusUpdated = true;
|
statusUpdated = true;
|
||||||
|
|
||||||
hero.interrupt();
|
hero.interrupt();
|
||||||
|
|
||||||
} else if (newLevel >= HUNGRY && level < HUNGRY) {
|
} else if (newLevel >= HUNGRY && level < HUNGRY) {
|
||||||
|
|
||||||
GLog.w( TXT_HUNGRY );
|
GLog.w( TXT_HUNGRY );
|
||||||
statusUpdated = true;
|
statusUpdated = true;
|
||||||
|
|
||||||
}
|
}
|
||||||
level = newLevel;
|
level = newLevel;
|
||||||
|
|
||||||
if (statusUpdated) {
|
if (statusUpdated) {
|
||||||
BuffIndicator.refreshHero();
|
BuffIndicator.refreshHero();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
float step = ((Hero)target).heroClass == HeroClass.ROGUE ? STEP * 1.2f : STEP;
|
float step = ((Hero)target).heroClass == HeroClass.ROGUE ? STEP * 1.2f : STEP;
|
||||||
spend( target.buff( Shadows.class ) == null ? step : step * 1.5f );
|
spend( target.buff( Shadows.class ) == null ? step : step * 1.5f );
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
diactivate();
|
diactivate();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -125,7 +125,8 @@ public class Hunger extends Buff implements Hero.Doom {
|
|||||||
GLog.n("The cursed horn steals some of the food energy as you eat.");
|
GLog.n("The cursed horn steals some of the food energy as you eat.");
|
||||||
}
|
}
|
||||||
|
|
||||||
reduceHunger( energy );
|
if (!Dungeon.isChallenged(Challenges.NO_FOOD))
|
||||||
|
reduceHunger( energy );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void consumeSoul( float energy ){
|
public void consumeSoul( float energy ){
|
||||||
@@ -135,12 +136,12 @@ public class Hunger extends Buff implements Hero.Doom {
|
|||||||
else if (level < HUNGRY)
|
else if (level < HUNGRY)
|
||||||
energy *= 0.75f;
|
energy *= 0.75f;
|
||||||
|
|
||||||
reduceHunger( energy );
|
if (!Dungeon.isChallenged(Challenges.NO_FOOD))
|
||||||
|
reduceHunger( energy );
|
||||||
}
|
}
|
||||||
|
|
||||||
private void reduceHunger( float energy ) {
|
//directly interacts with hunger, no checks.
|
||||||
if (Dungeon.isChallenged(Challenges.NO_FOOD))
|
public void reduceHunger( float energy ) {
|
||||||
return;
|
|
||||||
|
|
||||||
level -= energy;
|
level -= energy;
|
||||||
if (level < 0) {
|
if (level < 0) {
|
||||||
@@ -151,11 +152,11 @@ public class Hunger extends Buff implements Hero.Doom {
|
|||||||
|
|
||||||
BuffIndicator.refreshHero();
|
BuffIndicator.refreshHero();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isStarving() {
|
public boolean isStarving() {
|
||||||
return level >= STARVING;
|
return level >= STARVING;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int icon() {
|
public int icon() {
|
||||||
if (level < HUNGRY) {
|
if (level < HUNGRY) {
|
||||||
@@ -166,7 +167,7 @@ public class Hunger extends Buff implements Hero.Doom {
|
|||||||
return BuffIndicator.STARVATION;
|
return BuffIndicator.STARVATION;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
if (level < STARVING) {
|
if (level < STARVING) {
|
||||||
@@ -178,9 +179,9 @@ public class Hunger extends Buff implements Hero.Doom {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDeath() {
|
public void onDeath() {
|
||||||
|
|
||||||
Badges.validateDeathFromHunger();
|
Badges.validateDeathFromHunger();
|
||||||
|
|
||||||
Dungeon.fail( ResultDescriptions.HUNGER );
|
Dungeon.fail( ResultDescriptions.HUNGER );
|
||||||
GLog.n( TXT_DEATH );
|
GLog.n( TXT_DEATH );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -798,7 +798,7 @@ public class Hero extends Char {
|
|||||||
|
|
||||||
Hunger hunger = buff( Hunger.class );
|
Hunger hunger = buff( Hunger.class );
|
||||||
if (hunger != null && !hunger.isStarving()) {
|
if (hunger != null && !hunger.isStarving()) {
|
||||||
hunger.satisfy( -Hunger.STARVING / 10 );
|
hunger.reduceHunger( -Hunger.STARVING / 10 );
|
||||||
}
|
}
|
||||||
|
|
||||||
Buff buff = buff(TimekeepersHourglass.timeFreeze.class);
|
Buff buff = buff(TimekeepersHourglass.timeFreeze.class);
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ public class Metabolism extends Glyph {
|
|||||||
|
|
||||||
if (hunger != null && !hunger.isStarving()) {
|
if (hunger != null && !hunger.isStarving()) {
|
||||||
|
|
||||||
hunger.satisfy( -Hunger.STARVING / 10 );
|
hunger.reduceHunger( -Hunger.STARVING / 10 );
|
||||||
BuffIndicator.refreshHero();
|
BuffIndicator.refreshHero();
|
||||||
|
|
||||||
defender.HP += healing;
|
defender.HP += healing;
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ public class Pickaxe extends Weapon {
|
|||||||
|
|
||||||
Hunger hunger = hero.buff( Hunger.class );
|
Hunger hunger = hero.buff( Hunger.class );
|
||||||
if (hunger != null && !hunger.isStarving()) {
|
if (hunger != null && !hunger.isStarving()) {
|
||||||
hunger.satisfy( -Hunger.STARVING / 10 );
|
hunger.reduceHunger( -Hunger.STARVING / 10 );
|
||||||
BuffIndicator.refreshHero();
|
BuffIndicator.refreshHero();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user