public final void commenceTimerNextMap(final MapleCharacter c, final int stage) {
        if (timerSchedule != null) {
            timerSchedule.cancel(false);
            timerSchedule = null;
        }
        final MapleMap ourMap = c.getMap();
        final int time = (type == -1 ? 180 : (stage == 1 ? 240 : 300)) - 1;
        energybar = 100;
        bar = 0;
        if (c.getParty() != null && c.getParty().getMembers().size() > 1) {
            for (MaplePartyCharacter mpc : c.getParty().getMembers()) {
                final MapleCharacter chr = ourMap.getCharacterById(mpc.getId());
                if (chr != null) {
                    chr.getClient().getSession().write(CField.getClock(time));
                    chr.getClient().getSession().write(CField.showEffect("killing/first/number/" + stage));
                    chr.getClient().getSession().write(CField.showEffect("killing/first/stage"));
                    chr.getClient().getSession().write(CField.showEffect("killing/first/start"));
                    fullUpdate(chr, stage);
                }
            }
        } else {
            c.getClient().getSession().write(CField.getClock(time));
            c.getClient().getSession().write(CField.showEffect("killing/first/number/" + stage));
            c.getClient().getSession().write(CField.showEffect("killing/first/stage"));
            c.getClient().getSession().write(CField.showEffect("killing/first/start"));
            fullUpdate(c, stage);
        }
        if (type != -1 && (stage == 4 || stage == 5)) { //yetis. temporary
            for (int i = 0; i < (stage == 4 ? 1 : 2); i++) {
		//9700023 = 90 secs removeAfter -> real yeti
                //real yeti -> 9700022 when killed -> 15 secs removeAfter -> real yeti
                ourMap.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(9700023), c.getPosition());
            }
        }
        timerSchedule = MapTimer.getInstance().schedule(new Runnable() {

            @Override
            public void run() {
                boolean ret = false;
                if (type == -1) {
                    ret = warpNextMap_Subway(c);
                } else {
                    ret = warpNextMap_Pyramid(c, type);
                }
                if (!ret) {
                    fail(c);
                }
            }
        }, time * 1000L);
    }