Search in sources :

Example 1 with MissileWeapon

use of com.watabou.pixeldungeon.items.weapon.missiles.MissileWeapon in project pixel-dungeon by watabou.

the class RatKingPainter method addChest.

private static void addChest(Level level, int pos, int door) {
    if (pos == door - 1 || pos == door + 1 || pos == door - Level.WIDTH || pos == door + Level.WIDTH) {
        return;
    }
    Item prize;
    switch(Random.Int(10)) {
        case 0:
            prize = Generator.random(Generator.Category.WEAPON);
            if (prize instanceof MissileWeapon) {
                prize.quantity(1);
            } else {
                prize.degrade(Random.Int(3));
            }
            break;
        case 1:
            prize = Generator.random(Generator.Category.ARMOR).degrade(Random.Int(3));
            break;
        default:
            prize = new Gold(Random.IntRange(1, 5));
            break;
    }
    level.drop(prize, pos).type = Heap.Type.CHEST;
}
Also used : Item(com.watabou.pixeldungeon.items.Item) Gold(com.watabou.pixeldungeon.items.Gold) MissileWeapon(com.watabou.pixeldungeon.items.weapon.missiles.MissileWeapon)

Example 2 with MissileWeapon

use of com.watabou.pixeldungeon.items.weapon.missiles.MissileWeapon in project pixel-dungeon by watabou.

the class Item method cast.

public void cast(final Hero user, int dst) {
    final int cell = Ballistica.cast(user.pos, dst, false, true);
    user.sprite.zap(cell);
    user.busy();
    Sample.INSTANCE.play(Assets.SND_MISS, 0.6f, 0.6f, 1.5f);
    Char enemy = Actor.findChar(cell);
    QuickSlot.target(this, enemy);
    // FIXME!!!
    float delay = TIME_TO_THROW;
    if (this instanceof MissileWeapon) {
        delay *= ((MissileWeapon) this).speedFactor(user);
        if (enemy != null) {
            SnipersMark mark = user.buff(SnipersMark.class);
            if (mark != null) {
                if (mark.object == enemy.id()) {
                    delay *= 0.5f;
                }
                user.remove(mark);
            }
        }
    }
    final float finalDelay = delay;
    ((MissileSprite) user.sprite.parent.recycle(MissileSprite.class)).reset(user.pos, cell, this, new Callback() {

        @Override
        public void call() {
            Item.this.detach(user.belongings.backpack).onThrow(cell);
            user.spendAndNext(finalDelay);
        }
    });
}
Also used : SnipersMark(com.watabou.pixeldungeon.actors.buffs.SnipersMark) Callback(com.watabou.utils.Callback) Char(com.watabou.pixeldungeon.actors.Char) MissileWeapon(com.watabou.pixeldungeon.items.weapon.missiles.MissileWeapon) MissileSprite(com.watabou.pixeldungeon.sprites.MissileSprite)

Aggregations

MissileWeapon (com.watabou.pixeldungeon.items.weapon.missiles.MissileWeapon)2 Char (com.watabou.pixeldungeon.actors.Char)1 SnipersMark (com.watabou.pixeldungeon.actors.buffs.SnipersMark)1 Gold (com.watabou.pixeldungeon.items.Gold)1 Item (com.watabou.pixeldungeon.items.Item)1 MissileSprite (com.watabou.pixeldungeon.sprites.MissileSprite)1 Callback (com.watabou.utils.Callback)1