diff --git a/core/src/main/assets/interfaces/talent_icons.png b/core/src/main/assets/interfaces/talent_icons.png
index ca6a8a98f..1e7b26125 100644
Binary files a/core/src/main/assets/interfaces/talent_icons.png and b/core/src/main/assets/interfaces/talent_icons.png differ
diff --git a/core/src/main/assets/messages/actors/actors.properties b/core/src/main/assets/messages/actors/actors.properties
index 613dab26c..1bbed8295 100644
--- a/core/src/main/assets/messages/actors/actors.properties
+++ b/core/src/main/assets/messages/actors/actors.properties
@@ -338,23 +338,25 @@ actors.hero.talent.energizing_meal.desc=_+1:_ Eating food grants the Mage _5 tur
actors.hero.talent.energizing_upgrade.title=energizing upgrade
actors.hero.talent.energizing_upgrade.desc=_+1:_ The Mage's staff recharges for _1 extra charge_ whenever the Mage upgrades it.\n\n_+2:_ The Mage's staff recharges for _2 extra charges_ whenever the Mage upgrades it.
-actors.hero.talent.rationed_meal.title=rationed meal
-actors.hero.talent.rationed_meal.desc=_+1:_ Eating food gives the Rogue _15% more satiety_.\n\n_+2:_ Eating food gives the Rogue _25% more satiety_.
+actors.hero.talent.cached_rations.title=cached rations
+actors.hero.talent.cached_rations.desc=_+1:_ The Rogue can find _3 small rations_ placed in chests while he explores the earlier stages of the dungeon.\n\n_+2:_ The Rogue can find _5 small rations_ placed in chests while he explores the earlier stages of the the dungeon.
actors.hero.talent.thiefs_intuition.title=thief's intuition
actors.hero.talent.thiefs_intuition.desc=_+1:_ The Rogue identifies rings _2x faster_, and identifies the type of a ring _when he equips it_.\n\n_+2:_ The Rogue identifies rings _when he equips them_, and identifies the type of a ring _when he picks it up_.
actors.hero.talent.sucker_punch.title=sucker punch
actors.hero.talent.sucker_punch.desc=_+1:_ The Rogue deals _1-2 bonus damage_ the first time he surprise attacks an enemy.\n\n_+2:_ The Rogue deals _2 bonus damage_ the first time he surprise attacks an enemy.
-actors.hero.talent.mending_shadows.title=mending shadows
-actors.hero.talent.mending_shadows.desc=_+1:_ The Rogue heals for 1 HP every _5 consecutive turns_ that he is hidden by his cloak.\n\n_+2:_ The Rogue heals for 1 HP every _3 consecutive turns_ that he is hidden by his cloak.
+actors.hero.talent.protective_shadows.title=protective shadows
+actors.hero.talent.protective_shadows.desc=_+1:_ The Rogue gains one shielding _every other turn_ his cloak is activated, _to a max of 3_.\n\n_+2:_ The Rogue gains one shielding _every turn_ his cloak is activated, _to a max of 5_.
-actors.hero.talent.invigorating_meal.title=invigorating meal
-actors.hero.talent.invigorating_meal.desc=_+1:_ Eating food takes 1 turn and grants the Huntress _1 turn of haste_.\n\n_+2:_ Eating food takes 1 turn and grants the Huntress _2 turns of haste_.
+actors.hero.talent.natures_bounty.title=nature's bounty
+actors.hero.talent.natures_bounty.desc=_+1:_ The Huntress can find _4 berries_ hidden in tall grass as she explores the earlier stages of the dungeon.\n\n_+2:_ The Huntress can find _6 berries_ hidden in tall grass as she explores the earlier stages of the dungeon.
actors.hero.talent.survivalists_intuition.title=survivalist's intuition
actors.hero.talent.survivalists_intuition.desc=_+1:_ The Huntress identifies all equipment _1.75x faster_.\n\n_+2:_ The Huntress identifies all equipment _2.5x faster_.
actors.hero.talent.followup_strike.title=followup strike
actors.hero.talent.followup_strike.desc=_+1:_ When the Huntress hits an enemy with her bow or a thrown weapon, her next melee attack against that enemy deals _2 bonus damage_.\n\n_+2:_ When the Huntress hits an enemy with her bow or a thrown weapon, her next melee attack against that enemy deals _3 bonus damage_
actors.hero.talent.natures_aid.title=nature's aid
actors.hero.talent.natures_aid.desc=_+1:_ The Huntress gains 2 armor of barkskin for _4 turns_ when a plant is trampled in her vision.\n\n_+2:_ The Huntress gains 2 armor of barkskin for _6 turns_ when a plant is trampled in her vision.
+actors.hero.talent.invigorating_meal.title=invigorating meal
+actors.hero.talent.invigorating_meal.desc=_+1:_ Eating food takes 1 turn and grants the Huntress _1 turn of haste_.\n\n_+2:_ Eating food takes 1 turn and grants the Huntress _2 turns of haste_.
actors.hero.hero.name=you
actors.hero.hero.leave=You can't leave yet, the rest of the dungeon awaits below!
diff --git a/core/src/main/assets/messages/items/items.properties b/core/src/main/assets/messages/items/items.properties
index 9cf3bd937..174c7c7ed 100644
--- a/core/src/main/assets/messages/items/items.properties
+++ b/core/src/main/assets/messages/items/items.properties
@@ -482,6 +482,10 @@ items.bombs.woollybomb.name=woolly bomb
items.bombs.woollybomb.desc=This customized bomb will create a field of magical sheep after exploding. These sheep will block movement and persist for some time.
###food
+items.food.berry.name=dungeon berry
+items.food.berry.eat_msg=That berry was tasty!
+items.food.berry.desc=This small berry was found by the huntress among the dungeon's vegetation. It can be eaten quickly, restores a small amount of satiety, and might contain a usable seed!
+
items.food.blandfruit.name=blandfruit
items.food.blandfruit.cooked=cooked blandfruit
items.food.blandfruit.sunfruit=sunfruit
diff --git a/core/src/main/assets/sprites/items.png b/core/src/main/assets/sprites/items.png
index 72475cfac..1689eec39 100644
Binary files a/core/src/main/assets/sprites/items.png and b/core/src/main/assets/sprites/items.png differ
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Talent.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Talent.java
index 685d2ea4e..dd965a831 100644
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Talent.java
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Talent.java
@@ -25,8 +25,8 @@ import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
+import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.CounterBuff;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Haste;
-import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Hunger;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Recharging;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.WandEmpower;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
@@ -71,21 +71,21 @@ public enum Talent {
TEST_MAGE_T2_4(23),
TEST_MAGE_T2_5(24),
- RATIONED_MEAL(32),
+ CACHED_RATIONS(32),
THIEFS_INTUITION(33),
SUCKER_PUNCH(34),
- MENDING_SHADOWS(35),
+ PROTECTIVE_SHADOWS(35),
TEST_ROGUE_T2_1(36),
TEST_ROGUE_T2_2(37),
TEST_ROGUE_T2_3(38),
TEST_ROGUE_T2_4(39),
TEST_ROGUE_T2_5(40),
- INVIGORATING_MEAL(48),
+ NATURES_BOUNTY(48),
SURVIVALISTS_INTUITION(49),
FOLLOWUP_STRIKE(50),
NATURES_AID(51),
- TEST_HUNTRESS_T2_1(52),
+ INVIGORATING_MEAL(52),
TEST_HUNTRESS_T2_2(53),
TEST_HUNTRESS_T2_3(54),
TEST_HUNTRESS_T2_4(55),
@@ -117,6 +117,11 @@ public enum Talent {
}
public static void onTalentUpgraded( Hero hero, Talent talent){
+ if (talent == NATURES_BOUNTY){
+ if ( hero.pointsInTalent(NATURES_BOUNTY) == 1) Buff.count(hero, NatureBerriesAvailable.class, 4);
+ else Buff.count(hero, NatureBerriesAvailable.class, 2);
+ }
+
if (talent == ARMSMASTERS_INTUITION && hero.pointsInTalent(ARMSMASTERS_INTUITION) == 2){
if (hero.belongings.weapon != null) hero.belongings.weapon.identify();
if (hero.belongings.armor != null) hero.belongings.armor.identify();
@@ -136,6 +141,9 @@ public enum Talent {
}
}
+ public static class CachedRationsDropped extends CounterBuff{};
+ public static class NatureBerriesAvailable extends CounterBuff{};
+
public static void onFoodEaten( Hero hero, float foodVal ){
if (hero.hasTalent(HEARTY_MEAL)){
//3/5 HP healed, when hero is below 25% health
@@ -158,11 +166,6 @@ public enum Talent {
Buff.affect( hero, Recharging.class, 2 + 3*(hero.pointsInTalent(ENERGIZING_MEAL)) );
ScrollOfRecharging.charge( hero );
}
- if (hero.hasTalent(RATIONED_MEAL)){
- //15%/25% bonus food value
- float bonusSatiety = foodVal * (0.05f + (0.1f * hero.pointsInTalent(RATIONED_MEAL)));
- Buff.affect(hero, Hunger.class).affectHunger(bonusSatiety, true);
- }
if (hero.hasTalent(INVIGORATING_MEAL)){
//effectively 1/2 turns of haste
Buff.affect( hero, Haste.class, 0.67f+hero.pointsInTalent(INVIGORATING_MEAL));
@@ -270,10 +273,10 @@ public enum Talent {
Collections.addAll(tierTalents, EMPOWERING_MEAL, SCHOLARS_INTUITION, TESTED_HYPOTHESIS, BACKUP_BARRIER);
break;
case ROGUE:
- Collections.addAll(tierTalents, RATIONED_MEAL, THIEFS_INTUITION, SUCKER_PUNCH, MENDING_SHADOWS);
+ Collections.addAll(tierTalents, CACHED_RATIONS, THIEFS_INTUITION, SUCKER_PUNCH, PROTECTIVE_SHADOWS);
break;
case HUNTRESS:
- Collections.addAll(tierTalents, INVIGORATING_MEAL, SURVIVALISTS_INTUITION, FOLLOWUP_STRIKE, NATURES_AID);
+ Collections.addAll(tierTalents, NATURES_BOUNTY, SURVIVALISTS_INTUITION, FOLLOWUP_STRIKE, NATURES_AID);
break;
}
for (Talent talent : tierTalents){
@@ -293,7 +296,7 @@ public enum Talent {
Collections.addAll(tierTalents, TEST_ROGUE_T2_1, TEST_ROGUE_T2_2, TEST_ROGUE_T2_3, TEST_ROGUE_T2_4, TEST_ROGUE_T2_5);
break;
case HUNTRESS:
- Collections.addAll(tierTalents, TEST_HUNTRESS_T2_1, TEST_HUNTRESS_T2_2, TEST_HUNTRESS_T2_3, TEST_HUNTRESS_T2_4, TEST_HUNTRESS_T2_5);
+ Collections.addAll(tierTalents, INVIGORATING_MEAL, TEST_HUNTRESS_T2_2, TEST_HUNTRESS_T2_3, TEST_HUNTRESS_T2_4, TEST_HUNTRESS_T2_5);
break;
}
for (Talent talent : tierTalents){
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/CloakOfShadows.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/CloakOfShadows.java
index ca592013f..f9fdad0d4 100644
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/CloakOfShadows.java
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/CloakOfShadows.java
@@ -24,13 +24,13 @@ package com.shatteredpixel.shatteredpixeldungeon.items.artifacts;
import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
+import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Barrier;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LockedFloor;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Preparation;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent;
-import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfEnergy;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
@@ -242,19 +242,21 @@ public class CloakOfShadows extends Artifact {
}
}
- float healInc = 0;
+ float barrierInc = 0.5f;
@Override
public boolean act(){
turnsToCost--;
- if (((Hero)target).hasTalent(Talent.MENDING_SHADOWS)){
- healInc++;
- // 5/3 turns to heal
- if (healInc >= 7 - 2*((Hero) target).pointsInTalent(Talent.MENDING_SHADOWS)){
- healInc = 0;
- target.HP = Math.min(target.HT, target.HP+1);
- target.sprite.emitter().burst( Speck.factory( Speck.HEALING ), 1 );
+ //barrier every 2/1 turns, to a max of 3/5
+ if (((Hero)target).hasTalent(Talent.PROTECTIVE_SHADOWS)){
+ Barrier barrier = Buff.affect(target, Barrier.class);
+ if (barrier.shielding() < 1 + 2*((Hero)target).pointsInTalent(Talent.PROTECTIVE_SHADOWS)) {
+ barrierInc += 0.5f * ((Hero) target).pointsInTalent(Talent.PROTECTIVE_SHADOWS);
+ }
+ if (barrierInc >= 1 ){
+ barrierInc = 0;
+ barrier.incShield(1);
}
}
@@ -326,14 +328,14 @@ public class CloakOfShadows extends Artifact {
}
private static final String TURNSTOCOST = "turnsToCost";
- private static final String HEAL_INC = "heal_inc";
+ private static final String BARRIER_INC = "barrier_inc";
@Override
public void storeInBundle(Bundle bundle) {
super.storeInBundle(bundle);
bundle.put( TURNSTOCOST , turnsToCost);
- bundle.put( HEAL_INC, healInc);
+ bundle.put( BARRIER_INC, barrierInc);
}
@Override
@@ -341,7 +343,7 @@ public class CloakOfShadows extends Artifact {
super.restoreFromBundle(bundle);
turnsToCost = bundle.getInt( TURNSTOCOST );
- healInc = bundle.getFloat( HEAL_INC );
+ barrierInc = bundle.getFloat( BARRIER_INC );
}
}
}
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/food/Berry.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/food/Berry.java
new file mode 100644
index 000000000..c6d450cac
--- /dev/null
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/food/Berry.java
@@ -0,0 +1,65 @@
+/*
+ * Pixel Dungeon
+ * Copyright (C) 2012-2015 Oleg Dolya
+ *
+ * Shattered Pixel Dungeon
+ * Copyright (C) 2014-2020 Evan Debenham
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see
+ */
+
+package com.shatteredpixel.shatteredpixeldungeon.items.food;
+
+import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
+import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
+import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.CounterBuff;
+import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Hunger;
+import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
+import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent;
+import com.shatteredpixel.shatteredpixeldungeon.items.Generator;
+import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
+
+public class Berry extends Food {
+
+ {
+ image = ItemSpriteSheet.BERRY;
+ energy = Hunger.HUNGRY/4f; //75 food value
+ }
+
+ @Override
+ protected float eatingTime(){
+ if (Dungeon.hero.hasTalent(Talent.INVIGORATING_MEAL)){
+ return 0;
+ } else {
+ return 1;
+ }
+ }
+
+ @Override
+ protected void satisfy(Hero hero) {
+ super.satisfy(hero);
+ SeedCounter counter = Buff.count(hero, SeedCounter.class, 1);
+ if (counter.count() >= 2){
+ Dungeon.level.drop(Generator.random(Generator.Category.SEED), hero.pos).sprite.drop();
+ counter.detach();
+ }
+ }
+
+ @Override
+ public int value() {
+ return 5 * quantity;
+ }
+
+ public static class SeedCounter extends CounterBuff{};
+}
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java
index fa9d22641..e8df58aa2 100644
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java
@@ -25,6 +25,8 @@ import com.shatteredpixel.shatteredpixeldungeon.Bones;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
+import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
+import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.GoldenMimic;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mimic;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
@@ -33,6 +35,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.Heap;
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.Artifact;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.DriedRose;
+import com.shatteredpixel.shatteredpixeldungeon.items.food.SmallRation;
import com.shatteredpixel.shatteredpixeldungeon.items.journal.GuidePage;
import com.shatteredpixel.shatteredpixeldungeon.items.keys.GoldenKey;
import com.shatteredpixel.shatteredpixeldungeon.journal.Document;
@@ -378,7 +381,7 @@ public abstract class RegularLevel extends Level {
}
}
- //use a separate generator for this to prevent held items and meta progress from affecting levelgen
+ //use a separate generator for this to prevent held items, meta progress, and talents from affecting levelgen
Random.pushGenerator( Dungeon.seedCurDepth() );
Item item = Bones.get();
@@ -411,6 +414,24 @@ public abstract class RegularLevel extends Level {
}
}
+ //cached rations try to drop in a special room on floors 2/4/6/8/9, to a max of 3/5
+ if (Dungeon.hero.hasTalent(Talent.CACHED_RATIONS)){
+ Talent.CachedRationsDropped dropped = Buff.affect(Dungeon.hero, Talent.CachedRationsDropped.class);
+ if (dropped.count() < 1 + 2*Dungeon.hero.pointsInTalent(Talent.CACHED_RATIONS)
+ && Math.min(8, 1 + 2*dropped.count()) < Dungeon.depth){
+ int cell;
+ do {
+ cell = randomDropCell(SpecialRoom.class);
+ } while (room(cell) instanceof SecretRoom);
+ if (map[cell] == Terrain.HIGH_GRASS || map[cell] == Terrain.FURROWED_GRASS) {
+ map[cell] = Terrain.GRASS;
+ losBlocking[cell] = false;
+ }
+ drop( new SmallRation(), cell).type = Heap.Type.CHEST;
+ dropped.countUp(1);
+ }
+ }
+
//guide pages
Collection allPages = Document.ADVENTURERS_GUIDE.pages();
ArrayList missingPages = new ArrayList<>();
@@ -474,10 +495,14 @@ public abstract class RegularLevel extends Level {
return null;
}
+
+ protected int randomDropCell(){
+ return randomDropCell(StandardRoom.class);
+ }
- protected int randomDropCell() {
+ protected int randomDropCell( Class roomType ) {
while (true) {
- Room room = randomRoom( StandardRoom.class );
+ Room room = randomRoom( roomType );
if (room != null && room != roomEntrance) {
int pos = pointToCell(room.random());
if (passable[pos]
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/features/HighGrass.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/features/HighGrass.java
index 8b84007aa..ab63c229e 100644
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/features/HighGrass.java
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/features/HighGrass.java
@@ -30,12 +30,14 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Invisibility;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroClass;
+import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent;
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
import com.shatteredpixel.shatteredpixeldungeon.effects.particles.LeafParticle;
import com.shatteredpixel.shatteredpixeldungeon.items.Dewdrop;
import com.shatteredpixel.shatteredpixeldungeon.items.Generator;
import com.shatteredpixel.shatteredpixeldungeon.items.armor.glyphs.Camouflage;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.SandalsOfNature;
+import com.shatteredpixel.shatteredpixeldungeon.items.food.Berry;
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
@@ -82,6 +84,17 @@ public class HighGrass {
naturalismLevel = -1;
}
}
+
+ Talent.NatureBerriesAvailable berries = ch.buff(Talent.NatureBerriesAvailable.class);
+ if (berries != null && Random.Int(30) == 0){
+ if (berries.count() > 0){
+ berries.countDown(1);
+ level.drop(new Berry(), pos).sprite.drop();
+ }
+ if (berries.count() <= 0){
+ berries.detach();
+ }
+ }
}
if (naturalismLevel >= 0) {
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java
index 99186771b..6dec30544 100644
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java
@@ -626,6 +626,7 @@ public class ItemSpriteSheet {
public static final int MEAT_PIE = FOOD+9;
public static final int BLANDFRUIT = FOOD+10;
public static final int BLAND_CHUNKS= FOOD+11;
+ public static final int BERRY = FOOD+12;
static{
assignItemRect(MEAT, 15, 11);
assignItemRect(STEAK, 15, 11);
@@ -639,6 +640,7 @@ public class ItemSpriteSheet {
assignItemRect(MEAT_PIE, 16, 12);
assignItemRect(BLANDFRUIT, 9, 12);
assignItemRect(BLAND_CHUNKS,14, 6);
+ assignItemRect(BERRY, 9, 11);
}
private static final int QUEST = xy(1, 29); //32 slots