public final void succeed(final MapleCharacter c) {
        final MapleQuestStatus record = c.getQuestNAdd(MapleQuest.getInstance(type == -1 ? 7662 : 7760));
        String data = record.getCustomData();
        if (data == null) {
            record.setCustomData("0");
            data = record.getCustomData();
        }
        final int mons = Integer.parseInt(data);
        final int tk = kill + cool;
        record.setCustomData(String.valueOf(mons + tk));
        byte rank = 4;
        if (type == -1) {
            if (tk >= 2000) {
                rank = 0;
            } else if (tk >= 1500 && tk <= 1999) {
                rank = 1;
            } else if (tk >= 1000 && tk <= 1499) {
                rank = 2;
            } else if (tk >= 500 && tk <= 999) {
                rank = 3;
            }
        } else {
            if (tk >= 3000) {
                rank = 0;
            } else if (tk >= 2000 && tk <= 2999) {
                rank = 1;
            } else if (tk >= 1500 && tk <= 1999) {
                rank = 2;
            } else if (tk >= 500 && tk <= 1499) {
                rank = 3;
            }
        }

        int pt = 0;
        switch (type) {
            case 0:
                switch (rank) {
                    case 0:
                        pt = 30500;
                        break;
                    case 1:
                        pt = 25000;
                        break;
                    case 2:
                        pt = 21750;
                        break;
                    case 3:
                        pt = 12000;
                        break;
                }
                break;
            case 1:
                switch (rank) {
                    case 0:
                        pt = 36000;
                        break;
                    case 1:
                        pt = 30000;
                        break;
                    case 2:
                        pt = 25750;
                        break;
                    case 3:
                        pt = 13000;
                        break;
                }
                break;
            case 2:
                switch (rank) {
                    case 0:
                        pt = 36500;
                        break;
                    case 1:
                        pt = 35000;
                        break;
                    case 2:
                        pt = 27250;
                        break;
                    case 3:
                        pt = 14000;
                        break;
                }
                break;
            case 3:
                switch (rank) {
                    case 0:
                        pt = 47000;
                        break;
                    case 1:
                        pt = 40000;
                        break;
                    case 2:
                        pt = 29500;
                        break;
                    case 3:
                        pt = 18000;
                        break;
                }
                break;
            default:
                switch (rank) {
                    case 0:
                        pt = 12000;
                        break;
                    case 1:
                        pt = 9000;
                        break;
                    case 2:
                        pt = 5750;
                        break;
                    case 3:
                        pt = 3000;
                        break;
                }
                break;
        }
        int exp = 0;
        if (rank < 4) {
            exp = ((kill + (cool * 5)) + pt) * c.getClient().getChannelServer().getExpRate(c.getWorld());
            c.gainExp(exp, true, false, false);
        }
        c.getTrait(MapleTraitType.will).addExp((type + 2) * 8, c);
        c.getClient().getSession().write(CField.showEffect("killing/clear"));
        c.getClient().getSession().write(CField.sendPyramidResult(rank, exp));
        dispose(c);
    }