v2.2.0: enabled hunger mechanics in the new mining area

This commit is contained in:
Evan Debenham
2023-09-14 14:07:52 -04:00
parent 5a1d6e5d91
commit 41d79f2ea4
4 changed files with 21 additions and 11 deletions
@@ -28,7 +28,6 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.items.journal.Guidebook; import com.shatteredpixel.shatteredpixeldungeon.items.journal.Guidebook;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ScrollOfChallenge; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ScrollOfChallenge;
import com.shatteredpixel.shatteredpixeldungeon.journal.Document; import com.shatteredpixel.shatteredpixeldungeon.journal.Document;
import com.shatteredpixel.shatteredpixeldungeon.levels.MiningLevel;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
@@ -68,9 +67,7 @@ public class Hunger extends Buff implements Hero.Doom {
if (Dungeon.level.locked if (Dungeon.level.locked
|| target.buff(WellFed.class) != null || target.buff(WellFed.class) != null
|| SPDSettings.intro() || SPDSettings.intro()
|| target.buff(ScrollOfChallenge.ChallengeArena.class) != null || target.buff(ScrollOfChallenge.ChallengeArena.class) != null){
//this is mainly for the current test sub-level
|| Dungeon.level instanceof MiningLevel){
spend(STEP); spend(STEP);
return true; return true;
} }
@@ -140,6 +137,8 @@ public class Hunger extends Buff implements Hero.Doom {
return; return;
} }
float oldLevel = level;
level -= energy; level -= energy;
if (level < 0 && !overrideLimits) { if (level < 0 && !overrideLimits) {
level = 0; level = 0;
@@ -149,6 +148,13 @@ public class Hunger extends Buff implements Hero.Doom {
partialDamage += excess * (target.HT/1000f); partialDamage += excess * (target.HT/1000f);
} }
if (oldLevel < HUNGRY && level >= HUNGRY){
GLog.w( Messages.get(this, "onhungry") );
} else if (oldLevel < STARVING && level >= STARVING){
GLog.n( Messages.get(this, "onstarving") );
target.damage( 1, this );
}
BuffIndicator.refreshHero(); BuffIndicator.refreshHero();
} }
@@ -25,7 +25,6 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.ChaliceOfBlood; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.ChaliceOfBlood;
import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfEnergy; import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfEnergy;
import com.shatteredpixel.shatteredpixeldungeon.levels.MiningLevel;
public class Regeneration extends Buff { public class Regeneration extends Buff {
@@ -82,9 +81,6 @@ public class Regeneration extends Buff {
if (lock != null && !lock.regenOn()){ if (lock != null && !lock.regenOn()){
return false; return false;
} }
if (Dungeon.level instanceof MiningLevel){
return false; //this is mainly for the current test sub-level
}
return true; return true;
} }
} }
@@ -1169,19 +1169,19 @@ public class Hero extends Char {
Level.set( action.dst, Terrain.EMPTY_DECO ); Level.set( action.dst, Terrain.EMPTY_DECO );
} else if (Dungeon.level.map[action.dst] == Terrain.WALL){ } else if (Dungeon.level.map[action.dst] == Terrain.WALL){
//TODO inc. hunger by 5 buff(Hunger.class).affectHunger(-5);
PixelScene.shake(0.5f, 0.5f); PixelScene.shake(0.5f, 0.5f);
CellEmitter.get( action.dst ).burst( Speck.factory( Speck.ROCK ), 2 ); CellEmitter.get( action.dst ).burst( Speck.factory( Speck.ROCK ), 2 );
Sample.INSTANCE.play( Assets.Sounds.MINE ); Sample.INSTANCE.play( Assets.Sounds.MINE );
Level.set( action.dst, Terrain.EMPTY_DECO ); Level.set( action.dst, Terrain.EMPTY_DECO );
} else if (Dungeon.level.map[action.dst] == Terrain.MINE_CRYSTAL){ } else if (Dungeon.level.map[action.dst] == Terrain.MINE_CRYSTAL){
Splash.at(action.dst, 0xFFFFFF, 5); //TODO match color? Splash.at(action.dst, 0xFFFFFF, 5);
Sample.INSTANCE.play( Assets.Sounds.SHATTER ); Sample.INSTANCE.play( Assets.Sounds.SHATTER );
Level.set( action.dst, Terrain.EMPTY ); Level.set( action.dst, Terrain.EMPTY );
} else if (Dungeon.level.map[action.dst] == Terrain.MINE_BOULDER){ } else if (Dungeon.level.map[action.dst] == Terrain.MINE_BOULDER){
//TODO inc. hunger by 1 buff(Hunger.class).affectHunger(-1);
Splash.at(action.dst, ColorMath.random( 0x444444, 0x777766 ), 5); Splash.at(action.dst, ColorMath.random( 0x444444, 0x777766 ), 5);
Sample.INSTANCE.play( Assets.Sounds.MINE, 0.6f ); Sample.INSTANCE.play( Assets.Sounds.MINE, 0.6f );
Level.set( action.dst, Terrain.EMPTY ); Level.set( action.dst, Terrain.EMPTY );
@@ -27,6 +27,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Blacksmith; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Blacksmith;
import com.shatteredpixel.shatteredpixeldungeon.items.Generator;
import com.shatteredpixel.shatteredpixeldungeon.items.Heap; import com.shatteredpixel.shatteredpixeldungeon.items.Heap;
import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.items.quest.DarkGold; import com.shatteredpixel.shatteredpixeldungeon.items.quest.DarkGold;
@@ -153,6 +154,13 @@ public class MiningLevel extends CavesLevel {
} }
drop( item, cell ).setHauntedIfCursed().type = Heap.Type.REMAINS; drop( item, cell ).setHauntedIfCursed().type = Heap.Type.REMAINS;
} }
int cell = randomDropCell();
if (map[cell] == Terrain.HIGH_GRASS || map[cell] == Terrain.FURROWED_GRASS) {
map[cell] = Terrain.GRASS;
losBlocking[cell] = false;
}
drop( Generator.randomUsingDefaults(Generator.Category.FOOD), cell );
} }
@Override @Override