v0.8.0: enemy balance tweaks:

- guard accuracy reduced by ~15%
- guard armor reduced by ~12%
- necromancer evasion increased by ~18%
- ripper demon spawn rate reduced by 20%
- demon spawners now have 120 health, down from 150
- demon spawners now resist damage past 20, down from 25
- regular enemies are slightly less common in demon halls
This commit is contained in:
Evan Debenham 2020-01-17 16:52:37 -05:00
parent ce5ff1a7d5
commit 749a81793f
5 changed files with 34 additions and 12 deletions

View File

@ -32,6 +32,7 @@ import com.shatteredpixel.shatteredpixeldungeon.effects.Pushing;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfHealing;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.sprites.SpawnerSprite;
import com.watabou.utils.Bundle;
import com.watabou.utils.PathFinder;
import com.watabou.utils.Random;
@ -42,7 +43,7 @@ public class DemonSpawner extends Mob {
{
spriteClass = SpawnerSprite.class;
HP = HT = 150;
HP = HT = 120;
defenseSkill = 0;
EXP = 25;
@ -72,7 +73,7 @@ public class DemonSpawner extends Mob {
return true;
}
private float spawnCooldown = 50;
private float spawnCooldown = 60;
@Override
protected boolean act() {
@ -98,7 +99,7 @@ public class DemonSpawner extends Mob {
Actor.addDelayed(new Pushing(spawn, pos, spawn.pos), -1);
}
spawnCooldown += 50;
spawnCooldown += 60;
}
}
return super.act();
@ -106,15 +107,29 @@ public class DemonSpawner extends Mob {
@Override
public void damage(int dmg, Object src) {
if (dmg >= 25){
//takes 25/26/27/28/29/30/31/32/33/34/35 dmg
// at 25/27/30/34/39/45/52/60/69/79/90 incoming dmg
dmg = 24 + (int)(Math.sqrt(8*(dmg - 24) + 1) - 1)/2;
if (dmg >= 20){
//takes 20/21/22/23/24/25/26/27/28/29/30 dmg
// at 20/22/25/29/34/40/47/55/64/74/85 incoming dmg
dmg = 19 + (int)(Math.sqrt(8*(dmg - 19) + 1) - 1)/2;
}
spawnCooldown -= dmg;
super.damage(dmg, src);
}
public static final String SPAWN_COOLDOWN = "spawn_cooldown";
@Override
public void storeInBundle(Bundle bundle) {
super.storeInBundle(bundle);
bundle.put(SPAWN_COOLDOWN, spawnCooldown);
}
@Override
public void restoreFromBundle(Bundle bundle) {
super.restoreFromBundle(bundle);
spawnCooldown = bundle.getFloat(SPAWN_COOLDOWN);
}
{
immunities.add( Paralysis.class );
immunities.add( Amok.class );

View File

@ -115,12 +115,12 @@ public class Guard extends Mob {
@Override
public int attackSkill( Char target ) {
return 14;
return 12;
}
@Override
public int drRoll() {
return Random.NormalIntRange(0, 8);
return Random.NormalIntRange(0, 7);
}
@Override

View File

@ -50,7 +50,7 @@ public class Necromancer extends Mob {
spriteClass = NecromancerSprite.class;
HP = HT = 35;
defenseSkill = 11;
defenseSkill = 13;
EXP = 7;
maxLvl = 14;

View File

@ -76,7 +76,13 @@ public class HallsLevel extends RegularLevel {
return rooms;
}
@Override
public int nMobs() {
//remove one mob to account for ripper demon spawners
return super.nMobs()-1;
}
@Override
protected int standardRooms() {
//8 to 10, average 8.67

View File

@ -49,7 +49,8 @@ public class DemonSpawnerRoom extends SpecialRoom {
spawner.pos = cx + cy * level.width();
level.mobs.add( spawner );
int rippers = Random.IntRange(1, 2);
//2/3 chance for 1, 1/3 chance for 2
int rippers = Random.chances( new float[]{0, 2, 1});
for (int i = 0; i < rippers; i++){
int pos;