BUGFIX: train, untrain, purchase, sell while spying

This commit is contained in:
2019-06-06 06:44:16 +10:00
parent 29da939815
commit 92385bb72d
3 changed files with 236 additions and 192 deletions
+4
View File
@@ -24,8 +24,12 @@ let excluded = [ //messages that should not be logged
'Can\'t train while attacking', 'Can\'t train while attacking',
'Can\'t untrain while attacking', 'Can\'t untrain while attacking',
'Can\'t train while spying',
'Can\'t untrain while spying',
'Can\'t purchase while attacking', 'Can\'t purchase while attacking',
'Can\'t sell while attacking', 'Can\'t sell while attacking',
'Can\'t purchase while spying',
'Can\'t sell while spying',
'Purchase made', 'Purchase made',
'Sale made', 'Sale made',
+22 -2
View File
@@ -4,7 +4,7 @@ require('dotenv').config();
//utilities //utilities
let { log } = require('../common/utilities.js'); let { log } = require('../common/utilities.js');
let { getStatistics, getOwned, isAttacking } = require('./utilities.js'); let { getStatistics, getOwned, isAttacking, isSpying } = require('./utilities.js');
const equipmentRequest = (connection) => (req, res) => { const equipmentRequest = (connection) => (req, res) => {
//validate the credentials //validate the credentials
@@ -95,6 +95,15 @@ const purchaseRequest = (connection) => (req, res) => {
return; return;
} }
isSpying(connection, req.body.id, (err, spying) => {
if (err) throw err;
if (spying) {
res.status(400).write(log('Can\'t purchase while spying', req.body.id, req.body. token, req.body.type, req.body.name));
res.end();
return;
}
//get the player's gold //get the player's gold
let query = 'SELECT gold, scientists FROM profiles WHERE accountId = ?;'; let query = 'SELECT gold, scientists FROM profiles WHERE accountId = ?;';
connection.query(query, [req.body.id], (err, results) => { connection.query(query, [req.body.id], (err, results) => {
@@ -178,6 +187,7 @@ const purchaseRequest = (connection) => (req, res) => {
}); });
}); });
}); });
});
} }
const sellRequest = (connection) => (req, res) => { const sellRequest = (connection) => (req, res) => {
@@ -202,6 +212,15 @@ const sellRequest = (connection) => (req, res) => {
return; return;
} }
isSpying(connection, req.body.id, (err, spying) => {
if (err) throw err;
if (spying) {
res.status(400).write(log('Can\'t sell while spying', req.body.id, req.body. token, req.body.type, req.body.name));
res.end();
return;
}
//get the player's item quantity //get the player's item quantity
let query = 'SELECT * FROM equipment WHERE accountId = ? AND type = ? AND name = ?;'; let query = 'SELECT * FROM equipment WHERE accountId = ? AND type = ? AND name = ?;';
connection.query(query, [req.body.id, req.body.type, req.body.name], (err, results) => { connection.query(query, [req.body.id, req.body.type, req.body.name], (err, results) => {
@@ -260,7 +279,8 @@ const sellRequest = (connection) => (req, res) => {
log('Cleaned database', 'equipment sale'); log('Cleaned database', 'equipment sale');
}); });
}); });
}) });
});
}); });
}); });
}); });
+21 -1
View File
@@ -4,7 +4,7 @@ require('dotenv').config();
//libraries //libraries
let CronJob = require('cron').CronJob; let CronJob = require('cron').CronJob;
let { isAttacking } = require('./utilities.js'); let { isAttacking, isSpying } = require('./utilities.js');
//utilities //utilities
let { logDiagnostics } = require('./diagnostics.js'); let { logDiagnostics } = require('./diagnostics.js');
@@ -189,6 +189,15 @@ const trainRequest = (connection) => (req, res) => {
return; return;
} }
isSpying(connection, req.body.id, (err, spying) => {
if (err) throw err;
if (spying) {
res.status(400).write(log('Can\'t train while spying', req.body.id));
res.end();
return;
}
//determine the cost of the training TODO: make these global for the client too //determine the cost of the training TODO: make these global for the client too
let cost = 0; let cost = 0;
switch(req.body.role) { switch(req.body.role) {
@@ -255,6 +264,7 @@ const trainRequest = (connection) => (req, res) => {
}); });
}); });
}); });
});
}; };
const untrainRequest = (connection) => (req, res) => { const untrainRequest = (connection) => (req, res) => {
@@ -286,6 +296,15 @@ const untrainRequest = (connection) => (req, res) => {
return; return;
} }
isSpying(connection, req.body.id, (err, spying) => {
if (err) throw err;
if (spying) {
res.status(400).write(log('Can\'t untrain while spying', req.body.id, req.body.token));
res.end();
return;
}
//verify that the user has a high enough balance //verify that the user has a high enough balance
let query = 'SELECT soldiers, spies, scientists FROM profiles WHERE accountId = ?;'; let query = 'SELECT soldiers, spies, scientists FROM profiles WHERE accountId = ?;';
connection.query(query, [req.body.id], (err, results) => { connection.query(query, [req.body.id], (err, results) => {
@@ -357,6 +376,7 @@ const untrainRequest = (connection) => (req, res) => {
}); });
}); });
}); });
});
}; };
const ladderRequest = (connection) => (req, res) => { const ladderRequest = (connection) => (req, res) => {