From f232a5d1e8a48d47093efa08b88a79c48c75faea Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Sat, 22 Jun 2024 14:08:49 -0400 Subject: [PATCH] v2.5.0: fixed upgrade window ring stats not accounting for curses --- .../shatteredpixeldungeon/items/rings/RingOfAccuracy.java | 1 + .../shatteredpixeldungeon/items/rings/RingOfArcana.java | 1 + .../shatteredpixeldungeon/items/rings/RingOfElements.java | 1 + .../shatteredpixeldungeon/items/rings/RingOfEnergy.java | 1 + .../shatteredpixeldungeon/items/rings/RingOfEvasion.java | 1 + .../shatteredpixeldungeon/items/rings/RingOfForce.java | 3 +++ .../shatteredpixeldungeon/items/rings/RingOfFuror.java | 1 + .../shatteredpixeldungeon/items/rings/RingOfHaste.java | 1 + .../shatteredpixeldungeon/items/rings/RingOfMight.java | 2 ++ .../shatteredpixeldungeon/items/rings/RingOfSharpshooting.java | 2 ++ .../shatteredpixeldungeon/items/rings/RingOfTenacity.java | 1 + .../shatteredpixeldungeon/items/rings/RingOfWealth.java | 1 + .../shatteredpixeldungeon/windows/WndUpgrade.java | 2 +- 13 files changed, 17 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfAccuracy.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfAccuracy.java index 379be710f..c4cad7191 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfAccuracy.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfAccuracy.java @@ -47,6 +47,7 @@ public class RingOfAccuracy extends Ring { } public String upgradeStat1(int level){ + if (cursed && cursedKnown) level = Math.min(-1, level-3); return Messages.decimalFormat("#.##", 100f * (Math.pow(1.3f, level+1)-1f)) + "%"; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfArcana.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfArcana.java index 363917af6..85087f274 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfArcana.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfArcana.java @@ -47,6 +47,7 @@ public class RingOfArcana extends Ring { } public String upgradeStat1(int level){ + if (cursed) level = Math.min(-1, level-3); return Messages.decimalFormat("#.##", 100f * (Math.pow(1.175f, level+1)-1f)) + "%"; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfElements.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfElements.java index 0dc8c5b84..78226d32c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfElements.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfElements.java @@ -59,6 +59,7 @@ public class RingOfElements extends Ring { } public String upgradeStat1(int level){ + if (cursed && cursedKnown) level = Math.min(-1, level-3); return Messages.decimalFormat("#.##", 100f * (1f - Math.pow(0.825f, level+1))) + "%"; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfEnergy.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfEnergy.java index 5e3d64dec..3ab2e69b8 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfEnergy.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfEnergy.java @@ -51,6 +51,7 @@ public class RingOfEnergy extends Ring { } public String upgradeStat1(int level){ + if (cursed && cursedKnown) level = Math.min(-1, level-3); return Messages.decimalFormat("#.##", 100f * (Math.pow(1.15f, level+1)-1f)) + "%"; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfEvasion.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfEvasion.java index 58a3e512e..24fb85efc 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfEvasion.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfEvasion.java @@ -47,6 +47,7 @@ public class RingOfEvasion extends Ring { } public String upgradeStat1(int level){ + if (cursed && cursedKnown) level = Math.min(-1, level-3); return Messages.decimalFormat("#.##", 100f * (Math.pow(1.125f, level+1)-1f)) + "%"; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfForce.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfForce.java index 829206612..56d6f1875 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfForce.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfForce.java @@ -133,17 +133,20 @@ public class RingOfForce extends Ring { @Override public String upgradeStat1(int level) { + if (cursed && cursedKnown) level = Math.min(-1, level-3); float tier = tier(Dungeon.hero != null ? Dungeon.hero.STR() : 10); return min(level+1, tier) + "-" + max(level+1, tier); } @Override public String upgradeStat2(int level) { + if (cursed && cursedKnown) level = Math.min(-1, level-3); return Integer.toString(level+1); } @Override public String upgradeStat3(int level) { + if (cursed && cursedKnown) level = Math.min(-1, level-3); if (Dungeon.hero != null && Dungeon.hero.heroClass == HeroClass.DUELIST){ float tier = tier(Dungeon.hero != null ? Dungeon.hero.STR() : 10); int bonus = Math.round(1+tier+((level+1)*((3+tier)/8f))); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfFuror.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfFuror.java index ca8296c48..1f1a646b6 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfFuror.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfFuror.java @@ -47,6 +47,7 @@ public class RingOfFuror extends Ring { } public String upgradeStat1(int level){ + if (cursed && cursedKnown) level = Math.min(-1, level-3); return Messages.decimalFormat("#.##", 100f * (Math.pow(1.09051f, level+1)-1f)) + "%"; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfHaste.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfHaste.java index b76fa20c2..2befea997 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfHaste.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfHaste.java @@ -47,6 +47,7 @@ public class RingOfHaste extends Ring { } public String upgradeStat1(int level){ + if (cursed && cursedKnown) level = Math.min(-1, level-3); return Messages.decimalFormat("#.##", 100f * (Math.pow(1.2f, level+1)-1f)) + "%"; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfMight.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfMight.java index 4af72e749..7ae7c20ab 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfMight.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfMight.java @@ -90,11 +90,13 @@ public class RingOfMight extends Ring { @Override public String upgradeStat1(int level) { + if (cursed && cursedKnown) level = Math.min(-1, level-3); return Integer.toString(level+1); } @Override public String upgradeStat2(int level) { + if (cursed && cursedKnown) level = Math.min(-1, level-3); return Messages.decimalFormat("#.##", 100f * (Math.pow(1.035, level+1)-1f)) + "%"; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfSharpshooting.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfSharpshooting.java index 29f5a1d05..df224d3d1 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfSharpshooting.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfSharpshooting.java @@ -48,11 +48,13 @@ public class RingOfSharpshooting extends Ring { @Override public String upgradeStat1(int level) { + if (cursed && cursedKnown) level = Math.min(-1, level-3); return Integer.toString(level+1); } @Override public String upgradeStat2(int level) { + if (cursed && cursedKnown) level = Math.min(-1, level-3); return Messages.decimalFormat("#.##", 100f * (Math.pow(1.2, level+1)-1f)) + "%"; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfTenacity.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfTenacity.java index 04bd3e103..5c6bdcdb4 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfTenacity.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfTenacity.java @@ -47,6 +47,7 @@ public class RingOfTenacity extends Ring { } public String upgradeStat1(int level){ + if (cursed && cursedKnown) level = Math.min(-1, level-3); return Messages.decimalFormat("#.##", 100f * (1f - Math.pow(0.85f, level+1))) + "%"; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfWealth.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfWealth.java index face3e40f..234e4a3fa 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfWealth.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfWealth.java @@ -76,6 +76,7 @@ public class RingOfWealth extends Ring { } public String upgradeStat1(int level){ + if (cursed && cursedKnown) level = Math.min(-1, level-3); return Messages.decimalFormat("#.##", 100f * (Math.pow(1.2f, level+1)-1f)) + "%"; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndUpgrade.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndUpgrade.java index a52978f42..4cefa8997 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndUpgrade.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndUpgrade.java @@ -103,6 +103,7 @@ public class WndUpgrade extends Window { // *** Sprites, showing item at current level and with +1 *** + //TODO add a background here too, to better communicate things like ID state and curse state? ItemSprite i1 = new ItemSprite(); add(i1); i1.view(toUpgrade); @@ -254,7 +255,6 @@ public class WndUpgrade extends Window { } //Various ring stats (varies by ring) - //TODO cursed ring stats? if (toUpgrade instanceof Ring){ if (((Ring) toUpgrade).upgradeStat1(levelFrom) != null){ bottom = fillFields(Messages.get(toUpgrade, "upgrade_stat_name_1"),