From 120c7dc24a3a0d1ce05ab3e0a9213a235240bd03 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Mon, 16 Oct 2023 13:32:20 -0400 Subject: [PATCH] v2.2.0: fixed some edge cases with combined ring descriptions --- .../src/main/assets/messages/items/items.properties | 2 +- .../shatteredpixeldungeon/items/rings/Ring.java | 13 ++++++++++++- .../items/rings/RingOfAccuracy.java | 4 ++-- .../items/rings/RingOfArcana.java | 4 ++-- .../items/rings/RingOfElements.java | 4 ++-- .../items/rings/RingOfEnergy.java | 4 ++-- .../items/rings/RingOfEvasion.java | 4 ++-- .../items/rings/RingOfForce.java | 4 ++-- .../items/rings/RingOfFuror.java | 4 ++-- .../items/rings/RingOfHaste.java | 4 ++-- .../items/rings/RingOfMight.java | 4 ++-- .../items/rings/RingOfSharpshooting.java | 4 ++-- .../items/rings/RingOfTenacity.java | 4 ++-- .../items/rings/RingOfWealth.java | 4 ++-- 14 files changed, 37 insertions(+), 26 deletions(-) diff --git a/core/src/main/assets/messages/items/items.properties b/core/src/main/assets/messages/items/items.properties index 49aa1abe1..a736174ab 100644 --- a/core/src/main/assets/messages/items/items.properties +++ b/core/src/main/assets/messages/items/items.properties @@ -912,7 +912,7 @@ items.rings.ringofevasion.desc=This ring quickens the wearer's reactions, making items.rings.ringofforce.name=ring of force items.rings.ringofforce.stats=When unarmed, at your current strength, this ring will deal _%1$d-%2$d damage._ With a weapon equipped, this ring will increase damage by _%3$d._ items.rings.ringofforce.typical_stats=When unarmed, at your current strength, typically this ring will deal _%1$d-%2$d damage._ With a weapon equipped, typically this ring will increase damage by _%3$d._ -items.rings.ringofforce.combined_stats=Your equipped rings are combining their power, dealing a total of _%1$d-%2$d damage_ without a weapon, or _+%3$d damage_ with one. +items.rings.ringofforce.combined_stats=Your equipped rings are combining their power, dealing a total of _%1$d-%2$d damage_ without a weapon, or increasing damage by _%3$d_ with one. items.rings.ringofforce.ability_name=brawler's stance items.rings.ringofforce.ability_desc=The Duelist can adopt a _brawler's stance_ with this ring. While in this stance the Duelist's regular attacks will use this ring even with a weapon equipped. The ring will also inherit the weapon's enchantment and augmentation. Each regular attack in this stance consumes 1/6 of a weapon charge. items.rings.ringofforce.desc=This ring enhances the force of the wearer's melee blows. This extra power is fairly weak when wielding weapons, but an unarmed attack will be made much stronger. A cursed ring will instead weaken the wearer's blows. diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/Ring.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/Ring.java index 77c154db0..10417fed5 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/Ring.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/Ring.java @@ -320,7 +320,8 @@ public class Ring extends KindofMisc { } return bonus; } - + + //just used for ring descriptions public int soloBonus(){ if (cursed){ return Math.min( 0, Ring.this.level()-2 ); @@ -329,6 +330,7 @@ public class Ring extends KindofMisc { } } + //just used for ring descriptions public int soloBuffedBonus(){ if (cursed){ return Math.min( 0, Ring.this.buffedLvl()-2 ); @@ -337,6 +339,15 @@ public class Ring extends KindofMisc { } } + //just used for ring descriptions + public static int combinedBuffedBonus(Char target, Class type){ + int bonus = 0; + for (RingBuff buff : target.buffs(type)) { + bonus += buff.buffedLvl(); + } + return bonus; + } + public class RingBuff extends Buff { @Override 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 cd01d34fa..ee1216878 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 @@ -36,9 +36,9 @@ public class RingOfAccuracy extends Ring { if (isIdentified()){ String info = Messages.get(this, "stats", Messages.decimalFormat("#.##", 100f * (Math.pow(1.3f, soloBuffedBonus()) - 1f))); - if (isEquipped(Dungeon.hero) && soloBuffedBonus() != getBuffedBonus(Dungeon.hero, Accuracy.class)){ + if (isEquipped(Dungeon.hero) && soloBuffedBonus() != combinedBuffedBonus(Dungeon.hero, Accuracy.class)){ info += "\n\n" + Messages.get(this, "combined_stats", - Messages.decimalFormat("#.##", 100f * (Math.pow(1.3f, getBuffedBonus(Dungeon.hero, Accuracy.class)) - 1f))); + Messages.decimalFormat("#.##", 100f * (Math.pow(1.3f, combinedBuffedBonus(Dungeon.hero, Accuracy.class)) - 1f))); } return info; } else { 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 2f39d0c1b..9e4aa0297 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 @@ -36,9 +36,9 @@ public class RingOfArcana extends Ring { if (isIdentified()){ String info = Messages.get(this, "stats", Messages.decimalFormat("#.##", 100f * (Math.pow(1.175f, soloBuffedBonus()) - 1f))); - if (isEquipped(Dungeon.hero) && soloBuffedBonus() != getBuffedBonus(Dungeon.hero, Arcana.class)){ + if (isEquipped(Dungeon.hero) && soloBuffedBonus() != combinedBuffedBonus(Dungeon.hero, Arcana.class)){ info += "\n\n" + Messages.get(this, "combined_stats", - Messages.decimalFormat("#.##", 100f * (Math.pow(1.175f, getBuffedBonus(Dungeon.hero, Arcana.class)) - 1f))); + Messages.decimalFormat("#.##", 100f * (Math.pow(1.175f, combinedBuffedBonus(Dungeon.hero, Arcana.class)) - 1f))); } return info; } else { 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 dce7ab2fb..0a68c9b4e 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 @@ -48,9 +48,9 @@ public class RingOfElements extends Ring { if (isIdentified()){ String info = Messages.get(this, "stats", Messages.decimalFormat("#.##", 100f * (1f - Math.pow(0.825f, soloBuffedBonus())))); - if (isEquipped(Dungeon.hero) && soloBuffedBonus() != getBuffedBonus(Dungeon.hero, Resistance.class)){ + if (isEquipped(Dungeon.hero) && soloBuffedBonus() != combinedBuffedBonus(Dungeon.hero, Resistance.class)){ info += "\n\n" + Messages.get(this, "combined_stats", - Messages.decimalFormat("#.##", 100f * (1f - Math.pow(0.825f, getBuffedBonus(Dungeon.hero, Resistance.class))))); + Messages.decimalFormat("#.##", 100f * (1f - Math.pow(0.825f, combinedBuffedBonus(Dungeon.hero, Resistance.class))))); } return info; } else { 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 0ce40f4f2..c022ecfa6 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 @@ -39,9 +39,9 @@ public class RingOfEnergy extends Ring { if (isIdentified()){ String info = Messages.get(this, "stats", Messages.decimalFormat("#.##", 100f * (Math.pow(1.15f, soloBuffedBonus()) - 1f))); - if (isEquipped(Dungeon.hero) && soloBuffedBonus() != getBuffedBonus(Dungeon.hero, Energy.class)){ + if (isEquipped(Dungeon.hero) && soloBuffedBonus() != combinedBuffedBonus(Dungeon.hero, Energy.class)){ info += "\n\n" + Messages.get(this, "combined_stats", - Messages.decimalFormat("#.##", 100f * (Math.pow(1.15f, getBuffedBonus(Dungeon.hero, Energy.class)) - 1f))); + Messages.decimalFormat("#.##", 100f * (Math.pow(1.15f, combinedBuffedBonus(Dungeon.hero, Energy.class)) - 1f))); } return info; } else { 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 59161488c..bb67ea1cb 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 @@ -36,9 +36,9 @@ public class RingOfEvasion extends Ring { if (isIdentified()){ String info = Messages.get(this, "stats", Messages.decimalFormat("#.##", 100f * (Math.pow(1.125f, soloBuffedBonus()) - 1f))); - if (isEquipped(Dungeon.hero) && soloBuffedBonus() != getBuffedBonus(Dungeon.hero, Evasion.class)){ + if (isEquipped(Dungeon.hero) && soloBuffedBonus() != combinedBuffedBonus(Dungeon.hero, Evasion.class)){ info += "\n\n" + Messages.get(this, "combined_stats", - Messages.decimalFormat("#.##", 100f * (Math.pow(1.125f, getBuffedBonus(Dungeon.hero, Evasion.class)) - 1f))); + Messages.decimalFormat("#.##", 100f * (Math.pow(1.125f, combinedBuffedBonus(Dungeon.hero, Evasion.class)) - 1f))); } return info; } else { 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 53af5e874..944e56a95 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 @@ -115,8 +115,8 @@ public class RingOfForce extends Ring { if (isIdentified()) { int level = soloBuffedBonus(); String info = Messages.get(this, "stats", min(level, tier), max(level, tier), level); - if (isEquipped(Dungeon.hero) && soloBuffedBonus() != getBuffedBonus(Dungeon.hero, Force.class)){ - level = getBuffedBonus(Dungeon.hero, Force.class); + if (isEquipped(Dungeon.hero) && soloBuffedBonus() != combinedBuffedBonus(Dungeon.hero, Force.class)){ + level = combinedBuffedBonus(Dungeon.hero, Force.class); info += "\n\n" + Messages.get(this, "combined_stats", min(level, tier), max(level, tier), level); } return info; 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 bdf7eabcd..220ab63f0 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 @@ -36,9 +36,9 @@ public class RingOfFuror extends Ring { if (isIdentified()){ String info = Messages.get(this, "stats", Messages.decimalFormat("#.##", 100f * (Math.pow(1.09051f, soloBuffedBonus()) - 1f))); - if (isEquipped(Dungeon.hero) && soloBuffedBonus() != getBuffedBonus(Dungeon.hero, Furor.class)){ + if (isEquipped(Dungeon.hero) && soloBuffedBonus() != combinedBuffedBonus(Dungeon.hero, Furor.class)){ info += "\n\n" + Messages.get(this, "combined_stats", - Messages.decimalFormat("#.##", 100f * (Math.pow(1.09051f, getBuffedBonus(Dungeon.hero, Furor.class)) - 1f))); + Messages.decimalFormat("#.##", 100f * (Math.pow(1.09051f, combinedBuffedBonus(Dungeon.hero, Furor.class)) - 1f))); } return info; } else { 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 efbe34988..3ee881515 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 @@ -36,9 +36,9 @@ public class RingOfHaste extends Ring { if (isIdentified()){ String info = Messages.get(this, "stats", Messages.decimalFormat("#.##", 100f * (Math.pow(1.2f, soloBuffedBonus()) - 1f))); - if (isEquipped(Dungeon.hero) && soloBuffedBonus() != getBuffedBonus(Dungeon.hero, Haste.class)){ + if (isEquipped(Dungeon.hero) && soloBuffedBonus() != combinedBuffedBonus(Dungeon.hero, Haste.class)){ info += "\n\n" + Messages.get(this, "combined_stats", - Messages.decimalFormat("#.##", 100f * (Math.pow(1.2f, getBuffedBonus(Dungeon.hero, Haste.class)) - 1f))); + Messages.decimalFormat("#.##", 100f * (Math.pow(1.2f, combinedBuffedBonus(Dungeon.hero, Haste.class)) - 1f))); } return info; } else { 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 2445f1675..593733019 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 @@ -78,9 +78,9 @@ public class RingOfMight extends Ring { if (isIdentified()){ String info = Messages.get(this, "stats", soloBonus(), Messages.decimalFormat("#.##", 100f * (Math.pow(1.035, soloBuffedBonus()) - 1f))); - if (isEquipped(Dungeon.hero) && soloBuffedBonus() != getBuffedBonus(Dungeon.hero, Might.class)){ + if (isEquipped(Dungeon.hero) && soloBuffedBonus() != combinedBuffedBonus(Dungeon.hero, Might.class)){ info += "\n\n" + Messages.get(this, "combined_stats", - getBonus(Dungeon.hero, Might.class), Messages.decimalFormat("#.##", 100f * (Math.pow(1.035, getBuffedBonus(Dungeon.hero, Might.class)) - 1f))); + getBonus(Dungeon.hero, Might.class), Messages.decimalFormat("#.##", 100f * (Math.pow(1.035, combinedBuffedBonus(Dungeon.hero, Might.class)) - 1f))); } return info; } else { 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 f3c34cb7e..355ccd03b 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 @@ -36,9 +36,9 @@ public class RingOfSharpshooting extends Ring { if (isIdentified()){ String info = Messages.get(this, "stats", soloBuffedBonus(), Messages.decimalFormat("#.##", 100f * (Math.pow(1.2, soloBonus()) - 1f))); - if (isEquipped(Dungeon.hero) && soloBuffedBonus() != getBuffedBonus(Dungeon.hero, Aim.class)){ + if (isEquipped(Dungeon.hero) && soloBuffedBonus() != combinedBuffedBonus(Dungeon.hero, Aim.class)){ info += "\n\n" + Messages.get(this, "combined_stats", - getBuffedBonus(Dungeon.hero, Aim.class), Messages.decimalFormat("#.##", 100f * (Math.pow(1.2, getBonus(Dungeon.hero, Aim.class)) - 1f))); + combinedBuffedBonus(Dungeon.hero, Aim.class), Messages.decimalFormat("#.##", 100f * (Math.pow(1.2, getBonus(Dungeon.hero, Aim.class)) - 1f))); } return info; } else { 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 b8d9393d6..41acebf11 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 @@ -36,9 +36,9 @@ public class RingOfTenacity extends Ring { if (isIdentified()){ String info = Messages.get(this, "stats", Messages.decimalFormat("#.##", 100f * (1f - Math.pow(0.85f, soloBuffedBonus())))); - if (isEquipped(Dungeon.hero) && soloBuffedBonus() != getBuffedBonus(Dungeon.hero, Tenacity.class)){ + if (isEquipped(Dungeon.hero) && soloBuffedBonus() != combinedBuffedBonus(Dungeon.hero, Tenacity.class)){ info += "\n\n" + Messages.get(this, "combined_stats", - Messages.decimalFormat("#.##", 100f * (1f - Math.pow(0.85f, getBuffedBonus(Dungeon.hero, Tenacity.class))))); + Messages.decimalFormat("#.##", 100f * (1f - Math.pow(0.85f, combinedBuffedBonus(Dungeon.hero, Tenacity.class))))); } return info; } else { 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 e974142ff..bd91b05fe 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 @@ -62,9 +62,9 @@ public class RingOfWealth extends Ring { if (isIdentified()){ String info = Messages.get(this, "stats", Messages.decimalFormat("#.##", 100f * (Math.pow(1.20f, soloBuffedBonus()) - 1f))); - if (isEquipped(Dungeon.hero) && soloBuffedBonus() != getBuffedBonus(Dungeon.hero, Wealth.class)){ + if (isEquipped(Dungeon.hero) && soloBuffedBonus() != combinedBuffedBonus(Dungeon.hero, Wealth.class)){ info += "\n\n" + Messages.get(this, "combined_stats", - Messages.decimalFormat("#.##", 100f * (Math.pow(1.20f, getBuffedBonus(Dungeon.hero, Wealth.class)) - 1f))); + Messages.decimalFormat("#.##", 100f * (Math.pow(1.20f, combinedBuffedBonus(Dungeon.hero, Wealth.class)) - 1f))); } return info; } else {