diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/actors/hero/HeroClass.java b/src/com/shatteredpixel/shatteredpixeldungeon/actors/hero/HeroClass.java index 1be0f7c00..590908103 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/actors/hero/HeroClass.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/actors/hero/HeroClass.java @@ -19,6 +19,7 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.hero; import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Badges; +import com.shatteredpixel.shatteredpixeldungeon.Challenges; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.items.TomeOfMastery; import com.shatteredpixel.shatteredpixeldungeon.items.armor.ClothArmor; @@ -110,8 +111,11 @@ public enum HeroClass { } private static void initCommon( Hero hero ) { - (hero.belongings.armor = new ClothArmor()).identify(); - new Food().identify().collect(); + if (!Dungeon.isChallenged(Challenges.NO_ARMOR)) + (hero.belongings.armor = new ClothArmor()).identify(); + + if (!Dungeon.isChallenged(Challenges.NO_FOOD)) + new Food().identify().collect(); } public Badges.Badge masteryBadge() { diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java b/src/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java index 709948810..091f8e313 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java @@ -17,20 +17,6 @@ */ package com.shatteredpixel.shatteredpixeldungeon.levels; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; - -import com.shatteredpixel.shatteredpixeldungeon.items.food.Blandfruit; -import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion; -import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfMight; -import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfWealth; -import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfWeaponUpgrade; -import com.shatteredpixel.shatteredpixeldungeon.plants.BlandfruitBush; -import com.watabou.noosa.Scene; -import com.watabou.noosa.audio.Sample; import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Challenges; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; @@ -51,30 +37,44 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Bestiary; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob; import com.shatteredpixel.shatteredpixeldungeon.effects.particles.FlowParticle; import com.shatteredpixel.shatteredpixeldungeon.effects.particles.WindParticle; +import com.shatteredpixel.shatteredpixeldungeon.items.Dewdrop; import com.shatteredpixel.shatteredpixeldungeon.items.Generator; -import com.shatteredpixel.shatteredpixeldungeon.items.Gold; import com.shatteredpixel.shatteredpixeldungeon.items.Heap; import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.Stylus; import com.shatteredpixel.shatteredpixeldungeon.items.armor.Armor; +import com.shatteredpixel.shatteredpixeldungeon.items.food.Blandfruit; import com.shatteredpixel.shatteredpixeldungeon.items.food.Food; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion; import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfHealing; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfMight; import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfStrength; +import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfWealth; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfUpgrade; +import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfWeaponUpgrade; import com.shatteredpixel.shatteredpixeldungeon.levels.features.Chasm; import com.shatteredpixel.shatteredpixeldungeon.levels.features.Door; import com.shatteredpixel.shatteredpixeldungeon.levels.features.HighGrass; import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter; import com.shatteredpixel.shatteredpixeldungeon.levels.traps.*; import com.shatteredpixel.shatteredpixeldungeon.mechanics.ShadowCaster; +import com.shatteredpixel.shatteredpixeldungeon.plants.BlandfruitBush; import com.shatteredpixel.shatteredpixeldungeon.plants.Plant; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; +import com.watabou.noosa.Scene; +import com.watabou.noosa.audio.Sample; import com.watabou.utils.Bundlable; import com.watabou.utils.Bundle; import com.watabou.utils.Random; import com.watabou.utils.SparseArray; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; + public abstract class Level implements Bundlable { public static enum Feeling { @@ -446,7 +446,8 @@ public abstract class Level implements Bundlable { itemsToSpawn.add( item ); } } - + + //TODO: this results in lots of empty rooms that could otherwise have a prize, should rework, also fix typo. public Item itemToSpanAsPrize() { if (Random.Int( itemsToSpawn.size() + 1 ) > 0) { Item item = Random.element( itemsToSpawn ); @@ -555,14 +556,13 @@ public abstract class Level implements Bundlable { public Heap drop( Item item, int cell ) { - if (Dungeon.isChallenged( Challenges.NO_FOOD ) && item instanceof Food) { - item = new Gold( item.price() ); - } else - if (Dungeon.isChallenged( Challenges.NO_ARMOR ) && item instanceof Armor) { - item = new Gold( item.price() ); - } else - if (Dungeon.isChallenged( Challenges.NO_HEALING ) && item instanceof PotionOfHealing) { - item = new Gold( item.price() ); + if ((Dungeon.isChallenged( Challenges.NO_FOOD ) && (item instanceof Food || item instanceof BlandfruitBush.Seed)) || + (Dungeon.isChallenged( Challenges.NO_ARMOR ) && item instanceof Armor) || + (Dungeon.isChallenged( Challenges.NO_HEALING ) && item instanceof PotionOfHealing) || + (Dungeon.isChallenged( Challenges.NO_HERBALISM ) && (item instanceof Plant.Seed || item instanceof Dewdrop))) { + + return new Heap(); + } if ((map[cell] == Terrain.ALCHEMY) && (item instanceof BlandfruitBush.Seed || !(item instanceof Plant.Seed || diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java b/src/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java index 4fba476d9..c75fdcdbe 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java @@ -18,6 +18,7 @@ package com.shatteredpixel.shatteredpixeldungeon.levels; import com.shatteredpixel.shatteredpixeldungeon.Bones; +import com.shatteredpixel.shatteredpixeldungeon.Challenges; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; @@ -139,6 +140,14 @@ public abstract class RegularLevel extends Level { if (Dungeon.bossLevel( Dungeon.depth + 1 )) { specials.remove( Room.Type.WEAK_FLOOR ); } + if (Dungeon.isChallenged( Challenges.NO_ARMOR )){ + //no sense in giving an armor reward room on a run with no armor. + specials.remove( Room.Type.CRYPT ); + } + if (Dungeon.isChallenged( Challenges.NO_HERBALISM )){ + //sorry warden, no lucky sungrass or blandfruit seeds for you! + specials.remove( Room.Type.GARDEN ); + } assignRoomType(); paint(); diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/levels/painters/GardenPainter.java b/src/com/shatteredpixel/shatteredpixeldungeon/levels/painters/GardenPainter.java index 47445f250..239188b9b 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/levels/painters/GardenPainter.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/levels/painters/GardenPainter.java @@ -17,12 +17,14 @@ */ package com.shatteredpixel.shatteredpixeldungeon.levels.painters; +import com.shatteredpixel.shatteredpixeldungeon.Challenges; +import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Foliage; import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.levels.Room; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; -import com.shatteredpixel.shatteredpixeldungeon.plants.Sungrass; import com.shatteredpixel.shatteredpixeldungeon.plants.BlandfruitBush; +import com.shatteredpixel.shatteredpixeldungeon.plants.Sungrass; import com.watabou.utils.Random; public class GardenPainter extends Painter { @@ -34,17 +36,20 @@ public class GardenPainter extends Painter { fill( level, room, 2, Terrain.GRASS ); room.entrance().set( Room.Door.Type.REGULAR ); - - int bushes = Random.Int( 3 ); - if (bushes == 0) { - level.plant(new Sungrass.Seed(), room.random()); - } else if (bushes == 1) { - level.plant(new BlandfruitBush.Seed(), room.random() ); - } else { - bushes = Random.Int( 5 ); - if (bushes == 0){ + + if (Dungeon.isChallenged(Challenges.NO_FOOD)) { + if (Random.Int(2) == 0){ level.plant(new Sungrass.Seed(), room.random()); - level.plant(new BlandfruitBush.Seed(), room.random() ); + } + } else { + int bushes = Random.Int(3); + if (bushes == 0) { + level.plant(new Sungrass.Seed(), room.random()); + } else if (bushes == 1) { + level.plant(new BlandfruitBush.Seed(), room.random()); + } else if (Random.Int(5) == 0) { + level.plant(new Sungrass.Seed(), room.random()); + level.plant(new BlandfruitBush.Seed(), room.random()); } }