From 5048fa8615cf0c1a68f71089f7f1a4a887046bd6 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Tue, 20 May 2025 15:30:49 -0400 Subject: [PATCH] v3.1.0: sewer barrels can now break or burn --- .../shatteredpixeldungeon/levels/Level.java | 6 ++++ .../levels/SewerLevel.java | 29 +++++++++++++++++-- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java index 171f8f3bc..3183731c0 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java @@ -930,6 +930,12 @@ public abstract class Level implements Bundlable { level.pit[cell] = (flags & Terrain.PIT) != 0; level.water[cell] = terrain == Terrain.WATER; + if (level instanceof SewerLevel){ + if (level.map[cell] == Terrain.REGION_DECO || level.map[cell] == Terrain.REGION_DECO_ALT){ + level.flamable[cell] = true; + } + } + for (int i : PathFinder.NEIGHBOURS9){ i = cell + i; if (level.solid[i]){ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SewerLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SewerLevel.java index c5e294616..0bdd5a8de 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SewerLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SewerLevel.java @@ -29,6 +29,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Statistics; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Ghost; import com.shatteredpixel.shatteredpixeldungeon.effects.Ripple; +import com.shatteredpixel.shatteredpixeldungeon.effects.Splash; import com.shatteredpixel.shatteredpixeldungeon.items.Amulet; import com.shatteredpixel.shatteredpixeldungeon.levels.features.LevelTransition; import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter; @@ -181,8 +182,32 @@ public class SewerLevel extends RegularLevel { addSewerVisuals(this, visuals); return visuals; } - - public static void addSewerVisuals( Level level, Group group ) { + + @Override + public void buildFlagMaps() { + super.buildFlagMaps(); + for (int i=0; i < length(); i++) { + if (map[i] == Terrain.REGION_DECO || map[i] == Terrain.REGION_DECO_ALT){ + flamable[i] = true; + } + } + } + + @Override + public void destroy(int pos) { + //if we're burning sewers barrels + int terr = map[pos]; + if (terr == Terrain.REGION_DECO){ + set(pos, Terrain.WATER); + Splash.at(pos, 0xFF507B5D, 10); + } else if (terr == Terrain.REGION_DECO_ALT){ + set(pos, Terrain.EMPTY_SP); + Splash.at(pos, 0xFF507B5D, 10); + } + super.destroy(pos); + } + + public static void addSewerVisuals(Level level, Group group ) { for (int i=0; i < level.length(); i++) { if (level.map[i] == Terrain.WALL_DECO) { group.add( new Sink( i ) );