v0.7.3: Balance adjustments around magical resistance effects:
- magical resistances no longer apply to the melee attacks of magic users - ring of elements buffed to 20% reduction per level from 16% - antimagic glyph rebalanced, no longer depends on armor DR
This commit is contained in:
parent
7fa8d80f03
commit
2c92332563
|
@ -93,7 +93,7 @@ public class Bundle {
|
|||
|
||||
public Class getClass( String key ) {
|
||||
String clName = getString(key).replace("class ", "");;
|
||||
if (clName != null){
|
||||
if (!clName.equals("")){
|
||||
if (aliases.containsKey( clName )) {
|
||||
clName = aliases.get( clName );
|
||||
}
|
||||
|
|
|
@ -1034,7 +1034,7 @@ public class Hero extends Char {
|
|||
//TODO improve this when I have proper damage source logic
|
||||
if (belongings.armor != null && belongings.armor.hasGlyph(AntiMagic.class, this)
|
||||
&& AntiMagic.RESISTS.contains(src.getClass())){
|
||||
dmg -= Random.NormalIntRange(belongings.armor.DRMin(), belongings.armor.DRMax())/3;
|
||||
dmg -= AntiMagic.drRoll(belongings.armor.level());
|
||||
}
|
||||
|
||||
super.damage( dmg, src );
|
||||
|
|
|
@ -144,6 +144,9 @@ public class Eye extends Mob {
|
|||
if (beamCharged) dmg /= 4;
|
||||
super.damage(dmg, src);
|
||||
}
|
||||
|
||||
//used so resistances can differentiate between melee and magical attacks
|
||||
public static class DeathGaze{}
|
||||
|
||||
public void deathGaze(){
|
||||
if (!beamCharged || beamCooldown > 0 || beam == null)
|
||||
|
@ -170,7 +173,7 @@ public class Eye extends Mob {
|
|||
}
|
||||
|
||||
if (hit( this, ch, true )) {
|
||||
ch.damage( Random.NormalIntRange( 30, 50 ), this );
|
||||
ch.damage( Random.NormalIntRange( 30, 50 ), new DeathGaze() );
|
||||
|
||||
if (Dungeon.level.heroFOV[pos]) {
|
||||
ch.sprite.flash();
|
||||
|
|
|
@ -73,6 +73,9 @@ public class Shaman extends Mob implements Callback {
|
|||
return new Ballistica( pos, enemy.pos, Ballistica.MAGIC_BOLT).collisionPos == enemy.pos;
|
||||
}
|
||||
|
||||
//used so resistances can differentiate between melee and magical attacks
|
||||
public static class LightningBolt{}
|
||||
|
||||
@Override
|
||||
protected boolean doAttack( Char enemy ) {
|
||||
|
||||
|
@ -94,7 +97,7 @@ public class Shaman extends Mob implements Callback {
|
|||
if (Dungeon.level.water[enemy.pos] && !enemy.flying) {
|
||||
dmg *= 1.5f;
|
||||
}
|
||||
enemy.damage( dmg, this );
|
||||
enemy.damage( dmg, new LightningBolt() );
|
||||
|
||||
enemy.sprite.centerEmitter().burst( SparkParticle.FACTORY, 3 );
|
||||
enemy.sprite.flash();
|
||||
|
|
|
@ -95,6 +95,9 @@ public class Warlock extends Mob implements Callback {
|
|||
}
|
||||
}
|
||||
|
||||
//used so resistances can differentiate between melee and magical attacks
|
||||
public static class DarkBolt{}
|
||||
|
||||
private void zap() {
|
||||
spend( TIME_TO_ZAP );
|
||||
|
||||
|
@ -104,7 +107,7 @@ public class Warlock extends Mob implements Callback {
|
|||
}
|
||||
|
||||
int dmg = Random.Int( 12, 18 );
|
||||
enemy.damage( dmg, this );
|
||||
enemy.damage( dmg, new DarkBolt() );
|
||||
|
||||
if (!enemy.isAlive() && enemy == Dungeon.hero) {
|
||||
Dungeon.fail( getClass() );
|
||||
|
|
|
@ -311,6 +311,9 @@ public class Yog extends Mob {
|
|||
return new Ballistica( pos, enemy.pos, Ballistica.MAGIC_BOLT).collisionPos == enemy.pos;
|
||||
}
|
||||
|
||||
//used so resistances can differentiate between melee and magical attacks
|
||||
public static class DarkBolt{}
|
||||
|
||||
@Override
|
||||
public boolean attack( Char enemy ) {
|
||||
|
||||
|
@ -320,7 +323,7 @@ public class Yog extends Mob {
|
|||
if (hit( this, enemy, true )) {
|
||||
|
||||
int dmg = damageRoll();
|
||||
enemy.damage( dmg, this );
|
||||
enemy.damage( dmg, new DarkBolt() );
|
||||
|
||||
enemy.sprite.bloodBurstA( sprite.center(), dmg );
|
||||
enemy.sprite.flash();
|
||||
|
|
|
@ -32,6 +32,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.armor.Armor;
|
|||
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.DisintegrationTrap;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.GrimTrap;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite;
|
||||
import com.watabou.utils.Random;
|
||||
|
||||
import java.util.HashSet;
|
||||
|
||||
|
@ -47,10 +48,10 @@ public class AntiMagic extends Armor.Glyph {
|
|||
RESISTS.add( DisintegrationTrap.class );
|
||||
RESISTS.add( GrimTrap.class );
|
||||
|
||||
RESISTS.add( Shaman.class );
|
||||
RESISTS.add( Warlock.class );
|
||||
RESISTS.add( Eye.class );
|
||||
RESISTS.add( Yog.BurningFist.class );
|
||||
RESISTS.add( Shaman.LightningBolt.class );
|
||||
RESISTS.add( Warlock.DarkBolt.class );
|
||||
RESISTS.add( Eye.DeathGaze.class );
|
||||
RESISTS.add( Yog.BurningFist.DarkBolt.class );
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -58,6 +59,10 @@ public class AntiMagic extends Armor.Glyph {
|
|||
//no proc effect, see Hero.damage
|
||||
return damage;
|
||||
}
|
||||
|
||||
public static int drRoll( int level ){
|
||||
return Random.NormalIntRange(2+level, 4 + (level*2));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemSprite.Glowing glowing() {
|
||||
|
|
|
@ -568,7 +568,7 @@ public class DriedRose extends Artifact {
|
|||
//TODO improve this when I have proper damage source logic
|
||||
if (rose != null && rose.armor != null && rose.armor.hasGlyph(AntiMagic.class, this)
|
||||
&& AntiMagic.RESISTS.contains(src.getClass())){
|
||||
dmg -= Random.NormalIntRange(rose.armor.DRMin(), rose.armor.DRMax())/3;
|
||||
dmg -= AntiMagic.drRoll(rose.armor.level());
|
||||
}
|
||||
|
||||
super.damage( dmg, src );
|
||||
|
|
|
@ -48,9 +48,9 @@ public class RingOfElements extends Ring {
|
|||
|
||||
public String statsInfo() {
|
||||
if (isIdentified()){
|
||||
return Messages.get(this, "stats", new DecimalFormat("#.##").format(100f * (1f - Math.pow(0.84f, soloBonus()))));
|
||||
return Messages.get(this, "stats", new DecimalFormat("#.##").format(100f * (1f - Math.pow(0.80f, soloBonus()))));
|
||||
} else {
|
||||
return Messages.get(this, "typical_stats", new DecimalFormat("#.##").format(16f));
|
||||
return Messages.get(this, "typical_stats", new DecimalFormat("#.##").format(20f));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -77,11 +77,10 @@ public class RingOfElements extends Ring {
|
|||
RESISTS.add( ToxicGas.class );
|
||||
RESISTS.add( Electricity.class );
|
||||
|
||||
//FIXME currently this affects all attacks, not just longranged magic
|
||||
RESISTS.add( Shaman.class );
|
||||
RESISTS.add( Warlock.class );
|
||||
RESISTS.add( Eye.class );
|
||||
RESISTS.add( Yog.BurningFist.class );
|
||||
RESISTS.add( Shaman.LightningBolt.class );
|
||||
RESISTS.add( Warlock.DarkBolt.class );
|
||||
RESISTS.add( Eye.DeathGaze.class );
|
||||
RESISTS.add( Yog.BurningFist.DarkBolt.class );
|
||||
}
|
||||
|
||||
public static float resist( Char target, Class effect ){
|
||||
|
@ -89,7 +88,7 @@ public class RingOfElements extends Ring {
|
|||
|
||||
for (Class c : RESISTS){
|
||||
if (c.isAssignableFrom(effect)){
|
||||
return (float)Math.pow(0.84, getBonus(target, Resistance.class));
|
||||
return (float)Math.pow(0.80, getBonus(target, Resistance.class));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user