From f8dfd11a8d109e59135c098d75e324447f075903 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Wed, 25 Jul 2018 00:00:08 -0400 Subject: [PATCH] v0.7.0: addressed a variety of TODOs --- core/src/main/assets/consumable_icons.png | Bin 1216 -> 12249 bytes .../actors/blobs/SmokeScreen.java | 1 - .../actors/buffs/Barkskin.java | 1 - .../actors/buffs/Buff.java | 1 - .../actors/buffs/Charm.java | 1 - .../actors/buffs/Terror.java | 1 - .../actors/mobs/Succubus.java | 1 - .../items/armor/Armor.java | 9 +------- .../items/potions/exotic/ExoticPotion.java | 9 ++++++-- .../potions/exotic/PotionOfSnapFreeze.java | 1 - .../items/scrolls/Scroll.java | 3 +-- .../items/scrolls/ScrollOfRemoveCurse.java | 16 +++++++++++++- .../items/scrolls/exotic/ExoticScroll.java | 9 ++++++-- .../items/stones/StoneOfDetectCurse.java | 10 ++++++++- .../items/wands/WandOfCorruption.java | 1 - .../shatteredpixeldungeon/windows/WndBag.java | 20 ++++++------------ .../messages/actors/actors.properties | 6 +++--- .../messages/items/items.properties | 2 +- 18 files changed, 50 insertions(+), 42 deletions(-) diff --git a/core/src/main/assets/consumable_icons.png b/core/src/main/assets/consumable_icons.png index 901c5c54485741d249a4a0d5b3f3fb67290ee4c7..f8cf8b1a5b4b0d107972b5267f5f7db43ce2582e 100644 GIT binary patch literal 12249 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 literal 1216 zcmXX_c~H|=5PnG@l912Wn#{iMmi3k!3RD~!-5f8vr8xVYb8QtBt$G6|^>_6|cC|p1#)5!n; zYOs*E6-5j^M>7KQua+cqxdL}PeTZRr0zbv;saqKyZ}VVKiH)ivP2D3!h7Bz zsuq5dl-c5b*gJ)oew{)i^H00$@t_tsz~L~o3dqqiaAtJWNSA^mgZZsbe@Dni5aBA7 zDr~bSYSleaeFQ6uc7Wqh0jFCfACOf-pYqiZe1M845W_G?r(;y=wI2n07>`3#EW`wz zQ_v?GXjW?6_Ery_KnXH5h;B~$Y2%FELyz|IGq#3D0^<>TkU}Vd5HnVv1c7@vDG~@% zkRnMPw#RrrkPjX0laGXvmns?_ikYcf2@`&o61cyS2@7Ezo?{PZ)djC64?Oh773xQ0nOV16eCS0l zGo0SNU%p6u9?*Q}YP$N%fPZd`_`W&lb*B5#WR~ACsU_3%+R8+Si1wxBx5wIGEdC%b z&!&^5&W`+QZ&A^!K@+OPnI$k-g(IeoTh<=V-tD%pZq`oA z+R!o~SkbRMAft*FWAl!{siAC7T6n`Ym-Q-L2mpxfQERh#p=w{kXyxTnrIWHiphvm#}G6zt!>| zOv_)GZt)gz$Jo!CGDYr+oEwC-6F93tA#s29`Sqgc=+I}B(jnYv642hubhH;{I-WH| zo3={qFZ[] glyphs = new Class[]{ - Obfuscation.class, Swiftness.class, Viscosity.class, Potential.class, - Brimstone.class, Stone.class, Entanglement.class, Repulsion.class, Camouflage.class, Flow.class, - Affection.class, AntiMagic.class, Thorns.class }; - private static final Class[] common = new Class[]{ Obfuscation.class, Swiftness.class, Viscosity.class, Potential.class }; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/ExoticPotion.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/ExoticPotion.java index dbaaeef43..dd922d259 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/ExoticPotion.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/ExoticPotion.java @@ -115,10 +115,15 @@ public class ExoticPotion extends Potion { } } - //TODO @Override + //20 gold more than its none-exotic equivalent public int price() { - return super.price(); + try { + return (exoToReg.get(getClass()).newInstance().price() + 20) * quantity; + } catch (Exception e){ + ShatteredPixelDungeon.reportException(e); + return 0; + } } public static class PotionToExotic extends Recipe{ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/PotionOfSnapFreeze.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/PotionOfSnapFreeze.java index cc942ced7..453df561e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/PotionOfSnapFreeze.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/PotionOfSnapFreeze.java @@ -57,7 +57,6 @@ public class PotionOfSnapFreeze extends ExoticPotion { Char ch = Actor.findChar( cell + offset); if (ch != null){ - //TODO balancing on this Buff.affect(ch, Roots.class, 10f); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/Scroll.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/Scroll.java index fb5b9ace9..53eba9eaf 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/Scroll.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/Scroll.java @@ -153,7 +153,7 @@ public abstract class Scroll extends Item { if (action.equals( AC_READ )) { if (hero.buff(MagicImmune.class) != null){ - GLog.w( Messages.get(this, "no_magic") ); //TODO + GLog.w( Messages.get(this, "no_magic") ); } else if (hero.buff( Blindness.class ) != null) { GLog.w( Messages.get(this, "blinded") ); } else if (hero.buff(UnstableSpellbook.bookRecharge.class) != null @@ -250,7 +250,6 @@ public abstract class Scroll extends Item { private static HashMap, Class> stones = new HashMap<>(); private static HashMap, Integer> amnts = new HashMap<>(); - //TODO add more stones as they are implemented static { stones.put(ScrollOfIdentify.class, StoneOfIntuition.class); amnts.put(ScrollOfIdentify.class, 3); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfRemoveCurse.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfRemoveCurse.java index a85b53221..b95e8fce4 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfRemoveCurse.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfRemoveCurse.java @@ -27,8 +27,10 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Weakness; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.effects.Flare; import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ShadowParticle; +import com.shatteredpixel.shatteredpixeldungeon.items.EquipableItem; import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.armor.Armor; +import com.shatteredpixel.shatteredpixeldungeon.items.wands.Wand; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.Weapon; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; @@ -39,7 +41,7 @@ public class ScrollOfRemoveCurse extends InventoryScroll { { initials = 7; - mode = WndBag.Mode.UNIDED_OR_CURSED; + mode = WndBag.Mode.UNCURSABLE; } @Override @@ -104,6 +106,18 @@ public class ScrollOfRemoveCurse extends InventoryScroll { return procced; } + public static boolean uncursable( Item item ){ + if ((item instanceof EquipableItem || item instanceof Wand) && (!item.isIdentified() || item.cursed)){ + return true; + } else if (item instanceof Weapon){ + return ((Weapon)item).hasCurseEnchant(); + } else if (item instanceof Armor){ + return ((Armor)item).hasCurseGlyph(); + } else { + return false; + } + } + @Override public int price() { return isKnown() ? 30 * quantity : super.price(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ExoticScroll.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ExoticScroll.java index 7176cb48f..8f5b80817 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ExoticScroll.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ExoticScroll.java @@ -117,10 +117,15 @@ public abstract class ExoticScroll extends Scroll { } - //TODO @Override + //20 gold more than its none-exotic equivalent public int price() { - return super.price(); + try { + return (exoToReg.get(getClass()).newInstance().price() + 20) * quantity; + } catch (Exception e){ + ShatteredPixelDungeon.reportException(e); + return 0; + } } public static class ScrollToExotic extends Recipe { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfDetectCurse.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfDetectCurse.java index f807db50f..f9cb5db68 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfDetectCurse.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfDetectCurse.java @@ -21,7 +21,9 @@ package com.shatteredpixel.shatteredpixeldungeon.items.stones; +import com.shatteredpixel.shatteredpixeldungeon.items.EquipableItem; import com.shatteredpixel.shatteredpixeldungeon.items.Item; +import com.shatteredpixel.shatteredpixeldungeon.items.wands.Wand; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; @@ -30,7 +32,7 @@ import com.shatteredpixel.shatteredpixeldungeon.windows.WndBag; public class StoneOfDetectCurse extends InventoryStone { { - mode = WndBag.Mode.EQUIPMENT; + mode = WndBag.Mode.CURSE_DETECTABLE; image = ItemSpriteSheet.STONE_ODAL; } @@ -46,4 +48,10 @@ public class StoneOfDetectCurse extends InventoryStone { GLog.w( Messages.get(this, "not_cursed") ); } } + + public static boolean canDetectCurse(Item item){ + return !item.isIdentified() + && !item.cursedKnown + && (item instanceof EquipableItem || item instanceof Wand); + } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorruption.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorruption.java index 8fdac4eb9..a8ea8db2f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorruption.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorruption.java @@ -74,7 +74,6 @@ import com.watabou.utils.Random; import java.util.HashMap; -//TODO final balancing decisions here public class WandOfCorruption extends Wand { { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndBag.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndBag.java index 26b3e31fa..116dcfe10 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndBag.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndBag.java @@ -39,9 +39,10 @@ import com.shatteredpixel.shatteredpixeldungeon.items.bags.VelvetPouch; import com.shatteredpixel.shatteredpixeldungeon.items.food.Food; import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.Scroll; +import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfRemoveCurse; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTransmutation; +import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfDetectCurse; import com.shatteredpixel.shatteredpixeldungeon.items.wands.Wand; -import com.shatteredpixel.shatteredpixeldungeon.items.weapon.Weapon; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MeleeWeapon; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Boomerang; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; @@ -67,7 +68,7 @@ public class WndBag extends WndTabbed { public static enum Mode { ALL, UNIDENTIFED, - UNIDED_OR_CURSED, + UNCURSABLE, UPGRADEABLE, QUICKSLOT, FOR_SALE, @@ -80,6 +81,7 @@ public class WndBag extends WndTabbed { POTION, SCROLL, UNIDED_POTION_OR_SCROLL, + CURSE_DETECTABLE, EQUIPMENT, TRANMSUTABLE, ALCHEMY @@ -391,7 +393,7 @@ public class WndBag extends WndTabbed { mode == Mode.FOR_SALE && !item.unique && (item.price() > 0) && (!item.isEquipped( Dungeon.hero ) || !item.cursed) || mode == Mode.UPGRADEABLE && item.isUpgradable() || mode == Mode.UNIDENTIFED && !item.isIdentified() || - mode == Mode.UNIDED_OR_CURSED && ((item instanceof EquipableItem || item instanceof Wand) && (!item.isIdentified() || item.cursed)) || + mode == Mode.UNCURSABLE && ScrollOfRemoveCurse.uncursable(item) || mode == Mode.QUICKSLOT && (item.defaultAction != null) || mode == Mode.WEAPON && (item instanceof MeleeWeapon || item instanceof Boomerang) || mode == Mode.ARMOR && (item instanceof Armor) || @@ -402,22 +404,12 @@ public class WndBag extends WndTabbed { mode == Mode.POTION && (item instanceof Potion) || mode == Mode.SCROLL && (item instanceof Scroll) || mode == Mode.UNIDED_POTION_OR_SCROLL && (!item.isIdentified() && (item instanceof Scroll || item instanceof Potion)) || + mode == Mode.CURSE_DETECTABLE && StoneOfDetectCurse.canDetectCurse(item) || mode == Mode.EQUIPMENT && (item instanceof EquipableItem) || mode == Mode.ALCHEMY && Recipe.usableInRecipe(item) || mode == Mode.TRANMSUTABLE && ScrollOfTransmutation.canTransmute(item) || mode == Mode.ALL ); - //extra logic for cursed weapons or armor - if (!active && mode == Mode.UNIDED_OR_CURSED){ - if (item instanceof Weapon){ - Weapon w = (Weapon) item; - enable(w.hasCurseEnchant()); - } - if (item instanceof Armor){ - Armor a = (Armor) item; - enable(a.hasCurseGlyph()); - } - } } } else { bg.color( NORMAL ); diff --git a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/actors/actors.properties b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/actors/actors.properties index 4ba7b5391..65a312480 100644 --- a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/actors/actors.properties +++ b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/actors/actors.properties @@ -87,7 +87,7 @@ actors.buffs.burning.desc=Few things are more distressing than being engulfed in actors.buffs.charm.name=Charmed actors.buffs.charm.heromsg=You are charmed! -actors.buffs.charm.desc=A charm is manipulative magic that can make enemies temporarily adore eachother.\n\nCharacters affected by charm are unable to directly attack the enemy they are charmed by. Attacking other targets is still possible however.\n\nTurns of charm remaining: %s. +actors.buffs.charm.desc=A charm is manipulative magic that can make enemies temporarily adore eachother.\n\nCharacters affected by charm are unable to directly attack the enemy they are charmed by. Attacking other targets is still possible however. The shock of pain will lessen the duration of charm.\n\nTurns of charm remaining: %s. actors.buffs.chill.name=Chilled actors.buffs.chill.freezes=%s freezes! @@ -240,7 +240,7 @@ actors.buffs.stamina.name=Stamina actors.buffs.stamina.desc=You have unending stamina, allowing for faster movement!\n\nWhile under the effects of stamina you will run at +50%% speed, but will perform all other actions at normal speed.\n\nTurns of stamina remaining: %s. actors.buffs.terror.name=Terrified -actors.buffs.terror.desc=Terror is manipulative magic which forces its target into an uncontrollable panic.\n\nTerrified characters are forced to run away from their opponent, trying to put as many doors and walls between them as possible. The shock of pain is enough to break this effect, however.\n\nTurns of terror remaining: %s. +actors.buffs.terror.desc=Terror is manipulative magic which forces its target into an uncontrollable panic.\n\nTerrified characters are forced to run away from their opponent, trying to put as many doors and walls between them as possible. The shock of pain will lessen the duration of terror, however.\n\nTurns of terror remaining: %s. actors.buffs.toxicimbue.name=Imbued with Toxicity actors.buffs.toxicimbue.desc=You are imbued with poisonous energy!\n\nAs you move around toxic gas will constantly billow forth from you, damaging your enemies. You are immune to toxic gas and poison for the duration of the effect.\n\nTurns of toxic imbue remaining: %s. @@ -536,7 +536,7 @@ actors.mobs.statue.name=animated statue actors.mobs.statue.desc=You would think that it's just another one of this dungeon's ugly statues, but its red glowing eyes give it away.\n\nWhile the statue itself is made of stone, the _%s,_ it's wielding, looks real. actors.mobs.succubus.name=succubus -actors.mobs.succubus.desc=The succubi are demons that look like seductive (in a slightly gothic way) girls. Using its magic, the succubus can charm a hero, who will become unable to attack anything until the charm wears off. +actors.mobs.succubus.desc=The succubi are demons that look like seductive (in a slightly gothic way) girls. Using its magic, the succubus can charm a hero, who will become unable to attack anything until the charm wears off. When succubi attack a charmed hero, they will steal their life essence. actors.mobs.swarm.name=swarm of flies actors.mobs.swarm.def_verb=evaded diff --git a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/items/items.properties b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/items/items.properties index 620257239..56aa654cb 100644 --- a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/items/items.properties +++ b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/items/items.properties @@ -753,7 +753,7 @@ items.scrolls.scrollofterror.name=scroll of terror items.scrolls.scrollofterror.none=The scroll emits a brilliant flash of red light. items.scrolls.scrollofterror.one=The scroll emits a brilliant flash of red light and the %s flees! items.scrolls.scrollofterror.many=The scroll emits a brilliant flash of red light and the monsters flee! -items.scrolls.scrollofterror.desc=A flash of red light will overwhelm all creatures in your field of view with terror, and they will turn and flee. Attacking a fleeing enemy will dispel the effect. +items.scrolls.scrollofterror.desc=A flash of red light will overwhelm all creatures in your field of view with terror, and they will turn and flee. Attacking a fleeing enemy will shorten the effect. items.scrolls.scrolloftransmutation.name=scroll of transmutation items.scrolls.scrolloftransmutation.inv_title=Transmute an item