const Command = require("../../base/Command"); class Slots extends Command { constructor(client) { super(client, { name: "slots", dirname: __dirname, enabled: true, guildOnly: true, aliases: ["casino", "slot"], memberPermissions: [], botPermissions: ["SEND_MESSAGES", "EMBED_LINKS"], nsfw: false, ownerOnly: false, cooldown: 2000 }); } async run(message, args, data) { const fruits = ["๐ŸŽ", "๐Ÿ", "๐ŸŒ", "๐Ÿ‡", "๐Ÿ‰", "๐Ÿ’", "๐Ÿ“"]; let i1 = 0, j1 = 0, k1 = 0, i2 = 1, j2 = 1, k2 = 1, i3 = 2, j3 = 2, k3 = 2; // Gets three random fruits array const colonnes = [ this.client.functions.shuffle(fruits), this.client.functions.shuffle(fruits), this.client.functions.shuffle(fruits) ]; // Gets the amount provided let amount = args[0]; if (!amount || isNaN(amount) || amount < 1) amount = 50; if (amount > data.memberData.money) return message.error("economy/slots:NOT_ENOUGH", { money: `**${amount}** ${message.getNoun(amount, message.translate("misc:NOUNS:CREDIT:1"), message.translate("misc:NOUNS:CREDIT:2"), message.translate("misc:NOUNS:CREDIT:5"))}` }); amount = Math.round(amount); function getCredits(number, isJackpot) { if (!isJackpot) number = number * 1.5; else if (isJackpot) number = number * 5; return Math.round(number); } const tmsg = await message.sendT("misc:PLEASE_WAIT", null, { prefixEmoji: "loading" }); editMsg(); const interval = setInterval(editMsg, 1000); setTimeout(() => { clearInterval(interval); end(tmsg); }, 4000); async function end() { let msg = "[ :slot_machine: | **ะกะ›ะžะขะซ** ]\n------------------\n"; i1 = (i1 < fruits.length - 1) ? i1 + 1 : 0; i2 = (i2 < fruits.length - 1) ? i2 + 1 : 0; i3 = (i3 < fruits.length - 1) ? i3 + 1 : 0; j1 = (j1 < fruits.length - 1) ? j1 + 1 : 0; j2 = (j2 < fruits.length - 1) ? j2 + 1 : 0; j3 = (j3 < fruits.length - 1) ? j3 + 1 : 0; k1 = (k1 < fruits.length - 1) ? k1 + 1 : 0; k2 = (k2 < fruits.length - 1) ? k2 + 1 : 0; k3 = (k3 < fruits.length - 1) ? k3 + 1 : 0; msg += colonnes[0][i1] + " : " + colonnes[1][j1] + " : " + colonnes[2][k1] + "\n"; msg += colonnes[0][i2] + " : " + colonnes[1][j2] + " : " + colonnes[2][k2] + " **<**\n"; msg += colonnes[0][i3] + " : " + colonnes[1][j3] + " : " + colonnes[2][k3] + "\n------------------\n"; if ((colonnes[0][i2] == colonnes[1][j2]) && (colonnes[1][j2] == colonnes[2][k2])) { msg += "| : : : **" + (message.translate("common:VICTORY").toUpperCase()) + "** : : : |"; tmsg.edit(msg); const credits = getCredits(amount, true); message.channel.send({ content: "**!! ะ”ะ–ะ•ะšะŸะžะข !!**\n" + message.translate("economy/slots:VICTORY", { money: `**${amount}** ${message.getNoun(amount, message.translate("misc:NOUNS:CREDIT:1"), message.translate("misc:NOUNS:CREDIT:2"), message.translate("misc:NOUNS:CREDIT:5"))}`, won: `**${credits}** ${message.getNoun(credits, message.translate("misc:NOUNS:CREDIT:1"), message.translate("misc:NOUNS:CREDIT:2"), message.translate("misc:NOUNS:CREDIT:5"))}`, username: message.author.username }) }); const toAdd = credits - amount; const info = { user: message.translate("economy/slots:DESCRIPTION"), amount: toAdd, date: Date.now(), type: "got" }; data.memberData.transactions.push(info); data.memberData.money = data.memberData.money + toAdd; if (!data.userData.achievements.slots.achieved) { data.userData.achievements.slots.progress.now += 1; if (data.userData.achievements.slots.progress.now === data.userData.achievements.slots.progress.total) { data.userData.achievements.slots.achieved = true; message.channel.send({ files: [{ name: "achievement_unlocked4.png", attachment: "./assets/img/achievements/achievement_unlocked4.png" }] }); } data.userData.markModified("achievements.slots"); await data.userData.save(); } await data.memberData.save(); return; } if (colonnes[0][i2] == colonnes[1][j2] || colonnes[1][j2] == colonnes[2][k2] || colonnes[0][i2] == colonnes[2][k2]) { msg += "| : : : **" + (message.translate("common:VICTORY").toUpperCase()) + "** : : : |"; tmsg.edit(msg); const credits = getCredits(amount, false); message.channel.send({ content: message.translate("economy/slots:VICTORY", { money: `**${amount}** ${message.getNoun(amount, message.translate("misc:NOUNS:CREDIT:1"), message.translate("misc:NOUNS:CREDIT:2"), message.translate("misc:NOUNS:CREDIT:5"))}`, won: `**${credits}** ${message.getNoun(credits, message.translate("misc:NOUNS:CREDIT:1"), message.translate("misc:NOUNS:CREDIT:2"), message.translate("misc:NOUNS:CREDIT:5"))}`, username: message.author.username }) }); const toAdd = credits - amount; const info = { user: message.translate("economy/slots:DESCRIPTION"), amount: toAdd, date: Date.now(), type: "got" }; data.memberData.transactions.push(info); data.memberData.money = data.memberData.money + toAdd; if (!data.userData.achievements.slots.achieved) { data.userData.achievements.slots.progress.now += 1; if (data.userData.achievements.slots.progress.now === data.userData.achievements.slots.progress.total) { data.userData.achievements.slots.achieved = true; message.channel.send({ files: [{ name: "achievement_unlocked4.png", attachment: "./assets/img/achievements/achievement_unlocked4.png" }] }); } data.userData.markModified("achievements.slots"); await data.userData.save(); } await data.memberData.save(); return; } msg += "| : : : **" + (message.translate("common:DEFEAT").toUpperCase()) + "** : : : |"; message.channel.send({ content: message.translate("economy/slots:DEFEAT", { money: `**${amount}** ${message.getNoun(amount, message.translate("misc:NOUNS:CREDIT:1"), message.translate("misc:NOUNS:CREDIT:2"), message.translate("misc:NOUNS:CREDIT:5"))}`, username: message.author.username }) }); const info = { user: message.translate("economy/slots:DESCRIPTION"), amount: amount, date: Date.now(), type: "send" }; data.memberData.transactions.push(info); data.memberData.money = data.memberData.money - amount; if (!data.userData.achievements.slots.achieved) { data.userData.achievements.slots.progress.now = 0; data.userData.markModified("achievements.slots"); await data.userData.save(); } await data.memberData.save(); return; } function editMsg() { let msg = "[ :slot_machine: | **ะกะ›ะžะขะซ** ]\n------------------\n"; i1 = (i1 < fruits.length - 1) ? i1 + 1 : 0; i2 = (i2 < fruits.length - 1) ? i2 + 1 : 0; i3 = (i3 < fruits.length - 1) ? i3 + 1 : 0; j1 = (j1 < fruits.length - 1) ? j1 + 1 : 0; j2 = (j2 < fruits.length - 1) ? j2 + 1 : 0; j3 = (j3 < fruits.length - 1) ? j3 + 1 : 0; k1 = (k1 < fruits.length - 1) ? k1 + 1 : 0; k2 = (k2 < fruits.length - 1) ? k2 + 1 : 0; k3 = (k3 < fruits.length - 1) ? k3 + 1 : 0; msg += colonnes[0][i1] + " : " + colonnes[1][j1] + " : " + colonnes[2][k1] + "\n"; msg += colonnes[0][i2] + " : " + colonnes[1][j2] + " : " + colonnes[2][k2] + " **<**\n"; msg += colonnes[0][i3] + " : " + colonnes[1][j3] + " : " + colonnes[2][k3] + "\n"; tmsg.edit(msg); } } } module.exports = Slots;