package net.server.channel.handlers; import client.Character; import client.Character.DelayedQuestUpdate; import client.Client; import client.QuestStatus; import net.AbstractPacketHandler; import net.packet.InPacket; import scripting.quest.QuestScriptManager; import server.quest.Quest; /** * @author Xari */ public class RaiseUIStateHandler extends AbstractPacketHandler { @Override public final void handlePacket(InPacket p, Client c) { int infoNumber = p.readShort(); if (c.tryacquireClient()) { try { Character chr = c.getPlayer(); Quest quest = Quest.getInstanceFromInfoNumber(infoNumber); QuestStatus mqs = chr.getQuest(quest); QuestScriptManager.getInstance().raiseOpen(c, (short) infoNumber, mqs.getNpc()); if (mqs.getStatus() == QuestStatus.Status.NOT_STARTED) { quest.forceStart(chr, 22000); c.getAbstractPlayerInteraction().setQuestProgress(quest.getId(), infoNumber, 0); } else if (mqs.getStatus() == QuestStatus.Status.STARTED) { chr.announceUpdateQuest(DelayedQuestUpdate.UPDATE, mqs, mqs.getInfoNumber() > 0); } } finally { c.releaseClient(); } } } }