From 232e8a986fde0be27f66645711b55e14d85ae1b3 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Thu, 4 Jan 2018 21:33:52 -0500 Subject: [PATCH] v0.6.3: implement drops for new ranged weapons --- .../actors/mobs/Mimic.java | 4 +- .../actors/mobs/Skeleton.java | 4 +- .../actors/mobs/Statue.java | 5 +- .../items/Generator.java | 111 ++++++++++++++++-- .../items/wands/CursedWand.java | 5 +- .../items/weapon/missiles/TippedDart.java | 2 +- .../rooms/secret/SecretArtilleryRoom.java | 9 +- .../levels/rooms/secret/SecretMazeRoom.java | 3 +- .../levels/rooms/special/ArmoryRoom.java | 18 +-- .../levels/rooms/special/PoolRoom.java | 3 +- .../levels/rooms/special/ShopRoom.java | 21 ++-- .../levels/rooms/special/TrapsRoom.java | 3 +- .../levels/rooms/standard/BlacksmithRoom.java | 3 +- 13 files changed, 139 insertions(+), 52 deletions(-) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Mimic.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Mimic.java index 708c34ba9..4e56339db 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Mimic.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Mimic.java @@ -150,8 +150,10 @@ public class Mimic extends Mob { //generate an extra reward for killing the mimic switch(Random.Int(5)){ - case 0: case 1: + case 0: m.items.add(new Gold().random()); break; + case 1: + m.items.add(Generator.randomMissile()); break; case 2: m.items.add(Generator.randomArmor().identify()); break; case 3: diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Skeleton.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Skeleton.java index 29411c87a..0142d2dc9 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Skeleton.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Skeleton.java @@ -89,8 +89,8 @@ public class Skeleton extends Mob { protected Item createLoot() { Item loot; do { - loot = Generator.random(Generator.Category.WEAPON); - //50% chance of re-rolling tier 4 or 5 items + loot = Random.Int(4) == 0 ? Generator.randomMissile() : Generator.randomWeapon(); + //50% chance of re-rolling tier 4 or 5 melee weapons } while (loot instanceof MeleeWeapon && ((MeleeWeapon) loot).tier >= 4 && Random.Int(2) == 0); loot.level(0); return loot; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Statue.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Statue.java index ab11ec69f..dd2ad7695 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Statue.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Statue.java @@ -30,7 +30,6 @@ import com.shatteredpixel.shatteredpixeldungeon.items.weapon.Weapon; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.Weapon.Enchantment; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Grim; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Vampiric; -import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MeleeWeapon; import com.shatteredpixel.shatteredpixeldungeon.journal.Notes; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.StatueSprite; @@ -52,8 +51,8 @@ public class Statue extends Mob { super(); do { - weapon = (Weapon)Generator.random( Generator.Category.WEAPON ); - } while (!(weapon instanceof MeleeWeapon) || weapon.cursed); + weapon = Generator.randomWeapon(); + } while (weapon.cursed); weapon.enchant( Enchantment.random() ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java index 50f50a7a1..673f6752a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java @@ -97,7 +97,6 @@ import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfPrismaticLight import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfRegrowth; import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfTransfusion; import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfVenom; -import com.shatteredpixel.shatteredpixeldungeon.items.weapon.Weapon; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.AssassinsBlade; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.BattleAxe; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Dagger; @@ -112,6 +111,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Knuckles; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Longsword; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Mace; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MeleeWeapon; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Quarterstaff; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.RoundShield; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.RunicBlade; @@ -123,6 +123,18 @@ import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Sword; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.WarHammer; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Whip; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.WornShortsword; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Bolas; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.CurareDart; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Dart; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.FishingSpear; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.IncendiaryDart; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Javelin; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.MissileWeapon; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Shuriken; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.ThrowingHammer; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.ThrowingKnife; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Tomahawk; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Trident; import com.shatteredpixel.shatteredpixeldungeon.plants.BlandfruitBush; import com.shatteredpixel.shatteredpixeldungeon.plants.Blindweed; import com.shatteredpixel.shatteredpixeldungeon.plants.Dreamfoil; @@ -147,21 +159,34 @@ import java.util.LinkedHashMap; public class Generator { public enum Category { - WEAPON ( 6, Weapon.class ), - WEP_T1 ( 0, Weapon.class), - WEP_T2 ( 0, Weapon.class), - WEP_T3 ( 0, Weapon.class), - WEP_T4 ( 0, Weapon.class), - WEP_T5 ( 0, Weapon.class), + WEAPON ( 6, MeleeWeapon.class), + WEP_T1 ( 0, MeleeWeapon.class), + WEP_T2 ( 0, MeleeWeapon.class), + WEP_T3 ( 0, MeleeWeapon.class), + WEP_T4 ( 0, MeleeWeapon.class), + WEP_T5 ( 0, MeleeWeapon.class), + ARMOR ( 4, Armor.class ), + + MISSILE ( 5, MissileWeapon.class ), + MIS_T1 ( 0, MissileWeapon.class ), + MIS_T2 ( 0, MissileWeapon.class ), + MIS_T3 ( 0, MissileWeapon.class ), + MIS_T4 ( 0, MissileWeapon.class ), + MIS_T5 ( 0, MissileWeapon.class ), + POTION ( 20, Potion.class ), SCROLL ( 20, Scroll.class ), + WAND ( 3, Wand.class ), RING ( 1, Ring.class ), ARTIFACT( 1, Artifact.class), + SEED ( 0, Plant.Seed.class ), + FOOD ( 0, Food.class ), - GOLD ( 25, Gold.class ); + + GOLD ( 20, Gold.class ); public Class[] classes; public float[] probs; @@ -296,6 +321,41 @@ public class Generator { PlateArmor.class }; ARMOR.probs = new float[]{ 0, 0, 0, 0, 0 }; + //see Generator.randomMissile + MISSILE.classes = new Class[]{}; + MISSILE.probs = new float[]{}; + + MIS_T1.classes = new Class[]{ + Dart.class, + ThrowingKnife.class + }; + MIS_T1.probs = new float[]{ 1, 1 }; + + MIS_T2.classes = new Class[]{ + Shuriken.class, + IncendiaryDart.class, + CurareDart.class + }; + MIS_T2.probs = new float[]{ 5, 2, 2 }; + + MIS_T3.classes = new Class[]{ + FishingSpear.class, + Bolas.class + }; + MIS_T3.probs = new float[]{ 4, 3 }; + + MIS_T4.classes = new Class[]{ + Javelin.class, + Tomahawk.class + }; + MIS_T4.probs = new float[]{ 4, 3 }; + + MIS_T5.classes = new Class[]{ + Trident.class, + ThrowingHammer.class + }; + MIS_T5.probs = new float[]{ 4, 3 }; + FOOD.classes = new Class[]{ Food.class, Pasty.class, @@ -384,6 +444,8 @@ public class Generator { return randomArmor(); case WEAPON: return randomWeapon(); + case MISSILE: + return randomMissile(); case ARTIFACT: Item item = randomArtifact(); //if we're out of artifacts, return a ring instead. @@ -439,17 +501,44 @@ public class Generator { Category.WEP_T5 }; - public static Weapon randomWeapon(){ + public static MeleeWeapon randomWeapon(){ return randomWeapon(Dungeon.depth / 5); } - public static Weapon randomWeapon(int floorSet) { + public static MeleeWeapon randomWeapon(int floorSet) { floorSet = (int)GameMath.gate(0, floorSet, floorSetTierProbs.length-1); try { Category c = wepTiers[Random.chances(floorSetTierProbs[floorSet])]; - Weapon w = (Weapon)c.classes[Random.chances(c.probs)].newInstance(); + MeleeWeapon w = (MeleeWeapon)c.classes[Random.chances(c.probs)].newInstance(); + w.random(); + return w; + } catch (Exception e) { + ShatteredPixelDungeon.reportException(e); + return null; + } + } + + public static final Category[] misTiers = new Category[]{ + Category.MIS_T1, + Category.MIS_T2, + Category.MIS_T3, + Category.MIS_T4, + Category.MIS_T5 + }; + + public static MissileWeapon randomMissile(){ + return randomMissile(Dungeon.depth / 5); + } + + public static MissileWeapon randomMissile(int floorSet) { + + floorSet = (int)GameMath.gate(0, floorSet, floorSetTierProbs.length-1); + + try { + Category c = misTiers[Random.chances(floorSetTierProbs[floorSet])]; + MissileWeapon w = (MissileWeapon)c.classes[Random.chances(c.probs)].newInstance(); w.random(); return w; } catch (Exception e) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/CursedWand.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/CursedWand.java index e11ffdad0..3cb8e71d3 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/CursedWand.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/CursedWand.java @@ -52,7 +52,6 @@ import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.TimekeepersHourglass; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfRecharging; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTeleportation; -import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.MissileWeapon; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; import com.shatteredpixel.shatteredpixeldungeon.levels.traps.CursingTrap; import com.shatteredpixel.shatteredpixeldungeon.levels.traps.ShockingTrap; @@ -389,7 +388,7 @@ public class CursedWand { do { reward = Generator.random(Random.oneOf(Generator.Category.WEAPON, Generator.Category.ARMOR, Generator.Category.RING, Generator.Category.WAND)); - } while (reward.level() < 2 && !(reward instanceof MissileWeapon)); + } while (reward.level() < 1); Sample.INSTANCE.play(Assets.SND_MIMIC, 1, 1, 0.5f); mimic.items.clear(); mimic.items.add(reward); @@ -442,7 +441,7 @@ public class CursedWand { do { result = Generator.random(Random.oneOf(Generator.Category.WEAPON, Generator.Category.ARMOR, Generator.Category.RING, Generator.Category.ARTIFACT)); - } while (result.level() < 0 && !(result instanceof MissileWeapon)); + } while (result.cursed); if (result.isUpgradable()) result.upgrade(); result.cursed = result.cursedKnown = true; GLog.w( Messages.get(CursedWand.class, "transmogrify") ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/TippedDart.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/TippedDart.java index 92a6c47e3..1c4636314 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/TippedDart.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/TippedDart.java @@ -55,6 +55,6 @@ public abstract class TippedDart extends Dart { @Override public int price() { - return quantity * 8; + return quantity * 6; } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/secret/SecretArtilleryRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/secret/SecretArtilleryRoom.java index 9eda70a1b..a86095f8c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/secret/SecretArtilleryRoom.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/secret/SecretArtilleryRoom.java @@ -22,8 +22,6 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.rooms.secret; import com.shatteredpixel.shatteredpixeldungeon.items.Generator; -import com.shatteredpixel.shatteredpixeldungeon.items.Item; -import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.MissileWeapon; import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter; @@ -46,12 +44,7 @@ public class SecretArtilleryRoom extends SecretRoom { } while ( level.map[itemPos] != Terrain.EMPTY_SP || level.heaps.get(itemPos) != null); - Item item; - do{ - item = Generator.randomWeapon(); - } while (!(item instanceof MissileWeapon)); - - level.drop(item, itemPos); + level.drop(Generator.randomMissile(), itemPos); } entrance().set(Door.Type.HIDDEN); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/secret/SecretMazeRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/secret/SecretMazeRoom.java index b269fddfd..f6e3e3a86 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/secret/SecretMazeRoom.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/secret/SecretMazeRoom.java @@ -25,7 +25,6 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.items.Generator; import com.shatteredpixel.shatteredpixeldungeon.items.Heap; import com.shatteredpixel.shatteredpixeldungeon.items.Item; -import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.MissileWeapon; import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; import com.shatteredpixel.shatteredpixeldungeon.levels.features.Maze; @@ -102,7 +101,7 @@ public class SecretMazeRoom extends SecretRoom { } else { prize = Generator.randomArmor((Dungeon.depth / 5) + 1); } - } while (prize.cursed || prize instanceof MissileWeapon); + } while (prize.cursed); //33% chance for an extra update. if (Random.Int(3) == 0){ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/ArmoryRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/ArmoryRoom.java index 794e72cae..ce65a0988 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/ArmoryRoom.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/ArmoryRoom.java @@ -54,7 +54,7 @@ public class ArmoryRoom extends SpecialRoom { Painter.set( level, statue, Terrain.STATUE ); } - int n = Random.IntRange( 1, 2 ); + int n = Random.IntRange( 2, 3 ); for (int i=0; i < n; i++) { int pos; do { @@ -68,11 +68,15 @@ public class ArmoryRoom extends SpecialRoom { } private static Item prize( Level level ) { - return Random.Int( 6 ) == 0 ? - new Bomb().random() : - Generator.random( Random.oneOf( - Generator.Category.ARMOR, - Generator.Category.WEAPON - ) ); + switch (Random.Int( 5 )){ + case 0: + return new Bomb().random(); + case 1: + return Generator.randomWeapon(); + case 2: + return Generator.randomArmor(); + default: + return Generator.randomMissile(); + } } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/PoolRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/PoolRoom.java index db70dc532..179ff60fd 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/PoolRoom.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/PoolRoom.java @@ -27,7 +27,6 @@ import com.shatteredpixel.shatteredpixeldungeon.items.Generator; import com.shatteredpixel.shatteredpixeldungeon.items.Heap; import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfInvisibility; -import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.MissileWeapon; import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter; @@ -105,7 +104,7 @@ public class PoolRoom extends SpecialRoom { } while (prize.cursed); //33% chance for an extra update. - if (!(prize instanceof MissileWeapon) && Random.Int(3) == 0){ + if (Random.Int(3) == 0){ prize.upgrade(); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/ShopRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/ShopRoom.java index 1bdb46172..ae2672024 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/ShopRoom.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/ShopRoom.java @@ -61,11 +61,14 @@ import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Mace; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Shortsword; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Sword; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.WarHammer; -import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.CurareDart; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Bolas; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.FishingSpear; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.IncendiaryDart; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Javelin; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Shuriken; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.ThrowingHammer; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Tomahawk; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Trident; import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter; @@ -165,32 +168,32 @@ public class ShopRoom extends SpecialRoom { case 6: itemsToSpawn.add( (Random.Int( 2 ) == 0 ? new Shortsword().identify() : new HandAxe()).identify() ); itemsToSpawn.add( Random.Int( 2 ) == 0 ? - new IncendiaryDart().quantity(Random.NormalIntRange(2, 4)) : - new CurareDart().quantity(Random.NormalIntRange(1, 3))); + new Shuriken().random() : + new IncendiaryDart().random()); itemsToSpawn.add( new LeatherArmor().identify() ); break; case 11: itemsToSpawn.add( (Random.Int( 2 ) == 0 ? new Sword().identify() : new Mace()).identify() ); itemsToSpawn.add( Random.Int( 2 ) == 0 ? - new CurareDart().quantity(Random.NormalIntRange(2, 5)) : - new Shuriken().quantity(Random.NormalIntRange(3, 6))); + new FishingSpear().random() : + new Bolas().random()); itemsToSpawn.add( new MailArmor().identify() ); break; case 16: itemsToSpawn.add( (Random.Int( 2 ) == 0 ? new Longsword().identify() : new BattleAxe()).identify() ); itemsToSpawn.add( Random.Int( 2 ) == 0 ? - new Shuriken().quantity(Random.NormalIntRange(4, 7)) : - new Javelin().quantity(Random.NormalIntRange(3, 6))); + new Javelin().random() : + new Tomahawk().random()); itemsToSpawn.add( new ScaleArmor().identify() ); break; case 21: itemsToSpawn.add( Random.Int( 2 ) == 0 ? new Greatsword().identify() : new WarHammer().identify() ); itemsToSpawn.add( Random.Int(2) == 0 ? - new Javelin().quantity(Random.NormalIntRange(4, 7)) : - new Tomahawk().quantity(Random.NormalIntRange(4, 7))); + new Trident().random() : + new ThrowingHammer().random()); itemsToSpawn.add( new PlateArmor().identify() ); itemsToSpawn.add( new Torch() ); itemsToSpawn.add( new Torch() ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/TrapsRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/TrapsRoom.java index af4ad9026..ae13f7b86 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/TrapsRoom.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/TrapsRoom.java @@ -27,7 +27,6 @@ import com.shatteredpixel.shatteredpixeldungeon.items.Generator; import com.shatteredpixel.shatteredpixeldungeon.items.Heap; import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfLevitation; -import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.MissileWeapon; import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter; @@ -136,7 +135,7 @@ public class TrapsRoom extends SpecialRoom { } while (prize.cursed); //33% chance for an extra update. - if (!(prize instanceof MissileWeapon) && Random.Int(3) == 0){ + if (Random.Int(3) == 0){ prize.upgrade(); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/BlacksmithRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/BlacksmithRoom.java index 567a8a315..5e2b6c2d9 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/BlacksmithRoom.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/BlacksmithRoom.java @@ -56,7 +56,8 @@ public class BlacksmithRoom extends StandardRoom { level.drop( Generator.random( Random.oneOf( Generator.Category.ARMOR, - Generator.Category.WEAPON + Generator.Category.WEAPON, + Generator.Category.MISSILE ) ), pos ); }