v0.8.0: various tweaks:

- added newlines to hero level up messages
- succubi now have a proper variable cooldown for their blink
- evil eye beam cooldown increased slightly
- The DM-300 fight now starts slightly farther from the entrance stairs
- increased the rate of well particle VFX for better clarity
This commit is contained in:
Evan Debenham 2020-03-29 21:15:27 -04:00
parent 63e4482405
commit f4241ad640
5 changed files with 29 additions and 14 deletions

View File

@ -72,7 +72,7 @@ public class Web extends Blob {
public void use( BlobEmitter emitter ) {
super.use( emitter );
emitter.pour( WebParticle.FACTORY, 0.4f );
emitter.pour( WebParticle.FACTORY, 0.25f );
}
@Override

View File

@ -1328,6 +1328,7 @@ public class Hero extends Char {
Buff.prolong(this, Bless.class, 30f);
this.exp = 0;
GLog.newLine();
GLog.p( Messages.get(this, "level_cap"));
Sample.INSTANCE.play( Assets.SND_LEVELUP );
}
@ -1337,6 +1338,7 @@ public class Hero extends Char {
if (levelUp) {
if (sprite != null) {
GLog.newLine();
GLog.p( Messages.get(this, "new_level"), lvl );
sprite.showStatus( CharSprite.POSITIVE, Messages.get(Hero.class, "level_up") );
Sample.INSTANCE.play( Assets.SND_LEVELUP );

View File

@ -155,7 +155,7 @@ public class Eye extends Mob {
return;
beamCharged = false;
beamCooldown = Random.IntRange(3, 6);
beamCooldown = Random.IntRange(4, 6);
boolean terrainAffected = false;

View File

@ -29,7 +29,6 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Barrier;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Charm;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Light;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Sleep;
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
import com.shatteredpixel.shatteredpixeldungeon.items.Generator;
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
@ -40,6 +39,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfUpgrade;
import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica;
import com.shatteredpixel.shatteredpixeldungeon.sprites.SuccubusSprite;
import com.watabou.noosa.audio.Sample;
import com.watabou.utils.Bundle;
import com.watabou.utils.PathFinder;
import com.watabou.utils.Random;
import com.watabou.utils.Reflection;
@ -47,10 +47,8 @@ import com.watabou.utils.Reflection;
import java.util.ArrayList;
public class Succubus extends Mob {
private static final int BLINK_DELAY = 5;
private int delay = 0;
private int blinkCooldown = 0;
{
spriteClass = SuccubusSprite.class;
@ -99,15 +97,15 @@ public class Succubus extends Mob {
@Override
protected boolean getCloser( int target ) {
if (fieldOfView[target] && Dungeon.level.distance( pos, target ) > 2 && delay <= 0) {
if (fieldOfView[target] && Dungeon.level.distance( pos, target ) > 2 && blinkCooldown <= 0) {
blink( target );
spend( -1 / speed() );
return true;
} else {
delay--;
blinkCooldown--;
return super.getCloser( target );
}
@ -133,14 +131,14 @@ public class Succubus extends Mob {
if (candidates.size() > 0)
cell = Random.element(candidates);
else {
delay = BLINK_DELAY;
blinkCooldown = Random.IntRange(4, 6);
return;
}
}
ScrollOfTeleportation.appear( this, cell );
delay = BLINK_DELAY;
blinkCooldown = Random.IntRange(4, 6);
}
@Override
@ -166,4 +164,18 @@ public class Succubus extends Mob {
{
immunities.add( Charm.class );
}
private static final String BLINK_CD = "blink_cd";
@Override
public void storeInBundle(Bundle bundle) {
super.storeInBundle(bundle);
bundle.put(BLINK_CD, blinkCooldown);
}
@Override
public void restoreFromBundle(Bundle bundle) {
super.restoreFromBundle(bundle);
blinkCooldown = bundle.getInt(BLINK_CD);
}
}

View File

@ -198,7 +198,8 @@ public class NewCavesBossLevel extends Level {
//seal the level when the hero moves off the entrance, the level isn't already sealed, and the gate hasn't been destroyed
int gatePos = pointToCell(new Point(gate.left, gate.top));
if (ch == Dungeon.hero && ch.pos != entrance && !locked && solid[gatePos]){
if (ch == Dungeon.hero && (Dungeon.level.distance(ch.pos, entrance) > 1)
&& !locked && solid[gatePos]){
seal();