v2.5.0: adjusted some special rooms to no longer throw out cursed items

This commit is contained in:
Evan Debenham
2024-07-15 14:38:27 -04:00
parent ea3d9db285
commit 9ebf0357ef
4 changed files with 54 additions and 26 deletions
@@ -26,6 +26,8 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.items.Generator; 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.armor.Armor;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.Weapon;
import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
import com.shatteredpixel.shatteredpixeldungeon.levels.features.Maze; import com.shatteredpixel.shatteredpixeldungeon.levels.features.Maze;
@@ -95,13 +97,19 @@ public class SecretMazeRoom extends SecretRoom {
Item prize; Item prize;
//1 floor set higher in probability, never cursed //1 floor set higher in probability, never cursed
do { //1 floor set higher in probability, never cursed
if (Random.Int(2) == 0) { if (Random.Int(2) == 0) {
prize = Generator.randomWeapon((Dungeon.depth / 5) + 1, true); prize = Generator.randomWeapon((Dungeon.depth / 5) + 1, true);
} else { if (((Weapon)prize).hasCurseEnchant()){
prize = Generator.randomArmor((Dungeon.depth / 5) + 1); ((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; prize.cursedKnown = true;
//33% chance for an extra update. //33% chance for an extra update.
@@ -21,13 +21,14 @@
package com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special; package com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special;
import com.shatteredpixel.shatteredpixeldungeon.Challenges;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Piranha; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Piranha;
import com.shatteredpixel.shatteredpixeldungeon.items.Generator; 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.armor.Armor;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfInvisibility; 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.Level;
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter; import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter;
@@ -110,13 +111,18 @@ public class PoolRoom extends SpecialRoom {
} }
//1 floor set higher in probability, never cursed //1 floor set higher in probability, never cursed
do { if (Random.Int(2) == 0) {
if (Random.Int(2) == 0) { prize = Generator.randomWeapon((Dungeon.depth / 5) + 1);
prize = Generator.randomWeapon((Dungeon.depth / 5) + 1); if (((Weapon)prize).hasCurseEnchant()){
} else { ((Weapon) prize).enchant(null);
prize = Generator.randomArmor((Dungeon.depth / 5) + 1);
} }
} 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; prize.cursedKnown = true;
//33% chance for an extra update. //33% chance for an extra update.
@@ -35,7 +35,9 @@ import com.shatteredpixel.shatteredpixeldungeon.effects.MagicMissile;
import com.shatteredpixel.shatteredpixeldungeon.items.Generator; 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.armor.Armor;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfHaste; import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfHaste;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.Weapon;
import com.shatteredpixel.shatteredpixeldungeon.journal.Bestiary; import com.shatteredpixel.shatteredpixeldungeon.journal.Bestiary;
import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
@@ -182,13 +184,19 @@ public class SentryRoom extends SpecialRoom {
} }
//1 floor set higher in probability, never cursed //1 floor set higher in probability, never cursed
do { //1 floor set higher in probability, never cursed
if (Random.Int(2) == 0) { if (Random.Int(2) == 0) {
prize = Generator.randomWeapon((Dungeon.depth / 5) + 1); prize = Generator.randomWeapon((Dungeon.depth / 5) + 1);
} else { if (((Weapon)prize).hasCurseEnchant()){
prize = Generator.randomArmor((Dungeon.depth / 5) + 1); ((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; prize.cursedKnown = true;
//33% chance for an extra update. //33% chance for an extra update.
@@ -21,12 +21,13 @@
package com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special; package com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special;
import com.shatteredpixel.shatteredpixeldungeon.Challenges;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.items.Generator; 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.armor.Armor;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfLevitation; 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.Level;
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter; import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter;
@@ -133,13 +134,18 @@ public class TrapsRoom extends SpecialRoom {
} }
//1 floor set higher in probability, never cursed //1 floor set higher in probability, never cursed
do { if (Random.Int(2) == 0) {
if (Random.Int(2) == 0) { prize = Generator.randomWeapon((Dungeon.depth / 5) + 1);
prize = Generator.randomWeapon((Dungeon.depth / 5) + 1); if (((Weapon)prize).hasCurseEnchant()){
} else { ((Weapon) prize).enchant(null);
prize = Generator.randomArmor((Dungeon.depth / 5) + 1);
} }
} 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; prize.cursedKnown = true;
//33% chance for an extra update. //33% chance for an extra update.