From 2989affcb7289682ae00629c817c51a4b735d5a8 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Mon, 20 Jan 2025 15:35:03 -0500 Subject: [PATCH] v3.0.0: fixed exotic crystals not affecting enemy drops in most cases --- .../shatteredpixeldungeon/actors/mobs/Acidic.java | 2 +- .../shatteredpixeldungeon/actors/mobs/Albino.java | 2 +- .../shatteredpixeldungeon/actors/mobs/Bat.java | 2 +- .../shatteredpixeldungeon/actors/mobs/Crab.java | 2 +- .../actors/mobs/Elemental.java | 8 ++++---- .../shatteredpixeldungeon/actors/mobs/Monk.java | 2 +- .../actors/mobs/Necromancer.java | 2 +- .../shatteredpixeldungeon/actors/mobs/Senior.java | 2 +- .../shatteredpixeldungeon/actors/mobs/Spinner.java | 2 +- .../shatteredpixeldungeon/actors/mobs/Swarm.java | 2 +- .../shatteredpixeldungeon/items/Generator.java | 14 +++++++++++++- 11 files changed, 26 insertions(+), 14 deletions(-) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Acidic.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Acidic.java index 6bac902a5..4b923d65c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Acidic.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Acidic.java @@ -36,7 +36,7 @@ public class Acidic extends Scorpio { properties.add(Property.ACIDIC); - loot = new PotionOfExperience(); + loot = PotionOfExperience.class; lootChance = 1f; } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Albino.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Albino.java index f5697815a..0fda19d6c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Albino.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Albino.java @@ -36,7 +36,7 @@ public class Albino extends Rat { HP = HT = 15; EXP = 2; - loot = new MysteryMeat(); + loot = MysteryMeat.class; lootChance = 1f; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Bat.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Bat.java index dc30de132..ad5ca2333 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Bat.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Bat.java @@ -44,7 +44,7 @@ public class Bat extends Mob { flying = true; - loot = new PotionOfHealing(); + loot = PotionOfHealing.class; lootChance = 0.1667f; //by default, see lootChance() } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Crab.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Crab.java index 79941425c..e30827bdc 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Crab.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Crab.java @@ -38,7 +38,7 @@ public class Crab extends Mob { EXP = 4; maxLvl = 9; - loot = new MysteryMeat(); + loot = MysteryMeat.class; lootChance = 0.167f; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Elemental.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Elemental.java index 45197cd53..d85e5ac81 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Elemental.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Elemental.java @@ -228,7 +228,7 @@ public abstract class Elemental extends Mob { { spriteClass = ElementalSprite.Fire.class; - loot = new PotionOfLiquidFlame(); + loot = PotionOfLiquidFlame.class; lootChance = 1/8f; properties.add( Property.FIERY ); @@ -475,7 +475,7 @@ public abstract class Elemental extends Mob { { spriteClass = ElementalSprite.Frost.class; - loot = new PotionOfFrost(); + loot = PotionOfFrost.class; lootChance = 1/8f; properties.add( Property.ICY ); @@ -503,7 +503,7 @@ public abstract class Elemental extends Mob { { spriteClass = ElementalSprite.Shock.class; - loot = new ScrollOfRecharging(); + loot = ScrollOfRecharging.class; lootChance = 1/4f; properties.add( Property.ELECTRIC ); @@ -552,7 +552,7 @@ public abstract class Elemental extends Mob { { spriteClass = ElementalSprite.Chaos.class; - loot = new ScrollOfTransmutation(); + loot = ScrollOfTransmutation.class; lootChance = 1f; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Monk.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Monk.java index 5665b7311..2b4e79f79 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Monk.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Monk.java @@ -45,7 +45,7 @@ public class Monk extends Mob { EXP = 11; maxLvl = 21; - loot = new Food(); + loot = Food.class; lootChance = 0.083f; properties.add(Property.UNDEAD); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Necromancer.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Necromancer.java index 357c29788..f0f562ffb 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Necromancer.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Necromancer.java @@ -55,7 +55,7 @@ public class Necromancer extends Mob { EXP = 7; maxLvl = 14; - loot = new PotionOfHealing(); + loot = PotionOfHealing.class; lootChance = 0.2f; //see lootChance() properties.add(Property.UNDEAD); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Senior.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Senior.java index ad03c3841..03852d7dc 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Senior.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Senior.java @@ -30,7 +30,7 @@ public class Senior extends Monk { { spriteClass = SeniorSprite.class; - loot = new Pasty(); + loot = Pasty.class; lootChance = 1f; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Spinner.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Spinner.java index 1a6164c8d..d9ccf41e4 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Spinner.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Spinner.java @@ -49,7 +49,7 @@ public class Spinner extends Mob { EXP = 9; maxLvl = 17; - loot = new MysteryMeat(); + loot = MysteryMeat.class; lootChance = 0.125f; HUNTING = new Hunting(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Swarm.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Swarm.java index cc2d92393..eabe0c944 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Swarm.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Swarm.java @@ -50,7 +50,7 @@ public class Swarm extends Mob { flying = true; - loot = new PotionOfHealing(); + loot = PotionOfHealing.class; lootChance = 0.1667f; //by default, see lootChance() } 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 1cf384c62..a61db1a36 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java @@ -746,7 +746,19 @@ public class Generator { } else if (cat.defaultProbsTotal != null){ return ((Item) Reflection.newInstance(cat.classes[Random.chances(cat.defaultProbsTotal)])).random(); } else { - return ((Item) Reflection.newInstance(cat.classes[Random.chances(cat.defaultProbs)])).random(); + Class itemCls = cat.classes[Random.chances(cat.defaultProbs)]; + + if (ExoticPotion.regToExo.containsKey(itemCls)){ + if (Random.Float() < ExoticCrystals.consumableExoticChance()){ + itemCls = ExoticPotion.regToExo.get(itemCls); + } + } else if (ExoticScroll.regToExo.containsKey(itemCls)){ + if (Random.Float() < ExoticCrystals.consumableExoticChance()){ + itemCls = ExoticScroll.regToExo.get(itemCls); + } + } + + return ((Item) Reflection.newInstance(itemCls)).random(); } }