From ba95f11c56257fd867523d864d5bda1099170d90 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Thu, 6 Nov 2025 14:11:59 -0500 Subject: [PATCH] v3.3.0: implemented very basic early vault room and escape crystal --- .../assets/messages/items/items.properties | 5 + core/src/main/assets/sprites/items.png | Bin 24838 -> 24895 bytes .../shatteredpixeldungeon/actors/Actor.java | 3 +- .../actors/buffs/Hunger.java | 4 +- .../actors/buffs/Regeneration.java | 4 + .../items/quest/EscapeCrystal.java | 95 ++++++++++++++++++ .../levels/VaultLevel.java | 62 ++++++++++++ .../sprites/ItemSpriteSheet.java | 2 + 8 files changed, 173 insertions(+), 2 deletions(-) create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/EscapeCrystal.java create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/VaultLevel.java diff --git a/core/src/main/assets/messages/items/items.properties b/core/src/main/assets/messages/items/items.properties index 6fb92a8cc..d9be335bf 100644 --- a/core/src/main/assets/messages/items/items.properties +++ b/core/src/main/assets/messages/items/items.properties @@ -919,6 +919,11 @@ items.quest.embers.name=elemental embers items.quest.embers.desc=Special embers which can only be harvested from young fire elementals. They radiate thermal energy. items.quest.embers.discover_hint=You can find this item during a specific quest. +items.quest.escapecrystal.name=escape crystal +items.quest.escapecrystal.ac_use=USE +items.quest.escapecrystal.desc=A thin magical spell crystal that seems to contain teleportation magic. You can use the crystal at any time to leave the dwarven vault, but you won't be able to take anything out with you! +items.quest.escapecrystal.discover_hint=You can find this item during a specific quest. + items.quest.gooblob.name=blob of goo items.quest.gooblob.desc=A jiggly blob of goop, split off from Goo as it died. It's almost like a big ball of jelly, though you wouldn't dare eat it.\n\nIt does nothing on its own, but it might be useful when combined with certain potions, or a bomb. At the very least it should convert into a decent amount of energy. items.quest.gooblob.discover_hint=You can get this item as a drop from certain enemies. diff --git a/core/src/main/assets/sprites/items.png b/core/src/main/assets/sprites/items.png index b6f2954b0e85c2275b795702f5b3ae9178f43854..be6627846158648c769d5d14e45078402a047c06 100644 GIT binary patch literal 24895 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 E0yt^Uy8r+H literal 24838 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 diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Actor.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Actor.java index f311d46cd..d7af5e333 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Actor.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Actor.java @@ -26,6 +26,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Statistics; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob; +import com.shatteredpixel.shatteredpixeldungeon.levels.VaultLevel; import com.watabou.noosa.Game; import com.watabou.utils.Bundlable; import com.watabou.utils.Bundle; @@ -184,7 +185,7 @@ public abstract class Actor implements Bundlable { a.time -= min; } - if (Dungeon.hero != null && all.contains( Dungeon.hero )) { + if (Dungeon.hero != null && all.contains( Dungeon.hero ) && !(Dungeon.level instanceof VaultLevel)) { Statistics.duration += min; } now -= min; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Hunger.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Hunger.java index 10153a89d..a4490814d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Hunger.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Hunger.java @@ -28,6 +28,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ScrollOfChallenge; import com.shatteredpixel.shatteredpixeldungeon.items.trinkets.SaltCube; import com.shatteredpixel.shatteredpixeldungeon.journal.Document; +import com.shatteredpixel.shatteredpixeldungeon.levels.VaultLevel; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; @@ -65,7 +66,8 @@ public class Hunger extends Buff implements Hero.Doom { if (Dungeon.level.locked || target.buff(WellFed.class) != null || SPDSettings.intro() - || target.buff(ScrollOfChallenge.ChallengeArena.class) != null){ + || target.buff(ScrollOfChallenge.ChallengeArena.class) != null + || Dungeon.level instanceof VaultLevel){ spend(TICK); return true; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Regeneration.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Regeneration.java index 0efa6592f..71823236b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Regeneration.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Regeneration.java @@ -28,6 +28,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.ChaliceOfBlood; import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfEnergy; import com.shatteredpixel.shatteredpixeldungeon.items.trinkets.ChaoticCenser; import com.shatteredpixel.shatteredpixeldungeon.items.trinkets.SaltCube; +import com.shatteredpixel.shatteredpixeldungeon.levels.VaultLevel; import com.watabou.utils.Bundle; public class Regeneration extends Buff { @@ -114,6 +115,9 @@ public class Regeneration extends Buff { if (lock != null && !lock.regenOn()){ return false; } + if (Dungeon.level instanceof VaultLevel){ + return false; + } return true; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/EscapeCrystal.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/EscapeCrystal.java new file mode 100644 index 000000000..6eacc20f2 --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/EscapeCrystal.java @@ -0,0 +1,95 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2015 Oleg Dolya + * + * Shattered Pixel Dungeon + * Copyright (C) 2014-2025 Evan Debenham + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see + */ + +package com.shatteredpixel.shatteredpixeldungeon.items.quest; + +import com.shatteredpixel.shatteredpixeldungeon.Assets; +import com.shatteredpixel.shatteredpixeldungeon.Dungeon; +import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; +import com.shatteredpixel.shatteredpixeldungeon.items.Item; +import com.shatteredpixel.shatteredpixeldungeon.levels.Level; +import com.shatteredpixel.shatteredpixeldungeon.levels.VaultLevel; +import com.shatteredpixel.shatteredpixeldungeon.levels.features.LevelTransition; +import com.shatteredpixel.shatteredpixeldungeon.scenes.InterlevelScene; +import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; +import com.watabou.noosa.Game; +import com.watabou.noosa.audio.Sample; + +import java.util.ArrayList; + +public class EscapeCrystal extends Item { + + { + image = ItemSpriteSheet.ESCAPE; + + unique = true; + + defaultAction = AC_USE; + } + + public static final String AC_USE = "USE"; + + @Override + public ArrayList actions(Hero hero) { + ArrayList actions = super.actions( hero ); + actions.add(AC_USE); + return actions; + } + + @Override + public void execute( final Hero hero, String action ) { + + super.execute(hero, action); + + if (action.equals( AC_USE )) { + + if (Dungeon.depth > 15 && Dungeon.depth < 20 && Dungeon.branch == 1 && Dungeon.level instanceof VaultLevel){ + + Sample.INSTANCE.play(Assets.Sounds.TELEPORT); + + Level.beforeTransition(); + InterlevelScene.curTransition = new LevelTransition(Dungeon.level, + hero.pos, + LevelTransition.Type.BRANCH_ENTRANCE, + Dungeon.depth, + 0, + LevelTransition.Type.BRANCH_EXIT); + InterlevelScene.mode = InterlevelScene.Mode.ASCEND; + Game.switchScene( InterlevelScene.class ); + + } + detach(hero.belongings.backpack); + + } + + } + + @Override + public boolean isUpgradable() { + return false; + } + + @Override + public boolean isIdentified() { + return true; + } + +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/VaultLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/VaultLevel.java new file mode 100644 index 000000000..946e33734 --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/VaultLevel.java @@ -0,0 +1,62 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2015 Oleg Dolya + * + * Shattered Pixel Dungeon + * Copyright (C) 2014-2025 Evan Debenham + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see + */ + +package com.shatteredpixel.shatteredpixeldungeon.levels; + +import com.shatteredpixel.shatteredpixeldungeon.Assets; +import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; +import com.shatteredpixel.shatteredpixeldungeon.items.quest.EscapeCrystal; +import com.shatteredpixel.shatteredpixeldungeon.levels.features.LevelTransition; + +public class VaultLevel extends DeadEndLevel { //for now + + { + color1 = 0x4b6636; + color2 = 0xf2f2f2; + } + + @Override + public String tilesTex() { + return Assets.Environment.TILES_CITY; + } + + @Override + public String waterTex() { + return Assets.Environment.WATER_CITY; + } + + @Override + protected boolean build() { + super.build(); + + int entrance = 5 * width() + 5 / 2 + 1; + map[entrance] = Terrain.WATER; //override entrance tile + + drop(new EscapeCrystal(), entrance - 2*width); + return true; + } + + @Override + public boolean activateTransition(Hero hero, LevelTransition transition) { + //walking onto transitions does nothing, need to use crystal + return false; + } +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java index 349fc94a9..c6d2c416b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java @@ -756,6 +756,7 @@ public class ItemSpriteSheet { public static final int TOKEN = QUEST+6; public static final int BLOB = QUEST+7; public static final int SHARD = QUEST+8; + public static final int ESCAPE = QUEST+9; static{ assignItemRect(DUST, 12, 11); assignItemRect(CANDLE, 12, 12); @@ -765,6 +766,7 @@ public class ItemSpriteSheet { assignItemRect(TOKEN, 12, 12); assignItemRect(BLOB, 10, 9); assignItemRect(SHARD, 8, 10); + assignItemRect(ESCAPE, 8, 16); } private static final int BAGS = xy(1, 31); //16 slots