public static boolean warpNextMap(final MapleCharacter c, final boolean fromResting, final MapleMap currentmap) {
        try {
            final int temp = (currentmap.getId() - 925000000) / 100;
            final int thisStage = temp - ((temp / 100) * 100);
            final int points = getDojoPoints(thisStage);
            final ChannelServer ch = c.getClient().getChannelServer();
            final MapleMap deadMap = ch.getMapFactory().getMap(925020002);
            if (!c.isAlive()) { //shouldn't happen
                c.changeMap(deadMap, deadMap.getPortal(0));
                return true;
            }
            final MapleMap map = ch.getMapFactory().getMap(currentmap.getId() + 100);
            if (!fromResting && map != null) {
                clearMap(currentmap, true);
                if (c.getParty() != null && c.getParty().getMembers().size() > 1) {
                    for (MaplePartyCharacter mem : c.getParty().getMembers()) {
                        MapleCharacter chr = currentmap.getCharacterById(mem.getId());
                        if (chr != null) {
                            final int point = (points * 3);
                            c.getTrait(MapleTraitType.will).addExp(points, c);
                            chr.modifyCSPoints(1, point * 4, true);
                            final int dojo = chr.getIntRecord(GameConstants.DOJO) + point;
                            chr.getQuestNAdd(MapleQuest.getInstance(GameConstants.DOJO)).setCustomData(String.valueOf(dojo));
                            //chr.getClient().getSession().write(WvsContext.Mulung_Pts(point, dojo));
                        }
                    }
                } else {
                    final int point = (points * 4);
                    c.getTrait(MapleTraitType.will).addExp(points, c);
                    c.modifyCSPoints(1, point * 4, true);
                    final int dojo = c.getIntRecord(GameConstants.DOJO) + point;
                    c.getQuestNAdd(MapleQuest.getInstance(GameConstants.DOJO)).setCustomData(String.valueOf(dojo));
                    //c.getClient().getSession().write(WvsContext.Mulung_Pts(point, dojo));
                }

            }
            if (currentmap.getId() >= 925023800 && currentmap.getId() <= 925023814) {
                final MapleMap lastMap = ch.getMapFactory().getMap(925020003);

                if (c.getParty() != null && c.getParty().getMembers().size() > 1) {
                    for (MaplePartyCharacter mem : c.getParty().getMembers()) {
                        MapleCharacter chr = currentmap.getCharacterById(mem.getId());
                        if (chr != null) {
                            if (!chr.isAlive()) {
                                chr.addHP(50);
                            }
                            chr.changeMap(lastMap, lastMap.getPortal(1));
                            final int point = (points * 3);
                            c.getTrait(MapleTraitType.will).addExp(points, c);
                            final int dojo = chr.getIntRecord(GameConstants.DOJO) + point;
                            chr.getQuestNAdd(MapleQuest.getInstance(GameConstants.DOJO)).setCustomData(String.valueOf(dojo));
                            //chr.getClient().getSession().write(WvsContext.Mulung_Pts(point, dojo));
                            chr.modifyCSPoints(1, 5000, true);
                        }
                    }
                } else {
                    c.changeMap(lastMap, lastMap.getPortal(1));
                    final int point = (points * 4);
                    c.getTrait(MapleTraitType.will).addExp(points, c);
                    final int dojo = c.getIntRecord(GameConstants.DOJO) + point;
                    c.getQuestNAdd(MapleQuest.getInstance(GameConstants.DOJO)).setCustomData(String.valueOf(dojo));
                    //c.getClient().getSession().write(WvsContext.Mulung_Pts(point, dojo));
                    c.modifyCSPoints(1, currentmap.getCharactersSize() > 1 ? 5000 : 7500, true);
                }
                return true;
            }if (currentmap.getId() == 925020001){//925030100 925020001
//                final MapleMap mappzz = ch.getMapFactory().getMap(925030100);//rooftop
//                c.changeMap(mappzz, mappzz.getPortal(0));
            }else if (currentmap.getId() == 925021100) {//End Normal
                final MapleMap mappzz = ch.getMapFactory().getMap(925020003);//rooftop
                c.changeMap(mappzz, mappzz.getPortal(1));
            }else if (currentmap.getId() == 925032300) {//End Hard
                final MapleMap mappzz = ch.getMapFactory().getMap(925020003);//rooftop
                c.changeMap(mappzz, mappzz.getPortal(1));
                c.getClient().getSession().write(CField.UIPacket.openUI(72));// Dojo ui TODO add points?
            } else {

                //final int nextmapid = 925020000 + ((thisStage + 1) * 100);
                if (map != null && map.getCharactersSize() == 0) {
                    clearMap(map, false);
                    if (c.getParty() != null) {
                        for (MaplePartyCharacter mem : c.getParty().getMembers()) {
                            MapleCharacter chr = currentmap.getCharacterById(mem.getId());
                            if (chr != null) {
                                if (!chr.isAlive()) {
                                    chr.addHP(50);
                                }
                                chr.changeMap(map, map.getPortal(0));
                            }
                        }
                    } else {
                        c.changeMap(map, map.getPortal(0));
                    }
//                    for (int i = 0; i < 2; i++) {
//                        c.updateInfoQuest(7215, "stage=1;type=1;token=3");
//                    }
                    c.updateInfoQuest(7281, "item=0;chk=0;cNum=0;sec=15;stage=" + (thisStage - 1) + ";lBonus=0");
                c.updateInfoQuest(7281, "item=0;chk=0;cNum=0;sec=15;stage=" + (thisStage) + ";lBonus=0");
                c.updateInfoQuest(7214, "15");
                c.updateInfoQuest(7215, "stage=" + (thisStage + 1) + ";type=1;token=3");
                c.updateInfoQuest(7215, "stage=" + (thisStage + 1) + ";type=1;token=3");
                    spawnMonster(map, thisStage + 1);
                    return true;
                } else if (map != null) { //wtf, find a new map
                    int basemap = currentmap.getId() / 100 * 100 + 100;
                    for (int x = 0; x < 10; x++) {
                        MapleMap mapz = ch.getMapFactory().getMap(basemap + x);
                        if (mapz.getCharactersSize() == 0) {
                            clearMap(mapz, false);
                            if (c.getParty() != null) {
                                for (MaplePartyCharacter mem : c.getParty().getMembers()) {
                                    MapleCharacter chr = currentmap.getCharacterById(mem.getId());
                                    if (chr != null) {
                                        if (!chr.isAlive()) {
                                            chr.addHP(50);
                                        }
                                        chr.changeMap(mapz, mapz.getPortal(0));
                                    }
                                }
                            } else {
                                c.changeMap(mapz, mapz.getPortal(0));
                            }
                            for (int i = 0; i < 2; i++) {
                                c.updateInfoQuest(7215, "stage=1;type=1;token=3");
                            }
                            spawnMonster(mapz, thisStage + 1);
                            return true;
                        }
                    }
                }
                final MapleMap mappz = ch.getMapFactory().getMap(925020001);
                if (c.getParty() != null) {
                    for (MaplePartyCharacter mem : c.getParty().getMembers()) {
                        MapleCharacter chr = currentmap.getCharacterById(mem.getId());
                        if (chr != null) {
                            chr.dropMessage(5, "An error has occurred and you shall be brought to the beginning.");
                            chr.changeMap(mappz, mappz.getPortal(0));
                        }
                    }
                } else {
                    c.dropMessage(5, "An error has occurred and you shall be brought to the beginning.");
                    c.changeMap(mappz, mappz.getPortal(0));
                }
            }
        } catch (Exception rm) {
            FileoutputUtil.outputFileError(FileoutputUtil.PacketEx_Log, rm);
        }

        return false;
    }