@Override
  public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) {
    QuestState st = getQuestState(player, false);
    if (st == null) {
      return getNoQuestMsg(player);
    }

    if (Util.isDigit(event)) {
      int i = Integer.valueOf(event);
      final ClassId cid = player.getClassId();
      if ((cid.getRace() == Race.DARK_ELF) && (cid.getId() == CLASSES[i][1])) {
        int suffix;
        final boolean item = st.hasQuestItems(CLASSES[i][6]);
        if (player.getLevel() < 20) {
          suffix = (!item) ? CLASSES[i][2] : CLASSES[i][3];
        } else {
          if (!item) {
            suffix = CLASSES[i][4];
          } else {
            suffix = CLASSES[i][5];
            st.giveItems(SHADOW_WEAPON_COUPON_DGRADE, 15);
            st.takeItems(CLASSES[i][6], -1);
            player.setClassId(CLASSES[i][0]);
            player.setBaseClass(CLASSES[i][0]);
            st.playSound(QuestSound.ITEMSOUND_QUEST_FANFARE_2);
            player.broadcastUserInfo();
            st.exitQuest(false);
          }
        }
        event = npc.getId() + "-" + suffix + ".html";
      }
    }
    return event;
  }
 private String ClassChangeRequested(L2PcInstance player, int classId) {
   String htmltext = null;
   if (player.isInCategory(CategoryType.THIRD_CLASS_GROUP)) {
     htmltext = "30115-21.htm"; // fnYouAreThirdClass
   } else if ((classId == SORCERER) && (player.getClassId() == ClassId.wizard)) {
     if (player.getLevel() < 40) {
       if (hasQuestItems(player, MARK_OF_SCHOLAR, MARK_OF_TRUST, MARK_OF_MAGUS)) {
         htmltext = "30115-22.htm"; // fnLowLevel11
       } else {
         htmltext = "30115-23.htm"; // fnLowLevelNoProof11
       }
     } else if (hasQuestItems(player, MARK_OF_SCHOLAR, MARK_OF_TRUST, MARK_OF_MAGUS)) {
       takeItems(player, -1, MARK_OF_SCHOLAR, MARK_OF_TRUST, MARK_OF_MAGUS);
       player.setClassId(SORCERER);
       player.setBaseClass(SORCERER);
       // SystemMessage and cast skill is done by setClassId
       player.broadcastUserInfo();
       giveItems(player, SHADOW_ITEM_EXCHANGE_COUPON_C_GRADE, 15);
       htmltext = "30115-24.htm"; // fnAfterClassChange11
     } else {
       htmltext = "30115-25.htm"; // fnNoProof11
     }
   } else if ((classId == NECROMANCER) && (player.getClassId() == ClassId.wizard)) {
     if (player.getLevel() < 40) {
       if (hasQuestItems(player, MARK_OF_SCHOLAR, MARK_OF_TRUST, MARK_OF_WITCHCRAFT)) {
         htmltext = "30115-26.htm"; // fnLowLevel12
       } else {
         htmltext = "30115-27.htm"; // fnLowLevelNoProof12
       }
     } else if (hasQuestItems(player, MARK_OF_SCHOLAR, MARK_OF_TRUST, MARK_OF_WITCHCRAFT)) {
       takeItems(player, -1, MARK_OF_SCHOLAR, MARK_OF_TRUST, MARK_OF_WITCHCRAFT);
       player.setClassId(NECROMANCER);
       player.setBaseClass(NECROMANCER);
       // SystemMessage and cast skill is done by setClassId
       player.broadcastUserInfo();
       giveItems(player, SHADOW_ITEM_EXCHANGE_COUPON_C_GRADE, 15);
       htmltext = "30115-28.htm"; // fnAfterClassChange12
     } else {
       htmltext = "30115-29.htm"; // fnNoProof12
     }
   } else if ((classId == WARLOCK) && (player.getClassId() == ClassId.wizard)) {
     if (player.getLevel() < 40) {
       if (hasQuestItems(player, MARK_OF_SCHOLAR, MARK_OF_TRUST, MARK_OF_SUMMONER)) {
         htmltext = "30115-30.htm"; // fnLowLevel13
       } else {
         htmltext = "30115-31.htm"; // fnLowLevelNoProof13
       }
     } else if (hasQuestItems(player, MARK_OF_SCHOLAR, MARK_OF_TRUST, MARK_OF_SUMMONER)) {
       takeItems(player, -1, MARK_OF_SCHOLAR, MARK_OF_TRUST, MARK_OF_SUMMONER);
       player.setClassId(WARLOCK);
       player.setBaseClass(WARLOCK);
       // SystemMessage and cast skill is done by setClassId
       player.broadcastUserInfo();
       giveItems(player, SHADOW_ITEM_EXCHANGE_COUPON_C_GRADE, 15);
       htmltext = "30115-32.htm"; // fnAfterClassChange13
     } else {
       htmltext = "30115-33.htm"; // fnNoProof13
     }
   } else if ((classId == SPELLSINGER) && (player.getClassId() == ClassId.elvenWizard)) {
     if (player.getLevel() < 40) {
       if (hasQuestItems(player, MARK_OF_SCHOLAR, MARK_OF_LIFE, MARK_OF_MAGUS)) {
         htmltext = "30115-34.htm"; // fnLowLevel21
       } else {
         htmltext = "30115-35.htm"; // fnLowLevelNoProof21
       }
     } else if (hasQuestItems(player, MARK_OF_SCHOLAR, MARK_OF_LIFE, MARK_OF_MAGUS)) {
       takeItems(player, -1, MARK_OF_SCHOLAR, MARK_OF_LIFE, MARK_OF_MAGUS);
       player.setClassId(SPELLSINGER);
       player.setBaseClass(SPELLSINGER);
       // SystemMessage and cast skill is done by setClassId
       player.broadcastUserInfo();
       giveItems(player, SHADOW_ITEM_EXCHANGE_COUPON_C_GRADE, 15);
       htmltext = "30115-36.htm"; // fnAfterClassChange21
     } else {
       htmltext = "30115-37.htm"; // fnNoProof21
     }
   } else if ((classId == ELEMENTAL_SUMMONER) && (player.getClassId() == ClassId.elvenWizard)) {
     if (player.getLevel() < 40) {
       if (hasQuestItems(player, MARK_OF_SCHOLAR, MARK_OF_LIFE, MARK_OF_SUMMONER)) {
         htmltext = "30115-38.htm"; // fnLowLevel22
       } else {
         htmltext = "30115-39.htm"; // fnLowLevelNoProof22
       }
     } else if (hasQuestItems(player, MARK_OF_SCHOLAR, MARK_OF_LIFE, MARK_OF_SUMMONER)) {
       takeItems(player, -1, MARK_OF_SCHOLAR, MARK_OF_LIFE, MARK_OF_SUMMONER);
       player.setClassId(ELEMENTAL_SUMMONER);
       player.setBaseClass(ELEMENTAL_SUMMONER);
       // SystemMessage and cast skill is done by setClassId
       player.broadcastUserInfo();
       giveItems(player, SHADOW_ITEM_EXCHANGE_COUPON_C_GRADE, 15);
       htmltext = "30115-40.htm"; // fnAfterClassChange22
     } else {
       htmltext = "30115-41.htm"; // fnNoProof22
     }
   }
   return htmltext;
 }