Added Combat Master badge code

This commit is contained in:
2019-06-09 16:31:55 +10:00
parent e6d6dbc550
commit efc6e6f150
3 changed files with 31 additions and 5 deletions
+1 -1
View File
@@ -15,7 +15,7 @@
"filename": "combat_master.png",
"description": "You have successfully attacked 100 times.",
"visible": true,
"unlockable": null
"unlockable": true
},
"Gold Horde": {
"filename": "gold_horde.png",
+29 -4
View File
@@ -1,6 +1,9 @@
//environment variables
require('dotenv').config();
//libraries
let CronJob = require('cron').CronJob;
//utilities
let { log } = require('../common/utilities.js');
@@ -93,17 +96,39 @@ const selectActiveBadge = (connection) => (req, res) => {
});
};
const rewardBadge = (connection, id, badgeName) => {
const rewardBadge = (connection, id, badgeName, cb) => {
//TODO: constants as badge/equipment names?
let query = 'INSERT IGNORE badges (accountId, name) VALUES (?, ?);';
connection.query(query, [id, badgeName], (err) => {
let query = 'INSERT INTO badges (accountId, name) SELECT ?, ? FROM DUAL WHERE NOT EXISTS(SELECT 1 FROM badges WHERE accountId = ? AND name = ?) LIMIT 1;';
connection.query(query, [id, badgeName, id, badgeName], (err, packet) => {
if (err) throw err;
if (packet.affectedRows) {
cb(id, badgeName);
}
});
};
const runBadgeTicks = (connection) => {
//Combat Master
let combatMasterBadgeTickJob = new CronJob('0 * * * * *', () => { //once a minute - combats aren't that fast
//gather the total combats
let query = 'SELECT * FROM (SELECT attackerId, COUNT(attackerId) AS successfulAttacks FROM pastCombat WHERE victor = "attacker" GROUP BY attackerId ORDER BY attackerId) AS t WHERE successfulAttacks >= 100;';
connection.query(query, (err, results) => {
if (err) throw err;
for (let i = 0; i < results.length; i++) {
rewardBadge(connection, results[i].attackerId, 'Combat Master', (id, badgeName) => log('Badge rewarded', id, badgeName));
}
});
});
combatMasterBadgeTickJob.start();
}
module.exports = {
listRequest: listRequest,
ownedRequest: ownedRequest,
selectActiveBadge: selectActiveBadge,
rewardBadge: rewardBadge
rewardBadge: rewardBadge,
runBadgeTicks: runBadgeTicks
};
+1
View File
@@ -72,6 +72,7 @@ let badges = require('./badges.js');
app.post('/badgeslistrequest', badges.listRequest(connection));
app.post('/badgesownedrequest', badges.ownedRequest(connection));
app.post('/badgeselectactiverequest', badges.selectActiveBadge(connection));
badges.runBadgeTicks(connection);
//static directories
app.use('/content', express.static(path.resolve(__dirname + '/../public/content')) );