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:
parent
ce5ff1a7d5
commit
749a81793f
|
@ -32,6 +32,7 @@ import com.shatteredpixel.shatteredpixeldungeon.effects.Pushing;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfHealing;
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfHealing;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.SpawnerSprite;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.SpawnerSprite;
|
||||||
|
import com.watabou.utils.Bundle;
|
||||||
import com.watabou.utils.PathFinder;
|
import com.watabou.utils.PathFinder;
|
||||||
import com.watabou.utils.Random;
|
import com.watabou.utils.Random;
|
||||||
|
|
||||||
|
@ -42,7 +43,7 @@ public class DemonSpawner extends Mob {
|
||||||
{
|
{
|
||||||
spriteClass = SpawnerSprite.class;
|
spriteClass = SpawnerSprite.class;
|
||||||
|
|
||||||
HP = HT = 150;
|
HP = HT = 120;
|
||||||
defenseSkill = 0;
|
defenseSkill = 0;
|
||||||
|
|
||||||
EXP = 25;
|
EXP = 25;
|
||||||
|
@ -72,7 +73,7 @@ public class DemonSpawner extends Mob {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private float spawnCooldown = 50;
|
private float spawnCooldown = 60;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean act() {
|
protected boolean act() {
|
||||||
|
@ -98,7 +99,7 @@ public class DemonSpawner extends Mob {
|
||||||
Actor.addDelayed(new Pushing(spawn, pos, spawn.pos), -1);
|
Actor.addDelayed(new Pushing(spawn, pos, spawn.pos), -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
spawnCooldown += 50;
|
spawnCooldown += 60;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return super.act();
|
return super.act();
|
||||||
|
@ -106,15 +107,29 @@ public class DemonSpawner extends Mob {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void damage(int dmg, Object src) {
|
public void damage(int dmg, Object src) {
|
||||||
if (dmg >= 25){
|
if (dmg >= 20){
|
||||||
//takes 25/26/27/28/29/30/31/32/33/34/35 dmg
|
//takes 20/21/22/23/24/25/26/27/28/29/30 dmg
|
||||||
// at 25/27/30/34/39/45/52/60/69/79/90 incoming dmg
|
// at 20/22/25/29/34/40/47/55/64/74/85 incoming dmg
|
||||||
dmg = 24 + (int)(Math.sqrt(8*(dmg - 24) + 1) - 1)/2;
|
dmg = 19 + (int)(Math.sqrt(8*(dmg - 19) + 1) - 1)/2;
|
||||||
}
|
}
|
||||||
spawnCooldown -= dmg;
|
spawnCooldown -= dmg;
|
||||||
super.damage(dmg, src);
|
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( Paralysis.class );
|
||||||
immunities.add( Amok.class );
|
immunities.add( Amok.class );
|
||||||
|
|
|
@ -115,12 +115,12 @@ public class Guard extends Mob {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int attackSkill( Char target ) {
|
public int attackSkill( Char target ) {
|
||||||
return 14;
|
return 12;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int drRoll() {
|
public int drRoll() {
|
||||||
return Random.NormalIntRange(0, 8);
|
return Random.NormalIntRange(0, 7);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -50,7 +50,7 @@ public class Necromancer extends Mob {
|
||||||
spriteClass = NecromancerSprite.class;
|
spriteClass = NecromancerSprite.class;
|
||||||
|
|
||||||
HP = HT = 35;
|
HP = HT = 35;
|
||||||
defenseSkill = 11;
|
defenseSkill = 13;
|
||||||
|
|
||||||
EXP = 7;
|
EXP = 7;
|
||||||
maxLvl = 14;
|
maxLvl = 14;
|
||||||
|
|
|
@ -77,6 +77,12 @@ public class HallsLevel extends RegularLevel {
|
||||||
return rooms;
|
return rooms;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int nMobs() {
|
||||||
|
//remove one mob to account for ripper demon spawners
|
||||||
|
return super.nMobs()-1;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected int standardRooms() {
|
protected int standardRooms() {
|
||||||
//8 to 10, average 8.67
|
//8 to 10, average 8.67
|
||||||
|
|
|
@ -49,7 +49,8 @@ public class DemonSpawnerRoom extends SpecialRoom {
|
||||||
spawner.pos = cx + cy * level.width();
|
spawner.pos = cx + cy * level.width();
|
||||||
level.mobs.add( spawner );
|
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++){
|
for (int i = 0; i < rippers; i++){
|
||||||
int pos;
|
int pos;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user