Search in sources :

Example 6 with Mob

use of com.watabou.pixeldungeon.actors.mobs.Mob in project pixel-dungeon by watabou.

the class ShopPainter method placeShopkeeper.

private static void placeShopkeeper(Level level, Room room) {
    int pos;
    do {
        pos = room.random();
    } while (level.heaps.get(pos) != null);
    Mob shopkeeper = level instanceof LastShopLevel ? new ImpShopkeeper() : new Shopkeeper();
    shopkeeper.pos = pos;
    level.mobs.add(shopkeeper);
    if (level instanceof LastShopLevel) {
        for (int i = 0; i < Level.NEIGHBOURS9.length; i++) {
            int p = shopkeeper.pos + Level.NEIGHBOURS9[i];
            if (level.map[p] == Terrain.EMPTY_SP) {
                level.map[p] = Terrain.WATER;
            }
        }
    }
}
Also used : Mob(com.watabou.pixeldungeon.actors.mobs.Mob) Shopkeeper(com.watabou.pixeldungeon.actors.mobs.npcs.Shopkeeper) ImpShopkeeper(com.watabou.pixeldungeon.actors.mobs.npcs.ImpShopkeeper) ImpShopkeeper(com.watabou.pixeldungeon.actors.mobs.npcs.ImpShopkeeper) LastShopLevel(com.watabou.pixeldungeon.levels.LastShopLevel) Point(com.watabou.utils.Point)

Example 7 with Mob

use of com.watabou.pixeldungeon.actors.mobs.Mob in project pixel-dungeon by watabou.

the class SewerBossLevel method createMobs.

@Override
protected void createMobs() {
    Mob mob = Bestiary.mob(Dungeon.depth);
    mob.pos = roomExit.random();
    mobs.add(mob);
}
Also used : Mob(com.watabou.pixeldungeon.actors.mobs.Mob)

Example 8 with Mob

use of com.watabou.pixeldungeon.actors.mobs.Mob in project pixel-dungeon by watabou.

the class ScrollOfPsionicBlast method doRead.

@Override
protected void doRead() {
    GameScene.flash(0xFFFFFF);
    Sample.INSTANCE.play(Assets.SND_BLAST);
    Invisibility.dispel();
    for (Mob mob : Dungeon.level.mobs.toArray(new Mob[0])) {
        if (Level.fieldOfView[mob.pos]) {
            Buff.prolong(mob, Blindness.class, Random.Int(3, 6));
            mob.damage(Random.IntRange(1, mob.HT * 2 / 3), this);
        }
    }
    Buff.prolong(curUser, Blindness.class, Random.Int(3, 6));
    Dungeon.observe();
    setKnown();
    readAnimation();
}
Also used : Mob(com.watabou.pixeldungeon.actors.mobs.Mob)

Example 9 with Mob

use of com.watabou.pixeldungeon.actors.mobs.Mob in project pixel-dungeon by watabou.

the class ScrollOfWipeOut method doRead.

private void doRead() {
    GameScene.flash(0xFF6644);
    Invisibility.dispel();
    for (Mob mob : Dungeon.level.mobs.toArray(new Mob[0])) {
        if (!Bestiary.isBoss(mob)) {
            Sample.INSTANCE.play(Assets.SND_CURSED, 0.3f, 0.3f, Random.Float(0.6f, 0.9f));
            mob.die(this);
        }
    }
    for (Heap heap : Dungeon.level.heaps.values()) {
        switch(heap.type) {
            case FOR_SALE:
                heap.type = Type.HEAP;
                if (Dungeon.visible[heap.pos]) {
                    CellEmitter.center(heap.pos).burst(Speck.factory(Speck.COIN), 2);
                }
                break;
            case MIMIC:
                heap.type = Type.HEAP;
                heap.sprite.link();
                Sample.INSTANCE.play(Assets.SND_CURSED, 0.3f, 0.3f, Random.Float(0.6f, 0.9f));
                break;
            default:
        }
    }
    curUser.spend(TIME_TO_READ);
    curUser.busy();
    ((HeroSprite) curUser.sprite).read();
}
Also used : Mob(com.watabou.pixeldungeon.actors.mobs.Mob) HeroSprite(com.watabou.pixeldungeon.sprites.HeroSprite) Heap(com.watabou.pixeldungeon.items.Heap)

Example 10 with Mob

