From 2dcc716a86c02691823e45e303edfc0d1fab8501 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Thu, 25 Mar 2021 20:12:50 -0400 Subject: [PATCH] v0.9.3: thematic changes to tome and armor kit, now mask and crown. --- .../assets/messages/items/items.properties | 20 ++++----- .../messages/windows/windows.properties | 2 +- core/src/main/assets/sprites/items.png | Bin 19430 -> 19515 bytes .../ShatteredPixelDungeon.java | 6 +++ .../actors/mobs/DwarfKing.java | 6 +-- .../actors/mobs/King.java | 4 +- .../actors/mobs/Tengu.java | 4 +- .../items/{ArmorKit.java => KingsCrown.java} | 31 +++++++------- .../{TomeOfMastery.java => TengusMask.java} | 19 +++++---- .../sprites/ItemSpriteSheet.java | 38 +++++++++--------- .../windows/WndChooseWay.java | 6 +-- 11 files changed, 72 insertions(+), 64 deletions(-) rename core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/{ArmorKit.java => KingsCrown.java} (80%) rename core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/{TomeOfMastery.java => TengusMask.java} (89%) diff --git a/core/src/main/assets/messages/items/items.properties b/core/src/main/assets/messages/items/items.properties index 84c28652e..688434648 100644 --- a/core/src/main/assets/messages/items/items.properties +++ b/core/src/main/assets/messages/items/items.properties @@ -1620,12 +1620,6 @@ items.ankh.bless=You bless the ankh with magical water. items.ankh.desc=This ancient symbol of immortality grants the ability to return to life after death. Upon resurrection all non-equipped items are lost. Using a full waterskin, the ankh can be blessed with extra strength. items.ankh.desc_blessed=This ancient symbol of immortality grants the ability to return to life after death. The ankh has been blessed and is now much stronger. The Ankh will sacrifice itself to save you in a moment of deadly peril. -items.armorkit.name=armor kit -items.armorkit.ac_apply=APPLY -items.armorkit.prompt=Select an armor -items.armorkit.upgraded=You applied the armor kit to upgrade your %s -items.armorkit.desc=Using this kit of small tools and materials anybody can transform any armor into an "epic armor", which will keep all properties of the original armor, but will also provide its wearer a special ability depending on his class. No skills in tailoring, leatherworking or blacksmithing are required. - items.brokenseal.name=broken seal items.brokenseal.ac_affix=AFFIX items.brokenseal.prompt=Select an armor @@ -1685,6 +1679,12 @@ items.kindofmisc.unequip_message=You must unequip one of these items first. Sele items.kindofweapon.equip_cursed=Your grip involuntarily tightens around the weapon. +items.kingscrown.name=Dwarf King's crown +items.kingscrown.ac_wear=WEAR +items.kingscrown.naked=Unfortunately, the crown cannot transform your underwear. +items.kingscrown.upgraded=The crown glows brightly and then disintegrates as your armor transforms! +items.kingscrown.desc=The crown of the last dwarven king, it glows with tremendous magical energy.\n\nWhen worn, the crown's magic will flow into the armor you're currently wearing, transforming it into a _unique epic armor with special abilities._ The new armor will keep all the properties of the original armor. + items.merchantsbeacon.name=merchant's beacon items.merchantsbeacon.ac_use=USE items.merchantsbeacon.desc=This odd piece of dwarven technology allows you to communicate from great distances.\n\nAfter being activated, this beacon will let you sell items to Pixel Mart from anywhere in the dungeon.\n\nHowever, the magic within the beacon will only last for one session, so use it wisely. @@ -1697,10 +1697,10 @@ items.stylus.cursed=The stylus's magic will not work on cursed armor. items.stylus.inscribed=You inscribed your armor with the stylus. items.stylus.desc=This arcane stylus is made of some dark, very hard stone. Using it you can inscribe a magical glyph on your armor, but you have no power over choosing what glyph it will be, the stylus will decide it for you. -items.tomeofmastery.name=Tome of Mastery -items.tomeofmastery.ac_read=READ -items.tomeofmastery.way=You have chosen the way of the %s! -items.tomeofmastery.desc=This worn leather book is not that thick, but you feel somehow, that you can gather a lot from it. Remember though that reading this tome may require some time. +items.tengusmask.name=Tengu's mask +items.tengusmask.ac_wear=WEAR +items.tengusmask.used=The mask disintegrates as its power flows into you! +items.tengusmask.desc=This mask fell of Tengu's face as he died, you can feel great magical power emanating from it. Was the mask Tengu's source of strength?\n\nWhen worn, the tremendous power of the mask will be transferred into you, enabling you to _choose a subclass for your hero._\n\nWhich subclass will you choose? items.torch.name=torch items.torch.ac_light=LIGHT diff --git a/core/src/main/assets/messages/windows/windows.properties b/core/src/main/assets/messages/windows/windows.properties index ace177104..e417cbe8c 100644 --- a/core/src/main/assets/messages/windows/windows.properties +++ b/core/src/main/assets/messages/windows/windows.properties @@ -4,7 +4,7 @@ windows.wndblacksmith.reforge=Reforge them windows.wndchallenges.title=Challenges -windows.wndchooseway.message=Which way will you follow? +windows.wndchooseway.message=As the mask fits over your face, your eyesight fades and visions of new power flood into your mind. How will you direct the mask's power? windows.wndchooseway.cancel=I'll decide later windows.wndclass.mastery=Mastery diff --git a/core/src/main/assets/sprites/items.png b/core/src/main/assets/sprites/items.png index d11de644a6d1ced62fee99a18a42f5977d288cee..25136a37ffb75815555c474fc8046d135364e6bc 100644 GIT binary patch literal 19515 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 diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java index 3968fb437..7a7a5983c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java @@ -82,6 +82,12 @@ public class ShatteredPixelDungeon extends Game { com.watabou.utils.Bundle.addAlias( com.shatteredpixel.shatteredpixeldungeon.items.Waterskin.class, "com.shatteredpixel.shatteredpixeldungeon.items.DewVial" ); + com.watabou.utils.Bundle.addAlias( + com.shatteredpixel.shatteredpixeldungeon.items.TengusMask.class, + "com.shatteredpixel.shatteredpixeldungeon.items.TomeOfMastery" ); + com.watabou.utils.Bundle.addAlias( + com.shatteredpixel.shatteredpixeldungeon.items.KingsCrown.class, + "com.shatteredpixel.shatteredpixeldungeon.items.ArmorKit" ); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DwarfKing.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DwarfKing.java index 92a290e45..c9c63f5e4 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DwarfKing.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DwarfKing.java @@ -38,9 +38,9 @@ import com.shatteredpixel.shatteredpixeldungeon.effects.Pushing; import com.shatteredpixel.shatteredpixeldungeon.effects.Speck; import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ElmoParticle; import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ShadowParticle; -import com.shatteredpixel.shatteredpixeldungeon.items.ArmorKit; import com.shatteredpixel.shatteredpixeldungeon.items.Heap; import com.shatteredpixel.shatteredpixeldungeon.items.Item; +import com.shatteredpixel.shatteredpixeldungeon.items.KingsCrown; import com.shatteredpixel.shatteredpixeldungeon.items.armor.glyphs.Viscosity; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.DriedRose; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.LloydsBeacon; @@ -430,9 +430,9 @@ public class DwarfKing extends Mob { } h.destroy(); } - Dungeon.level.drop(new ArmorKit(), pos + Dungeon.level.width()).sprite.drop(pos); + Dungeon.level.drop(new KingsCrown(), pos + Dungeon.level.width()).sprite.drop(pos); } else { - Dungeon.level.drop(new ArmorKit(), pos).sprite.drop(); + Dungeon.level.drop(new KingsCrown(), pos).sprite.drop(); } Badges.validateBossSlain(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/King.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/King.java index afde99ddb..988c00a09 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/King.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/King.java @@ -36,7 +36,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Terror; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Vertigo; import com.shatteredpixel.shatteredpixeldungeon.effects.Flare; import com.shatteredpixel.shatteredpixeldungeon.effects.Speck; -import com.shatteredpixel.shatteredpixeldungeon.items.ArmorKit; +import com.shatteredpixel.shatteredpixeldungeon.items.KingsCrown; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.DriedRose; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.LloydsBeacon; import com.shatteredpixel.shatteredpixeldungeon.items.keys.SkeletonKey; @@ -150,7 +150,7 @@ public class King extends Mob { public void die( Object cause ) { GameScene.bossSlain(); - Dungeon.level.drop( new ArmorKit(), pos ).sprite.drop(); + Dungeon.level.drop( new KingsCrown(), pos ).sprite.drop(); Dungeon.level.drop( new SkeletonKey( Dungeon.depth ), pos ).sprite.drop(); super.die( cause ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Tengu.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Tengu.java index 55a1d3933..a46db9377 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Tengu.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Tengu.java @@ -48,7 +48,7 @@ import com.shatteredpixel.shatteredpixeldungeon.effects.particles.SmokeParticle; import com.shatteredpixel.shatteredpixeldungeon.effects.particles.SparkParticle; import com.shatteredpixel.shatteredpixeldungeon.items.Heap; import com.shatteredpixel.shatteredpixeldungeon.items.Item; -import com.shatteredpixel.shatteredpixeldungeon.items.TomeOfMastery; +import com.shatteredpixel.shatteredpixeldungeon.items.TengusMask; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.DriedRose; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.LloydsBeacon; import com.shatteredpixel.shatteredpixeldungeon.items.bombs.Bomb; @@ -199,7 +199,7 @@ public class Tengu extends Mob { public void die( Object cause ) { if (Dungeon.hero.subClass == HeroSubClass.NONE) { - Dungeon.level.drop( new TomeOfMastery(), pos ).sprite.drop(); + Dungeon.level.drop( new TengusMask(), pos ).sprite.drop(); } GameScene.bossSlain(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/ArmorKit.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/KingsCrown.java similarity index 80% rename from core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/ArmorKit.java rename to core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/KingsCrown.java index 11896bed9..ec9f62f38 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/ArmorKit.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/KingsCrown.java @@ -22,12 +22,12 @@ package com.shatteredpixel.shatteredpixeldungeon.items; import com.shatteredpixel.shatteredpixeldungeon.Assets; +import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.effects.Speck; import com.shatteredpixel.shatteredpixeldungeon.items.armor.Armor; import com.shatteredpixel.shatteredpixeldungeon.items.armor.ClassArmor; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; -import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.sprites.HeroSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; @@ -36,16 +36,12 @@ import com.watabou.noosa.audio.Sample; import java.util.ArrayList; -public class ArmorKit extends Item { - - private static final String TXT_UPGRADED = "you applied the armor kit to upgrade your %s"; +public class KingsCrown extends Item { - private static final float TIME_TO_UPGRADE = 2; - - private static final String AC_APPLY = "APPLY"; + private static final String AC_WEAR = "WEAR"; { - image = ItemSpriteSheet.KIT; + image = ItemSpriteSheet.CROWN; unique = true; } @@ -53,7 +49,7 @@ public class ArmorKit extends Item { @Override public ArrayList actions( Hero hero ) { ArrayList actions = super.actions( hero ); - actions.add( AC_APPLY ); + actions.add( AC_WEAR ); return actions; } @@ -62,10 +58,14 @@ public class ArmorKit extends Item { super.execute( hero, action ); - if (action.equals(AC_APPLY)) { + if (action.equals(AC_WEAR)) { curUser = hero; - GameScene.selectItem( itemSelector, WndBag.Mode.ARMOR, Messages.get(this, "prompt") ); + if (hero.belongings.armor != null){ + upgrade(hero.belongings.armor); + } else { + GLog.w( Messages.get(this, "naked")); + } } } @@ -85,10 +85,11 @@ public class ArmorKit extends Item { detach( curUser.belongings.backpack ); curUser.sprite.centerEmitter().start( Speck.factory( Speck.KIT ), 0.05f, 10 ); - curUser.spend( TIME_TO_UPGRADE ); + //TODO add a spell icon? + curUser.spend( Actor.TICK ); curUser.busy(); - GLog.w( Messages.get(this, "upgraded", armor.name()) ); + GLog.p( Messages.get(this, "upgraded")); ClassArmor classArmor = ClassArmor.upgrade( curUser, armor ); if (curUser.belongings.armor == armor) { @@ -105,14 +106,14 @@ public class ArmorKit extends Item { } curUser.sprite.operate( curUser.pos ); - Sample.INSTANCE.play( Assets.Sounds.EVOKE ); + Sample.INSTANCE.play( Assets.Sounds.MASTERY ); } private final WndBag.Listener itemSelector = new WndBag.Listener() { @Override public void onSelect( Item item ) { if (item != null) { - ArmorKit.this.upgrade( (Armor)item ); + KingsCrown.this.upgrade( (Armor)item ); } } }; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/TomeOfMastery.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/TengusMask.java similarity index 89% rename from core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/TomeOfMastery.java rename to core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/TengusMask.java index ebc982272..bc7ceec58 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/TomeOfMastery.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/TengusMask.java @@ -23,6 +23,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items; import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Badges; +import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent; @@ -37,15 +38,13 @@ import com.watabou.noosa.audio.Sample; import java.util.ArrayList; -public class TomeOfMastery extends Item { +public class TengusMask extends Item { - public static final float TIME_TO_READ = 10; - - public static final String AC_READ = "READ"; + public static final String AC_WEAR = "WEAR"; { stackable = false; - image = ItemSpriteSheet.MASTERY; + image = ItemSpriteSheet.MASK; unique = true; } @@ -53,7 +52,7 @@ public class TomeOfMastery extends Item { @Override public ArrayList actions( Hero hero ) { ArrayList actions = super.actions( hero ); - actions.add( AC_READ ); + actions.add( AC_WEAR ); return actions; } @@ -62,7 +61,7 @@ public class TomeOfMastery extends Item { super.execute( hero, action ); - if (action.equals( AC_READ )) { + if (action.equals( AC_WEAR )) { curUser = hero; @@ -111,7 +110,7 @@ public class TomeOfMastery extends Item { detach( curUser.belongings.backpack ); - curUser.spend( TomeOfMastery.TIME_TO_READ ); + curUser.spend( Actor.TICK ); curUser.busy(); curUser.subClass = way; @@ -120,9 +119,9 @@ public class TomeOfMastery extends Item { curUser.sprite.operate( curUser.pos ); Sample.INSTANCE.play( Assets.Sounds.MASTERY ); - SpellSprite.show( curUser, SpellSprite.MASTERY ); + SpellSprite.show( curUser, SpellSprite.MASTERY ); //TODO new spell icon! curUser.sprite.emitter().burst( Speck.factory( Speck.MASTERY ), 12 ); - GLog.w( Messages.get(this, "way", way.title()) ); + GLog.p( Messages.get(this, "used")); } } 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 c8ab70c1f..be9b16d3f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java @@ -125,23 +125,23 @@ public class ItemSpriteSheet { assignItemRect(EBONY_CHEST, 16, 14); } - private static final int SINGLE_USE = xy(1, 4); //16 slots - public static final int ANKH = SINGLE_USE+0; - public static final int STYLUS = SINGLE_USE+1; - - public static final int SEAL = SINGLE_USE+3; - public static final int TORCH = SINGLE_USE+4; - public static final int BEACON = SINGLE_USE+5; - - public static final int HONEYPOT = SINGLE_USE+7; - public static final int SHATTPOT = SINGLE_USE+8; - public static final int IRON_KEY = SINGLE_USE+9; - public static final int GOLDEN_KEY = SINGLE_USE+10; - public static final int CRYSTAL_KEY = SINGLE_USE+11; - public static final int SKELETON_KEY = SINGLE_USE+12; - public static final int MASTERY = SINGLE_USE+13; - public static final int KIT = SINGLE_USE+14; - public static final int AMULET = SINGLE_USE+15; + private static final int MISC_CONSUMABLE = xy(1, 4); //16 slots + public static final int ANKH = MISC_CONSUMABLE +0; + public static final int STYLUS = MISC_CONSUMABLE +1; + public static final int SEAL = MISC_CONSUMABLE +2; + public static final int TORCH = MISC_CONSUMABLE +3; + public static final int BEACON = MISC_CONSUMABLE +4; + public static final int HONEYPOT = MISC_CONSUMABLE +5; + public static final int SHATTPOT = MISC_CONSUMABLE +6; + public static final int IRON_KEY = MISC_CONSUMABLE +7; + public static final int GOLDEN_KEY = MISC_CONSUMABLE +8; + public static final int CRYSTAL_KEY = MISC_CONSUMABLE +9; + public static final int SKELETON_KEY = MISC_CONSUMABLE +10; + public static final int MASK = MISC_CONSUMABLE +11; //FIXME placeholder sprite + public static final int CROWN = MISC_CONSUMABLE +12; //FIXME placeholder sprite + public static final int AMULET = MISC_CONSUMABLE +13; + public static final int MASTERY = MISC_CONSUMABLE +14; + public static final int KIT = MISC_CONSUMABLE +15; static{ assignItemRect(ANKH, 10, 16); assignItemRect(STYLUS, 12, 13); @@ -156,9 +156,11 @@ public class ItemSpriteSheet { assignItemRect(GOLDEN_KEY, 8, 14); assignItemRect(CRYSTAL_KEY, 8, 14); assignItemRect(SKELETON_KEY, 8, 14); + assignItemRect(MASK, 9, 9); + assignItemRect(CROWN, 13, 6); + assignItemRect(AMULET, 16, 16); assignItemRect(MASTERY, 13, 16); assignItemRect(KIT, 16, 15); - assignItemRect(AMULET, 16, 16); } private static final int BOMBS = xy(1, 5); //16 slots diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndChooseWay.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndChooseWay.java index 56610589e..b0b27c345 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndChooseWay.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndChooseWay.java @@ -22,7 +22,7 @@ package com.shatteredpixel.shatteredpixeldungeon.windows; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass; -import com.shatteredpixel.shatteredpixeldungeon.items.TomeOfMastery; +import com.shatteredpixel.shatteredpixeldungeon.items.TengusMask; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite; @@ -36,7 +36,7 @@ public class WndChooseWay extends Window { private static final int BTN_HEIGHT = 18; private static final float GAP = 2; - public WndChooseWay( final TomeOfMastery tome, final HeroSubClass way1, final HeroSubClass way2 ) { + public WndChooseWay(final TengusMask tome, final HeroSubClass way1, final HeroSubClass way2 ) { super(); @@ -47,7 +47,7 @@ public class WndChooseWay extends Window { add( titlebar ); RenderedTextBlock hl = PixelScene.renderTextBlock( 6 ); - hl.text( way1.desc() + "\n\n" + way2.desc() + "\n\n" + Messages.get(this, "message"), WIDTH ); + hl.text( Messages.get(this, "message") + "\n\n" + way1.desc() + "\n\n" + way2.desc(), WIDTH ); hl.setPos( titlebar.left(), titlebar.bottom() + GAP ); add( hl );