package scripting.quest;
import client.MapleClient;
import java.awt.Point;
import javax.script.Invocable;
import scripting.ScriptType;
import scripting.npc.NPCConversationManager;
import server.quest.MapleQuest;
import tools.MaplePacketCreator;
public class QuestActionManager extends NPCConversationManager {
private final int quest;
private final boolean start;
private final ScriptType type;
public QuestActionManager(MapleClient c, int npc, int quest, boolean start, ScriptType type, Invocable iv) {
super(c, npc, String.valueOf(quest), type, iv);
this.quest = quest;
this.start = start;
this.type = type;
}
public int getQuest() {
return this.quest;
}
public boolean isStart() {
return this.start;
}
@Override
public void dispose() {
QuestScriptManager.getInstance().dispose(this, getClient());
}
public void forceStartQuest() {
MapleQuest.getInstance(this.quest).forceStart(getPlayer(), getNpc(), null);
}
public void forceStartQuest(String customData) {
MapleQuest.getInstance(this.quest).forceStart(getPlayer(), getNpc(), customData);
}
/**
* 完成任务了
*/
public void forceCompleteQuest() {
MapleQuest.getInstance(this.quest).complete(getPlayer(), getNpc());
}
public String getQuestCustomData() {
return this.c.getPlayer().getQuestNAdd(MapleQuest.getInstance(this.quest)).getCustomData();
}
/**
* 检查是否能够完成任务
* @return
*/
public boolean canCompleteQuest(){
if (MapleQuest.getInstance(this.quest).canComplete(getPlayer())) {
return true;
}
return false;
}
public void setQuestCustomData(String customData) {
this.c.getPlayer().getQuestNAdd(MapleQuest.getInstance(this.quest)).setCustomData(customData);
}
public final void spawnNpcForPlayer(final int npcId, final int x, final int y) {
c.getPlayer().getMap().spawnNpcForPlayer(c, npcId, new Point(x, y));
}
public void showCompleteQuestEffect() {
this.c.getPlayer().getClient().getSession().write(MaplePacketCreator.showSpecialEffect(0x0E));
this.c.getPlayer().getMap().broadcastMessage(this.c.getPlayer(), MaplePacketCreator.showSpecialEffect(this.c.getPlayer().getId(), 0x0E), false);
}
}