private void checkDialog(Player player) { int npcId = getNpcId(); List<Integer> relatedQuests = QuestEngine.getInstance().getQuestNpc(npcId).getOnTalkEvent(); boolean playerHasQuest = false; boolean playerCanStartQuest = false; if (!relatedQuests.isEmpty()) { for (int questId : relatedQuests) { QuestState qs = player.getQuestStateList().getQuestState(questId); if (qs != null && (qs.getStatus() == QuestStatus.START || qs.getStatus() == QuestStatus.REWARD)) { playerHasQuest = true; break; } else if (qs == null || qs.getStatus() == QuestStatus.NONE || qs.canRepeat()) { if (QuestService.checkStartConditions( new QuestEnv(getOwner(), player, questId, 0), true)) { playerCanStartQuest = true; continue; } } } } if (playerHasQuest) { boolean isRewardStep = false; for (int questId : relatedQuests) { QuestState qs = player.getQuestStateList().getQuestState(questId); if (qs != null && qs.getStatus() == QuestStatus.REWARD) { PacketSendUtility.sendPacket( player, new SM_DIALOG_WINDOW(getObjectId(), rewardDialogId, questId)); isRewardStep = true; break; } } if (!isRewardStep) { PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(getObjectId(), questDialogId)); } } else if (playerCanStartQuest) { PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(getObjectId(), startingDialogId)); } else { PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(getObjectId(), 1011, 0)); } }