Skip to content

Commit

Permalink
Added weapon favoriting
Browse files Browse the repository at this point in the history
  • Loading branch information
ChristopherBThai committed Sep 8, 2023
1 parent 782c141 commit 8716fa8
Show file tree
Hide file tree
Showing 4 changed files with 92 additions and 10 deletions.
2 changes: 1 addition & 1 deletion src/commands/commandList/battle/WeaponInterface.js
Original file line number Diff line number Diff line change
Expand Up @@ -928,7 +928,7 @@ module.exports = class WeaponInterface {
name = `${this.wearName} ${name}`;
}
if (this.hasTakedownTracker) {
name = `${name} [${this.kills}]`;
name = `${name} [${global.toFancyNum(this.kills)}]`;
}
return name;
}
Expand Down
86 changes: 81 additions & 5 deletions src/commands/commandList/battle/util/weaponUtil.js
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,7 @@ let parseWeapon = (exports.parseWeapon = function (data) {
weapon.pid = data.pid;
weapon.animal = data.animal;
weapon.userId = data.userId;
weapon.favorite = !!data.favorite;

return weapon;
});
Expand Down Expand Up @@ -169,6 +170,7 @@ let parseWeaponQuery = (exports.parseWeaponQuery = function (query) {
kills: query[i].kills,
rrAttempt: query[i].rrattempt,
rrCount: query[i].rrcount,
favorite: query[i].favorite,
};
}
if (query[i].wpid) {
Expand Down Expand Up @@ -343,7 +345,7 @@ let getDisplayPage = async function (p, user, page, sort, opt = {}) {
user_weapon_passive.wpid, user_weapon_passive.pcount, user_weapon_passive.stat as pstat,
uwk.uwid as tt, uwk.kills
FROM
(SELECT user_weapon.uwid, user_weapon.wid, user_weapon.stat, user_weapon.rrcount, user_weapon.rrattempt, user_weapon.wear,
(SELECT user_weapon.uwid, user_weapon.wid, user_weapon.stat, user_weapon.rrcount, user_weapon.rrattempt, user_weapon.wear, user_weapon.favorite,
animal.name, animal.nickname
FROM user
INNER JOIN user_weapon ON user.uid = user_weapon.uid
Expand All @@ -360,6 +362,7 @@ let getDisplayPage = async function (p, user, page, sort, opt = {}) {
if (sort === 'rarity') sql += 'user_weapon.avg DESC,';
else if (sort === 'type') sql += 'user_weapon.wid DESC, user_weapon.avg DESC,';
else if (sort === 'equipped') sql += 'user_weapon.pid DESC,';
else if (sort === 'favorite') sql += 'user_weapon.favorite DESC,';

sql += ` user_weapon.uwid DESC
LIMIT ${weaponPerPage}
Expand Down Expand Up @@ -408,12 +411,15 @@ let getDisplayPage = async function (p, user, page, sort, opt = {}) {
if (weapon) {
user_weapons_2.push(weapon);
let row = '';

let emoji = `${weapon.rank.emoji}${weapon.emoji}`;
for (let i = 0; i < weapon.passives.length; i++) {
let passive = weapon.passives[i];
emoji += passive.emoji;
}
row += `\n\`${user_weapons[key].uwid}\` ${emoji} **${weapon.name}** ${weapon.avgQuality}%`;
row += `\n\`${user_weapons[key].uwid}\` ${emoji} ${
weapon.favorite ? p.config.emoji.star : ''
}**${weapon.fullName}** ${weapon.avgQuality}%`;
if (user_weapons[key].animal.name) {
let animal = p.global.validAnimal(user_weapons[key].animal.name);
row += p.replaceMentions(
Expand Down Expand Up @@ -465,6 +471,7 @@ let getDisplayPage = async function (p, user, page, sort, opt = {}) {
else if (sort === 'rarity') embed.footer.text += 'Sorting by rarity';
else if (sort === 'type') embed.footer.text += 'Sorting by type';
else if (sort === 'equipped') embed.footer.text += 'Sorting by equipped';
else if (sort === 'favorite') embed.footer.text += 'Sorting by favorited';

embed = alterWeapon.alter(user.id, embed, {
...opt,
Expand Down Expand Up @@ -492,6 +499,12 @@ function getDisplayComponents(showExtraButtons, sort, widList = []) {
custom_id: 'sort',
placeholder: 'Sort by...',
options: [
{
label: 'Favorite',
value: 'favorite',
description: 'Sorty by favorited weapons',
default: sort === 'favorite',
},
{
label: 'Weapon ID',
value: 'id',
Expand Down Expand Up @@ -666,7 +679,65 @@ exports.describe = async function (p, uwid) {
weapon,
});
}
p.send({ embed });

if (user.id !== p.msg.author.id) {
return p.send({ embed });
}

const components = [
{
type: 1,
components: [
{
type: 2,
label: weapon.favorite ? 'Unfavorite' : 'Favorite',
style: weapon.favorite ? 4 : 3,
custom_id: weapon.favorite ? 'weapon_unfavorite' : 'weapon_favorite',
emoji: {
id: null,
name: p.config.emoji.star,
},
},
],
},
];
const content = { embed, components };

const msg = await p.send(content);

let filter = (componentName, reactionUser) =>
['weapon_favorite', 'weapon_unfavorite'].includes(componentName) &&
[p.msg.author.id].includes(reactionUser.id);
let collector = p.interactionCollector.create(msg, filter, {
time: 900000,
idle: 300000,
});

const uid = await p.global.getUid(user.id);
collector.on('collect', async (component, _reactionMember, ack, _err) => {
if (component === 'weapon_favorite') {
let sql = `UPDATE user_weapon SET favorite = 1 WHERE uwid = ${weapon.ruwid} AND uid = ${uid}`;
await p.query(sql);
content.components[0].components[0].label = 'Unfavorite';
content.components[0].components[0].custom_id = 'weapon_unfavorite';
content.components[0].components[0].style = 4;
ack(content);
} else if (component === 'weapon_unfavorite') {
let sql = `UPDATE user_weapon SET favorite = 0 WHERE uwid = ${weapon.ruwid} AND uid = ${uid}`;
await p.query(sql);
content.components[0].components[0].label = 'Favorite';
content.components[0].components[0].custom_id = 'weapon_favorite';
content.components[0].components[0].style = 3;
ack(content);
}
});

collector.on('end', async (_reason) => {
content.embed.color = 6381923;
content.content = 'This message is now inactive';
content.components[0].components[0].disabled = true;
await msg.edit(content);
});
};

exports.equip = async function (p, uwid, pet) {
Expand Down Expand Up @@ -768,6 +839,11 @@ exports.sell = async function (p, uwid) {
return;
}

if (weapon.favorite) {
p.errorMsg(', unfavorite this weapon to sell!');
return;
}

/* Get weapon price */
let price = prices[weapon.rank.name];
if (!price) {
Expand Down Expand Up @@ -837,7 +913,7 @@ let sellRank = (exports.sellRank = async function (p, rankLoc) {
LEFT JOIN user_weapon_kills c ON a.uwid = c.uwid
WHERE user.id = ${p.msg.author.id} AND avg >${
min === 0 ? '=' : ''
} ${min} AND avg <= ${max} AND a.pid IS NULL LIMIT 500;`;
} ${min} AND avg <= ${max} AND a.pid IS NULL AND a.favorite != 1 LIMIT 500;`;

let result = await p.query(sql);

Expand Down Expand Up @@ -945,7 +1021,7 @@ exports.getWeapon = async function (uwid, id) {
/* sql query */
let sql = `SELECT
user.id,
a.uwid, a.wid, a.stat, a.wear, a.rrcount, a.rrattempt, a.pid,
a.uwid, a.wid, a.stat, a.wear, a.rrcount, a.rrattempt, a.pid, a.favorite,
b.pcount, b.wpid, b.stat as pstat,
c.uwid as tt, c.kills,
d.name, d.nickname
Expand Down
13 changes: 9 additions & 4 deletions src/commands/commandList/battle/weaponshards.js
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ async function dismantleRank(p, rankLoc) {
}
min *= 100;
max *= 100;
let lastRank = rankLoc == WeaponInterface.ranks.length - 1;

/* Grab the item we will sell */
let sql = `SELECT
Expand All @@ -96,9 +97,9 @@ async function dismantleRank(p, rankLoc) {
LEFT JOIN user_weapon a ON user.uid = a.uid
LEFT JOIN user_weapon_passive b ON a.uwid = b.uwid
LEFT JOIN user_weapon_kills c ON a.uwid = c.uwid
WHERE user.id = ${p.msg.author.id} AND avg >${
min === 0 ? '=' : ''
} ${min} AND avg <= ${max} AND a.pid IS NULL LIMIT 500;`;
WHERE user.id = ${p.msg.author.id} AND avg >${min === 0 ? '=' : ''} ${min} ${
lastRank ? '' : `AND avg <= ${max}`
} AND a.pid IS NULL AND a.favorite != 1 LIMIT 500;`;

let result = await p.query(sql);

Expand Down Expand Up @@ -165,7 +166,6 @@ async function dismantleRank(p, rankLoc) {
price *= result[1].affectedRows;

sql = `INSERT INTO shards (uid,count) VALUES (${uid},${price}) ON DUPLICATE KEY UPDATE count = count + ${price};`;
console.log(sql);
result = await p.query(sql);

p.replyMsg(
Expand Down Expand Up @@ -205,6 +205,11 @@ async function dismantleId(p, uwid) {
return;
}

if (weapon.favorite) {
p.errorMsg(', unfavorite this weapon to sell!');
return;
}

/* Get weapon price */
let price = weaponUtil.shardPrices[weapon.rank.name];
if (!price) {
Expand Down
1 change: 1 addition & 0 deletions src/data/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@
"tada": "🎉",
"battle": "",
"essence": "<a:essence:451638978299428875>",
"star": "",
"perkTicket": {
"common": "<:cticket:815767124680114206>",
"wcommon": "<:wcticket:930641266159517726>"
Expand Down

0 comments on commit 8716fa8

Please sign in to comment.