v0.8.2: balance tweaks to various items
This commit is contained in:
parent
40da8d2395
commit
1e361fd546
|
@ -190,8 +190,8 @@ public class TalismanOfForesight extends Artifact {
|
|||
}
|
||||
|
||||
exp += earnedExp;
|
||||
if (exp >= 50 + 50*level() && level() < levelCap) {
|
||||
exp -= 50 + 50*level();
|
||||
if (exp >= 100 + 50*level() && level() < levelCap) {
|
||||
exp -= 100 + 50*level();
|
||||
upgrade();
|
||||
GLog.p( Messages.get(TalismanOfForesight.class, "levelup") );
|
||||
}
|
||||
|
|
|
@ -61,9 +61,9 @@ public class RingOfWealth extends Ring {
|
|||
|
||||
public String statsInfo() {
|
||||
if (isIdentified()){
|
||||
return Messages.get(this, "stats", new DecimalFormat("#.##").format(100f * (Math.pow(1.25f, soloBuffedBonus()) - 1f)));
|
||||
return Messages.get(this, "stats", new DecimalFormat("#.##").format(100f * (Math.pow(1.20f, soloBuffedBonus()) - 1f)));
|
||||
} else {
|
||||
return Messages.get(this, "typical_stats", new DecimalFormat("#.##").format(25f));
|
||||
return Messages.get(this, "typical_stats", new DecimalFormat("#.##").format(20f));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -90,7 +90,7 @@ public class RingOfWealth extends Ring {
|
|||
}
|
||||
|
||||
public static float dropChanceMultiplier( Char target ){
|
||||
return (float)Math.pow(1.25, getBuffedBonus(target, Wealth.class));
|
||||
return (float)Math.pow(1.20, getBuffedBonus(target, Wealth.class));
|
||||
}
|
||||
|
||||
public static ArrayList<Item> tryForBonusDrop(Char target, int tries ){
|
||||
|
@ -112,8 +112,8 @@ public class RingOfWealth extends Ring {
|
|||
|
||||
//reset (if needed), decrement, and store counts
|
||||
if (triesToDrop == Float.MIN_VALUE) {
|
||||
triesToDrop = Random.NormalIntRange(0, 30);
|
||||
dropsToEquip = Random.NormalIntRange(5, 10);
|
||||
triesToDrop = Random.NormalIntRange(0, 25);
|
||||
dropsToEquip = Random.NormalIntRange(4, 8);
|
||||
}
|
||||
|
||||
//now handle reward logic
|
||||
|
@ -127,7 +127,7 @@ public class RingOfWealth extends Ring {
|
|||
i = genEquipmentDrop(bonus - 1);
|
||||
} while (Challenges.isItemBlocked(i));
|
||||
drops.add(i);
|
||||
dropsToEquip = Random.NormalIntRange(5, 10);
|
||||
dropsToEquip = Random.NormalIntRange(4, 8);
|
||||
} else {
|
||||
Item i;
|
||||
do {
|
||||
|
@ -136,7 +136,7 @@ public class RingOfWealth extends Ring {
|
|||
drops.add(i);
|
||||
dropsToEquip--;
|
||||
}
|
||||
triesToDrop += Random.NormalIntRange(0, 30);
|
||||
triesToDrop += Random.NormalIntRange(0, 25);
|
||||
}
|
||||
|
||||
//store values back into rings
|
||||
|
@ -266,10 +266,11 @@ public class RingOfWealth extends Ring {
|
|||
result = Generator.random(Generator.Category.ARTIFACT);
|
||||
break;
|
||||
}
|
||||
//minimum level of sqrt(ringLvl)
|
||||
//minimum level is 1/2/3/4/5/6 when ring level is 1/3/6/10/15/21
|
||||
if (result.isUpgradable()){
|
||||
if (result.level() < Math.floor(Math.sqrt(level))){
|
||||
result.level((int)Math.floor(Math.sqrt(level)));
|
||||
int minLevel = (int)Math.floor((Math.sqrt(8*level + 1)-1)/2f);
|
||||
if (result.level() < minLevel){
|
||||
result.level(minLevel);
|
||||
}
|
||||
}
|
||||
result.cursed = false;
|
||||
|
|
|
@ -279,7 +279,7 @@ public abstract class Wand extends Item {
|
|||
@Override
|
||||
public int buffedLvl() {
|
||||
int lvl = super.buffedLvl();
|
||||
if (curUser != null && !(this instanceof WandOfMagicMissile)) {
|
||||
if (curUser != null) {
|
||||
WandOfMagicMissile.MagicCharge buff = curUser.buff(WandOfMagicMissile.MagicCharge.class);
|
||||
if (buff != null && buff.level() > lvl){
|
||||
return buff.level();
|
||||
|
|
|
@ -131,8 +131,8 @@ public class WandOfFireblast extends DamageWand {
|
|||
protected void fx( Ballistica bolt, Callback callback ) {
|
||||
//need to perform flame spread logic here so we can determine what cells to put flames in.
|
||||
|
||||
// 4/6/8 distance
|
||||
int maxDist = 2 + 2*chargesPerCast();
|
||||
// 5/7/9 distance
|
||||
int maxDist = 3 + 2*chargesPerCast();
|
||||
int dist = Math.min(bolt.dist, maxDist);
|
||||
|
||||
cone = new ConeAOE( bolt,
|
||||
|
|
|
@ -70,8 +70,9 @@ public class WandOfFrost extends DamageWand {
|
|||
return; //do nothing, can't affect a frozen target
|
||||
}
|
||||
if (ch.buff(Chill.class) != null){
|
||||
//5% less damage per turn of chill remaining
|
||||
damage = (int)Math.round(damage * Math.pow(0.95f, ch.buff(Chill.class).cooldown()));
|
||||
//6.67% less damage per turn of chill remaining, to a max of 10 turns (50% dmg)
|
||||
float chillturns = Math.min(10, ch.buff(Chill.class).cooldown());
|
||||
damage = (int)Math.round(damage * Math.pow(0.9633f, chillturns));
|
||||
} else {
|
||||
ch.sprite.burst( 0xFF99CCFF, buffedLvl() / 2 + 2 );
|
||||
}
|
||||
|
|
|
@ -80,7 +80,7 @@ public class WandOfLightning extends DamageWand {
|
|||
}
|
||||
processSoulMark(ch, chargesPerCast());
|
||||
if (ch == curUser) {
|
||||
ch.damage(Math.round(damageRoll() * multipler * 0.67f), this);
|
||||
ch.damage(Math.round(damageRoll() * multipler * 0.5f), this);
|
||||
} else {
|
||||
ch.damage(Math.round(damageRoll() * multipler), this);
|
||||
}
|
||||
|
|
|
@ -85,7 +85,7 @@ public class WandOfRegrowth extends Wand {
|
|||
float furrowedChance = overLimit > 0 ? (overLimit / (10f + Dungeon.hero.lvl)) : 0;
|
||||
|
||||
int chrgUsed = chargesPerCast();
|
||||
int grassToPlace = Math.round((3.5f+buffedLvl()/2f)*chrgUsed);
|
||||
int grassToPlace = Math.round((3.67f+buffedLvl()/3f)*chrgUsed);
|
||||
|
||||
//ignore cells which can't have anything grow in them.
|
||||
for (Iterator<Integer> i = cells.iterator(); i.hasNext();) {
|
||||
|
@ -148,18 +148,13 @@ public class WandOfRegrowth extends Wand {
|
|||
}
|
||||
|
||||
if (!cells.isEmpty() && Random.Float() > furrowedChance &&
|
||||
(chrgUsed == 3 || (chrgUsed == 2 && Random.Int(2) == 0))){
|
||||
(Random.Int(6) < chrgUsed)){ // 16%/33%/50% chance to spawn a seed pod or dewcatcher
|
||||
int cell = cells.remove(0);
|
||||
Dungeon.level.plant( Random.Int(2) == 0 ? new Seedpod.Seed() : new Dewcatcher.Seed(), cell);
|
||||
}
|
||||
|
||||
if (!cells.isEmpty() && Random.Float() > furrowedChance && chrgUsed == 3){
|
||||
int cell = cells.remove(0);
|
||||
Dungeon.level.plant((Plant.Seed) Generator.randomUsingDefaults(Generator.Category.SEED), cell);
|
||||
}
|
||||
|
||||
if (!cells.isEmpty() && Random.Float() > furrowedChance &&
|
||||
(chrgUsed >= 2 || (chrgUsed == 1 && Random.Int(2) == 0))){
|
||||
(Random.Int(3) < chrgUsed)){ // 33%/66%/100% chance to spawn a plant
|
||||
int cell = cells.remove(0);
|
||||
Dungeon.level.plant((Plant.Seed) Generator.randomUsingDefaults(Generator.Category.SEED), cell);
|
||||
}
|
||||
|
@ -352,7 +347,7 @@ public class WandOfRegrowth extends Wand {
|
|||
|
||||
private void setLevel( int lvl ){
|
||||
wandLvl = lvl;
|
||||
HP = HT = lvl*4;
|
||||
HP = HT = 25 + 3*lvl;
|
||||
}
|
||||
|
||||
public boolean inRange(int pos){
|
||||
|
@ -360,7 +355,7 @@ public class WandOfRegrowth extends Wand {
|
|||
}
|
||||
|
||||
public float seedPreservation(){
|
||||
return 0.25f + 0.05f*wandLvl;
|
||||
return 0.40f + 0.04f*wandLvl;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -210,16 +210,16 @@ public class WandOfWarding extends Wand {
|
|||
case 1: case 2: default:
|
||||
break; //do nothing
|
||||
case 3:
|
||||
HT = 30;
|
||||
HP = 10 + (5-totalZaps)*4;
|
||||
HT = 35;
|
||||
HP = 15 + (5-totalZaps)*4;
|
||||
break;
|
||||
case 4:
|
||||
HT = 48;
|
||||
HP += 18;
|
||||
HT = 54;
|
||||
HP += 19;
|
||||
break;
|
||||
case 5:
|
||||
HT = 70;
|
||||
HP += 22;
|
||||
HT = 84;
|
||||
HP += 30;
|
||||
break;
|
||||
case 6:
|
||||
wandHeal(wandLevel);
|
||||
|
@ -248,13 +248,13 @@ public class WandOfWarding extends Wand {
|
|||
default:
|
||||
return;
|
||||
case 4:
|
||||
heal = 8;
|
||||
heal = 9;
|
||||
break;
|
||||
case 5:
|
||||
heal = 10;
|
||||
heal = 12;
|
||||
break;
|
||||
case 6:
|
||||
heal = 15;
|
||||
heal = 16;
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@ public class Flail extends MeleeWeapon {
|
|||
hitSoundPitch = 0.8f;
|
||||
|
||||
tier = 4;
|
||||
ACC = 0.9f; //0.9x accuracy
|
||||
ACC = 0.8f; //0.8x accuracy
|
||||
//also cannot surprise attack, see Hero.canSurpriseAttack
|
||||
}
|
||||
|
||||
|
|
|
@ -138,7 +138,7 @@ public class MagesStaff extends MeleeWeapon {
|
|||
@Override
|
||||
public int buffedLvl() {
|
||||
int lvl = super.buffedLvl();
|
||||
if (curUser != null && !(wand instanceof WandOfMagicMissile)) {
|
||||
if (curUser != null && wand != null) {
|
||||
WandOfMagicMissile.MagicCharge buff = curUser.buff(WandOfMagicMissile.MagicCharge.class);
|
||||
if (buff != null && buff.level() > lvl){
|
||||
return buff.level();
|
||||
|
|
|
@ -43,6 +43,6 @@ public class Quarterstaff extends MeleeWeapon {
|
|||
|
||||
@Override
|
||||
public int defenseFactor( Char owner ) {
|
||||
return 3; //3 extra defence
|
||||
return 2; //2 extra defence
|
||||
}
|
||||
}
|
||||
|
|
|
@ -85,7 +85,7 @@ public class ConeAOE {
|
|||
targetCells.add(Dungeon.level.pointToCell(scanInt));
|
||||
//if the cone is large enough, also cast rays to cells just inside of the outer arc
|
||||
// this helps fill in any holes when casting rays
|
||||
if (circleRadius >= 7) {
|
||||
if (circleRadius >= 4) {
|
||||
scan.polar(a * PointF.G2R, circleRadius - 1);
|
||||
scan.offset(fromP);
|
||||
scan.x += (fromP.x > scan.x ? +0.5f : -0.5f);
|
||||
|
|
Loading…
Reference in New Issue
Block a user