Implemented upgrades

This commit is contained in:
2018-11-05 22:20:56 +11:00
parent 8077d260da
commit fef937da78
3 changed files with 83 additions and 5 deletions

View File

@@ -46,7 +46,7 @@ io.on("connection", async (socket) => {
socket.on("updateStamina", handleUpdateStamina);
socket.on("conversion", handleConversion);
socket.on("checkin", handleCheckin);
socket.on("wallet", handleWallet); //TODO: server ping from ADAM
socket.on("wallet", handleWallet);
socket.on("transfer", handleTransfer);
socket.on("userStats", handleUserStats);
socket.on("addXP", handleAddXP);
@@ -54,6 +54,7 @@ io.on("connection", async (socket) => {
socket.on("reviveAll", handleReviveAll);
socket.on("revive", handleRevive);
socket.on("heal", handleHeal);
socket.on("upgrade", handleUpgrade);
});
//listen
@@ -390,6 +391,48 @@ function innerHeal(data, fn, result, logType = "unknown") {
});
}
async function handleUpgrade({ data }, fn) {
console.log("received an upgrade request...");
//data[0] = user ID
//data[1] = statToUpgrade
//fn parameters: ["upgradeSuccess", "upgradeFailure", "upgradeNotEnoughPoints"], suffix
//check the upgrade points
let query = "SELECT upgradePoints FROM users WHERE userID = ? LIMIT 1;";
return dbConnection.query(query, [data[0]], (err, result) => {
if (err) throw err;
if (result[0].upgradePoints == 0) {
return fn("upgradeNotEnoughPoints");
}
//determine the upgrade query
let query = "UPDATE users SET ";
switch(data[1]) {
case "strength":
query += "strength = strength + 1, ";
break;
case "speed":
query += "speed = speed + 1, ";
break;
case "stamina":
query += "maxStamina = maxStamina + 1, stamina = stamina + 1, ";
break;
case "health":
query += "maxHealth = maxHealth + 10, health = health + 10, ";
break;
}
query += "upgradePoints = upgradePoints - 1 WHERE userID = ? LIMIT 1;";
return dbConnection.query(query, data[0], (err, result) => {
if (err) throw err;
dbLog(data[0], "upgrade", "upgrade " + data[1]);//TODO: better log
return fn("upgradeSuccess", data[1] === "health" ? "10 points" : "1 point");
});
});
}
//utility functions
function calculateLevel(experience) {
const levelBase = 1.2;