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