42 lines
1.6 KiB
JavaScript
42 lines
1.6 KiB
JavaScript
const QuestRemovalPacket = require("../Packets/QuestRemoval");
|
|
const QuestAddedPacket = require("../Packets/QuestAdded");
|
|
|
|
const quests = require("../Data/quests");
|
|
|
|
module.exports = async function (ws, message, player) {
|
|
const questID = message.getUint16(1);
|
|
const questScheme = quests[questID - 1];
|
|
if (!questScheme) return;
|
|
|
|
const isLevelInRange = questScheme.minimumLevel <= player.pirateLevel && questScheme.maximumLevel >= player.pirateLevel;
|
|
// if (!isLevelInRange) return console.info("in range");
|
|
|
|
if (player.quests.has(questID)) {
|
|
const questDisableQuery = await execute("INSERT INTO quests (playerID, questID) VALUES (?, ?) ON DUPLICATE KEY UPDATE state = ?", [player.id, questID, 1]);
|
|
if (!questDisableQuery.data) return;
|
|
|
|
const questRemoval = {
|
|
questID,
|
|
isSuccessful: false
|
|
};
|
|
|
|
const questRemovalPacket = QuestRemovalPacket(questRemoval);
|
|
player.map.registerIndividualNetworkPacket(player.id, questRemovalPacket);
|
|
console.info("quest removed")
|
|
return player.quests.remove(questID);
|
|
};
|
|
|
|
const quest = player.quests.add(questID);
|
|
if (!quest) return;
|
|
|
|
const questEnableQuery = await execute("INSERT INTO quests (playerID, questID) VALUES (?, ?) ON DUPLICATE KEY UPDATE state = ?", [player.id, questID, 0]);
|
|
if (!questEnableQuery.data) return;
|
|
|
|
const questAdded = {
|
|
questID
|
|
};
|
|
|
|
const questAddedPacket = QuestAddedPacket(questAdded);
|
|
player.map.registerIndividualNetworkPacket(player.id, questAddedPacket);
|
|
console.info("quest added", questAdded);
|
|
}; |