diff --git a/ADAM/adam.js b/ADAM/adam.js index d59f584..3301e6d 100644 --- a/ADAM/adam.js +++ b/ADAM/adam.js @@ -140,7 +140,7 @@ function processBasicCommands(client, message) { return true; case "wallet": //DEBUGGING - shared.OnServerData("account", (amount) => { + shared.OnServerData("wallet", (amount) => { shared.SendPublicMessage(client, message.channel, "Wallet: " + amount); }, message.author.id); return true; diff --git a/ADAM/core.js b/ADAM/core.js index c0681bd..f1a9e81 100644 --- a/ADAM/core.js +++ b/ADAM/core.js @@ -135,7 +135,7 @@ exports.ProcessGiveCommand = function(client, message, args, dialog) { dataRequest.OnServerData("transfer", handleResponse, message.author.id, targetMember.id, amount); } - dataRequest.OnServerData("account", handleResponse, message.author.id); + dataRequest.OnServerData("wallet", handleResponse, message.author.id); } //ProcessStatsCommand @@ -182,9 +182,9 @@ exports.PrintStats = function(client, member, channel, stats) { // Forms stats into a string let levelText = `:level: **${stats.level}**`; //NOTE: I don't like backticks - let levelProgress = `(${stats.levelPercent}%)`; + let levelProgress = `(${stats.levelProgress}%)`; let crystalText = `:crystals: **${stats.wallet}**`; - let cannisterText = `:cannister: **${stats.statPoints}**`; + let cannisterText = `:cannister: **${stats.upgradePoints}**`; let userStats = "```" + `STR: ${stats.strength} | SPD: ${stats.speed} | STAM: ${stats.stamina}/${stats.maxStamina} | HP: ${stats.health}/${stats.maxHealth}` + "```"; // Says level is maxed out if it is LVL 30+ @@ -222,13 +222,13 @@ exports.HandleLevelUp = function(client, member, channel, dialog) { } // Sees if the user is supposed to level up - let handleResponse = function(response, level, statPoints) { + let handleResponse = function(response, level, upgradePoints) { //handle levelling up if (response === "levelUp" || response === "RankUp") { if (level >= process.env.RANK_3_THRESHOLD) { shared.SendPublicMessage(client, member.user, channel, dialog("levelUpCap", dialog("levelUpCapRemark"), level)); } else { - shared.SendPublicMessage(client, member.user, channel, dialog("LevelUp", dialog("levelUpRemark"), level, statPoints)); + shared.SendPublicMessage(client, member.user, channel, dialog("LevelUp", dialog("levelUpRemark"), level, upgradePoints)); } } } diff --git a/SERVER_City/city.js b/SERVER_City/city.js index 7c0f95d..ac7e962 100644 --- a/SERVER_City/city.js +++ b/SERVER_City/city.js @@ -45,7 +45,7 @@ io.on("connection", async (socket) => { socket.on("updateStamina", handleUpdateStamina); socket.on("conversion", handleConversion); socket.on("checkin", handleCheckin); - socket.on("account", handleAccount); + socket.on("wallet", handleWallet); socket.on("transfer", handleTransfer); socket.on("userStats", handleUserStats); socket.on("addXP", handleAddXP); @@ -144,7 +144,7 @@ async function handleCheckin({ data }, fn) { } //handle account requests -async function handleAccount({ data }, fn) { +async function handleWallet({ data }, fn) { //data[0] = ID of the person to check let query = `SELECT wallet FROM users WHERE userID='${data[0]}' LIMIT 1;`; @@ -206,24 +206,29 @@ async function handleUserStats({ data }, fn) { console.log("received a userStats request..."); //data[0] = user ID - //NOTE: build a temporary structure to pass back - let stats = { - strength: 0, - speed: 0, - stamina: 0, - health: 0, - maxStamina: 0, - maxHealth: 0, - wallet: 0, - experience: 0, - level: 0, - levelPercent: 0, - statPoints: 0 - }; + //parameters to fn: stat structure - if (fn) { - fn(stats); - } + let query = `SELECT level, experience, maxHealth, health, maxStamina, stamina, strength, speed, upgradePoints, wallet FROM users WHERE userID='${data[0]}' LIMIT 1;`; + return dbConnection.query(query, (err, result) => { + if (err) throw err; + + let stats = { + level: result[0].level, + experience: result[0].experience, + levelProgress: calculateLevelProgress(result[0].experience), + maxHealth: result[0].maxHealth, + health: result[0].health, + maxStamina: result[0].maxStamina, + stamina: result[0].stamina, + strength: result[0].strength, + speed: result[0].speed, + upgradePoints: result[0].upgradePoints, + wallet: result[0].wallet + }; + + //TODO: log this + return fn(stats); + }); } //DEBUGGING? @@ -243,3 +248,18 @@ async function handleLevelUp({ data }, fn) { fn("none", 0, 0); //["none", "levelUp"], level, statPoints } } + +//utility functions +function calculateLevel(experience) { + const levelBase = 1.2; + return levelBase * Math.sqrt(experience); +} + +function calculateLevelProgress(experience) { + let level = calculateLevel(experience); + + let base = Math.floor(level); + let decimal = level - base; + + return Math.floor(decimal * 100); //percentage +} \ No newline at end of file