This commit is contained in:
112
api/routes/resistances.js
Normal file
112
api/routes/resistances.js
Normal file
@ -0,0 +1,112 @@
|
||||
export const get = async (req, res) => {
|
||||
let mainStat = Number(req.query.mainStat);
|
||||
let upgrades = Number(req.query.upgrades);
|
||||
let subStat = Number(req.query.subStat);
|
||||
|
||||
if (isNaN(mainStat) || isNaN(upgrades) || isNaN(subStat)) {
|
||||
return res.status(400).json({
|
||||
error: "mainStat, upgrades, and subStat must be numbers",
|
||||
});
|
||||
}
|
||||
|
||||
let resistances;
|
||||
try {
|
||||
resistances = JSON.parse(req.query.resistances);
|
||||
} catch (err) {
|
||||
return res
|
||||
.status(400)
|
||||
.json({ error: "resistances must be a valid JSON array" });
|
||||
}
|
||||
|
||||
if (!Array.isArray(resistances) || resistances.length !== 4) {
|
||||
return res
|
||||
.status(400)
|
||||
.json({ error: "resistances must be an array of 4 elements" });
|
||||
}
|
||||
|
||||
for (let i = 0; i < 3; i++) {
|
||||
if (typeof resistances[i] !== "number") {
|
||||
return res
|
||||
.status(400)
|
||||
.json({ error: `resistances[${i}] must be a number` });
|
||||
}
|
||||
}
|
||||
if (resistances[3] !== null && typeof resistances[3] !== "number") {
|
||||
return res
|
||||
.status(400)
|
||||
.json({ error: "resistances[3] must be a number or null" });
|
||||
}
|
||||
upgrades = upgrades - 1;
|
||||
let resUpgrades = 0;
|
||||
resistances.forEach((res) => {
|
||||
if (res == null) return;
|
||||
if (res > 29)
|
||||
return message.channel.send(
|
||||
"Please provide a number less than 29 for resistances."
|
||||
);
|
||||
if (res < 29) {
|
||||
if (res < 0) {
|
||||
let underzero = Math.abs(res);
|
||||
if (underzero < 13) {
|
||||
resUpgrades += 23 + Math.abs(res);
|
||||
} else {
|
||||
if (underzero == 13 || underzero == 14) {
|
||||
resUpgrades += 23 + 13;
|
||||
}
|
||||
if (underzero == 15 || underzero == 16) {
|
||||
resUpgrades += 23 + 13 + 1;
|
||||
}
|
||||
if (underzero == 17 || underzero == 18) {
|
||||
resUpgrades += 23 + 13 + 2;
|
||||
}
|
||||
if (underzero == 19 || underzero == 20 || underzero == 22) {
|
||||
resUpgrades += 23 + 13 + 3;
|
||||
}
|
||||
if (underzero == 21 || underzero == 23) {
|
||||
resUpgrades += 23 + 13 + 4;
|
||||
}
|
||||
if (underzero > 23) {
|
||||
resUpgrades += 29 - underzero;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (res < 14) {
|
||||
let am = 14 - res;
|
||||
resUpgrades += am + 4 + 6;
|
||||
} else {
|
||||
if (res == 14) {
|
||||
resUpgrades += 4 + 6;
|
||||
}
|
||||
if (res == 15 || res == 16) {
|
||||
resUpgrades += 3 + 6;
|
||||
}
|
||||
if (res == 17 || res == 18) {
|
||||
resUpgrades += 2 + 6;
|
||||
}
|
||||
if (res == 19 || res == 20 || res == 22) {
|
||||
resUpgrades += 1 + 6;
|
||||
}
|
||||
if (res == 21 || res == 23) {
|
||||
resUpgrades += 6;
|
||||
}
|
||||
if (res > 23) {
|
||||
resUpgrades += 29 - res;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
upgrades -= resUpgrades;
|
||||
mainStat += upgrades;
|
||||
if (mainStat > 999) {
|
||||
let over = mainStat - 999;
|
||||
mainStat -= over;
|
||||
subStat += over;
|
||||
}
|
||||
res.json({
|
||||
resUpgrades,
|
||||
mainStat,
|
||||
subStat,
|
||||
bonus: Math.ceil(mainStat * 1.4 + subStat * 1.4),
|
||||
});
|
||||
};
|
Reference in New Issue
Block a user