v2.5.0: Ring balance changes:

- brawler's stance bonus dmg up to ~50% from ~30%
- ring of energy boost up to 17.5% from 15%
- ring of haste boost down to 17.5% from 20%
This commit is contained in:
Evan Debenham
2024-07-11 17:18:01 -04:00
parent 525571f044
commit 90d14838ae
3 changed files with 17 additions and 17 deletions
@@ -38,21 +38,21 @@ public class RingOfEnergy extends Ring {
public String statsInfo() { public String statsInfo() {
if (isIdentified()){ if (isIdentified()){
String info = Messages.get(this, "stats", String info = Messages.get(this, "stats",
Messages.decimalFormat("#.##", 100f * (Math.pow(1.15f, soloBuffedBonus()) - 1f))); Messages.decimalFormat("#.##", 100f * (Math.pow(1.175f, soloBuffedBonus()) - 1f)));
if (isEquipped(Dungeon.hero) && soloBuffedBonus() != combinedBuffedBonus(Dungeon.hero)){ if (isEquipped(Dungeon.hero) && soloBuffedBonus() != combinedBuffedBonus(Dungeon.hero)){
info += "\n\n" + Messages.get(this, "combined_stats", info += "\n\n" + Messages.get(this, "combined_stats",
Messages.decimalFormat("#.##", 100f * (Math.pow(1.15f, combinedBuffedBonus(Dungeon.hero)) - 1f))); Messages.decimalFormat("#.##", 100f * (Math.pow(1.175f, combinedBuffedBonus(Dungeon.hero)) - 1f)));
} }
return info; return info;
} else { } else {
return Messages.get(this, "typical_stats", return Messages.get(this, "typical_stats",
Messages.decimalFormat("#.##", 15f)); Messages.decimalFormat("#.##", 17.5f));
} }
} }
public String upgradeStat1(int level){ public String upgradeStat1(int level){
if (cursed && cursedKnown) level = Math.min(-1, level-3); if (cursed && cursedKnown) level = Math.min(-1, level-3);
return Messages.decimalFormat("#.##", 100f * (Math.pow(1.15f, level+1)-1f)) + "%"; return Messages.decimalFormat("#.##", 100f * (Math.pow(1.175f, level+1)-1f)) + "%";
} }
@Override @Override
@@ -61,11 +61,11 @@ public class RingOfEnergy extends Ring {
} }
public static float wandChargeMultiplier( Char target ){ public static float wandChargeMultiplier( Char target ){
return (float)Math.pow(1.15, getBuffedBonus(target, Energy.class)); return (float)Math.pow(1.175, getBuffedBonus(target, Energy.class));
} }
public static float artifactChargeMultiplier( Char target ){ public static float artifactChargeMultiplier( Char target ){
float bonus = (float)Math.pow(1.15, getBuffedBonus(target, Energy.class)); float bonus = (float)Math.pow(1.175, getBuffedBonus(target, Energy.class));
if (target instanceof Hero && ((Hero) target).heroClass != HeroClass.ROGUE && ((Hero) target).hasTalent(Talent.LIGHT_CLOAK)){ if (target instanceof Hero && ((Hero) target).heroClass != HeroClass.ROGUE && ((Hero) target).hasTalent(Talent.LIGHT_CLOAK)){
bonus *= 1f + (0.2f * ((Hero) target).pointsInTalent(Talent.LIGHT_CLOAK)/3f); bonus *= 1f + (0.2f * ((Hero) target).pointsInTalent(Talent.LIGHT_CLOAK)/3f);
@@ -75,7 +75,7 @@ public class RingOfEnergy extends Ring {
} }
public static float armorChargeMultiplier( Char target ){ public static float armorChargeMultiplier( Char target ){
return (float)Math.pow(1.15, getBuffedBonus(target, Energy.class)); return (float)Math.pow(1.175, getBuffedBonus(target, Energy.class));
} }
public class Energy extends RingBuff { public class Energy extends RingBuff {
@@ -84,9 +84,9 @@ public class RingOfForce extends Ring {
int dmg = Hero.heroDamageIntRange(min(level, tier), max(level, tier)); int dmg = Hero.heroDamageIntRange(min(level, tier), max(level, tier));
if (hero.buff(BrawlersStance.class) != null if (hero.buff(BrawlersStance.class) != null
&& hero.buff(BrawlersStance.class).active){ && hero.buff(BrawlersStance.class).active){
// 1+tier base dmg, roughly +35% dmg // 3+tier base dmg, roughly +60%->45% dmg at T1->5
// lvl*((3+tier)/8) scaling, roughly +30% dmg // lvl*((4+2*tier)/8) scaling, +50% dmg
dmg += Math.round(1+tier+(level*((3+tier)/8f))); dmg += Math.round(3+tier+(level*((4+2*tier)/8f)));
} }
return dmg; return dmg;
} else { } else {
@@ -149,7 +149,7 @@ public class RingOfForce extends Ring {
if (cursed && cursedKnown) level = Math.min(-1, level-3); if (cursed && cursedKnown) level = Math.min(-1, level-3);
if (Dungeon.hero != null && Dungeon.hero.heroClass == HeroClass.DUELIST){ if (Dungeon.hero != null && Dungeon.hero.heroClass == HeroClass.DUELIST){
float tier = tier(Dungeon.hero != null ? Dungeon.hero.STR() : 10); float tier = tier(Dungeon.hero != null ? Dungeon.hero.STR() : 10);
int bonus = Math.round(1+tier+((level+1)*((3+tier)/8f))); int bonus = Math.round(3+tier+(level*((4+2*tier)/8f)));
return (min(level+1, tier) + bonus) + "-" + (max(level+1, tier) + bonus); return (min(level+1, tier) + bonus) + "-" + (max(level+1, tier) + bonus);
} else { } else {
return null; return null;
@@ -230,7 +230,7 @@ public class RingOfForce extends Ring {
//0 if unidentified, solo level if unequipped, combined level if equipped //0 if unidentified, solo level if unequipped, combined level if equipped
int level = isIdentified() ? (isEquipped(Dungeon.hero) ? getBuffedBonus(Dungeon.hero, Force.class) : soloBuffedBonus()) : 0; int level = isIdentified() ? (isEquipped(Dungeon.hero) ? getBuffedBonus(Dungeon.hero, Force.class) : soloBuffedBonus()) : 0;
float tier = tier(Dungeon.hero.STR()); float tier = tier(Dungeon.hero.STR());
int dmgBoost = Math.round(1+tier+(level*((3+tier)/8f))); int dmgBoost = Math.round(3+tier+(level*((4+2*tier)/8f)));
if (isIdentified()) { if (isIdentified()) {
info += "\n\n" + Messages.get(this, "ability_desc", min(level, tier)+dmgBoost, max(level, tier)+dmgBoost); info += "\n\n" + Messages.get(this, "ability_desc", min(level, tier)+dmgBoost, max(level, tier)+dmgBoost);
} else { } else {
@@ -35,20 +35,20 @@ public class RingOfHaste extends Ring {
public String statsInfo() { public String statsInfo() {
if (isIdentified()){ if (isIdentified()){
String info = Messages.get(this, "stats", String info = Messages.get(this, "stats",
Messages.decimalFormat("#.##", 100f * (Math.pow(1.2f, soloBuffedBonus()) - 1f))); Messages.decimalFormat("#.##", 100f * (Math.pow(1.175f, soloBuffedBonus()) - 1f)));
if (isEquipped(Dungeon.hero) && soloBuffedBonus() != combinedBuffedBonus(Dungeon.hero)){ if (isEquipped(Dungeon.hero) && soloBuffedBonus() != combinedBuffedBonus(Dungeon.hero)){
info += "\n\n" + Messages.get(this, "combined_stats", info += "\n\n" + Messages.get(this, "combined_stats",
Messages.decimalFormat("#.##", 100f * (Math.pow(1.2f, combinedBuffedBonus(Dungeon.hero)) - 1f))); Messages.decimalFormat("#.##", 100f * (Math.pow(1.175f, combinedBuffedBonus(Dungeon.hero)) - 1f)));
} }
return info; return info;
} else { } else {
return Messages.get(this, "typical_stats", Messages.decimalFormat("#.##", 20f)); return Messages.get(this, "typical_stats", Messages.decimalFormat("#.##", 17.5f));
} }
} }
public String upgradeStat1(int level){ public String upgradeStat1(int level){
if (cursed && cursedKnown) level = Math.min(-1, level-3); if (cursed && cursedKnown) level = Math.min(-1, level-3);
return Messages.decimalFormat("#.##", 100f * (Math.pow(1.2f, level+1)-1f)) + "%"; return Messages.decimalFormat("#.##", 100f * (Math.pow(1.75f, level+1)-1f)) + "%";
} }
@Override @Override
@@ -57,7 +57,7 @@ public class RingOfHaste extends Ring {
} }
public static float speedMultiplier( Char target ){ public static float speedMultiplier( Char target ){
return (float)Math.pow(1.2, getBuffedBonus(target, Haste.class)); return (float)Math.pow(1.75, getBuffedBonus(target, Haste.class));
} }
public class Haste extends RingBuff { public class Haste extends RingBuff {