@Override public void onComplete(Animation anim) { super.onComplete(anim); if (visible && emitter != null && anim == idle) { emitter.burst(Speck.factory(Speck.FORGE), 3); float volume = 0.2f / (Level.distance(ch.pos, Dungeon.hero.pos)); Sample.INSTANCE.play(Assets.SND_EVOKE, volume, volume, 0.8f); } }
@Override public void link(Char ch) { super.link(ch); if (levitating) { add(State.LEVITATING); } }
@Override public void die() { super.die(); if (levitating) { remove(State.LEVITATING); } }
@Override public void onComplete(Animation anim) { if (anim == zap) { idle(); } super.onComplete(anim); }
@Override public void attack(int cell) { super.attack(cell); if (Random.Float() < 0.5f) { play(kick); } }
@Override public void update() { super.update(); if (emitter != null) { emitter.visible = visible; } }
@Override public void die() { super.die(); if (cloud != null) { cloud.on = false; } }
@Override public void update() { super.update(); if (cloud != null) { cloud.visible = visible; } }
@Override public void link(Char ch) { super.link(ch); if (cloud == null) { cloud = emitter(); cloud.pour(Speck.factory(Speck.TOXIC), 0.7f); } }
@Override public void link(Char ch) { super.link(ch); emitter = new Emitter(); emitter.autoKill = false; emitter.pos(x + 7, y + 12); parent.add(emitter); }
@Override public void onComplete(Animation anim) { super.onComplete(anim); if (anim == attack) { if (Dungeon.visible[ch.pos] || Dungeon.visible[attackPos]) { parent.add(new Beam.DeathRay(center(), DungeonTilemap.tileCenterToWorld(attackPos))); } } }
@Override public void attack(int cell) { if (!Level.adjacent(cell, ch.pos)) { cellToAttack = cell; turnTo(ch.pos, cell); play(zap); } else { super.attack(cell); } }
@Override public void onComplete(Animation anim) { if (anim == zap) { idle(); ((MissileSprite) parent.recycle(MissileSprite.class)) .reset( ch.pos, cellToAttack, new Dart(), new Callback() { @Override public void call() { ch.onAttackComplete(); } }); } else { super.onComplete(anim); } }
@Override public void onComplete(Animation anim) { if (anim == attack) { Sample.INSTANCE.play(Assets.SND_ZAP); MagicMissile.shadow( parent, ch.pos, posToShoot, new Callback() { @Override public void call() { ch.onAttackComplete(); } }); idle(); } else { super.onComplete(anim); } }
@Override public void attack(int cell) { if (!Level.adjacent(cell, ch.pos)) { ((MissileSprite) parent.recycle(MissileSprite.class)) .reset( ch.pos, cell, new CurareDart(), new Callback() { @Override public void call() { ch.onAttackComplete(); } }); play(cast); turnTo(ch.pos, cell); } else { super.attack(cell); } }
/* * @Override public void draw() { GLES20.glBlendFunc( GL10.GL_SRC_ALPHA, * GL10.GL_ONE ); super.draw(); GLES20.glBlendFunc( GL10.GL_SRC_ALPHA, * GL10.GL_ONE_MINUS_SRC_ALPHA ); } */ @Override public void die() { super.die(); emitter().start(ShaftParticle.FACTORY, 0.3f, 4); emitter().start(Speck.factory(Speck.LIGHT), 0.2f, 3); }
@Override public void attack(int cell) { posToShoot = cell; super.attack(cell); }
@Override public void onComplete(Animation anim) { super.onComplete(anim == kick ? attack : anim); }
@Override public void attack(int pos) { attackPos = pos; super.attack(pos); }