use of com.watabou.pixeldungeon.actors.mobs.Mob in project pixel-dungeon by watabou.

the class GameScene method create.

@Override
public void create() {
    Music.INSTANCE.play(Assets.TUNE, true);
    Music.INSTANCE.volume(1f);
    PixelDungeon.lastClass(Dungeon.hero.heroClass.ordinal());
    super.create();
    Camera.main.zoom(defaultZoom + PixelDungeon.zoom());
    scene = this;
    terrain = new Group();
    add(terrain);
    water = new SkinnedBlock(Level.WIDTH * DungeonTilemap.SIZE, Level.HEIGHT * DungeonTilemap.SIZE, Dungeon.level.waterTex());
    terrain.add(water);
    ripples = new Group();
    terrain.add(ripples);
    tiles = new DungeonTilemap();
    terrain.add(tiles);
    Dungeon.level.addVisuals(this);
    plants = new Group();
    add(plants);
    int size = Dungeon.level.plants.size();
    for (int i = 0; i < size; i++) {
        addPlantSprite(Dungeon.level.plants.valueAt(i));
    }
    heaps = new Group();
    add(heaps);
    size = Dungeon.level.heaps.size();
    for (int i = 0; i < size; i++) {
        addHeapSprite(Dungeon.level.heaps.valueAt(i));
    }
    emitters = new Group();
    effects = new Group();
    emoicons = new Group();
    mobs = new Group();
    add(mobs);
    for (Mob mob : Dungeon.level.mobs) {
        addMobSprite(mob);
        if (Statistics.amuletObtained) {
            mob.beckon(Dungeon.hero.pos);
        }
    }
    add(emitters);
    add(effects);
    gases = new Group();
    add(gases);
    for (Blob blob : Dungeon.level.blobs.values()) {
        blob.emitter = null;
        addBlobSprite(blob);
    }
    fog = new FogOfWar(Level.WIDTH, Level.HEIGHT);
    fog.updateVisibility(Dungeon.visible, Dungeon.level.visited, Dungeon.level.mapped);
    add(fog);
    brightness(PixelDungeon.brightness());
    spells = new Group();
    add(spells);
    statuses = new Group();
    add(statuses);
    add(emoicons);
    hero = new HeroSprite();
    hero.place(Dungeon.hero.pos);
    hero.updateArmor();
    mobs.add(hero);
    add(new HealthIndicator());
    add(cellSelector = new CellSelector(tiles));
    StatusPane sb = new StatusPane();
    sb.camera = uiCamera;
    sb.setSize(uiCamera.width, 0);
    add(sb);
    toolbar = new Toolbar();
    toolbar.camera = uiCamera;
    toolbar.setRect(0, uiCamera.height - toolbar.height(), uiCamera.width, toolbar.height());
    add(toolbar);
    AttackIndicator attack = new AttackIndicator();
    attack.camera = uiCamera;
    attack.setPos(uiCamera.width - attack.width(), toolbar.top() - attack.height());
    add(attack);
    log = new GameLog();
    log.camera = uiCamera;
    log.setRect(0, toolbar.top(), attack.left(), 0);
    add(log);
    busy = new BusyIndicator();
    busy.camera = uiCamera;
    busy.x = 1;
    busy.y = sb.bottom() + 1;
    add(busy);
    switch(InterlevelScene.mode) {
        case RESURRECT:
            WandOfBlink.appear(Dungeon.hero, Dungeon.level.entrance);
            new Flare(8, 32).color(0xFFFF66, true).show(hero, 2f);
            break;
        case RETURN:
            WandOfBlink.appear(Dungeon.hero, Dungeon.hero.pos);
            break;
        case FALL:
            Chasm.heroLand();
            break;
        case DESCEND:
            switch(Dungeon.depth) {
                case 1:
                    WndStory.showChapter(WndStory.ID_SEWERS);
                    break;
                case 6:
                    WndStory.showChapter(WndStory.ID_PRISON);
                    break;
                case 11:
                    WndStory.showChapter(WndStory.ID_CAVES);
                    break;
                case 16:
                    WndStory.showChapter(WndStory.ID_METROPOLIS);
                    break;
                case 22:
                    WndStory.showChapter(WndStory.ID_HALLS);
                    break;
            }
            if (Dungeon.hero.isAlive() && Dungeon.depth != 22) {
                Badges.validateNoKilling();
            }
            break;
        default:
    }
    ArrayList<Item> dropped = Dungeon.droppedItems.get(Dungeon.depth);
    if (dropped != null) {
        for (Item item : dropped) {
            int pos = Dungeon.level.randomRespawnCell();
            if (item instanceof Potion) {
                ((Potion) item).shatter(pos);
            } else if (item instanceof Plant.Seed) {
                Dungeon.level.plant((Plant.Seed) item, pos);
            } else {
                Dungeon.level.drop(item, pos);
            }
        }
        Dungeon.droppedItems.remove(Dungeon.depth);
    }
    Camera.main.target = hero;
    if (InterlevelScene.mode != InterlevelScene.Mode.NONE) {
        if (Dungeon.depth < Statistics.deepestFloor) {
            GLog.h(TXT_WELCOME_BACK, Dungeon.depth);
        } else {
            GLog.h(TXT_WELCOME, Dungeon.depth);
            Sample.INSTANCE.play(Assets.SND_DESCEND);
        }
        switch(Dungeon.level.feeling) {
            case CHASM:
                GLog.w(TXT_CHASM);
                break;
            case WATER:
                GLog.w(TXT_WATER);
                break;
            case GRASS:
                GLog.w(TXT_GRASS);
                break;
            default:
        }
        if (Dungeon.level instanceof RegularLevel && ((RegularLevel) Dungeon.level).secretDoors > Random.IntRange(3, 4)) {
            GLog.w(TXT_SECRETS);
        }
        if (Dungeon.nightMode && !Dungeon.bossLevel()) {
            GLog.w(TXT_NIGHT_MODE);
        }
        InterlevelScene.mode = InterlevelScene.Mode.NONE;
        fadeIn();
    }
}
Also used : Group(com.watabou.noosa.Group) Mob(com.watabou.pixeldungeon.actors.mobs.Mob) FogOfWar(com.watabou.pixeldungeon.FogOfWar) Blob(com.watabou.pixeldungeon.actors.blobs.Blob) StatusPane(com.watabou.pixeldungeon.ui.StatusPane) Flare(com.watabou.pixeldungeon.effects.Flare) Potion(com.watabou.pixeldungeon.items.potions.Potion) AttackIndicator(com.watabou.pixeldungeon.ui.AttackIndicator) DungeonTilemap(com.watabou.pixeldungeon.DungeonTilemap) Item(com.watabou.pixeldungeon.items.Item) Plant(com.watabou.pixeldungeon.plants.Plant) HealthIndicator(com.watabou.pixeldungeon.ui.HealthIndicator) BusyIndicator(com.watabou.pixeldungeon.ui.BusyIndicator) SkinnedBlock(com.watabou.noosa.SkinnedBlock) HeroSprite(com.watabou.pixeldungeon.sprites.HeroSprite) GameLog(com.watabou.pixeldungeon.ui.GameLog) Toolbar(com.watabou.pixeldungeon.ui.Toolbar) RegularLevel(com.watabou.pixeldungeon.levels.RegularLevel)

