From 9ebf0357ef382b58b5fd56543f28eff75a318f02 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Mon, 15 Jul 2024 14:38:27 -0400 Subject: [PATCH] v2.5.0: adjusted some special rooms to no longer throw out cursed items --- .../levels/rooms/secret/SecretMazeRoom.java | 20 +++++++++++++------ .../levels/rooms/special/PoolRoom.java | 20 ++++++++++++------- .../levels/rooms/special/SentryRoom.java | 20 +++++++++++++------ .../levels/rooms/special/TrapsRoom.java | 20 ++++++++++++------- 4 files changed, 54 insertions(+), 26 deletions(-) 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 4f0b6c598..d49d67fc8 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 @@ -26,6 +26,8 @@ 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.armor.Armor; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.Weapon; import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; import com.shatteredpixel.shatteredpixeldungeon.levels.features.Maze; @@ -95,13 +97,19 @@ public class SecretMazeRoom extends SecretRoom { Item prize; //1 floor set higher in probability, never cursed - do { - if (Random.Int(2) == 0) { - prize = Generator.randomWeapon((Dungeon.depth / 5) + 1, true); - } else { - prize = Generator.randomArmor((Dungeon.depth / 5) + 1); + //1 floor set higher in probability, never cursed + if (Random.Int(2) == 0) { + prize = Generator.randomWeapon((Dungeon.depth / 5) + 1, true); + if (((Weapon)prize).hasCurseEnchant()){ + ((Weapon) prize).enchant(null); } - } while (prize.cursed || Challenges.isItemBlocked(prize)); + } else { + prize = Generator.randomArmor((Dungeon.depth / 5) + 1); + if (((Armor)prize).hasCurseGlyph()){ + ((Armor) prize).inscribe(null); + } + } + prize.cursed = false; prize.cursedKnown = true; //33% chance for an extra update. 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 523146c37..fddd8c75e 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 @@ -21,13 +21,14 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special; -import com.shatteredpixel.shatteredpixeldungeon.Challenges; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Piranha; import com.shatteredpixel.shatteredpixeldungeon.items.Generator; import com.shatteredpixel.shatteredpixeldungeon.items.Heap; import com.shatteredpixel.shatteredpixeldungeon.items.Item; +import com.shatteredpixel.shatteredpixeldungeon.items.armor.Armor; import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfInvisibility; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.Weapon; import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter; @@ -110,13 +111,18 @@ public class PoolRoom extends SpecialRoom { } //1 floor set higher in probability, never cursed - do { - if (Random.Int(2) == 0) { - prize = Generator.randomWeapon((Dungeon.depth / 5) + 1); - } else { - prize = Generator.randomArmor((Dungeon.depth / 5) + 1); + if (Random.Int(2) == 0) { + prize = Generator.randomWeapon((Dungeon.depth / 5) + 1); + if (((Weapon)prize).hasCurseEnchant()){ + ((Weapon) prize).enchant(null); } - } while (prize.cursed || Challenges.isItemBlocked(prize)); + } else { + prize = Generator.randomArmor((Dungeon.depth / 5) + 1); + if (((Armor)prize).hasCurseGlyph()){ + ((Armor) prize).inscribe(null); + } + } + prize.cursed = false; prize.cursedKnown = true; //33% chance for an extra update. diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/SentryRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/SentryRoom.java index 637c565bf..e6adcd81f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/SentryRoom.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/SentryRoom.java @@ -35,7 +35,9 @@ import com.shatteredpixel.shatteredpixeldungeon.effects.MagicMissile; import com.shatteredpixel.shatteredpixeldungeon.items.Generator; import com.shatteredpixel.shatteredpixeldungeon.items.Heap; import com.shatteredpixel.shatteredpixeldungeon.items.Item; +import com.shatteredpixel.shatteredpixeldungeon.items.armor.Armor; import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfHaste; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.Weapon; import com.shatteredpixel.shatteredpixeldungeon.journal.Bestiary; import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; @@ -182,13 +184,19 @@ public class SentryRoom extends SpecialRoom { } //1 floor set higher in probability, never cursed - do { - if (Random.Int(2) == 0) { - prize = Generator.randomWeapon((Dungeon.depth / 5) + 1); - } else { - prize = Generator.randomArmor((Dungeon.depth / 5) + 1); + //1 floor set higher in probability, never cursed + if (Random.Int(2) == 0) { + prize = Generator.randomWeapon((Dungeon.depth / 5) + 1); + if (((Weapon)prize).hasCurseEnchant()){ + ((Weapon) prize).enchant(null); } - } while (prize.cursed || Challenges.isItemBlocked(prize)); + } else { + prize = Generator.randomArmor((Dungeon.depth / 5) + 1); + if (((Armor)prize).hasCurseGlyph()){ + ((Armor) prize).inscribe(null); + } + } + prize.cursed = false; prize.cursedKnown = true; //33% chance for an extra update. 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 bffd1d7a5..8bd3f4ccc 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 @@ -21,12 +21,13 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special; -import com.shatteredpixel.shatteredpixeldungeon.Challenges; 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.armor.Armor; import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfLevitation; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.Weapon; import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter; @@ -133,13 +134,18 @@ public class TrapsRoom extends SpecialRoom { } //1 floor set higher in probability, never cursed - do { - if (Random.Int(2) == 0) { - prize = Generator.randomWeapon((Dungeon.depth / 5) + 1); - } else { - prize = Generator.randomArmor((Dungeon.depth / 5) + 1); + if (Random.Int(2) == 0) { + prize = Generator.randomWeapon((Dungeon.depth / 5) + 1); + if (((Weapon)prize).hasCurseEnchant()){ + ((Weapon) prize).enchant(null); } - } while (prize.cursed || Challenges.isItemBlocked(prize)); + } else { + prize = Generator.randomArmor((Dungeon.depth / 5) + 1); + if (((Armor)prize).hasCurseGlyph()){ + ((Armor) prize).inscribe(null); + } + } + prize.cursed = false; prize.cursedKnown = true; //33% chance for an extra update.