Added Combat Master badge code
This commit is contained in:
@@ -15,7 +15,7 @@
|
|||||||
"filename": "combat_master.png",
|
"filename": "combat_master.png",
|
||||||
"description": "You have successfully attacked 100 times.",
|
"description": "You have successfully attacked 100 times.",
|
||||||
"visible": true,
|
"visible": true,
|
||||||
"unlockable": null
|
"unlockable": true
|
||||||
},
|
},
|
||||||
"Gold Horde": {
|
"Gold Horde": {
|
||||||
"filename": "gold_horde.png",
|
"filename": "gold_horde.png",
|
||||||
|
|||||||
+29
-4
@@ -1,6 +1,9 @@
|
|||||||
//environment variables
|
//environment variables
|
||||||
require('dotenv').config();
|
require('dotenv').config();
|
||||||
|
|
||||||
|
//libraries
|
||||||
|
let CronJob = require('cron').CronJob;
|
||||||
|
|
||||||
//utilities
|
//utilities
|
||||||
let { log } = require('../common/utilities.js');
|
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?
|
//TODO: constants as badge/equipment names?
|
||||||
let query = 'INSERT IGNORE badges (accountId, name) VALUES (?, ?);';
|
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], (err) => {
|
connection.query(query, [id, badgeName, id, badgeName], (err, packet) => {
|
||||||
if (err) throw err;
|
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 = {
|
module.exports = {
|
||||||
listRequest: listRequest,
|
listRequest: listRequest,
|
||||||
ownedRequest: ownedRequest,
|
ownedRequest: ownedRequest,
|
||||||
selectActiveBadge: selectActiveBadge,
|
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('/badgeslistrequest', badges.listRequest(connection));
|
||||||
app.post('/badgesownedrequest', badges.ownedRequest(connection));
|
app.post('/badgesownedrequest', badges.ownedRequest(connection));
|
||||||
app.post('/badgeselectactiverequest', badges.selectActiveBadge(connection));
|
app.post('/badgeselectactiverequest', badges.selectActiveBadge(connection));
|
||||||
|
badges.runBadgeTicks(connection);
|
||||||
|
|
||||||
//static directories
|
//static directories
|
||||||
app.use('/content', express.static(path.resolve(__dirname + '/../public/content')) );
|
app.use('/content', express.static(path.resolve(__dirname + '/../public/content')) );
|
||||||
|
|||||||
Reference in New Issue
Block a user