v3.3.0: fixed various item buffs persisting in new quest area

This commit is contained in:
Evan Debenham
2025-11-21 11:24:15 -05:00
parent 1bce49f83f
commit 6b7ffd9fe8
2 changed files with 31 additions and 0 deletions

View File

@@ -23,8 +23,13 @@ package com.shatteredpixel.shatteredpixeldungeon.items.quest;
import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.items.armor.ClassArmor;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.Artifact;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.Wand;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MeleeWeapon;
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
import com.shatteredpixel.shatteredpixeldungeon.levels.VaultLevel;
import com.shatteredpixel.shatteredpixeldungeon.levels.features.LevelTransition;
@@ -67,6 +72,16 @@ public class EscapeCrystal extends Item {
Sample.INSTANCE.play(Assets.Sounds.TELEPORT);
//for full release this will remove any non revive persists buff, but for now just do item buffs
for (Buff b : hero.buffs()){
if (b instanceof Wand.Charger
|| b instanceof Artifact.ArtifactBuff
|| b instanceof MeleeWeapon.Charger
|| b instanceof ClassArmor.Charger){
b.detach();
}
}
restoreHeroBelongings(hero);
Level.beforeTransition();

View File

@@ -24,11 +24,16 @@ package com.shatteredpixel.shatteredpixeldungeon.levels;
import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.Statistics;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Imp;
import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ElmoParticle;
import com.shatteredpixel.shatteredpixeldungeon.items.armor.ClassArmor;
import com.shatteredpixel.shatteredpixeldungeon.items.armor.ClothArmor;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.Artifact;
import com.shatteredpixel.shatteredpixeldungeon.items.quest.EscapeCrystal;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.Wand;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MeleeWeapon;
import com.shatteredpixel.shatteredpixeldungeon.levels.features.LevelTransition;
import com.shatteredpixel.shatteredpixeldungeon.levels.painters.CityPainter;
import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter;
@@ -150,6 +155,17 @@ public class CityLevel extends RegularLevel {
@Override
protected void onSelect(int index) {
if (index == 0){
//for full release this will remove any non revive persists buff, but for now just do item buffs
for (Buff b : hero.buffs()){
if (b instanceof Wand.Charger
|| b instanceof Artifact.ArtifactBuff
|| b instanceof MeleeWeapon.Charger
|| b instanceof ClassArmor.Charger){
b.detach();
}
}
EscapeCrystal crystal = new EscapeCrystal();
crystal.storeHeroBelongings(Dungeon.hero);
crystal.collect();