diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/curses/Explosive.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/curses/Explosive.java index 64075cbe5..2a9e3ac44 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/curses/Explosive.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/curses/Explosive.java @@ -47,6 +47,11 @@ public class Explosive extends Weapon.Enchantment { @Override public int proc( Weapon weapon, Char attacker, Char defender, int damage ) { + if (weapon instanceof MissileWeapon + && ((MissileWeapon)weapon).parent != null && ((MissileWeapon) weapon).parent.enchantment instanceof Explosive){ + durability = ((Explosive) ((MissileWeapon) weapon).parent.enchantment).durability; + } + //average value of 5, or 20 hits to an explosion int durToReduce = Math.round(Random.IntRange(0, 10) * procChanceMultiplier(attacker)); int currentDurability = durability; @@ -79,7 +84,7 @@ public class Explosive extends Weapon.Enchantment { new ExplosiveCurseBomb().explode(explosionPos); - durability = 100; + durability += 100; Item.updateQuickslot(); if (weapon instanceof MissileWeapon){ @@ -91,15 +96,20 @@ public class Explosive extends Weapon.Enchantment { if (weapon instanceof MissileWeapon && ((MissileWeapon)weapon).parent != null && ((MissileWeapon) weapon).parent.enchantment instanceof Explosive){ ((Explosive) ((MissileWeapon) weapon).parent.enchantment).durability = durability; + durability = 100; } return damage; } public void merge(Explosive other){ - if (other.durability < durability){ - durability = other.durability; - } + int diff = 100 - other.durability; + durability -= diff; + //this can make durability negative, in which case many explosions can happen in succession. + } + + public void clear(){ + durability = 100; } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java index ee9106442..b287e1fd5 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java @@ -583,6 +583,11 @@ abstract public class MissileWeapon extends Weapon { m.durability = MAX_DURABILITY; m.parent = this; extraThrownLeft = m.extraThrownLeft = true; + + //explosive durability is tracked only in the parent + if (m.enchantment instanceof Explosive){ + ((Explosive) m.enchantment).clear(); + } } return split;