v0.9.4: fixed various specific effects not respecting lost inventory

This commit is contained in:
Evan Debenham 2021-08-11 18:28:14 -04:00
parent a1f590b52d
commit 4c1300aa21
3 changed files with 30 additions and 23 deletions

View File

@ -104,11 +104,13 @@ public class Burning extends Buff implements Hero.Doom {
ArrayList<Item> burnable = new ArrayList<>();
//does not reach inside of containers
for (Item i : hero.belongings.backpack.items){
if (!i.unique && (i instanceof Scroll || i instanceof MysteryMeat || i instanceof FrozenCarpaccio)){
if (hero.buff(LostInventory.class) != null) {
for (Item i : hero.belongings.backpack.items) {
if (!i.unique && (i instanceof Scroll || i instanceof MysteryMeat || i instanceof FrozenCarpaccio)) {
burnable.add(i);
}
}
}
if (!burnable.isEmpty()){
Item toBurn = Random.element(burnable).detach(hero.belongings.backpack);

View File

@ -61,11 +61,13 @@ public class Frost extends FlavourBuff {
Hero hero = (Hero)target;
ArrayList<Item> freezable = new ArrayList<>();
//does not reach inside of containers
for (Item i : hero.belongings.backpack.items){
if (!i.unique && (i instanceof Potion || i instanceof MysteryMeat)){
if (hero.buff(LostInventory.class) != null) {
for (Item i : hero.belongings.backpack.items) {
if (!i.unique && (i instanceof Potion || i instanceof MysteryMeat)) {
freezable.add(i);
}
}
}
if (!freezable.isEmpty()){
Item toFreeze = Random.element(freezable).detach( hero.belongings.backpack );

View File

@ -300,6 +300,7 @@ public class Belongings implements Iterable<Item> {
return result;
}
//triggers when a run ends, so ignores lost inventory effects
public void identify() {
for (Item item : this) {
item.identify();
@ -307,25 +308,25 @@ public class Belongings implements Iterable<Item> {
}
public void observe() {
if (weapon != null) {
weapon.identify();
Badges.validateItemLevelAquired( weapon );
if (weapon() != null) {
weapon().identify();
Badges.validateItemLevelAquired(weapon());
}
if (armor != null) {
armor.identify();
Badges.validateItemLevelAquired( armor );
if (armor() != null) {
armor().identify();
Badges.validateItemLevelAquired(armor());
}
if (artifact != null) {
artifact.identify();
Badges.validateItemLevelAquired(artifact);
if (artifact() != null) {
artifact().identify();
Badges.validateItemLevelAquired(artifact());
}
if (misc != null) {
misc.identify();
Badges.validateItemLevelAquired(misc);
if (misc() != null) {
misc().identify();
Badges.validateItemLevelAquired(misc());
}
if (ring != null) {
ring.identify();
Badges.validateItemLevelAquired(ring);
if (ring() != null) {
ring().identify();
Badges.validateItemLevelAquired(ring());
}
for (Item item : backpack) {
if (item instanceof EquipableItem || item instanceof Wand) {
@ -335,10 +336,12 @@ public class Belongings implements Iterable<Item> {
}
public void uncurseEquipped() {
ScrollOfRemoveCurse.uncurse( owner, armor, weapon, artifact, misc, ring);
ScrollOfRemoveCurse.uncurse( owner, armor(), weapon(), artifact(), misc(), ring());
}
public Item randomUnequipped() {
if (owner.buff(LostInventory.class) != null) return null;
return Random.element( backpack.items );
}