v3.3.0: renamed existing skeleton key to worn key

This commit is contained in:
Evan Debenham
2025-11-13 15:59:37 -05:00
parent c34e552208
commit f06943c3e5
10 changed files with 23 additions and 18 deletions

View File

@@ -694,8 +694,8 @@ items.keys.crystalkey.desc=The cut surfaces of this crystalline key shimmer in t
items.keys.ironkey.name=iron key items.keys.ironkey.name=iron key
items.keys.ironkey.desc=The notches on this ancient iron key are well worn; its leather lanyard is battered by age. What door might it open? items.keys.ironkey.desc=The notches on this ancient iron key are well worn; its leather lanyard is battered by age. What door might it open?
items.keys.skeletonkey.name=skeleton key items.keys.wornkey.name=worn key
items.keys.skeletonkey.desc=This key looks serious: its head is shaped like a skull. Probably it can open some serious door. items.keys.wornkey.desc=This key is worn and discolored, but looks serious. Probably it can open some serious door nearby.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -47,6 +47,11 @@ public class ShatteredPixelDungeon extends Game {
public ShatteredPixelDungeon( PlatformSupport platform ) { public ShatteredPixelDungeon( PlatformSupport platform ) {
super( sceneClass == null ? WelcomeScene.class : sceneClass, platform ); super( sceneClass == null ? WelcomeScene.class : sceneClass, platform );
//pre-v3.3.0
com.watabou.utils.Bundle.addAlias(
com.shatteredpixel.shatteredpixeldungeon.items.keys.WornKey.class,
"com.shatteredpixel.shatteredpixeldungeon.items.keys.SkeletonKey" );
//pre-v2.5.3 //pre-v2.5.3
com.watabou.utils.Bundle.addAlias( com.watabou.utils.Bundle.addAlias(
com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfDetectMagic.class, com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfDetectMagic.class,

View File

@@ -113,7 +113,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.keys.CrystalKey;
import com.shatteredpixel.shatteredpixeldungeon.items.keys.GoldenKey; import com.shatteredpixel.shatteredpixeldungeon.items.keys.GoldenKey;
import com.shatteredpixel.shatteredpixeldungeon.items.keys.IronKey; import com.shatteredpixel.shatteredpixeldungeon.items.keys.IronKey;
import com.shatteredpixel.shatteredpixeldungeon.items.keys.Key; import com.shatteredpixel.shatteredpixeldungeon.items.keys.Key;
import com.shatteredpixel.shatteredpixeldungeon.items.keys.SkeletonKey; import com.shatteredpixel.shatteredpixeldungeon.items.keys.WornKey;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion; import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfExperience; import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfExperience;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfHealing; import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfHealing;
@@ -1219,7 +1219,7 @@ public class Hero extends Char {
hasKey = true; hasKey = true;
} else if (door == Terrain.LOCKED_EXIT } else if (door == Terrain.LOCKED_EXIT
&& Notes.keyCount(new SkeletonKey(Dungeon.depth)) > 0) { && Notes.keyCount(new WornKey(Dungeon.depth)) > 0) {
hasKey = true; hasKey = true;
@@ -2345,7 +2345,7 @@ public class Hero extends Char {
CellEmitter.get( doorCell ).start( Speck.factory( Speck.DISCOVER ), 0.025f, 20 ); CellEmitter.get( doorCell ).start( Speck.factory( Speck.DISCOVER ), 0.025f, 20 );
} }
} else { } else {
hasKey = Notes.remove(new SkeletonKey(Dungeon.depth)); hasKey = Notes.remove(new WornKey(Dungeon.depth));
if (hasKey) Level.set(doorCell, Terrain.UNLOCKED_EXIT); if (hasKey) Level.set(doorCell, Terrain.UNLOCKED_EXIT);
} }

View File

@@ -33,7 +33,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LockedFloor;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Ooze; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Ooze;
import com.shatteredpixel.shatteredpixeldungeon.effects.FloatingText; import com.shatteredpixel.shatteredpixeldungeon.effects.FloatingText;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.DriedRose; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.DriedRose;
import com.shatteredpixel.shatteredpixeldungeon.items.keys.SkeletonKey; import com.shatteredpixel.shatteredpixeldungeon.items.keys.WornKey;
import com.shatteredpixel.shatteredpixeldungeon.items.quest.GooBlob; import com.shatteredpixel.shatteredpixeldungeon.items.quest.GooBlob;
import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica; import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
@@ -287,7 +287,7 @@ public class Goo extends Mob {
Dungeon.level.unseal(); Dungeon.level.unseal();
GameScene.bossSlain(); GameScene.bossSlain();
Dungeon.level.drop( new SkeletonKey( Dungeon.depth ), pos ).sprite.drop(); Dungeon.level.drop( new WornKey( Dungeon.depth ), pos ).sprite.drop();
//60% chance of 2 blobs, 30% chance of 3, 10% chance for 4. Average of 2.5 //60% chance of 2 blobs, 30% chance of 3, 10% chance for 4. Average of 2.5
int blobs = Random.chances(new float[]{0, 0, 6, 3, 1}); int blobs = Random.chances(new float[]{0, 0, 6, 3, 1});

View File

@@ -32,17 +32,17 @@ import com.watabou.utils.Callback;
import java.io.IOException; import java.io.IOException;
public class SkeletonKey extends Key { public class WornKey extends Key {
{ {
image = ItemSpriteSheet.SKELETON_KEY; image = ItemSpriteSheet.WORN_KEY;
} }
public SkeletonKey() { public WornKey() {
this( 0 ); this( 0 );
} }
public SkeletonKey( int depth ) { public WornKey( int depth ) {
super(); super();
this.depth = depth; this.depth = depth;
} }

View File

@@ -68,7 +68,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.food.SupplyRation;
import com.shatteredpixel.shatteredpixeldungeon.items.keys.CrystalKey; import com.shatteredpixel.shatteredpixeldungeon.items.keys.CrystalKey;
import com.shatteredpixel.shatteredpixeldungeon.items.keys.GoldenKey; import com.shatteredpixel.shatteredpixeldungeon.items.keys.GoldenKey;
import com.shatteredpixel.shatteredpixeldungeon.items.keys.IronKey; import com.shatteredpixel.shatteredpixeldungeon.items.keys.IronKey;
import com.shatteredpixel.shatteredpixeldungeon.items.keys.SkeletonKey; import com.shatteredpixel.shatteredpixeldungeon.items.keys.WornKey;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.AquaBrew; import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.AquaBrew;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.BlizzardBrew; import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.BlizzardBrew;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.CausticBrew; import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.CausticBrew;
@@ -253,7 +253,7 @@ public enum Catalog {
ReclaimTrap.class, SummonElemental.class, BeaconOfReturning.class); ReclaimTrap.class, SummonElemental.class, BeaconOfReturning.class);
MISC_CONSUMABLES.addItems( Gold.class, EnergyCrystal.class, Dewdrop.class, MISC_CONSUMABLES.addItems( Gold.class, EnergyCrystal.class, Dewdrop.class,
IronKey.class, GoldenKey.class, CrystalKey.class, SkeletonKey.class, IronKey.class, GoldenKey.class, CrystalKey.class, WornKey.class,
TrinketCatalyst.class, Stylus.class, Torch.class, Honeypot.class, Ankh.class, TrinketCatalyst.class, Stylus.class, Torch.class, Honeypot.class, Ankh.class,
CorpseDust.class, Embers.class, CeremonialCandle.class, DarkGold.class, DwarfToken.class, CorpseDust.class, Embers.class, CeremonialCandle.class, DarkGold.class, DwarfToken.class,
GooBlob.class, TengusMask.class, MetalShard.class, KingsCrown.class, GooBlob.class, TengusMask.class, MetalShard.class, KingsCrown.class,

View File

@@ -144,7 +144,7 @@ public class ItemSpriteSheet {
public static final int IRON_KEY = MISC_CONSUMABLE +7; public static final int IRON_KEY = MISC_CONSUMABLE +7;
public static final int GOLDEN_KEY = MISC_CONSUMABLE +8; public static final int GOLDEN_KEY = MISC_CONSUMABLE +8;
public static final int CRYSTAL_KEY = MISC_CONSUMABLE +9; public static final int CRYSTAL_KEY = MISC_CONSUMABLE +9;
public static final int SKELETON_KEY = MISC_CONSUMABLE +10; public static final int WORN_KEY = MISC_CONSUMABLE +10;
public static final int MASK = MISC_CONSUMABLE +11; public static final int MASK = MISC_CONSUMABLE +11;
public static final int CROWN = MISC_CONSUMABLE +12; public static final int CROWN = MISC_CONSUMABLE +12;
public static final int AMULET = MISC_CONSUMABLE +13; public static final int AMULET = MISC_CONSUMABLE +13;
@@ -171,7 +171,7 @@ public class ItemSpriteSheet {
assignItemRect(IRON_KEY, 8, 14); assignItemRect(IRON_KEY, 8, 14);
assignItemRect(GOLDEN_KEY, 8, 14); assignItemRect(GOLDEN_KEY, 8, 14);
assignItemRect(CRYSTAL_KEY, 8, 14); assignItemRect(CRYSTAL_KEY, 8, 14);
assignItemRect(SKELETON_KEY, 8, 14); assignItemRect(WORN_KEY, 8, 14);
assignItemRect(MASK, 11, 9); assignItemRect(MASK, 11, 9);
assignItemRect(CROWN, 13, 7); assignItemRect(CROWN, 13, 7);
assignItemRect(AMULET, 16, 16); assignItemRect(AMULET, 16, 16);

View File

@@ -27,7 +27,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.keys.CrystalKey;
import com.shatteredpixel.shatteredpixeldungeon.items.keys.GoldenKey; import com.shatteredpixel.shatteredpixeldungeon.items.keys.GoldenKey;
import com.shatteredpixel.shatteredpixeldungeon.items.keys.IronKey; import com.shatteredpixel.shatteredpixeldungeon.items.keys.IronKey;
import com.shatteredpixel.shatteredpixeldungeon.items.keys.Key; import com.shatteredpixel.shatteredpixeldungeon.items.keys.Key;
import com.shatteredpixel.shatteredpixeldungeon.items.keys.SkeletonKey; import com.shatteredpixel.shatteredpixeldungeon.items.keys.WornKey;
import com.shatteredpixel.shatteredpixeldungeon.journal.Notes; import com.shatteredpixel.shatteredpixeldungeon.journal.Notes;
import com.watabou.gltextures.SmartTexture; import com.watabou.gltextures.SmartTexture;
import com.watabou.gltextures.TextureCache; import com.watabou.gltextures.TextureCache;
@@ -57,7 +57,7 @@ public class KeyDisplay extends Visual {
//and the order they will be truncated if there is no space (higher first, larger counts first) //and the order they will be truncated if there is no space (higher first, larger counts first)
private static final LinkedHashMap<Class<? extends Key>, Integer> keyMap = new LinkedHashMap<>(); private static final LinkedHashMap<Class<? extends Key>, Integer> keyMap = new LinkedHashMap<>();
static { static {
keyMap.put(SkeletonKey.class, 1); keyMap.put(WornKey.class, 1);
keyMap.put(CrystalKey.class, 2); keyMap.put(CrystalKey.class, 2);
keyMap.put(GoldenKey.class, 3); keyMap.put(GoldenKey.class, 3);
keyMap.put(IronKey.class, 4); keyMap.put(IronKey.class, 4);

View File

@@ -34,7 +34,7 @@ For icons, you can find the icons for each platform here: [Android(debug)](/andr
You will likely want to add yourself to the credits or change the current supporter link. Feel free to adjust these however you like, the relevant code is in [AboutScene.java](/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/AboutScene.java) and [SupporterScene.java](/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/SupporterScene.java). If you wish to disable the supporter link, simply comment out the line `add(btnSupport);` in [TitleScene.java](/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/TitleScene.java). You will likely want to add yourself to the credits or change the current supporter link. Feel free to adjust these however you like, the relevant code is in [AboutScene.java](/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/AboutScene.java) and [SupporterScene.java](/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/SupporterScene.java). If you wish to disable the supporter link, simply comment out the line `add(btnSupport);` in [TitleScene.java](/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/TitleScene.java).
The game also has a one-time nag window that appears when the player first defeats Goo. If you wish to edit this window, the code is in [WndSupportPrompt.java](/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndSupportPrompt.java). If you wish to disable it entirely, the triggering logic is in [SkeletonKey.java](/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/keys/SkeletonKey.java). The game also has a one-time nag window that appears when the player first defeats Goo. If you wish to edit this window, the code is in [WndSupportPrompt.java](/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndSupportPrompt.java). If you wish to disable it entirely, the triggering logic is in [WornKey.java](/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/keys/WornKey.java).
Note that due to the GPLv3 license, any edits you make to the credits scene must avoid removing any existing credits, though you can reposition them however you like. Additionally, while not required, I would appreciate leaving in a reference and a link to my Patreon, though you are free to add your own as well. Note that due to the GPLv3 license, any edits you make to the credits scene must avoid removing any existing credits, though you can reposition them however you like. Additionally, while not required, I would appreciate leaving in a reference and a link to my Patreon, though you are free to add your own as well.