Aggregations

Mob (com.watabou.pixeldungeon.actors.mobs.Mob)29 Heap (com.watabou.pixeldungeon.items.Heap)6 Blob (com.watabou.pixeldungeon.actors.blobs.Blob)4 Flare (com.watabou.pixeldungeon.effects.Flare)3 Plant (com.watabou.pixeldungeon.plants.Plant)3 Char (com.watabou.pixeldungeon.actors.Char)2 HeroClass (com.watabou.pixeldungeon.actors.hero.HeroClass)2 Item (com.watabou.pixeldungeon.items.Item)2 HeroSprite (com.watabou.pixeldungeon.sprites.HeroSprite)2 Point (com.watabou.utils.Point)2 ArrayList (java.util.ArrayList)2 Group (com.watabou.noosa.Group)1 SkinnedBlock (com.watabou.noosa.SkinnedBlock)1 AlphaTweener (com.watabou.noosa.tweeners.AlphaTweener)1 DungeonTilemap (com.watabou.pixeldungeon.DungeonTilemap)1 FogOfWar (com.watabou.pixeldungeon.FogOfWar)1 Actor (com.watabou.pixeldungeon.actors.Actor)1 Awareness (com.watabou.pixeldungeon.actors.buffs.Awareness)1 Blindness (com.watabou.pixeldungeon.actors.buffs.Blindness)1 Buff (com.watabou.pixeldungeon.actors.buffs.Buff)1