v0.7.5: various item balance changes

This commit is contained in:
Evan Debenham 2019-09-12 19:49:13 -04:00
parent 388e16b53c
commit 09dd4dd053
8 changed files with 23 additions and 21 deletions

View File

@ -40,7 +40,10 @@ public class Affection extends Glyph {
int level = Math.max(0, armor.level()); int level = Math.max(0, armor.level());
if (Random.Int( level / 2 + 10 ) >= 9) { // lvl 0 - 15%
// lvl 1 ~ 19%
// lvl 2 ~ 23%
if (Random.Int( level + 20 ) >= 17) {
int duration = Random.IntRange( 8, 12 ); int duration = Random.IntRange( 8, 12 );

View File

@ -30,9 +30,9 @@ public class RingOfEnergy extends Ring {
public String statsInfo() { public String statsInfo() {
if (isIdentified()){ if (isIdentified()){
return Messages.get(this, "stats", new DecimalFormat("#.##").format(100f * (Math.pow(1.25f, soloBonus()) - 1f))); return Messages.get(this, "stats", new DecimalFormat("#.##").format(100f * (Math.pow(1.30f, soloBonus()) - 1f)));
} else { } else {
return Messages.get(this, "typical_stats", new DecimalFormat("#.##").format(25f)); return Messages.get(this, "typical_stats", new DecimalFormat("#.##").format(30f));
} }
} }
@ -42,7 +42,7 @@ public class RingOfEnergy extends Ring {
} }
public static float wandChargeMultiplier( Char target ){ public static float wandChargeMultiplier( Char target ){
return (float)Math.pow(1.25, getBonus(target, Energy.class)); return (float)Math.pow(1.30, getBonus(target, Energy.class));
} }
public class Energy extends RingBuff { public class Energy extends RingBuff {

View File

@ -100,8 +100,8 @@ public class RingOfWealth extends Ring {
//reset (if needed), decrement, and store counts //reset (if needed), decrement, and store counts
if (triesToDrop == Float.MIN_VALUE) { if (triesToDrop == Float.MIN_VALUE) {
triesToDrop = Random.NormalIntRange(0, 60); triesToDrop = Random.NormalIntRange(0, 50);
dropsToRare = Random.NormalIntRange(0, 20); dropsToRare = Random.NormalIntRange(5, 10);
} }
//now handle reward logic //now handle reward logic
@ -116,7 +116,7 @@ public class RingOfWealth extends Ring {
} while (Challenges.isItemBlocked(i)); } while (Challenges.isItemBlocked(i));
drops.add(i); drops.add(i);
latestDropWasRare = true; latestDropWasRare = true;
dropsToRare = Random.NormalIntRange(0, 20); dropsToRare = Random.NormalIntRange(5, 10);
} else { } else {
Item i; Item i;
do { do {
@ -125,7 +125,7 @@ public class RingOfWealth extends Ring {
drops.add(i); drops.add(i);
dropsToRare--; dropsToRare--;
} }
triesToDrop += Random.NormalIntRange(0, 60); triesToDrop += Random.NormalIntRange(0, 50);
} }
//store values back into rings //store values back into rings

View File

@ -66,8 +66,6 @@ public class WandOfBlastWave extends DamageWand {
Sample.INSTANCE.play( Assets.SND_BLAST ); Sample.INSTANCE.play( Assets.SND_BLAST );
BlastWave.blast(bolt.collisionPos); BlastWave.blast(bolt.collisionPos);
int damage = damageRoll();
//presses all tiles in the AOE first //presses all tiles in the AOE first
for (int i : PathFinder.NEIGHBOURS9){ for (int i : PathFinder.NEIGHBOURS9){
Dungeon.level.pressCell( bolt.collisionPos+i ); Dungeon.level.pressCell( bolt.collisionPos+i );
@ -79,7 +77,7 @@ public class WandOfBlastWave extends DamageWand {
if (ch != null){ if (ch != null){
processSoulMark(ch, chargesPerCast()); processSoulMark(ch, chargesPerCast());
ch.damage(Math.round(damage * 0.667f), this); if (ch.alignment != Char.Alignment.ALLY) ch.damage(damageRoll(), this);
if (ch.isAlive()) { if (ch.isAlive()) {
Ballistica trajectory = new Ballistica(ch.pos, ch.pos + i, Ballistica.MAGIC_BOLT); Ballistica trajectory = new Ballistica(ch.pos, ch.pos + i, Ballistica.MAGIC_BOLT);
@ -96,7 +94,7 @@ public class WandOfBlastWave extends DamageWand {
Char ch = Actor.findChar(bolt.collisionPos); Char ch = Actor.findChar(bolt.collisionPos);
if (ch != null){ if (ch != null){
processSoulMark(ch, chargesPerCast()); processSoulMark(ch, chargesPerCast());
ch.damage(damage, this); ch.damage(damageRoll(), this);
if (ch.isAlive() && bolt.path.size() > bolt.dist+1) { if (ch.isAlive() && bolt.path.size() > bolt.dist+1) {
Ballistica trajectory = new Ballistica(ch.pos, bolt.path.get(bolt.dist + 1), Ballistica.MAGIC_BOLT); Ballistica trajectory = new Ballistica(ch.pos, bolt.path.get(bolt.dist + 1), Ballistica.MAGIC_BOLT);

View File

@ -54,7 +54,7 @@ public class WandOfCorrosion extends Wand {
protected void onZap(Ballistica bolt) { protected void onZap(Ballistica bolt) {
Blob corrosiveGas = Blob.seed(bolt.collisionPos, 50 + 10 * level(), CorrosiveGas.class); Blob corrosiveGas = Blob.seed(bolt.collisionPos, 50 + 10 * level(), CorrosiveGas.class);
CellEmitter.center(bolt.collisionPos).burst( CorrosionParticle.SPLASH, 10 ); CellEmitter.center(bolt.collisionPos).burst( CorrosionParticle.SPLASH, 10 );
((CorrosiveGas)corrosiveGas).setStrength(level()+1); ((CorrosiveGas)corrosiveGas).setStrength(2 + level());
GameScene.add(corrosiveGas); GameScene.add(corrosiveGas);
for (int i : PathFinder.NEIGHBOURS9) { for (int i : PathFinder.NEIGHBOURS9) {

View File

@ -74,6 +74,7 @@ import com.watabou.utils.Random;
import java.util.HashMap; import java.util.HashMap;
//TODO need to consider other balance adjustments here. Might want to put more emphasis into debuffs rather than less
public class WandOfCorruption extends Wand { public class WandOfCorruption extends Wand {
{ {
@ -84,7 +85,7 @@ public class WandOfCorruption extends Wand {
// This is because the wand of corruption considers them to be a certain level of harmful // This is because the wand of corruption considers them to be a certain level of harmful
// for the purposes of reducing resistance, but does not actually apply them itself // for the purposes of reducing resistance, but does not actually apply them itself
private static final float MINOR_DEBUFF_WEAKEN = 4/5f; private static final float MINOR_DEBUFF_WEAKEN = 7/8f;
private static final HashMap<Class<? extends Buff>, Float> MINOR_DEBUFFS = new HashMap<>(); private static final HashMap<Class<? extends Buff>, Float> MINOR_DEBUFFS = new HashMap<>();
static{ static{
MINOR_DEBUFFS.put(Weakness.class, 2f); MINOR_DEBUFFS.put(Weakness.class, 2f);
@ -102,7 +103,7 @@ public class WandOfCorruption extends Wand {
MINOR_DEBUFFS.put(Poison.class, 0f); MINOR_DEBUFFS.put(Poison.class, 0f);
} }
private static final float MAJOR_DEBUFF_WEAKEN = 2/3f; private static final float MAJOR_DEBUFF_WEAKEN = 4/5f;
private static final HashMap<Class<? extends Buff>, Float> MAJOR_DEBUFFS = new HashMap<>(); private static final HashMap<Class<? extends Buff>, Float> MAJOR_DEBUFFS = new HashMap<>();
static{ static{
MAJOR_DEBUFFS.put(Amok.class, 3f); MAJOR_DEBUFFS.put(Amok.class, 3f);

View File

@ -54,7 +54,7 @@ public class WandOfLivingEarth extends DamageWand {
@Override @Override
public int min(int lvl) { public int min(int lvl) {
return 3 + lvl; return 4;
} }
@Override @Override
@ -319,7 +319,7 @@ public class WandOfLivingEarth extends DamageWand {
@Override @Override
public int damageRoll() { public int damageRoll() {
return Random.NormalIntRange(3 + Dungeon.depth/4, 6 + Dungeon.depth/2); return Random.NormalIntRange(2, 4 + Dungeon.depth/2);
} }
@Override @Override

View File

@ -47,12 +47,12 @@ public class Corrupting extends Weapon.Enchantment {
int level = Math.max( 0, weapon.level() ); int level = Math.max( 0, weapon.level() );
// lvl 0 - 15% // lvl 0 - 20%
// lvl 1 ~ 17% // lvl 1 ~ 22.5%
// lvl 2 ~ 19% // lvl 2 ~ 25%
if (damage >= defender.HP if (damage >= defender.HP
&& !defender.isImmune(Corruption.class) && !defender.isImmune(Corruption.class)
&& Random.Int( level + 40 ) >= 34){ && Random.Int( level + 30 ) >= 24){
Mob enemy = (Mob) defender; Mob enemy = (Mob) defender;
Hero hero = (attacker instanceof Hero) ? (Hero) attacker : Dungeon.hero; Hero hero = (attacker instanceof Hero) ? (Hero) attacker : Dungeon.hero;