From 87e8d261349c8a6178d83d39407f6aaf13bbbcb0 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Fri, 11 Dec 2020 13:17:43 -0500 Subject: [PATCH] v0.9.1: final commit --- build.gradle | 4 +- .../ShatteredPixelDungeon.java | 3 +- .../scenes/WelcomeScene.java | 4 +- .../ui/changelist/v0_9_X_Changes.java | 184 +++++++++++++----- 4 files changed, 141 insertions(+), 54 deletions(-) diff --git a/build.gradle b/build.gradle index 062e21f30..d4f293316 100644 --- a/build.gradle +++ b/build.gradle @@ -14,8 +14,8 @@ allprojects { appName = 'Shattered Pixel Dungeon' appPackageName = 'com.shatteredpixel.shatteredpixeldungeon' - appVersionCode = 490 - appVersionName = '0.9.0b' + appVersionCode = 498 + appVersionName = '0.9.1' appJavaCompatibility = JavaVersion.VERSION_1_8 diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java index 761d24c6b..6504a8764 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java @@ -39,7 +39,8 @@ public class ShatteredPixelDungeon extends Game { public static final int v0_8_1a = 422; public static final int v0_8_2d = 463; - public static final int v0_9_0 = 479; + public static final int v0_9_0b = 489; + public static final int v0_9_1 = 497; public ShatteredPixelDungeon( PlatformSupport platform ) { super( sceneClass == null ? WelcomeScene.class : sceneClass, platform ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/WelcomeScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/WelcomeScene.java index 38a6d9b4e..59a9848e5 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/WelcomeScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/WelcomeScene.java @@ -43,7 +43,7 @@ import java.util.ArrayList; public class WelcomeScene extends PixelScene { - private static final int LATEST_UPDATE = ShatteredPixelDungeon.v0_9_0; + private static final int LATEST_UPDATE = ShatteredPixelDungeon.v0_9_1; @Override public void create() { @@ -162,7 +162,7 @@ public class WelcomeScene extends PixelScene { //update rankings, to update any data which may be outdated //FIXME this is set to true temporarily as we want to run this no matter what, to ensure the v0.9.0a- badges bug is fixed - if (true){ + if (previousVersion < LATEST_UPDATE){ int highestChalInRankings = 0; try { Rankings.INSTANCE.load(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_9_X_Changes.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_9_X_Changes.java index b8f3a26c8..7cef3ce50 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_9_X_Changes.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_9_X_Changes.java @@ -22,10 +22,18 @@ package com.shatteredpixel.shatteredpixeldungeon.ui.changelist; import com.shatteredpixel.shatteredpixeldungeon.Assets; +import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass; +import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent; +import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Spinner; +import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfEnergy; import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfFrost; +import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfTransfusion; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.ChangesScene; import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite; +import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite; +import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; +import com.shatteredpixel.shatteredpixeldungeon.sprites.SpinnerSprite; import com.shatteredpixel.shatteredpixeldungeon.ui.Icons; import com.shatteredpixel.shatteredpixeldungeon.ui.Window; import com.watabou.noosa.Image; @@ -40,70 +48,127 @@ public class v0_9_X_Changes { public static void add_v0_9_0_Changes( ArrayList changeInfos ) { - ChangeInfo changes = new ChangeInfo("v0.9.0", true, ""); + ChangeInfo changes = new ChangeInfo("v0.9.1", true, ""); changes.hardlight(Window.TITLE_COLOR); changeInfos.add(changes); - changes = new ChangeInfo("v0.9.0b", false, null); + changes = new ChangeInfo(Messages.get(ChangesScene.class, "new"), false, null); changes.hardlight(Window.TITLE_COLOR); changeInfos.add(changes); - changes.addButton(new ChangeButton(Icons.get(Icons.TALENT), "Talent Balance Changes", - "I'm making some numbers changes to improve some of the lowest winrate talents. Expect more thorough changes, and a new tier of talents, when I release v0.9.1!\n\n" + - "_- Survivalist's Intuition_ ID speed boost at +1/+2 increased to 1.75x/2.5x, from 1.5x/2x\n" + - "_- Scholar's Intuition_ ID speed boost at +1 increased to 3x from 2x\n\n" + - "_- Energizing Meal_ recharging turns at +1/+2 increased to 5/8 from 4/6\n\n" + - "_- Sucker Punch_ damage boost at +1/+2 increased to 1-2/2 from 1/1-2\n" + - "_- Followup Strike_ damage boost +1/+2 increased to 2/3 from 1-2/2-3")); + changes.addButton( new ChangeButton(Icons.get(Icons.SHPX), "Developer Commentary", + "_-_ Released December 11th, 2020\n" + + "_-_ 68 days after Shattered v0.9.0\n" + + "\n" + + "Dev commentary will be added here in the future.")); - changes.addButton(new ChangeButton(Icons.get(Icons.CHALLENGE_ON), "Hostile Champions Tweaks", - "Based on feedback, I'm adjusting the hostile champions challenge to be a bit harsher overall, while also reduce the chance of some of the worst-case scenarios:\n" + - "_-_ Champion spawn chance increased to 1/10 from 1/15\n" + - "_-_ Champions per floor are now capped, to prevent unlucky cases with huge champion numbers. This cap gets higher as depth increases.\n" + - "_-_ Growing champion base power reduced by 20%, power scaling reduced by 50%.\n" + - "_-_ Champion enemies now include their champion buff description in their regular description.\n\n" + - "I've also fixed two bugs that affected hostile champions specifically:\n" + - "_-_ Fixed pathing issues with giant champions.\n" + - "_-_ Fixed projecting elementals spamming their ranged attacks.")); + changes.addButton(new ChangeButton(Icons.get(Icons.TALENT), "Tier Two Talents!", + "_A second tier of talents has been added, including twenty new talents spanning levels 7-12!_\n\n" + + "The second talent tier is similar to the first, but talent powers are much less focused on the early game. Expect effects that are useful all game long.\n\n" + + "Look forward to tier 3 of the talent system coming in v0.9.2, which will span levels 13-20.")); + + changes.addButton(new ChangeButton(Icons.get(Icons.DEPTH), "Levelgen Improvements!", + "_The game's level generation system has received a number of improvements!:_\n\n" + + "_-_ A new region specific room has been added to each dungeon region, 5 in total.\n" + + "_-_ Three new level feelings have been added: large, secrets, and traps.\n" + + "_-_ The level layout system now creates much more varied layouts based on more shapes.\n" + + "_-_ Adjacent rooms can now be merged in many more cases.\n" + + "_-_ Several existing room types have received small tweaks and improvements.")); + + changes = new ChangeInfo(Messages.get(ChangesScene.class, "changes"), false, null); + changes.hardlight(CharSprite.WARNING); + changeInfos.add(changes); + + changes.addButton(new ChangeButton(new Image(Assets.Sprites.HUNTRESS, 0, 15, 12, 15), "Huntress and Rogue Adjustments", + "The _Huntress and Rogue_ have both received some adjustments to their innate powers:\n\n" + + "_-_ Bonus thrown weapon durability is no longer an innate huntress power, it is now a talent.\n" + + "_-_ Short-range mind vision is no longer an innate huntress power, it is now a talent.\n\n" + + "_-_ The Rogue no longer causes the game to spawn slightly more secret rooms. Instead secret room generation has been slightly increased for all heroes, and the Rogue has talents that help him find these secrets.")); + + changes.addButton(new ChangeButton(Icons.get(Icons.TALENT), "Tier One Talent Changes", + "Several _tier one talents_ have been changed based on feedback and gameplay data:\n\n" + + "_- Test Subject_ now triggers on identifying any item, but the healing it grants has been halved.\n\n" + + "_- Energizing Meal_ is now a T2 talent. In T1 it has been replaced by _Empowering Meal_, which grants bonus damage on wand zaps.\n" + + "_- Tested Hypothesis_ now triggers on identifying any item. It now also grants a small amount of recharging, instead of shielding.\n" + + "_- Energizing Upgrade_ is now a T2 talent. In T1 it has been replaced by _Backup Barrier_, which gives a small shield when the Mage's staff runs out of charge.\n\n" + + "_- Rationed Meal_ has been removed. It is replaced by _Cached Rations_, which allows the Rogue to find bonus food.\n" + + "_- Mending Shadow_ has been reworked. It is now _Protective Shadows_, which grants the Rogue shielding.\n\n" + + "_- Invigorating Meal_ is now a T2 talent. In T1 it has been replaced by _Nature's Bounty_, which allows the Huntress to find berries in grass.")); changes.addButton(new ChangeButton(Icons.get(Icons.PREFS), Messages.get(ChangesScene.class, "misc"), - "I'm making some adjustments to sewers loot to give players a bit more control of what gear they get, and to reduce the chance of spawning high tier gear that the player may never get to use:\n" + - "_-_ Chance for regular gear drops in the sewers to be T4/T5 reduced by 50%.\n" + - "_-_ Players can now see what type of weapon/armor the sad ghost has before selecting it.\n\n" + - "_-_ Statues are now killed if a disarming trap triggers under them.\n" + - "_-_ Weak shields no longer override stronger ones.\n" + - "_-_ Long pressing item slots in the alchemy screen now shows the item's description.\n\n" + - "_-_ Updated translations and translator credits.")); + "_-_ Statue grid rooms now appear in the Dwarven City, rather than the Prison.\n" + + "_-_ Pillar rooms now appear in the Prison, rather than the Dwarven City.\n\n" + + "_-_ The Sad Ghost's reward UI has been improved.\n\n" + + "_-_ Added a debuff indicating when enemies have thrown weapons attached to them.\n\n" + + "_-_ Sniper's mark, charm, and terror all now cancel if their subject is dead.\n\n" + + "_-_ Stones of intuition can now be used on rings.\n\n" + + "_-_ Barriers now decay more slowly when under 20 shielding.\n\n" + + "_-_ Elixir of honeyed healing now triggers on-eat talents and satiates 150 turns of hunger, up from 90.\n\n" + + "_-_ The Mage's staff is no longer automatically set to max charges when imbuing a new wand.")); changes.addButton(new ChangeButton(new Image(Assets.Sprites.SPINNER, 144, 0, 16, 16), Messages.get(ChangesScene.class, "bugfixes"), - "Fixed (caused by v0.9.0):\n" + - "_-_ \"+1 Talent Point\" appearing when no new points are given in some cases.\n\n" + - "Fixed (existed prior to v0.9.0):\n" + - "_-_ Tengu's abilities being reset by saving/loading\n" + - "_-_ Various cases where game win badges would not appear\n" + - "_-_ Force cubes trigger traps before being placed to the floor\n" + - "_-_ Beacon of returning rarely teleporting the player into walls\n" + - "_-_ Player being forced to swap equipped misc items when they shouldn't in some cases\n" + - "_-_ Enemies rarely not appearing paralyzed when they are")); + "Fixed:\n" + + "_-_ Various minor audiovisual errors\n" + + "_-_ Various rare crash bugs\n" + + "_-_ Curse infusion not awarding item level badge\n" + + "_-_ Various errors with DM-300\n" + + "_-_ Various minor errors relating to time freeze\n" + + "_-_ Dwarf King and some Yog fists rarely taking negative damage\n" + + "_-_ Talisman gaining charge while cursed\n" + + "_-_ Large characters entering tunnels when vertigoed\n" + + "_-_ Assassin blink ignoring hero being rooted\n" + + "_-_ Hero being able to be both well-fed and hungry\n" + + "_-_ Rare AI issues when paths are blocked\n" + + "_-_ Various rare bugs with corruption\n" + + "_-_ Antimagic not applying to wards or magical sleep debuff\n" + + "_-_ Artifacts rarely losing levels when transmuted\n" + + "_-_ High grass appearing on top of plants in rare cases\n" + + "_-_ Characters rarely appearing inside doors or the hero\n" + + "_-_ Talent points being spendable when the hero is dead\n" + + "_-_ Warlocks not having capped health potions drops")); - changes = new ChangeInfo("v0.9.0a", false, null); - changes.hardlight(Window.TITLE_COLOR); + changes = new ChangeInfo(Messages.get(ChangesScene.class, "buffs"), false, null); + changes.hardlight(CharSprite.POSITIVE); changeInfos.add(changes); - changes.addButton(new ChangeButton(Icons.get(Icons.PREFS), Messages.get(ChangesScene.class, "misc"), - "_-_ Updated Translations")); + changes.addButton( new ChangeButton( new Image(Assets.Sprites.MAGE, 0, 90, 12, 15), HeroSubClass.BATTLEMAGE.title(), + "I'm making a variety of adjustments to the _Battlemage_ to make him a more compelling choice vs. the Warlock, and to improve some wands that don't work as well for him as the Warlock:\n\n" + + "_-_ Staff charge granted on-hit increased to 0.5 from 0.33\n\n" + + "_- Staff of Magic Missile_ on-hit now gives all wands 0.5 charge, up from 0.33\n\n" + + "_- Staff of Transfusion_ on-hit now triggers when enemy is charmed\n" + + "_- Staff of Transfusion_ on-hit now grants a shield in addition to a free shot on allies\n\n" + + "_- Staff of Frost_ on-hit now has a chance to trigger at lower amounts of chill, still guaranteed at 10+ turns.\n\n" + + "_- Staff of Living Earth_ on-hit now grants 33% of damage as armor, up from 25%.\n\n" + + "_- Staff of Regrowth_ on-hit now triggers if the hero or enemy are standing in grass.\n" + + "_- Staff of Regrowth_ on-hit now grants herbal healing, instead of spawning grass.")); - changes.addButton(new ChangeButton(new Image(Assets.Sprites.SPINNER, 144, 0, 16, 16), Messages.get(ChangesScene.class, "bugfixes"), - "Fixed (caused by v0.9.0):\n" + - "_-_ Various crash bugs\n" + - "_-_ Cases where warrior's shield would not decrease when it should\n" + - "_-_ Incorrect interactions between scrolls and time freeze\n" + - "_-_ Unlocked badges rarely showing as locked\n" + - "_-_ Burning spider webs destroying some tile types that they shouldn't\n\n" + - "Fixed (existed prior to v0.9.0):\n" + - "_-_ Great crab sometimes dropping 3 meat instead of 2\n" + - "_-_ Cleave being reset when a kill corrupts the enemy\n" + - "_-_ Sleeping VFX persisting in cases where it shouldn't")); + changes.addButton(new ChangeButton(new WandOfTransfusion(), + "The _Wand of Transfusion_ is currently in an odd place, where it is not very useful as a general wand, but is GREAT when heavily upgraded by the warlock. I'm making a few adjustments so that its power is less polarized, and to make it hopefully more useful when combined with allies:\n\n" + + "_-_ Starting charges increased to 2, from 1\n" + + "_-_ Shield per-hit adjusted to 5+lvl from 5+2*lvl\n" + + "_-_ Self-damage reduced to 5% of max HP, from 10% max HP\n" + + "_-_ Damage from allies no longer cancels charm effect")); + + changes.addButton( new ChangeButton( new ItemSprite(ItemSpriteSheet.RING_TOPAZ, null), Messages.get(RingOfEnergy.class, "name"), + "The _Ring of Energy_ is doing better after being buffed to apply to artifacts, but there is still room to make its effect stronger without making it overpowered:\n\n" + + "_-_ Bonus artifact charging increased from 10% to 15%")); + + changes = new ChangeInfo(Messages.get(ChangesScene.class, "nerfs"), false, null); + changes.hardlight(CharSprite.NEGATIVE); + changeInfos.add(changes); + + changes.addButton( new ChangeButton( new Image(Assets.Interfaces.TALENT_ICONS, 0, 0, 16, 16), Talent.HEARTY_MEAL.title(), + "_Hearty Meal_ is currently the strongest tier one talent in the game, so I'm deepening the missing health requirement slightly to make its power a bit harder to access:\n\n" + + "_-_ Now grants 2/3 healing when hero is below 50% health, down from 3/5\n" + + "_-_ The full 3/5 heal is still available if the hero is below 25% health")); + + changes.addButton( new ChangeButton( new Image(new SpinnerSprite()), Messages.get(Spinner.class, "name"), + "I'm pulling down the damage of _Cave Spinners_ slightly to address player frustration:\n\n" + + "_-_ Melee damage down to 10-20 from 10-25")); + + changes = new ChangeInfo("v0.9.0", true, ""); + changes.hardlight(Window.TITLE_COLOR); + changeInfos.add(changes); changes = new ChangeInfo(Messages.get(ChangesScene.class, "new"), false, null); changes.hardlight(Window.TITLE_COLOR); @@ -156,6 +221,15 @@ public class v0_9_X_Changes { "_-_ The reclaim trap spell can no longer be dropped when a trap is stored in it. This prevents an exploit.\n" + "_-_ Items gained from secret mazes are now known to be uncursed.")); + changes.addButton(new ChangeButton(Icons.get(Icons.PREFS), Messages.get(ChangesScene.class, "misc"), + "I'm making some adjustments to sewers loot to give players a bit more control of what gear they get, and to reduce the chance of spawning high tier gear that the player may never get to use:\n" + + "_-_ Chance for regular gear drops in the sewers to be T4/T5 reduced by 50%.\n" + + "_-_ Players can now see what type of weapon/armor the sad ghost has before selecting it.\n\n" + + "_-_ Statues are now killed if a disarming trap triggers under them.\n" + + "_-_ Weak shields no longer override stronger ones.\n" + + "_-_ Long pressing item slots in the alchemy screen now shows the item's description.\n\n" + + "_-_ Updated translations and translator credits.")); + changes.addButton(new ChangeButton(new Image(Assets.Sprites.SPINNER, 144, 0, 16, 16), Messages.get(ChangesScene.class, "bugfixes"), "Fixed:\n" + "_-_ Various visual errors\n" + @@ -178,6 +252,18 @@ public class v0_9_X_Changes { "_-_ Hero unable to cleanse fire with chill when immune to it, and vice-versa\n" + "_-_ DM-201's attacking while stunned")); + changes.addButton(new ChangeButton(new Image(Assets.Sprites.SPINNER, 144, 0, 16, 16), Messages.get(ChangesScene.class, "bugfixes"), + "Fixed (existed prior to v0.9.0):\n" + + "_-_ Tengu's abilities being reset by saving/loading\n" + + "_-_ Various cases where game win badges would not appear\n" + + "_-_ Force cubes trigger traps before being placed to the floor\n" + + "_-_ Beacon of returning rarely teleporting the player into walls\n" + + "_-_ Player being forced to swap equipped misc items when they shouldn't in some cases\n" + + "_-_ Enemies rarely not appearing paralyzed when they are\n" + + "_-_ Great crab sometimes dropping 3 meat instead of 2\n" + + "_-_ Cleave being reset when a kill corrupts the enemy\n" + + "_-_ Sleeping VFX persisting in cases where it shouldn't")); + changes.addButton(new ChangeButton(new WandOfFrost(), "This is actually a bugfix, but I'm listing it separately for clarity. In v0.8.2 the _wand of frost_ is listed as losing 6.67% damage per turn of chill, to a max of -50%. This is not what was implemented however, and the wand instead lost 3.33% per turn to a max of -30%. This has now been corrected and the wand performs as listed in the 0.8.2 changelog."));