v0.8.1: Various balance changes to wands:
- Enemies now have up to 5x corruption resistance at full HP, up from 3x. - Wand of Disintegration base range increased to 6 from 4. - Wand of lightning no longer harms allies, self-damage down to 67%. - Wand of Frost damage reduction per turn of chill reduced to 5% from 10%. - Battlemage wand of frost proc now only freezes at 10+ turns of chill, rarer than at 2-10 turns based on chance
This commit is contained in:
parent
f72b86df80
commit
1daf5f40a2
|
@ -76,7 +76,6 @@ 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 {
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -143,8 +142,8 @@ public class WandOfCorruption extends Wand {
|
||||||
} else if (ch instanceof Piranha || ch instanceof Bee) {
|
} else if (ch instanceof Piranha || ch instanceof Bee) {
|
||||||
enemyResist = 1 + Dungeon.depth/2f;
|
enemyResist = 1 + Dungeon.depth/2f;
|
||||||
} else if (ch instanceof Wraith) {
|
} else if (ch instanceof Wraith) {
|
||||||
//divide by 3 as wraiths are always at full HP and are therefore ~3x harder to corrupt
|
//divide by 5 as wraiths are always at full HP and are therefore ~5x harder to corrupt
|
||||||
enemyResist = (1f + Dungeon.depth/3f) / 3f;
|
enemyResist = (1f + Dungeon.depth/3f) / 5f;
|
||||||
} else if (ch instanceof Yog.BurningFist || ch instanceof Yog.RottingFist) {
|
} else if (ch instanceof Yog.BurningFist || ch instanceof Yog.RottingFist) {
|
||||||
enemyResist = 1 + 30;
|
enemyResist = 1 + 30;
|
||||||
} else if (ch instanceof Yog.Larva || ch instanceof King.Undead){
|
} else if (ch instanceof Yog.Larva || ch instanceof King.Undead){
|
||||||
|
@ -154,8 +153,8 @@ public class WandOfCorruption extends Wand {
|
||||||
enemyResist = 1 + 3;
|
enemyResist = 1 + 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
//100% health: 3x resist 75%: 2.1x resist 50%: 1.5x resist 25%: 1.1x resist
|
//100% health: 5x resist 75%: 3.25x resist 50%: 2x resist 25%: 1.25x resist
|
||||||
enemyResist *= 1 + 2*Math.pow(enemy.HP/(float)enemy.HT, 2);
|
enemyResist *= 1 + 4*Math.pow(enemy.HP/(float)enemy.HT, 2);
|
||||||
|
|
||||||
//debuffs placed on the enemy reduce their resistance
|
//debuffs placed on the enemy reduce their resistance
|
||||||
for (Buff buff : enemy.buffs()){
|
for (Buff buff : enemy.buffs()){
|
||||||
|
|
|
@ -118,7 +118,7 @@ public class WandOfDisintegration extends DamageWand {
|
||||||
}
|
}
|
||||||
|
|
||||||
private int distance() {
|
private int distance() {
|
||||||
return level()*2 + 4;
|
return level()*2 + 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -70,9 +70,8 @@ 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){
|
||||||
//7.5% less damage per turn of chill remaining
|
//5% less damage per turn of chill remaining
|
||||||
float chill = ch.buff(Chill.class).cooldown();
|
damage = (int)Math.round(damage * Math.pow(0.95f, ch.buff(Chill.class).cooldown()));
|
||||||
damage = (int)Math.round(damage * Math.pow(0.9f, chill));
|
|
||||||
} else {
|
} else {
|
||||||
ch.sprite.burst( 0xFF99CCFF, buffedLvl() / 2 + 2 );
|
ch.sprite.burst( 0xFF99CCFF, buffedLvl() / 2 + 2 );
|
||||||
}
|
}
|
||||||
|
@ -104,7 +103,7 @@ public class WandOfFrost extends DamageWand {
|
||||||
@Override
|
@Override
|
||||||
public void onHit(MagesStaff staff, Char attacker, Char defender, int damage) {
|
public void onHit(MagesStaff staff, Char attacker, Char defender, int damage) {
|
||||||
Chill chill = defender.buff(Chill.class);
|
Chill chill = defender.buff(Chill.class);
|
||||||
if (chill != null && Random.IntRange(2, (int)Chill.DURATION) <= chill.cooldown()){
|
if (chill != null && chill.cooldown() >= Chill.DURATION){
|
||||||
//need to delay this through an actor so that the freezing isn't broken by taking damage from the staff hit.
|
//need to delay this through an actor so that the freezing isn't broken by taking damage from the staff hit.
|
||||||
new FlavourBuff(){
|
new FlavourBuff(){
|
||||||
{actPriority = VFX_PRIO;}
|
{actPriority = VFX_PRIO;}
|
||||||
|
|
|
@ -71,12 +71,19 @@ public class WandOfLightning extends DamageWand {
|
||||||
if (Dungeon.level.water[bolt.collisionPos]) multipler = 1f;
|
if (Dungeon.level.water[bolt.collisionPos]) multipler = 1f;
|
||||||
|
|
||||||
for (Char ch : affected){
|
for (Char ch : affected){
|
||||||
processSoulMark(ch, chargesPerCast());
|
|
||||||
ch.damage(Math.round(damageRoll() * multipler), this);
|
|
||||||
|
|
||||||
if (ch == Dungeon.hero) Camera.main.shake( 2, 0.3f );
|
if (ch == Dungeon.hero) Camera.main.shake( 2, 0.3f );
|
||||||
ch.sprite.centerEmitter().burst( SparkParticle.FACTORY, 3 );
|
ch.sprite.centerEmitter().burst( SparkParticle.FACTORY, 3 );
|
||||||
ch.sprite.flash();
|
ch.sprite.flash();
|
||||||
|
|
||||||
|
if (ch != curUser && ch.alignment == curUser.alignment && ch.pos != bolt.collisionPos){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
processSoulMark(ch, chargesPerCast());
|
||||||
|
if (ch == curUser) {
|
||||||
|
ch.damage(Math.round(damageRoll() * multipler * 0.67f), this);
|
||||||
|
} else {
|
||||||
|
ch.damage(Math.round(damageRoll() * multipler), this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!curUser.isAlive()) {
|
if (!curUser.isAlive()) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user