From ee9aaac89be3449baded1645e05a2d2051672cc1 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Thu, 30 Oct 2025 16:45:03 -0400 Subject: [PATCH] v3.3.0: improved entrance area to quest tester floor --- .../environment/custom_tiles/city_quest.png | Bin 1490 -> 1113 bytes .../assets/messages/levels/levels.properties | 8 ++++ .../levels/CityLevel.java | 36 +++++++++--------- .../levels/rooms/quest/AmbitiousImpRoom.java | 20 ++++++++-- 4 files changed, 42 insertions(+), 22 deletions(-) diff --git a/core/src/main/assets/environment/custom_tiles/city_quest.png b/core/src/main/assets/environment/custom_tiles/city_quest.png index c0742932e1b3f5c64b1212328c6c7b522e7d4bf8..6727c817bb23dfdf7529d8e672bdb133c4930e36 100644 GIT binary patch delta 1053 zcmV+&1mgSB3)u*eBo{nTOjJbx001d0HZ(UwFf%_hHbOBpK#@l(f9%ckf&c&j0d!JM zQvg8b*k%9#1ItN7K~#7F>{!uq!!`_?NC9FrckPz{|JTW|(o?UgYiH{E5}aRn&IKSq zS+@Ro;)y4oc;Z{6lzx}r%zsrv@@!@);g^h0*$6tJdcaS+lH5g+NE!;{!kzm+#-BIi z6IndxLeO0iI2vMlyv|;+@J44Vnh4OR5s&@ zM*8P~R{C%suJN4754s`QW<15d43Gv((0wvn0};Fb`ttIAeJh~2s6A(QbFX6mYk)LV z!riSD-v-6v2>SsI31l<2XP;a9Vt*YV4XX)ez-@)byaYfxf0aGezS!ReNP|pp!uue^ z@&5N+NNR|%3k_;t?0*lC2ANQh`wES7?7HsrXEns)^jy`x*#8+I4KksUgj;b=On`K| zI6$uat$ndy2S~$ef)vQGIN!gnF9V=+^fcSS6D1?Ut&~;CNXRB)f*Ke_gP%r7cfW0|LYXo)K4PXdisq^0l zz?Q&n07D2Z1LtQ6FArysNJC3N0UQWHW9UTe2XH)te^fl@mcRi6WI@Yd>VBL+vI%&* z9>m*Hb1oGBV-|d#0B2p4z@ZG5O4wzh00WxiS=<8_0b0C2YhH}z@+sAwQuL2^d*X)x5q#5HV zK91-we?@gU!7t5(#gxr3V8wYx05;8t3A?cr5X@%;^iP8l^R{CUbver4PY@8Z-iQ*6 zv=ahI(B}zAB#MJ|Ir5-Kn z{#C7O1ScVRk5nt+=m1_G`#8FPM%SNf+q>z(e*xq}0=_(G(a~zODQZiG&e&qGe0vnLXkTv ze}mU+*#H0l0d!JMQvg8b*k%9#1vp7WK~#7Ftk8jmEio7b;Z&vne`e>t|NCBHk7EY{ z`GC?uk2h3iM06&*9;YR0TqMP=$7zyOa3Q$saT-!dp%`@6<201aL?Fnn$7yQj_h@!K zP7{JENddbar%5KLRFcWA$7xhll$0d9e;%hLg)UKf%>P#}e_2ea z%VfkCq8X=Y78Vdnfse=ga8iQU|C!O&g^YNdfry}9Do94D+TWLT^arQ0d;$Ne{ib*8?hBiHR4ILFD?{AEui;_ zgn~-IZ~ejbdcXGif0#Ir@W`-Cghcf03G|d1ycN z@-_RX3&kKL)C#b^q3r#^nf_mdRV3A(w0zC}l9 zS13P3M<5~q@%{H;{@^%(f9pg4?<6t=R%Vhz2l6e?O3m=m)3+__`g8 zucgVk75zYhf~_AwYKtgvOoOG#=^6b%3PAJ&)B%VB$23^vH0E>jg6IdZEw{rVdtl=S za(giP0iqlLg6Ib_0D>Q&D(6rR091UOAN>D$fV_hQl$M~@>gET@bHMq50%SHj$-w%@ zdl`Np2f+COW-^>WGj`IeH3> zm*B+z4}u@Ks4>SQ2(%H&;q}Z99IZe40TfB=d=LO25K){Df205eKL94_{+nR=1ufP% zA4o;;12`nLH{sw0d@&z5RDbjXb)0MFO%HCs=m(Agcs?Hhn-IY02`?cmwgC-o^aH7g ze!zAijGpj{ghhr_FrEtYf!vHJ`T^q~$N7pBNm$Dt59w2H=L5R~qUZ;}bk+LQ9kt~V zLtnPhf{iQSf0O?|aDG7Q9xNciI;`m!T=XSc3ue~)oB2R$QX2ihs;iBmm5ZLNxd2Hn z53xKyL;ddg0IRO+R+wo;WNWCl#>(sS+xfuR0B~F3G7yb5fvtfO{XZMbek=SEVF+y9 z@z}cZkA6SEd?&s$?bf)iC;s8@2L{oqv|H1C{qx@sYe>~Ia?kdA4Zwf$`vK;Q6?|U< z|KaZkSo`~b?b@LMz)%cALH3`zJ_gZ5{X6$2z|i`E|A7BM>GS_U>+}CW>uj6*-a6an nzPHY{x$mv>6951J006)TstET}ptHSw00000NkvXXu0mjfowU2a diff --git a/core/src/main/assets/messages/levels/levels.properties b/core/src/main/assets/messages/levels/levels.properties index df444b4f6..94b803352 100644 --- a/core/src/main/assets/messages/levels/levels.properties +++ b/core/src/main/assets/messages/levels/levels.properties @@ -21,6 +21,9 @@ levels.rooms.special.toxicgasroom$toxicvent.desc=A careless adventurer must have levels.rooms.special.weakfloorroom$hiddenwell.name=Distant well levels.rooms.special.weakfloorroom$hiddenwell.desc=You can just make out a well in the depths below, perhaps there is something down there? +levels.rooms.quest.ambitiousimproom$questentrance.name=Vault Entrance +levels.rooms.quest.ambitiousimproom$questentrance.desc=This ominous pit seems to be the entrance to some ancient dwarven vault. A magical barrier prevents entry, you can walk over top of it as if there was floor here. + levels.rooms.quest.blacksmithroom$questentrance.name=Mine entrance levels.rooms.quest.blacksmithroom$questentrance.desc=This ladder leads to an old mine just below the blacksmith's workshop. @@ -191,6 +194,11 @@ levels.citylevel.bookshelf_desc=The rows of books on different disciplines fill levels.citylevel.region_deco_name=Flaming pedestal levels.citylevel.region_deco_desc=A raised pedestal with a bright green magical flame atop. The flame is so dense it might as well be solid. +levels.citylevel.upcoming_quest_intro_title=Developer Message +levels.citylevel.upcoming_quest_intro_body=The next major update to Shattered Pixel Dungeon will feature an overhaul to the quest given by the Ambitious Imp! This quest will task you with raiding an ancient dwarven vault, that you're current standing on top of the entrance for.\n\nCurrently the new quest area is pretty empty, but you're welcome to go down and look around, both to test the new area and give early feedback!\n\nOne of the quest's mechanics is that none of your items will come with you, so when descending you'll temporarily lose your items and _will be given an escape crystal that lets you return._ Hunger and regeneration effects will also be paused.\n\n- Evan +levels.citylevel.upcoming_quest_intro_yes=Descend into the vault +levels.citylevel.upcoming_quest_intro_no=Stay here + levels.hallslevel.water_name=Cold lava levels.hallslevel.grass_name=Embermoss levels.hallslevel.high_grass_name=Emberfungi diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CityLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CityLevel.java index 08e44a1c0..64d6e222b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CityLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CityLevel.java @@ -50,8 +50,8 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.traps.WarpingTrap; import com.shatteredpixel.shatteredpixeldungeon.levels.traps.WeakeningTrap; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; -import com.shatteredpixel.shatteredpixeldungeon.sprites.ImpSprite; import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonTilemap; +import com.shatteredpixel.shatteredpixeldungeon.ui.Icons; import com.shatteredpixel.shatteredpixeldungeon.windows.WndOptions; import com.watabou.noosa.Game; import com.watabou.noosa.Group; @@ -137,25 +137,23 @@ public class CityLevel extends RegularLevel { public boolean activateTransition(Hero hero, LevelTransition transition) { if (transition.type == LevelTransition.Type.BRANCH_EXIT) { - if (Imp.Quest.given()){ - Game.runOnRenderThread(new Callback() { - @Override - public void call() { - GameScene.show( new WndOptions( new ImpSprite(), - Messages.titleCase(Messages.get(Imp.class, "name")), - "Want to go down?", - "yes", - "no"){ - @Override - protected void onSelect(int index) { - if (index == 0){ - CityLevel.super.activateTransition(hero, transition); - } + Game.runOnRenderThread(new Callback() { + @Override + public void call() { + GameScene.show( new WndOptions( Icons.SHPX.get(), + Messages.titleCase(Messages.get(CityLevel.class, "upcoming_quest_intro_title")), + Messages.get(CityLevel.class, "upcoming_quest_intro_body"), + Messages.get(CityLevel.class, "upcoming_quest_intro_yes"), + Messages.get(CityLevel.class, "upcoming_quest_intro_no")){ + @Override + protected void onSelect(int index) { + if (index == 0){ + CityLevel.super.activateTransition(hero, transition); } - } ); - } - }); - } + } + } ); + } + }); return false; } else { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/quest/AmbitiousImpRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/quest/AmbitiousImpRoom.java index e99a19394..d3d52eff2 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/quest/AmbitiousImpRoom.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/quest/AmbitiousImpRoom.java @@ -32,6 +32,7 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.SpecialRoom import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.tiles.CustomTilemap; import com.watabou.noosa.Game; +import com.watabou.noosa.Image; import com.watabou.noosa.NoosaScript; import com.watabou.noosa.TextureFilm; import com.watabou.noosa.Tilemap; @@ -49,7 +50,7 @@ public class AmbitiousImpRoom extends SpecialRoom { @Override public void paint(Level level) { - Painter.fill( level, this, Terrain.WALL ); + Painter.fill( level, this, Terrain.WALL_DECO ); Painter.fill( level, this, 1, Terrain.EMPTY ); Point c = center(); @@ -119,12 +120,12 @@ public class AmbitiousImpRoom extends SpecialRoom { @Override public boolean canPlaceGrass(Point p) { - return false; + return Point.distance(p, center()) >= 3; } @Override public boolean canPlaceWater(Point p) { - return false; + return Point.distance(p, center()) >= 3; } public static class QuestEntrance extends CustomTilemap { @@ -154,6 +155,15 @@ public class AmbitiousImpRoom extends SpecialRoom { return Messages.get(this, "desc"); } + @Override + public Image image(int tileX, int tileY) { + //only center 3x3 gives custom image/message + if (tileX >= 1 && tileX < 4 && tileY >= 1 && tileY < 4){ + return super.image(tileX, tileY); + } else { + return null; + } + } } public static class EntranceBarrier extends CustomTilemap { @@ -188,5 +198,9 @@ public class AmbitiousImpRoom extends SpecialRoom { return vis; } + @Override + public Image image(int tileX, int tileY) { + return null; + } } }