Added Combat Master badge code
This commit is contained in:
@@ -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
@@ -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
|
||||
};
|
||||
@@ -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')) );
|
||||
|
||||
Reference in New Issue
Block a user