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
This commit is contained in:
Evan Debenham 2019-05-16 15:05:11 -04:00
parent cfd2f7a811
commit 1c259b789a
7 changed files with 32 additions and 8 deletions

View File

@ -62,7 +62,7 @@ public class ArmorKit extends Item {
super.execute( hero, action ); super.execute( hero, action );
if (action == AC_APPLY) { if (action.equals(AC_APPLY)) {
curUser = hero; curUser = hero;
GameScene.selectItem( itemSelector, WndBag.Mode.ARMOR, Messages.get(this, "prompt") ); GameScene.selectItem( itemSelector, WndBag.Mode.ARMOR, Messages.get(this, "prompt") );

View File

@ -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.InfernalBrew;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.ShockingBrew; import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.ShockingBrew;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfAquaticRejuvenation; 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.ElixirOfDragonsBlood;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfHoneyedHealing; import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfHoneyedHealing;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfIcyTouch; 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.PhaseShift;
import com.shatteredpixel.shatteredpixeldungeon.items.spells.ReclaimTrap; import com.shatteredpixel.shatteredpixeldungeon.items.spells.ReclaimTrap;
import com.shatteredpixel.shatteredpixeldungeon.items.spells.Recycle; 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.wands.Wand;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts.Dart; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts.Dart;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts.TippedDart;
import java.util.ArrayList; import java.util.ArrayList;
@ -180,6 +181,7 @@ public abstract class Recipe {
new Bomb.EnhanceBomb(), new Bomb.EnhanceBomb(),
new AlchemicalCatalyst.Recipe(), new AlchemicalCatalyst.Recipe(),
new ArcaneCatalyst.Recipe(), new ArcaneCatalyst.Recipe(),
new ElixirOfArcaneArmor.Recipe(),
new ElixirOfAquaticRejuvenation.Recipe(), new ElixirOfAquaticRejuvenation.Recipe(),
new ElixirOfDragonsBlood.Recipe(), new ElixirOfDragonsBlood.Recipe(),
new ElixirOfIcyTouch.Recipe(), new ElixirOfIcyTouch.Recipe(),
@ -200,6 +202,7 @@ public abstract class Recipe {
new PhaseShift.Recipe(), new PhaseShift.Recipe(),
new ReclaimTrap.Recipe(), new ReclaimTrap.Recipe(),
new Recycle.Recipe(), new Recycle.Recipe(),
new WildEnergy.Recipe(),
new StewedMeat.twoMeat() new StewedMeat.twoMeat()
}; };

View File

@ -71,10 +71,12 @@ abstract public class ClassArmor extends Armor {
break; break;
} }
classArmor.level(armor.level()); classArmor.level(armor.level() - (armor.curseInfusionBonus ? 1 : 0));
classArmor.armorTier = armor.tier; classArmor.armorTier = armor.tier;
classArmor.augment = armor.augment; classArmor.augment = armor.augment;
classArmor.inscribe( armor.glyph ); classArmor.inscribe( armor.glyph );
classArmor.cursed = armor.cursed;
classArmor.curseInfusionBonus = armor.curseInfusionBonus;
classArmor.identify(); classArmor.identify();
return classArmor; return classArmor;

View File

@ -21,6 +21,7 @@
package com.shatteredpixel.shatteredpixeldungeon.items.rings; package com.shatteredpixel.shatteredpixeldungeon.items.rings;
import com.shatteredpixel.shatteredpixeldungeon.Challenges;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
import com.shatteredpixel.shatteredpixeldungeon.items.Generator; import com.shatteredpixel.shatteredpixeldungeon.items.Generator;
@ -110,11 +111,19 @@ public class RingOfWealth extends Ring {
triesToDrop -= dropProgression(target, tries); triesToDrop -= dropProgression(target, tries);
while ( triesToDrop <= 0 ){ while ( triesToDrop <= 0 ){
if (dropsToRare <= 0){ if (dropsToRare <= 0){
drops.add(genRareDrop()); Item i;
do {
i = genRareDrop();
} while (Challenges.isItemBlocked(i));
drops.add(i);
latestDropWasRare = true; latestDropWasRare = true;
dropsToRare = Random.NormalIntRange(0, 20); dropsToRare = Random.NormalIntRange(0, 20);
} else { } else {
drops.add(genStandardDrop()); Item i;
do {
i = genStandardDrop();
} while (Challenges.isItemBlocked(i));
drops.add(i);
dropsToRare--; dropsToRare--;
} }
triesToDrop += Random.NormalIntRange(0, 60); triesToDrop += Random.NormalIntRange(0, 60);

View File

@ -25,6 +25,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon; import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; 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.quest.MetalShard;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfMagicMapping; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfMagicMapping;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfRecharging; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfRecharging;
@ -84,6 +85,15 @@ public class ReclaimTrap extends TargetedSpell {
return desc; 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[]{ private static final ItemSprite.Glowing[] COLORS = new ItemSprite.Glowing[]{
new ItemSprite.Glowing( 0xFF0000 ), new ItemSprite.Glowing( 0xFF0000 ),
new ItemSprite.Glowing( 0xFF8000 ), new ItemSprite.Glowing( 0xFF8000 ),

View File

@ -198,10 +198,9 @@ public class SpiritBow extends Weapon {
+ (curseInfusionBonus ? 1 : 0); + (curseInfusionBonus ? 1 : 0);
} }
//for fetching upgrades from a boomerang from pre-0.7.0 //for fetching upgrades from a boomerang from pre-0.7.1
//TODO implement on this
public int spentUpgrades() { public int spentUpgrades() {
return super.level(); return super.level() - (curseInfusionBonus ? 1 : 0);
} }
@Override @Override

View File

@ -44,6 +44,7 @@ public class Vampiric extends Weapon.Enchantment {
//heals for 50% of damage dealt //heals for 50% of damage dealt
int healAmt = Math.round(damage * 0.5f); int healAmt = Math.round(damage * 0.5f);
healAmt = Math.min( healAmt, attacker.HT - attacker.HP );
if (healAmt > 0 && attacker.isAlive()) { if (healAmt > 0 && attacker.isAlive()) {