From 1c259b789ab1644070b671d69dd98e55093b9f86 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Thu, 16 May 2019 15:05:11 -0400 Subject: [PATCH] v0.7.3: bugfixes: - vampiric overhealing - spirit bow generating scrolls of upgrade when curse infused - armor kit not interacting correctly with curse infuse - duplication bugs with reclaim trap - new alchemy items not being craftable - ring of wealth rarely generating items blocked by challenges --- .../shatteredpixeldungeon/items/ArmorKit.java | 2 +- .../shatteredpixeldungeon/items/Recipe.java | 5 ++++- .../items/armor/ClassArmor.java | 4 +++- .../items/rings/RingOfWealth.java | 13 +++++++++++-- .../items/spells/ReclaimTrap.java | 10 ++++++++++ .../items/weapon/SpiritBow.java | 5 ++--- .../items/weapon/enchantments/Vampiric.java | 1 + 7 files changed, 32 insertions(+), 8 deletions(-) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/ArmorKit.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/ArmorKit.java index 4f1053818..120d50cf3 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/ArmorKit.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/ArmorKit.java @@ -62,7 +62,7 @@ public class ArmorKit extends Item { super.execute( hero, action ); - if (action == AC_APPLY) { + if (action.equals(AC_APPLY)) { curUser = hero; GameScene.selectItem( itemSelector, WndBag.Mode.ARMOR, Messages.get(this, "prompt") ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Recipe.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Recipe.java index 15db278d4..3a2873cf9 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Recipe.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Recipe.java @@ -34,6 +34,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.CausticBrew; import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.InfernalBrew; import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.ShockingBrew; import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfAquaticRejuvenation; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfArcaneArmor; import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfDragonsBlood; import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfHoneyedHealing; import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfIcyTouch; @@ -53,9 +54,9 @@ import com.shatteredpixel.shatteredpixeldungeon.items.spells.MagicalPorter; import com.shatteredpixel.shatteredpixeldungeon.items.spells.PhaseShift; import com.shatteredpixel.shatteredpixeldungeon.items.spells.ReclaimTrap; import com.shatteredpixel.shatteredpixeldungeon.items.spells.Recycle; +import com.shatteredpixel.shatteredpixeldungeon.items.spells.WildEnergy; import com.shatteredpixel.shatteredpixeldungeon.items.wands.Wand; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts.Dart; -import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts.TippedDart; import java.util.ArrayList; @@ -180,6 +181,7 @@ public abstract class Recipe { new Bomb.EnhanceBomb(), new AlchemicalCatalyst.Recipe(), new ArcaneCatalyst.Recipe(), + new ElixirOfArcaneArmor.Recipe(), new ElixirOfAquaticRejuvenation.Recipe(), new ElixirOfDragonsBlood.Recipe(), new ElixirOfIcyTouch.Recipe(), @@ -200,6 +202,7 @@ public abstract class Recipe { new PhaseShift.Recipe(), new ReclaimTrap.Recipe(), new Recycle.Recipe(), + new WildEnergy.Recipe(), new StewedMeat.twoMeat() }; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/ClassArmor.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/ClassArmor.java index ceb67be88..f255ef5d4 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/ClassArmor.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/ClassArmor.java @@ -71,10 +71,12 @@ abstract public class ClassArmor extends Armor { break; } - classArmor.level(armor.level()); + classArmor.level(armor.level() - (armor.curseInfusionBonus ? 1 : 0)); classArmor.armorTier = armor.tier; classArmor.augment = armor.augment; classArmor.inscribe( armor.glyph ); + classArmor.cursed = armor.cursed; + classArmor.curseInfusionBonus = armor.curseInfusionBonus; classArmor.identify(); return classArmor; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfWealth.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfWealth.java index 1782c2093..fbb8af52d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfWealth.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfWealth.java @@ -21,6 +21,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.rings; +import com.shatteredpixel.shatteredpixeldungeon.Challenges; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.items.Generator; @@ -110,11 +111,19 @@ public class RingOfWealth extends Ring { triesToDrop -= dropProgression(target, tries); while ( triesToDrop <= 0 ){ if (dropsToRare <= 0){ - drops.add(genRareDrop()); + Item i; + do { + i = genRareDrop(); + } while (Challenges.isItemBlocked(i)); + drops.add(i); latestDropWasRare = true; dropsToRare = Random.NormalIntRange(0, 20); } else { - drops.add(genStandardDrop()); + Item i; + do { + i = genStandardDrop(); + } while (Challenges.isItemBlocked(i)); + drops.add(i); dropsToRare--; } triesToDrop += Random.NormalIntRange(0, 60); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/ReclaimTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/ReclaimTrap.java index 4919c72d4..8f476e638 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/ReclaimTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/ReclaimTrap.java @@ -25,6 +25,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; +import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.quest.MetalShard; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfMagicMapping; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfRecharging; @@ -84,6 +85,15 @@ public class ReclaimTrap extends TargetedSpell { return desc; } + @Override + public Item split(int amount) { + Item split = super.split(amount); + if (split != null){ + ((ReclaimTrap)split).storedTrap = null; + } + return split; + } + private static final ItemSprite.Glowing[] COLORS = new ItemSprite.Glowing[]{ new ItemSprite.Glowing( 0xFF0000 ), new ItemSprite.Glowing( 0xFF8000 ), diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/SpiritBow.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/SpiritBow.java index 6042b8b30..17a700306 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/SpiritBow.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/SpiritBow.java @@ -198,10 +198,9 @@ public class SpiritBow extends Weapon { + (curseInfusionBonus ? 1 : 0); } - //for fetching upgrades from a boomerang from pre-0.7.0 - //TODO implement on this + //for fetching upgrades from a boomerang from pre-0.7.1 public int spentUpgrades() { - return super.level(); + return super.level() - (curseInfusionBonus ? 1 : 0); } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/enchantments/Vampiric.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/enchantments/Vampiric.java index 12fd6615a..ad72cfe2f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/enchantments/Vampiric.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/enchantments/Vampiric.java @@ -44,6 +44,7 @@ public class Vampiric extends Weapon.Enchantment { //heals for 50% of damage dealt int healAmt = Math.round(damage * 0.5f); + healAmt = Math.min( healAmt, attacker.HT - attacker.HP ); if (healAmt > 0 && attacker.isAlive()) {