let toMs = require("ms") let thumb1 = "https://user-images.githubusercontent.com/72728486/235344562-4677d2ad-48ee-419d-883f-e0ca9ba1c7b8.jpg"; let thumb2 = "https://user-images.githubusercontent.com/72728486/235344861-acdba7d1-8fce-41b8-adf6-337c818cda2b.jpg"; let thumb3 = "https://user-images.githubusercontent.com/72728486/235316834-f9f84ba0-8df3-4444-81d8-db5270995e6d.jpg"; let thumb4 = "https://user-images.githubusercontent.com/72728486/235354619-6ad1cabd-216c-4c7c-b7c2-3a564836653a.jpg"; let thumb5 = "https://user-images.githubusercontent.com/72728486/235365156-cfab66ce-38b2-4bc7-90d7-7756fc320e06.jpg"; let thumb6 = "https://user-images.githubusercontent.com/72728486/235365148-35b8def7-c1a2-451d-a2f2-6b6a911b37db.jpg"; let jimp = require("jimp") const resize = async (image, width, height) => { const read = await jimp.read(image); const data = await read.resize(width, height).getBufferAsync(jimp.MIME_JPEG); return data; }; var a; var b; var d; var e; var f; var textnya; var idd; var room; async function sleep(ms) { return new Promise((resolve) => setTimeout(resolve, ms)); } function emoji_role(role) { if (role === "warga") { return "👱‍♂️"; } else if (role === "seer") { return "👳"; } else if (role === "guardian") { return "👼"; } else if (role === "sorcerer") { return "🔮"; } else if (role === "werewolf") { return "🐺"; } else { return ""; } } // ####################### const findObject = (obj = {}, key, value) => { const result = []; const recursiveSearch = (obj = {}) => { if (!obj || typeof obj !== "object") { return; } if (obj[key] === value) { result.push(obj); } Object.keys(obj).forEach(function(k) { recursiveSearch(obj[k]); }); }; recursiveSearch(obj); return result; }; // Sesi const sesi = (from, data) => { if (!data[from]) return false; return data[from]; }; // Memastikan player tidak dalam sesi game apapun const playerOnGame = (sender, data) => { let result = findObject(data, "id", sender); let index = false; if (result.length === 0) { return index; } else { index = true; } return index; }; // cek apakah player sudah dalam room const playerOnRoom = (sender, from, data) => { let result = findObject(data, "id", sender); let index = false; if (result.length > 0 && result[0].sesi === from) { index = true; } else { return index; } return index; }; // get data player const dataPlayer = (sender, data) => { let result = findObject(data, "id", sender); let index = false; if (result.length > 0 && result[0].id === sender) { index = result[0]; } else { return index; } return index; }; // get data player by id const dataPlayerById = (id, data) => { let result = findObject(data, "number", id); let index = false; if (result.length > 0 && result[0].number === id) { index = result[0]; } else { return index; } return index; }; // keluar game const playerExit = (from, id, data) => { room = sesi(from, data); if (!room) return false; const indexPlayer = room.player.findIndex((i) => i.id === id); room.player.splice(indexPlayer, 1); }; // get player id const getPlayerById = (from, sender, id, data) => { room = sesi(from, data); if (!room) return false; const indexPlayer = room.player.findIndex((i) => i.number === id); if (indexPlayer === -1) return false; return { index: indexPlayer, sesi: room.player[indexPlayer].sesi, db: room.player[indexPlayer], }; }; // get player id 2 const getPlayerById2 = (sender, id, data) => { let result = findObject(data, "id", sender); if (result.length > 0 && result[0].id === sender) { let from = result[0].sesi; room = sesi(from, data); if (!room) return false; const indexPlayer = room.player.findIndex((i) => i.number === id); if (indexPlayer === -1) return false; return { index: indexPlayer, sesi: room.player[indexPlayer].sesi, db: room.player[indexPlayer], }; } }; // werewolf kill const killWerewolf = (sender, id, data) => { let result = getPlayerById2(sender, id, data); if (!result) return false; let { index, sesi, db } = result; if (data[sesi].player[index].number === id) { if (db.effect.includes("guardian")) { data[sesi].guardian.push(parseInt(id)); data[sesi].dead.push(parseInt(id)); } else if (!db.effect.includes("guardian")) { data[sesi].dead.push(parseInt(id)); } } }; // seer dreamy const dreamySeer = (sender, id, data) => { let result = getPlayerById2(sender, id, data); if (!result) return false; let { index, sesi, db } = result; if (data[sesi].player[index].role === "werewolf") { data[sesi].seer = true; } return data[sesi].player[index].role; }; // seer dreamy const sorcerer = (sender, id, data) => { let result = getPlayerById2(sender, id, data); if (!result) return false; let { index, sesi, db } = result; return data[sesi].player[index].role; }; // guardian protect const protectGuardian = (sender, id, data) => { let result = getPlayerById2(sender, id, data); if (!result) return false; let { index, sesi, db } = result; data[sesi].player[index].effect.push("guardian"); }; // pengacakan role const roleShuffle = (array) => { let currentIndex = array.length, randomIndex; while (currentIndex != 0) { randomIndex = Math.floor(Math.random() * currentIndex); currentIndex--; [array[currentIndex], array[randomIndex]] = [ array[randomIndex], array[currentIndex], ]; } return array; }; // memberikan role ke player const roleChanger = (from, id, role, data) => { room = sesi(from, data); if (!room) return false; var index = room.player.findIndex((i) => i.id === id); if (index === -1) return false; room.player[index].role = role; }; // memberikan peran ke semua player const roleAmount = (from, data) => { const result = sesi(from, data); if (!result) return false; if (result.player.length == 4) { return { werewolf: 1, seer: 1, guardian: 1, warga: 1, sorcere: 0, }; } else if (result.player.length == 5) { return { werewolf: 1, seer: 1, guardian: 1, warga: 3, sorcere: 0, }; } else if (result.player.length == 6) { return { werewolf: 2, seer: 1, guardian: 1, warga: 2, sorcere: 0, }; } else if (result.player.length == 7) { return { werewolf: 2, seer: 1, guardian: 1, warga: 3, sorcere: 0, }; } else if (result.player.length == 8) { return { werewolf: 2, seer: 1, guardian: 1, warga: 4, sorcere: 0, }; } else if (result.player.length == 9) { return { werewolf: 2, seer: 1, guardian: 1, warga: 4, sorcere: 1, }; } else if (result.player.length == 10) { return { werewolf: 2, seer: 1, guardian: 1, warga: 5, sorcere: 1, }; } else if (result.player.length == 11) { return { werewolf: 2, seer: 1, guardian: 2, warga: 5, sorcere: 1, }; } else if (result.player.length == 12) { return { werewolf: 2, seer: 1, guardian: 2, warga: 6, sorcere: 1, }; } else if (result.player.length == 13) { return { werewolf: 2, seer: 1, guardian: 1, warga: 7, sorcere: 1, }; } else if (result.player.length == 14) { return { werewolf: 2, seer: 2, guardian: 2, warga: 7, sorcere: 1, }; } else if (result.player.length == 15) { return { werewolf: 3, seer: 2, guardian: 3, warga: 6, sorcere: 1, }; } }; const roleGenerator = (from, data) => { room = sesi(from, data); if (!room) return false; var role = roleAmount(from, data); for (var i = 0; i < role.werewolf; i++) { var player = room.player.filter((x) => x.role === false); var list = roleShuffle(player); if (list.length === 0) return false; var random = Math.floor(Math.random() * list.length); roleChanger(from, list[random].id, "werewolf", data); } for (var i = 0; i < role.seer; i++) { var player = room.player.filter((x) => x.role === false); var list = roleShuffle(player); if (list.length === 0) return false; var random = Math.floor(Math.random() * list.length); roleChanger(from, list[random].id, "seer", data); } for (var i = 0; i < role.guardian; i++) { var player = room.player.filter((x) => x.role === false); var list = roleShuffle(player); if (list.length === 0) return false; var random = Math.floor(Math.random() * list.length); roleChanger(from, list[random].id, "guardian", data); } for (var i = 0; i < role.warga; i++) { var player = room.player.filter((x) => x.role === false); var list = roleShuffle(player); if (list.length === 0) return false; var random = Math.floor(Math.random() * list.length); roleChanger(from, list[random].id, "warga", data); } for (var i = 0; i < role.sorcere; i++) { var player = room.player.filter((x) => x.role === false); var list = roleShuffle(player); if (list.length === 0) return false; var random = Math.floor(Math.random() * list.length); roleChanger(from, list[random].id, "sorcerer", data); } shortPlayer(from, data); }; // add cooldown const addTimer = (from, data) => { room = sesi(from, data); if (!room) return false; room.cooldown = Date.now() + toMs(90 + "s"); }; // merubah status room, dalam permainan const startGame = (from, data) => { room = sesi(from, data); if (!room) return false; room.status = true; }; // rubah hari const changeDay = (from, data) => { room = sesi(from, data); if (!room) return false; if (room.time === "pagi") { room.time = "voting"; } else if (room.time === "malem") { room.time = "pagi"; room.day += 1; } else if (room.time === "voting") { room.time = "malem"; } }; // hari voting const dayVoting = (from, data) => { room = sesi(from, data); if (!room) return false; if (room.time === "malem") { room.time = "voting"; } else if (room.time === "pagi") { room.time = "voting"; } }; // voting const vote = (from, id, sender, data) => { room = sesi(from, data); if (!room) return false; const idGet = room.player.findIndex((i) => i.id === sender); if (idGet === -1) return false; const indexPlayer = room.player.findIndex((i) => i.number === id); if (indexPlayer === -1) return false; if (idGet !== -1) { room.player[idGet].isvote = true; } room.player[indexPlayer].vote += 1; }; // hasil voting const voteResult = (from, data) => { room = sesi(from, data); if (!room) return false; room.player.sort((a, b) => (a.vote < b.vote ? 1 : -1)); if (room.player[0].vote === 0) return 0; if (room.player[0].vote === room.player[1].vote) return 1; return room.player[0]; }; // vote killing const voteKill = (from, data) => { room = sesi(from, data); if (!room) return false; room.player.sort((a, b) => (a.vote < b.vote ? 1 : -1)); if (room.player[0].vote === 0) return 0; if (room.player[0].vote === room.player[1].vote) return 1; room.player[0].isdead = true; }; // voting reset const resetVote = (from, data) => { room = sesi(from, data); if (!room) return false; for (let i = 0; i < room.player.length; i++) { room.player[i].vote = 0; } }; const voteDone = (from, data) => { room = sesi(from, data); if (!room) return false; room.voting = false; }; const voteStart = (from, data) => { room = sesi(from, data); if (!room) return false; room.voting = true; }; // clear vote const clearAllVote = (from, data) => { room = sesi(from, data); if (!room) return false; for (let i = 0; i < room.player.length; i++) { room.player[i].vote = 0; room.player[i].isvote = false; } }; // clearAll const clearAll = (from, data) => { room = sesi(from, data); if (!room) return false; room.dead = []; room.seer = false; room.guardian = []; room.voting = false; }; // clear all status player const clearAllSTATUS = (from, data) => { room = sesi(from, data); if (!room) return false; for (let i = 0; i < room.player.length; i++) { room.player[i].effect = []; } }; const skillOn = (from, data) => { room = sesi(from, data); if (!room) return false; for (let i = 0; i < room.player.length; i++) { room.player[i].status = false; } }; const skillOff = (from, data) => { room = sesi(from, data); if (!room) return false; for (let i = 0; i < room.player.length; i++) { room.player[i].status = true; } }; const playerHidup = (data) => { const hasil = data.player.filter((x) => x.isdead === false); return hasil.length; }; const playerMati = (data) => { const hasil = data.player.filter((x) => x.isdead === true); return hasil.length; }; // get player win const getWinner = (from, data) => { room = sesi(from, data); if (!room) return false; var ww = 0; var orang_baek = 0; for (let i = 0; i < room.player.length; i++) { if (room.player[i].isdead === false) { if ( room.player[i].role === "werewolf" || room.player[i].role === "sorcerer" ) { ww += 1; } else if ( room.player[i].role === "warga" || room.player[i].role === "guardian" || room.player[i].role === "seer" ) { orang_baek += 1; } } } if (room.voting) { b = voteResult(from, data); if (b != 0 && b != 1) { if (b.role === "werewolf" || b.role === "sorcerer") { ww -= 1; } else if ( b.role === "warga" || b.role === "seer" || b.role === "guardian" ) { orang_baek -= 1; } } } if (ww === 0) { room.iswin = true; return { voting: room.voting, status: true }; } else if (ww === orang_baek) { room.iswin = false; return { voting: room.voting, status: false }; } else if (orang_baek === 0) { room.iswin = false; return { voting: room.voting, status: false }; } else { return { voting: room.voting, status: null }; } }; // shorting const shortPlayer = (from, data) => { room = sesi(from, data); if (!room) return false; room.player.sort((a, b) => a.number - b.number); }; // werewolf killing const killww = (from, id, data) => { room = sesi(from, data); if (!room) return false; for (let j = 0; j < room.dead.length; j++) { idd = getPlayerById(from, room.player[0].id, room.dead[j], data); if (!idd) return false; if (room.player[idd.index].effect.includes("guardian")) return; room.player[idd.index].isdead = true; } }; const pagii = (data) => { if (data.dead.length < 1) { return `*⌂ W E R E W O L F - G A M E*\n\nMentari telah terbit, tidak ada korban berjatuhan malam ini, warga kembali melakukan aktifitasnya seperti biasa.\n90 detik tersisa sebelum waktu penentuan, para warga dipersilahkan untuk berdiskusi\n*Hari ke ${data.day}*`; } else { a = ""; d = ""; e = []; f = []; for (let i = 0; i < data.dead.length; i++) { b = data.player.findIndex((x) => x.number === data.dead[i]); if (data.player[b].effect.includes("guardian")) { e.push(data.player[b].id); } else { f.push(data.player[b].id); } } for (let i = 0; i < f.length; i++) { if (i === f.length - 1) { if (f.length > 1) { a += ` dan @${f[i].replace("@s.whatsapp.net", "")}`; } else { a += `@${f[i].replace("@s.whatsapp.net", "")}`; } } else if (i === f.length - 2) { a += `@${f[i].replace("@s.whatsapp.net", "")}`; } else { a += `@${f[i].replace("@s.whatsapp.net", "")}, `; } } for (let i = 0; i < e.length; i++) { if (i === e.length - 1) { if (e.length > 1) { d += ` dan @${e[i].replace("@s.whatsapp.net", "")}`; } else { d += `@${e[i].replace("@s.whatsapp.net", "")}`; } } else if (i === e.length - 2) { d += `@${e[i].replace("@s.whatsapp.net", "")}`; } else { d += `@${e[i].replace("@s.whatsapp.net", "")}, `; } } textnya = `*⌂ W E R E W O L F - G A M E*\n\n Morning had arrived, the villagers discovered ${ data.dead.length > 1 ? "beberapa" : "1" } corpses in piles of rubble and blood splattered. ${a ? a + " is dead! " : ""}${ d.length > 1 ? ` ${d} almost killed, but *Guardian Angel* managed to protect him.` : "" }\n\nI didn't realize it was already noon, the sun was directly above my head, the heat of the sun made the atmosphere noisy, the villagers had 90 seconds to discuss\n*Day to ${ data.day }*`; return textnya; } }; async function pagi(Rifky, x, data) { skillOff(x.room, data) let ment = []; for (let i = 0; i < x.player.length; i++) { ment.push(x.player[i].id); } shortPlayer(x.room, data); killww(x.room, x.dead, data); shortPlayer(x.room, data); changeDay(x.room, data); return await Rifky.sendMessage(x.room, { text: pagii(x), contextInfo: { externalAdReply: { title: "W E R E W O L F", mediaType: 1, renderLargerThumbnail: true, thumbnail: await resize(thumb1, 300, 175), sourceUrl: "", mediaUrl: thumb1, }, mentionedJid: ment, }, }); } async function voting(Rifky, x, data) { let row = []; let ment = []; voteStart(x.room, data) textnya = "*⌂ W E R E W O L F - G A M E*\n\nDusk has arrived. All residents gathered at the village hall to choose who would be executed. Some residents were seen busy preparing torture tools for tonight. You have a break!\n\n*L I S T - P L A Y E R*:\n"; shortPlayer(x.room, data); for (let i = 0; i < x.player.length; i++) { textnya += `(${x.player[i].number}) @${x.player[i].id.replace( "@s.whatsapp.net", "" )} ${x.player[i].isdead === true ? "☠️" : ""}\n`; ment.push(x.player[i].id); } textnya += "\nketik *.ww vote nomor* untuk voting player"; dayVoting(x.room, data); clearAll(x.room, data); clearAllSTATUS(x.room, data); return await Rifky.sendMessage(x.room, { text: textnya, contextInfo: { externalAdReply: { title: "W E R E W O L F", mediaType: 1, renderLargerThumbnail: true, thumbnail: await resize(thumb2, 300, 175), sourceUrl: "", mediaUrl: thumb2, }, mentionedJid: ment, }, }); } async function malam(Rifky, x, data) { var hasil_vote = voteResult(x.room, data); if (hasil_vote === 0) { textnya = `*⌂ W E R E W O L F - G A M E*\n\nToo indecisive in making a choice. The residents returned to their homes, no one was executed today. The moon is shining brightly, the eerie night has come. Hopefully no one dies ma!`; return Rifky .sendMessage(x.room, { text: textnya, contextInfo: { externalAdReply: { title: "W E R E W O L F", mediaType: 1, renderLargerThumbnail: true, thumbnail: await resize(thumb3, 300, 175), sourceUrl: "", mediaUrl: thumb3, }, }, }) .then(() => { changeDay(x.room, data); voteDone(x.room, data); resetVote(x.room, data); clearAllVote(x.room, data); if (getWinner(x.room, data).status != null) return win(x, 1, Rifky, data); }); } else if (hasil_vote === 1) { textnya = `*⌂ W E R E W O L F - G A M E*\n\nThe villagers have voted, but the result is a draw.\n\nThe stars emit beautiful light tonight, the villagers rest in their respective homes. Night players: you have 90 seconds to act!`; return Rifky .sendMessage(x.room, { text: textnya, contextInfo: { externalAdReply: { title: "W E R E W O L F", mediaType: 1, renderLargerThumbnail: true, thumbnail: await resize(thumb3, 300, 175), sourceUrl: "", mediaUrl: thumb3, }, }, }) .then(() => { changeDay(x.room, data); voteDone(x.room, data); resetVote(x.room, data); clearAllVote(x.room, data); if (getWinner(x.room, data).status != null) return win(x, 1, Rifky, data); }); } else if (hasil_vote != 0 && hasil_vote != 1) { if (hasil_vote.role === "werewolf") { textnya = `*⌂ W E R E W O L F - G A M E*\n\nThe villagers have voted and agreed @${hasil_vote.id.replace( "@s.whatsapp.net", "" )} executed.\n\n@${hasil_vote.id.replace( "@s.whatsapp.net", "" )} is ${hasil_vote.role} ${emoji_role(hasil_vote.role)}`; voteKill(x.room, data); let ment = []; ment.push(hasil_vote.id); return await Rifky .sendMessage(x.room, { text: textnya, contextInfo: { externalAdReply: { title: "W E R E W O L F", mediaType: 1, renderLargerThumbnail: true, thumbnail: await resize(thumb4, 300, 175), sourceUrl: "", mediaUrl: thumb4, }, mentionedJid: ment, }, }) .then(() => { changeDay(x.room, data); voteDone(x.room, data); resetVote(x.room, data); clearAllVote(x.room, data); if (getWinner(x.room, data).status != null) return win(x, 1, Rifky, data); }); } else { textnya = `*⌂ W E R E W O L F - G A M E*\n\nThe villagers have voted and agreed @${hasil_vote.id.replace( "@s.whatsapp.net", "" )} executed.\n\n@${hasil_vote.id.replace( "@s.whatsapp.net", "" )} is ${hasil_vote.role} ${emoji_role( hasil_vote.role )}\n\nThe moon is shining brightly tonight, the villagers are resting in their respective homes. Players of the night: you have 90 seconds to act!`; voteKill(x.room, data); let ment = []; ment.push(hasil_vote.id); return await Rifky .sendMessage(x.room, { text: textnya, contextInfo: { externalAdReply: { title: "W E R E W O L F", mediaType: 1, renderLargerThumbnail: true, thumbnail: await resize(thumb4, 300, 175), sourceUrl: "", mediaUrl: thumb4, }, mentionedJid: ment, }, }) .then(() => { changeDay(x.room, data); voteDone(x.room, data); resetVote(x.room, data); clearAllVote(x.room, data); if (getWinner(x.room, data).status != null) return win(x, 1, Rifky, data); }); } } } async function skill(Rifky, x, data) { skillOn(x.room, data) if (getWinner(x.room, data).status != null || x.win != null) { return win(x, 1, Rifky, data); } else { if (!x) return; if (!x.player) return; if (x.win != null) return; let tok1 = "\n"; let tok2 = "\n"; let membernya = []; shortPlayer(x.room, data); for (let i = 0; i < x.player.length; i++) { tok1 += `(${x.player[i].number}) @${x.player[i].id.replace( "@s.whatsapp.net", "" )}${x.player[i].isdead === true ? " ☠️" : ""}\n`; membernya.push(x.player[i].id); } for (let i = 0; i < x.player.length; i++) { tok2 += `(${x.player[i].number}) @${x.player[i].id.replace( "@s.whatsapp.net", "" )} ${ x.player[i].role === "werewolf" || x.player[i].role === "sorcerer" ? `${x.player[i].isdead === true ? ` ☠️` : ` ${x.player[i].role}`}` : " " }\n`; membernya.push(x.player[i].id); } for (let i = 0; i < x.player.length; i++) { if (x.player[i].role === "werewolf") { if (x.player[i].isdead != true) { textnya = `Please select one of the people you want to eat tonight\n*LIST PLAYER*:\n${tok2}\n\nType *.wwpc kill number* to kill the player`; await Rifky.sendMessage(x.player[i].id, { text: textnya, mentions: membernya, }); } } else if (x.player[i].role === "warga") { if (x.player[i].isdead != true) { textnya = `*⌂ W E R E W O L F - G A M E*\n\nAs a citizen, be careful, maybe you are the next target.\n*LIST PLAYER*:${tok1}`; await Rifky.sendMessage(x.player[i].id, { text: textnya, mentions: membernya, }); } } else if (x.player[i].role === "seer") { if (x.player[i].isdead != true) { textnya = `OK, who do you want to see the role this time.\n*LIST PLAYER*:${tok1}\n\nType *.wwpc dreamy number* to see the role player`; await Rifky.sendMessage(x.player[i].id, { text: textnya, mentions: membernya, }); } } else if (x.player[i].role === "guardian") { if (x.player[i].isdead != true) { textnya = `You are a *Guardian*, protect the citizens, please select 1 player you want to protect\n*LIST PLAYER*:${tok1}\n\nType *.wwpc deff number* to protect the player`; await Rifky.sendMessage(x.player[i].id, { text: textnya, mentions: membernya, }); } } else if (x.player[i].role === "sorcerer") { if (x.player[i].isdead != true) { textnya = `OK, see what you can make, please select 1 person whose identity you want to reveal\n*LIST PLAYER*:${tok2}\n\nType *.wwpc sorcerer number* to see the role player`; await Rifky.sendMessage(x.player[i].id, { text: textnya, mentions: membernya, }); } } } } } async function win(x, t, Rifky, data) { const sesinya = x.room; if (getWinner(x.room, data).status === false || x.iswin === false) { textnya = `*W E R E W O L F - W I N*\n\nTEAM WEREWOLF\n\n`; let ment = []; for (let i = 0; i < x.player.length; i++) { if (x.player[i].role === "sorcerer" || x.player[i].role === "werewolf") { textnya += `${x.player[i].number}) @${x.player[i].id.replace( "@s.whatsapp.net", "" )}\n *Role* : ${x.player[i].role}\n\n`; ment.push(x.player[i].id); } } return await Rifky .sendMessage(sesinya, { text: textnya, contextInfo: { externalAdReply: { title: "W E R E W O L F", mediaType: 1, renderLargerThumbnail: true, thumbnail: await resize(thumb5, 300, 175), sourceUrl: "", mediaUrl: thumb5, }, mentionedJid: ment, }, }) .then(() => { delete data[x.room]; }); } else if (getWinner(x.room, data).status === true) { textnya = `*T E A M - C I T I Z E N - W I N*\n\nTEAM CITIZEN\n\n`; let ment = []; for (let i = 0; i < x.player.length; i++) { if ( x.player[i].role === "warga" || x.player[i].role === "guardian" || x.player[i].role === "seer" ) { textnya += `${x.player[i].number}) @${x.player[i].id.replace( "@s.whatsapp.net", "" )}\n *Role* : ${x.player[i].role}\n\n`; ment.push(x.player[i].id); } } return await Rifky.sendMessage(sesinya, { text: textnya, contextInfo: { externalAdReply: { title: "W E R E W O L F", mediaType: 1, renderLargerThumbnail: true, thumbnail: await resize(thumb6, 300, 175), sourceUrl: "", mediaUrl: thumb5, }, mentionedJid: ment, }, }); } } // playing async function run(Rifky, id, data) { while (getWinner(id, data).status === null) { if (getWinner(id, data).status != null) { win(getWinner(id, data), 1, Rifky, data); break; } else { await sleep(90000); } if (getWinner(id, data).status != null) { win(getWinner(id, data), 1, Rifky, data); break; } else { await pagi(Rifky, sesi(id, data), data); } if (getWinner(id, data).status != null) { win(getWinner(id, data), 1, Rifky, data); break; } else { await sleep(90000); } if (getWinner(id, data).status != null) { win(getWinner(id, data), 1, Rifky, data); break; } else { await voting(Rifky, sesi(id, data), data); } if (getWinner(id, data).status != null) { win(getWinner(id, data), 1, Rifky, data); break; } else { await sleep(90000); } if (getWinner(id, data).status != null) { win(getWinner(id, data), 1, Rifky, data); break; } else { await malam(Rifky, sesi(id, data), data); } if (getWinner(id, data).status != null) { win(getWinner(id, data), 1, Rifky, data); break; } else { await skill(Rifky, sesi(id, data), data); } if (getWinner(id, data).status != null) break; } await win(sesi(id, data), 1, Rifky, data); } async function run_vote(Rifky, id, data) { while (getWinner(id, data).status === null) { if (getWinner(id, data).status != null) { win(getWinner(id, data), 1, Rifky, data); break; } else { await voting(Rifky, sesi(id, data), data); } if (getWinner(id, data).status != null) { win(getWinner(id, data), 1, Rifky, data); break; } else { await sleep(90000); } if (getWinner(id, data).status != null) { win(getWinner(id, data), 1, Rifky, data); break; } else { await malam(Rifky, sesi(id, data), data); } if (getWinner(id, data).status != null) { win(getWinner(id, data), 1, Rifky, data); break; } else { await skill(Rifky, sesi(id, data), data); } if (getWinner(id, data).status != null) { win(getWinner(id, data), 1, Rifky, data); break; } else { await sleep(90000); } if (getWinner(id, data).status != null) { win(getWinner(id, data), 1, Rifky, data); break; } else { await pagi(Rifky, sesi(id, data), data); } if (getWinner(id, data).status != null) { win(getWinner(id, data), 1, Rifky, data); break; } else { await sleep(90000); } if (getWinner(id, data).status != null) break; } await win(sesi(id, data), 1, Rifky, data); } async function run_malam(Rifky, id, data) { while (getWinner(id, data).status === null) { if (getWinner(id, data).status != null) { win(getWinner(id, data), 1, Rifky, data); break; } else { await skill(Rifky, sesi(id, data), data); } if (getWinner(id, data).status != null) { win(getWinner(id, data), 1, Rifky, data); break; } else { await sleep(90000); } if (getWinner(id, data).status != null) { win(getWinner(id, data), 1, Rifky, data); break; } else { await pagi(Rifky, sesi(id, data), data); } if (getWinner(id, data).status != null) { win(getWinner(id, data), 1, Rifky, data); break; } else { await sleep(90000); } if (getWinner(id, data).status != null) { win(getWinner(id, data), 1, Rifky, data); break; } else { await voting(Rifky, sesi(id, data), data); } if (getWinner(id, data).status != null) { win(getWinner(id, data), 1, Rifky, data); break; } else { await sleep(90000); } if (getWinner(id, data).status != null) { win(getWinner(id, data), 1, Rifky, data); break; } else { await malam(Rifky, sesi(id, data), data); } if (getWinner(id, data).status != null) break; } await win(sesi(id, data), 1, Rifky, data); } async function run_pagi(Rifky, id, data) { while (getWinner(id, data).status === null) { if (getWinner(id, data).status != null) { win(getWinner(id, data), 1, Rifky, data); break; } else { await pagi(Rifky, sesi(id, data), data); } if (getWinner(id, data).status != null) { win(getWinner(id, data), 1, Rifky, data); break; } else { await sleep(90000); } if (getWinner(id, data).status != null) { win(getWinner(id, data), 1, Rifky, data); break; } else { await voting(Rifky, sesi(id, data), data); } if (getWinner(id, data).status != null) { win(getWinner(id, data), 1, Rifky, data); break; } else { await sleep(90000); } if (getWinner(id, data).status != null) { win(getWinner(id, data), 1, Rifky, data); break; } else { await malam(Rifky, sesi(id, data), data); } if (getWinner(id, data).status != null) { win(getWinner(id, data), 1, Rifky, data); break; } else { await skill(Rifky, sesi(id, data), data); } if (getWinner(id, data).status != null) { win(getWinner(id, data), 1, Rifky, data); break; } else { await sleep(90000); } if (getWinner(id, data).status != null) break; } await win(sesi(id, data), 1, Rifky, data); } module.exports = { emoji_role, sesi, playerOnGame, playerOnRoom, playerExit, dataPlayer, dataPlayerById, getPlayerById, getPlayerById2, killWerewolf, killww, dreamySeer, sorcerer, protectGuardian, roleShuffle, roleChanger, roleAmount, roleGenerator, addTimer, startGame, playerHidup, playerMati, vote, voteResult, clearAllVote, getWinner, win, pagi, malam, skill, voteStart, voteDone, voting, run, run_vote, run_malam, run_pagi, };