AnshorFalahi

lib gasan ww nya

Jul 10th, 2024
29
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. let toMs = require("ms");
  2. let jimp = require("jimp");
  3.  
  4. let thumb1 =
  5.     "https://user-images.githubusercontent.com/72728486/235344562-4677d2ad-48ee-419d-883f-e0ca9ba1c7b8.jpg";
  6. let thumb2 =
  7.     "https://user-images.githubusercontent.com/72728486/235344861-acdba7d1-8fce-41b8-adf6-337c818cda2b.jpg";
  8. let thumb3 =
  9.     "https://user-images.githubusercontent.com/72728486/235316834-f9f84ba0-8df3-4444-81d8-db5270995e6d.jpg";
  10. let thumb4 =
  11.     "https://user-images.githubusercontent.com/72728486/235354619-6ad1cabd-216c-4c7c-b7c2-3a564836653a.jpg";
  12. let thumb5 =
  13.     "https://user-images.githubusercontent.com/72728486/235365156-cfab66ce-38b2-4bc7-90d7-7756fc320e06.jpg";
  14. let thumb6 =
  15.     "https://user-images.githubusercontent.com/72728486/235365148-35b8def7-c1a2-451d-a2f2-6b6a911b37db.jpg";
  16.  
  17. const resize = async (image, width, height) => {
  18.     const read = await jimp.read(image);
  19.     const data = await read.resize(width, height).getBufferAsync(jimp.MIME_JPEG);
  20.     return data;
  21. };
  22. var a;
  23. var b;
  24. var d;
  25. var e;
  26. var f;
  27. var textnya;
  28. var idd;
  29. var room;
  30.  
  31. async function sleep(ms) {
  32.     return new Promise((resolve) => setTimeout(resolve, ms));
  33. }
  34.  
  35. function emoji_role(role) {
  36.     if (role === "warga") {
  37.         return "👱‍♂️";
  38.     } else if (role === "seer") {
  39.         return "👳";
  40.     } else if (role === "guardian") {
  41.         return "👼";
  42.     } else if (role === "sorcerer") {
  43.         return "🔮";
  44.     } else if (role === "werewolf") {
  45.         return "🐺";
  46.     } else {
  47.         return "";
  48.     }
  49. }
  50.  
  51. const findObject = (obj = {}, key, value) => {
  52.     const result = [];
  53.     const recursiveSearch = (obj = {}) => {
  54.         if (!obj || typeof obj !== "object") {
  55.             return;
  56.         }
  57.         if (obj[key] === value) {
  58.             result.push(obj);
  59.         }
  60.         Object.keys(obj).forEach(function(k) {
  61.             recursiveSearch(obj[k]);
  62.         });
  63.     };
  64.     recursiveSearch(obj);
  65.     return result;
  66. };
  67.  
  68. // sessions
  69. const sesi = (from, data) => {
  70.     if (!data[from]) return false;
  71.     return data[from];
  72. };
  73.  
  74. // check sessions
  75. const playerOnGame = (sender, data) => {
  76.     let result = findObject(data, "id", sender);
  77.     let index = false;
  78.     if (result.length === 0) {
  79.         return index;
  80.     } else {
  81.         index = true;
  82.     }
  83.     return index;
  84. };
  85.  
  86. // in room
  87. const playerOnRoom = (sender, from, data) => {
  88.     let result = findObject(data, "id", sender);
  89.     let index = false;
  90.     if (result.length > 0 && result[0].sesi === from) {
  91.         index = true;
  92.     } else {
  93.         return index;
  94.     }
  95.     return index;
  96. };
  97.  
  98. // get data player
  99. const dataPlayer = (sender, data) => {
  100.     let result = findObject(data, "id", sender);
  101.     let index = false;
  102.     if (result.length > 0 && result[0].id === sender) {
  103.         index = result[0];
  104.     } else {
  105.         return index;
  106.     }
  107.     return index;
  108. };
  109.  
  110. // get data player by id
  111. const dataPlayerById = (id, data) => {
  112.     let result = findObject(data, "number", id);
  113.     let index = false;
  114.     if (result.length > 0 && result[0].number === id) {
  115.         index = result[0];
  116.     } else {
  117.         return index;
  118.     }
  119.     return index;
  120. };
  121.  
  122. // keluar game
  123. const playerExit = (from, id, data) => {
  124.     room = sesi(from, data);
  125.     if (!room) return false;
  126.     const indexPlayer = room.player.findIndex((i) => i.id === id);
  127.     room.player.splice(indexPlayer, 1);
  128. };
  129.  
  130. // get player id
  131. const getPlayerById = (from, sender, id, data) => {
  132.     room = sesi(from, data);
  133.     if (!room) return false;
  134.     const indexPlayer = room.player.findIndex((i) => i.number === id);
  135.     if (indexPlayer === -1) return false;
  136.     return {
  137.         index: indexPlayer,
  138.         sesi: room.player[indexPlayer].sesi,
  139.         db: room.player[indexPlayer],
  140.     };
  141. };
  142.  
  143. // get player id 2
  144. const getPlayerById2 = (sender, id, data) => {
  145.     let result = findObject(data, "id", sender);
  146.     if (result.length > 0 && result[0].id === sender) {
  147.         let from = result[0].sesi;
  148.         room = sesi(from, data);
  149.         if (!room) return false;
  150.         const indexPlayer = room.player.findIndex((i) => i.number === id);
  151.         if (indexPlayer === -1) return false;
  152.         return {
  153.             index: indexPlayer,
  154.             sesi: room.player[indexPlayer].sesi,
  155.             db: room.player[indexPlayer],
  156.         };
  157.     }
  158. };
  159.  
  160. // werewolf kill
  161. const killWerewolf = (sender, id, data) => {
  162.     let result = getPlayerById2(sender, id, data);
  163.     if (!result) return false;
  164.     let {
  165.         index,
  166.         sesi,
  167.         db
  168.     } = result;
  169.     if (data[sesi].player[index].number === id) {
  170.         if (db.effect.includes("guardian")) {
  171.             data[sesi].guardian.push(parseInt(id));
  172.             data[sesi].dead.push(parseInt(id));
  173.         } else if (!db.effect.includes("guardian")) {
  174.             data[sesi].dead.push(parseInt(id));
  175.         }
  176.     }
  177. };
  178.  
  179. // seer dreamy
  180. const dreamySeer = (sender, id, data) => {
  181.     let result = getPlayerById2(sender, id, data);
  182.     if (!result) return false;
  183.     let {
  184.         index,
  185.         sesi,
  186.         db
  187.     } = result;
  188.     if (data[sesi].player[index].role === "werewolf") {
  189.         data[sesi].seer = true;
  190.     }
  191.     return data[sesi].player[index].role;
  192. };
  193.  
  194. // seer dreamy
  195. const sorcerer = (sender, id, data) => {
  196.     let result = getPlayerById2(sender, id, data);
  197.     if (!result) return false;
  198.     let {
  199.         index,
  200.         sesi,
  201.         db
  202.     } = result;
  203.     return data[sesi].player[index].role;
  204. };
  205.  
  206. // guardian protect
  207. const protectGuardian = (sender, id, data) => {
  208.     let result = getPlayerById2(sender, id, data);
  209.     if (!result) return false;
  210.     let {
  211.         index,
  212.         sesi,
  213.         db
  214.     } = result;
  215.     data[sesi].player[index].effect.push("guardian");
  216. };
  217.  
  218. // pengacakan role
  219. const roleShuffle = (array) => {
  220.     let currentIndex = array.length,
  221.         randomIndex;
  222.     while (currentIndex != 0) {
  223.         randomIndex = Math.floor(Math.random() * currentIndex);
  224.         currentIndex--;
  225.         [array[currentIndex], array[randomIndex]] = [
  226.             array[randomIndex],
  227.             array[currentIndex],
  228.         ];
  229.     }
  230.     return array;
  231. };
  232.  
  233. // memberikan role ke player
  234. const roleChanger = (from, id, role, data) => {
  235.     room = sesi(from, data);
  236.     if (!room) return false;
  237.     var index = room.player.findIndex((i) => i.id === id);
  238.     if (index === -1) return false;
  239.     room.player[index].role = role;
  240. };
  241.  
  242. // memberikan peran ke semua player
  243. const roleAmount = (from, data) => {
  244.     const result = sesi(from, data);
  245.     if (!result) return false;
  246.     if (result.player.length == 4) {
  247.         return {
  248.             werewolf: 1,
  249.             seer: 1,
  250.             guardian: 1,
  251.             warga: 1,
  252.             sorcere: 0,
  253.         };
  254.     } else if (result.player.length == 5) {
  255.         return {
  256.             werewolf: 1,
  257.             seer: 1,
  258.             guardian: 1,
  259.             warga: 3,
  260.             sorcere: 0,
  261.         };
  262.     } else if (result.player.length == 6) {
  263.         return {
  264.             werewolf: 2,
  265.             seer: 1,
  266.             guardian: 1,
  267.             warga: 2,
  268.             sorcere: 0,
  269.         };
  270.     } else if (result.player.length == 7) {
  271.         return {
  272.             werewolf: 2,
  273.             seer: 1,
  274.             guardian: 1,
  275.             warga: 3,
  276.             sorcere: 0,
  277.         };
  278.     } else if (result.player.length == 8) {
  279.         return {
  280.             werewolf: 2,
  281.             seer: 1,
  282.             guardian: 1,
  283.             warga: 4,
  284.             sorcere: 0,
  285.         };
  286.     } else if (result.player.length == 9) {
  287.         return {
  288.             werewolf: 2,
  289.             seer: 1,
  290.             guardian: 1,
  291.             warga: 4,
  292.             sorcere: 1,
  293.         };
  294.     } else if (result.player.length == 10) {
  295.         return {
  296.             werewolf: 2,
  297.             seer: 1,
  298.             guardian: 1,
  299.             warga: 5,
  300.             sorcere: 1,
  301.         };
  302.     } else if (result.player.length == 11) {
  303.         return {
  304.             werewolf: 2,
  305.             seer: 1,
  306.             guardian: 2,
  307.             warga: 5,
  308.             sorcere: 1,
  309.         };
  310.     } else if (result.player.length == 12) {
  311.         return {
  312.             werewolf: 2,
  313.             seer: 1,
  314.             guardian: 2,
  315.             warga: 6,
  316.             sorcere: 1,
  317.         };
  318.     } else if (result.player.length == 13) {
  319.         return {
  320.             werewolf: 2,
  321.             seer: 1,
  322.             guardian: 1,
  323.             warga: 7,
  324.             sorcere: 1,
  325.         };
  326.     } else if (result.player.length == 14) {
  327.         return {
  328.             werewolf: 2,
  329.             seer: 2,
  330.             guardian: 2,
  331.             warga: 7,
  332.             sorcere: 1,
  333.         };
  334.     } else if (result.player.length == 15) {
  335.         return {
  336.             werewolf: 3,
  337.             seer: 2,
  338.             guardian: 3,
  339.             warga: 6,
  340.             sorcere: 1,
  341.         };
  342.     }
  343. };
  344.  
  345. const roleGenerator = (from, data) => {
  346.     room = sesi(from, data);
  347.     if (!room) return false;
  348.     var role = roleAmount(from, data);
  349.     for (var i = 0; i < role.werewolf; i++) {
  350.         var player = room.player.filter((x) => x.role === false);
  351.         var list = roleShuffle(player);
  352.         if (list.length === 0) return false;
  353.         var random = Math.floor(Math.random() * list.length);
  354.         roleChanger(from, list[random].id, "werewolf", data);
  355.     }
  356.     for (var i = 0; i < role.seer; i++) {
  357.         var player = room.player.filter((x) => x.role === false);
  358.         var list = roleShuffle(player);
  359.         if (list.length === 0) return false;
  360.         var random = Math.floor(Math.random() * list.length);
  361.         roleChanger(from, list[random].id, "seer", data);
  362.     }
  363.     for (var i = 0; i < role.guardian; i++) {
  364.         var player = room.player.filter((x) => x.role === false);
  365.         var list = roleShuffle(player);
  366.         if (list.length === 0) return false;
  367.         var random = Math.floor(Math.random() * list.length);
  368.         roleChanger(from, list[random].id, "guardian", data);
  369.     }
  370.     for (var i = 0; i < role.warga; i++) {
  371.         var player = room.player.filter((x) => x.role === false);
  372.         var list = roleShuffle(player);
  373.         if (list.length === 0) return false;
  374.         var random = Math.floor(Math.random() * list.length);
  375.         roleChanger(from, list[random].id, "warga", data);
  376.     }
  377.     for (var i = 0; i < role.sorcere; i++) {
  378.         var player = room.player.filter((x) => x.role === false);
  379.         var list = roleShuffle(player);
  380.         if (list.length === 0) return false;
  381.         var random = Math.floor(Math.random() * list.length);
  382.         roleChanger(from, list[random].id, "sorcerer", data);
  383.     }
  384.     shortPlayer(from, data);
  385. };
  386.  
  387. // add cooldown
  388. const addTimer = (from, data) => {
  389.     room = sesi(from, data);
  390.     if (!room) return false;
  391.     room.cooldown = Date.now() + toMs(90 + "s");
  392. };
  393.  
  394. // merubah status room, dalam permainan
  395. const startGame = (from, data) => {
  396.     room = sesi(from, data);
  397.     if (!room) return false;
  398.     room.status = true;
  399. };
  400.  
  401. // rubah hari
  402. const changeDay = (from, data) => {
  403.     room = sesi(from, data);
  404.     if (!room) return false;
  405.     if (room.time === "pagi") {
  406.         room.time = "voting";
  407.     } else if (room.time === "malem") {
  408.         room.time = "pagi";
  409.         room.day += 1;
  410.     } else if (room.time === "voting") {
  411.         room.time = "malem";
  412.     }
  413. };
  414.  
  415. // hari voting
  416. const dayVoting = (from, data) => {
  417.     room = sesi(from, data);
  418.     if (!room) return false;
  419.     if (room.time === "malem") {
  420.         room.time = "voting";
  421.     } else if (room.time === "pagi") {
  422.         room.time = "voting";
  423.     }
  424. };
  425.  
  426. // voting
  427. const vote = (from, id, sender, data) => {
  428.     room = sesi(from, data);
  429.     if (!room) return false;
  430.     const idGet = room.player.findIndex((i) => i.id === sender);
  431.     if (idGet === -1) return false;
  432.     const indexPlayer = room.player.findIndex((i) => i.number === id);
  433.     if (indexPlayer === -1) return false;
  434.     if (idGet !== -1) {
  435.         room.player[idGet].isvote = true;
  436.     }
  437.     room.player[indexPlayer].vote += 1;
  438. };
  439.  
  440. // hasil voting
  441. const voteResult = (from, data) => {
  442.     room = sesi(from, data);
  443.     if (!room) return false;
  444.     room.player.sort((a, b) => (a.vote < b.vote ? 1 : -1));
  445.     if (room.player[0].vote === 0) return 0;
  446.     if (room.player[0].vote === room.player[1].vote) return 1;
  447.     return room.player[0];
  448. };
  449.  
  450. // vote killing
  451. const voteKill = (from, data) => {
  452.     room = sesi(from, data);
  453.     if (!room) return false;
  454.     room.player.sort((a, b) => (a.vote < b.vote ? 1 : -1));
  455.     if (room.player[0].vote === 0) return 0;
  456.     if (room.player[0].vote === room.player[1].vote) return 1;
  457.     room.player[0].isdead = true;
  458. };
  459.  
  460. // voting reset
  461. const resetVote = (from, data) => {
  462.     room = sesi(from, data);
  463.     if (!room) return false;
  464.     for (let i = 0; i < room.player.length; i++) {
  465.         room.player[i].vote = 0;
  466.     }
  467. };
  468.  
  469. const voteDone = (from, data) => {
  470.     room = sesi(from, data);
  471.     if (!room) return false;
  472.     room.voting = false;
  473. };
  474.  
  475. const voteStart = (from, data) => {
  476.     room = sesi(from, data);
  477.     if (!room) return false;
  478.     room.voting = true;
  479. };
  480.  
  481. // clear vote
  482. const clearAllVote = (from, data) => {
  483.     room = sesi(from, data);
  484.     if (!room) return false;
  485.     for (let i = 0; i < room.player.length; i++) {
  486.         room.player[i].vote = 0;
  487.         room.player[i].isvote = false;
  488.     }
  489. };
  490.  
  491. // clearAll
  492. const clearAll = (from, data) => {
  493.     room = sesi(from, data);
  494.     if (!room) return false;
  495.     room.dead = [];
  496.     room.seer = false;
  497.     room.guardian = [];
  498.     room.voting = false;
  499. };
  500.  
  501. // clear all status player
  502. const clearAllSTATUS = (from, data) => {
  503.     room = sesi(from, data);
  504.     if (!room) return false;
  505.     for (let i = 0; i < room.player.length; i++) {
  506.         room.player[i].effect = [];
  507.     }
  508. };
  509.  
  510. const skillOn = (from, data) => {
  511.     room = sesi(from, data);
  512.     if (!room) return false;
  513.     for (let i = 0; i < room.player.length; i++) {
  514.         room.player[i].status = false;
  515.     }
  516. };
  517.  
  518. const skillOff = (from, data) => {
  519.     room = sesi(from, data);
  520.     if (!room) return false;
  521.     for (let i = 0; i < room.player.length; i++) {
  522.         room.player[i].status = true;
  523.     }
  524. };
  525.  
  526. const playerHidup = (data) => {
  527.     const hasil = data.player.filter((x) => x.isdead === false);
  528.     return hasil.length;
  529. };
  530.  
  531. const playerMati = (data) => {
  532.     const hasil = data.player.filter((x) => x.isdead === true);
  533.     return hasil.length;
  534. };
  535.  
  536. // get player win
  537. const getWinner = (from, data) => {
  538.     room = sesi(from, data);
  539.     if (!room) return false;
  540.     var ww = 0;
  541.     var orang_baek = 0;
  542.     for (let i = 0; i < room.player.length; i++) {
  543.         if (room.player[i].isdead === false) {
  544.             if (
  545.                 room.player[i].role === "werewolf" ||
  546.                 room.player[i].role === "sorcerer"
  547.             ) {
  548.                 ww += 1;
  549.             } else if (
  550.                 room.player[i].role === "warga" ||
  551.                 room.player[i].role === "guardian" ||
  552.                 room.player[i].role === "seer"
  553.             ) {
  554.                 orang_baek += 1;
  555.             }
  556.         }
  557.     }
  558.     if (room.voting) {
  559.         b = voteResult(from, data);
  560.         if (b != 0 && b != 1) {
  561.             if (b.role === "werewolf" || b.role === "sorcerer") {
  562.                 ww -= 1;
  563.             } else if (
  564.                 b.role === "warga" ||
  565.                 b.role === "seer" ||
  566.                 b.role === "guardian"
  567.             ) {
  568.                 orang_baek -= 1;
  569.             }
  570.         }
  571.     }
  572.     if (ww === 0) {
  573.         room.iswin = true;
  574.         return {
  575.             voting: room.voting,
  576.             status: true
  577.         };
  578.     } else if (ww === orang_baek) {
  579.         room.iswin = false;
  580.         return {
  581.             voting: room.voting,
  582.             status: false
  583.         };
  584.     } else if (orang_baek === 0) {
  585.         room.iswin = false;
  586.         return {
  587.             voting: room.voting,
  588.             status: false
  589.         };
  590.     } else {
  591.         return {
  592.             voting: room.voting,
  593.             status: null
  594.         };
  595.     }
  596. };
  597.  
  598. // shorting
  599. const shortPlayer = (from, data) => {
  600.     room = sesi(from, data);
  601.     if (!room) return false;
  602.     room.player.sort((a, b) => a.number - b.number);
  603. };
  604.  
  605. // werewolf killing
  606. const killww = (from, id, data) => {
  607.     room = sesi(from, data);
  608.     if (!room) return false;
  609.     for (let j = 0; j < room.dead.length; j++) {
  610.         idd = getPlayerById(from, room.player[0].id, room.dead[j], data);
  611.         if (!idd) return false;
  612.         if (room.player[idd.index].effect.includes("guardian")) return;
  613.         room.player[idd.index].isdead = true;
  614.     }
  615. };
  616.  
  617. const pagii = (data) => {
  618.     if (data.dead.length < 1) {
  619.         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}*`;
  620.     } else {
  621.         a = "";
  622.         d = "";
  623.         e = [];
  624.         f = [];
  625.         for (let i = 0; i < data.dead.length; i++) {
  626.             b = data.player.findIndex((x) => x.number === data.dead[i]);
  627.             if (data.player[b].effect.includes("guardian")) {
  628.                 e.push(data.player[b].id);
  629.             } else {
  630.                 f.push(data.player[b].id);
  631.             }
  632.         }
  633.         for (let i = 0; i < f.length; i++) {
  634.             if (i === f.length - 1) {
  635.                 if (f.length > 1) {
  636.                     a += ` dan @${f[i].replace("@s.whatsapp.net", "")}`;
  637.                 } else {
  638.                     a += `@${f[i].replace("@s.whatsapp.net", "")}`;
  639.                 }
  640.             } else if (i === f.length - 2) {
  641.                 a += `@${f[i].replace("@s.whatsapp.net", "")}`;
  642.             } else {
  643.                 a += `@${f[i].replace("@s.whatsapp.net", "")}, `;
  644.             }
  645.         }
  646.         for (let i = 0; i < e.length; i++) {
  647.             if (i === e.length - 1) {
  648.                 if (e.length > 1) {
  649.                     d += ` dan @${e[i].replace("@s.whatsapp.net", "")}`;
  650.                 } else {
  651.                     d += `@${e[i].replace("@s.whatsapp.net", "")}`;
  652.                 }
  653.             } else if (i === e.length - 2) {
  654.                 d += `@${e[i].replace("@s.whatsapp.net", "")}`;
  655.             } else {
  656.                 d += `@${e[i].replace("@s.whatsapp.net", "")}, `;
  657.             }
  658.         }
  659.         textnya = `*⌂ W E R E W O L F - G A M E*\n\nPagi telah tiba, warga desa menemukan ${
  660.       data.dead.length > 1 ? "beberapa" : "1"
  661.     } mayat di tumpukan puing dan darah berceceran. ${a ? a + " telah mati! " : ""}${
  662.       d.length > 1
  663.         ? ` ${d} hampir dibunuh, namun *Guardian Angel* berhasil melindunginya.`
  664.         : ""
  665.     }\n\nTak terasa hari sudah siang, matahari tepat di atas kepala, terik panas matahari membuat suasana menjadi riuh, warga desa mempunyai 90 detik untuk berdiskusi\n*Hari ke ${
  666.       data.day
  667.     }*`;
  668.         return textnya;
  669.     }
  670. };
  671.  
  672. async function pagi(conn, x, data) {
  673.     skillOff(x.room, data)
  674.     let ment = [];
  675.     for (let i = 0; i < x.player.length; i++) {
  676.         ment.push(x.player[i].id);
  677.     }
  678.     shortPlayer(x.room, data);
  679.     killww(x.room, x.dead, data);
  680.     shortPlayer(x.room, data);
  681.     changeDay(x.room, data);
  682.     return await conn.sendMessage(x.room, {
  683.         text: pagii(x),
  684.         contextInfo: {
  685.             externalAdReply: {
  686.                 title: "W E R E W O L F",
  687.                 mediaType: 1,
  688.                 renderLargerThumbnail: true,
  689.                 thumbnail: await resize(thumb1, 300, 175),
  690.                 sourceUrl: "",
  691.                 mediaUrl: thumb1,
  692.             },
  693.             mentionedJid: ment,
  694.         },
  695.     });
  696. }
  697.  
  698. async function voting(conn, x, data) {
  699.     let row = [];
  700.     let ment = [];
  701.     voteStart(x.room, data)
  702.     textnya =
  703.         "*⌂ W E R E W O L F - G A M E*\n\nSenja telah tiba. Seluruh warga berkumpul di balai desa untuk memilih siapa yang akan dieksekusi. Sebagian warga terlihat sibuk menyiapkan alat penyiksaan untuk malam ini. Kalian mempunyai waktu selama 90 detik untuk memilih! Hati-hati, ada penghianat diantara kalian!\n\n*L I S T - P L A Y E R*:\n";
  704.     shortPlayer(x.room, data);
  705.     for (let i = 0; i < x.player.length; i++) {
  706.         textnya += `(${x.player[i].number}) @${x.player[i].id.replace(
  707.       "@s.whatsapp.net",
  708.       ""
  709.     )} ${x.player[i].isdead === true ? "☠️" : ""}\n`;
  710.         ment.push(x.player[i].id);
  711.     }
  712.     textnya += "\nketik *.ww vote nomor* untuk voting player";
  713.     dayVoting(x.room, data);
  714.     clearAll(x.room, data);
  715.     clearAllSTATUS(x.room, data);
  716.     return await conn.sendMessage(x.room, {
  717.         text: textnya,
  718.         contextInfo: {
  719.             externalAdReply: {
  720.                 title: "W E R E W O L F",
  721.                 mediaType: 1,
  722.                 renderLargerThumbnail: true,
  723.                 thumbnail: await resize(thumb2, 300, 175),
  724.                 sourceUrl: "",
  725.                 mediaUrl: thumb2,
  726.             },
  727.             mentionedJid: ment,
  728.         },
  729.     });
  730. }
  731.  
  732. async function malam(conn, x, data) {
  733.     var hasil_vote = voteResult(x.room, data);
  734.     if (hasil_vote === 0) {
  735.         textnya = `*⌂ W E R E W O L F - G A M E*\n\nTerlalu bimbang menentukan pilihan. Warga pun pulang ke rumah masing-masing, tidak ada yang dieksekusi hari ini. Bulan bersinar terang, malam yang mencekam telah datang. Semoga tidak ada yang mati malam ini. Pemain malam hari: kalian punya 90 detik untuk beraksi!`;
  736.         return conn
  737.             .sendMessage(x.room, {
  738.                 text: textnya,
  739.                 contextInfo: {
  740.                     externalAdReply: {
  741.                         title: "W E R E W O L F",
  742.                         mediaType: 1,
  743.                         renderLargerThumbnail: true,
  744.                         thumbnail: await resize(thumb3, 300, 175),
  745.                         sourceUrl: "",
  746.                         mediaUrl: thumb3,
  747.                     },
  748.                 },
  749.             })
  750.             .then(() => {
  751.                 changeDay(x.room, data);
  752.                 voteDone(x.room, data);
  753.                 resetVote(x.room, data);
  754.                 clearAllVote(x.room, data);
  755.                 if (getWinner(x.room, data).status != null)
  756.                     return win(x, 1, conn, data);
  757.             });
  758.     } else if (hasil_vote === 1) {
  759.         textnya = `*⌂ W E R E W O L F - G A M E*\n\nWarga desa telah memilih, namun hasilnya seri.\n\nBintang memancarkan cahaya indah malam ini, warga desa beristirahat di kediaman masing masing. Pemain malam hari: kalian punya 90 detik untuk beraksi!`;
  760.         let ment = [];
  761.         return conn
  762.             .sendMessage(x.room, {
  763.                 text: textnya,
  764.                 contextInfo: {
  765.                     externalAdReply: {
  766.                         title: "W E R E W O L F",
  767.                         mediaType: 1,
  768.                         renderLargerThumbnail: true,
  769.                         thumbnail: await resize(thumb3, 300, 175),
  770.                         sourceUrl: "",
  771.                         mediaUrl: thumb3,
  772.                     },
  773.                     mentionedJid: ment,
  774.                 },
  775.             })
  776.             .then(() => {
  777.                 changeDay(x.room, data);
  778.                 voteDone(x.room, data);
  779.                 resetVote(x.room, data);
  780.                 clearAllVote(x.room, data);
  781.                 if (getWinner(x.room, data).status != null)
  782.                     return win(x, 1, conn, data);
  783.             });
  784.     } else if (hasil_vote != 0 && hasil_vote != 1) {
  785.         if (hasil_vote.role === "werewolf") {
  786.             textnya = `*⌂ W E R E W O L F - G A M E*\n\nWarga desa telah memilih dan sepakat @${hasil_vote.id.replace(
  787.         "@s.whatsapp.net",
  788.         ""
  789.       )} dieksekusi mati.\n\n@${hasil_vote.id.replace(
  790.         "@s.whatsapp.net",
  791.         ""
  792.       )} adalah ${hasil_vote.role} ${emoji_role(hasil_vote.role)}`;
  793.             voteKill(x.room, data);
  794.             let ment = [];
  795.             ment.push(hasil_vote.id);
  796.             return await conn
  797.                 .sendMessage(x.room, {
  798.                     text: textnya,
  799.                     contextInfo: {
  800.                         externalAdReply: {
  801.                             title: "W E R E W O L F",
  802.                             mediaType: 1,
  803.                             renderLargerThumbnail: true,
  804.                             thumbnail: await resize(thumb4, 300, 175),
  805.                             sourceUrl: "",
  806.                             mediaUrl: thumb4,
  807.                         },
  808.                         mentionedJid: ment,
  809.                     },
  810.                 })
  811.                 .then(() => {
  812.                     changeDay(x.room, data);
  813.                     voteDone(x.room, data);
  814.                     resetVote(x.room, data);
  815.                     clearAllVote(x.room, data);
  816.                     if (getWinner(x.room, data).status != null)
  817.                         return win(x, 1, conn, data);
  818.                 });
  819.         } else {
  820.             textnya = `*⌂ W E R E W O L F - G A M E*\n\nWarga desa telah memilih dan sepakat @${hasil_vote.id.replace(
  821.         "@s.whatsapp.net",
  822.         ""
  823.       )} dieksekusi mati.\n\n@${hasil_vote.id.replace(
  824.         "@s.whatsapp.net",
  825.         ""
  826.       )} adalah ${hasil_vote.role} ${emoji_role(
  827.         hasil_vote.role
  828.       )}\n\nBulan bersinar terang malam ini, warga desa beristirahat di kediaman masing masing. Pemain malam hari: kalian punya 90 detik untuk beraksi!`;
  829.             voteKill(x.room, data);
  830.             let ment = [];
  831.             ment.push(hasil_vote.id);
  832.             return await conn
  833.                 .sendMessage(x.room, {
  834.                     text: textnya,
  835.                     contextInfo: {
  836.                         externalAdReply: {
  837.                             title: "W E R E W O L F",
  838.                             mediaType: 1,
  839.                             renderLargerThumbnail: true,
  840.                             thumbnail: await resize(thumb4, 300, 175),
  841.                             sourceUrl: "",
  842.                             mediaUrl: thumb4,
  843.                         },
  844.                         mentionedJid: ment,
  845.                     },
  846.                 })
  847.                 .then(() => {
  848.                     changeDay(x.room, data);
  849.                     voteDone(x.room, data);
  850.                     resetVote(x.room, data);
  851.                     clearAllVote(x.room, data);
  852.                     if (getWinner(x.room, data).status != null)
  853.                         return win(x, 1, conn, data);
  854.                 });
  855.         }
  856.     }
  857. }
  858.  
  859. async function skill(conn, x, data) {
  860.     skillOn(x.room, data)
  861.     if (getWinner(x.room, data).status != null || x.win != null) {
  862.         return win(x, 1, conn, data);
  863.     } else {
  864.         if (!x) return;
  865.         if (!x.player) return;
  866.         if (x.win != null) return;
  867.         let tok1 = "\n";
  868.         let tok2 = "\n";
  869.         let membernya = [];
  870.         shortPlayer(x.room, data);
  871.         for (let i = 0; i < x.player.length; i++) {
  872.             tok1 += `(${x.player[i].number}) @${x.player[i].id.replace(
  873.         "@s.whatsapp.net",
  874.         ""
  875.       )}${x.player[i].isdead === true ? " ☠️" : ""}\n`;
  876.             membernya.push(x.player[i].id);
  877.         }
  878.         for (let i = 0; i < x.player.length; i++) {
  879.             tok2 += `(${x.player[i].number}) @${x.player[i].id.replace(
  880.         "@s.whatsapp.net",
  881.         ""
  882.       )} ${
  883.         x.player[i].role === "werewolf" || x.player[i].role === "sorcerer"
  884.           ? `${x.player[i].isdead === true ? ` ☠️` : ` ${x.player[i].role}`}`
  885.           : " "
  886.       }\n`;
  887.             membernya.push(x.player[i].id);
  888.         }
  889.         for (let i = 0; i < x.player.length; i++) {
  890.             if (x.player[i].role === "werewolf") {
  891.                 if (x.player[i].isdead != true) {
  892.                     textnya = `Silahkan pilih salah satu orang yang ingin kamu makan pada malam hari ini\n*LIST PLAYER*:\n${tok2}\n\nKetik *.wwpc kill nomor* untuk membunuh player`;
  893.  
  894.                     await conn.sendMessage(x.player[i].id, {
  895.                         text: textnya,
  896.                         mentions: membernya,
  897.                     });
  898.                 }
  899.             } else if (x.player[i].role === "warga") {
  900.                 if (x.player[i].isdead != true) {
  901.                     textnya = `*⌂ W E R E W O L F - G A M E*\n\nSebagai seorang warga berhati-hatilah, mungkin kamu adalah target selanjutnya.\n*LIST PLAYER*:${tok1}`;
  902.                     await conn.sendMessage(x.player[i].id, {
  903.                         text: textnya,
  904.                         mentions: membernya,
  905.                     });
  906.                 }
  907.             } else if (x.player[i].role === "seer") {
  908.                 if (x.player[i].isdead != true) {
  909.                     textnya = `Baiklah, siapa yang ingin kamu lihat peran nya kali ini.\n*LIST PLAYER*:${tok1}\n\nKetik *.wwpc dreamy nomor* untuk melihat role player`;
  910.  
  911.                     await conn.sendMessage(x.player[i].id, {
  912.                         text: textnya,
  913.                         mentions: membernya,
  914.                     });
  915.                 }
  916.             } else if (x.player[i].role === "guardian") {
  917.                 if (x.player[i].isdead != true) {
  918.                     textnya = `Kamu adalah seorang*Guardian*, lindungi para warga, silahkan pilih salah 1 player yang ingin kamu lindungi\n*LIST PLAYER*:${tok1}\n\nKetik *.wwpc deff nomor* untuk melindungi player`;
  919.  
  920.                     await conn.sendMessage(x.player[i].id, {
  921.                         text: textnya,
  922.                         mentions: membernya,
  923.                     });
  924.                 }
  925.             } else if (x.player[i].role === "sorcerer") {
  926.                 if (x.player[i].isdead != true) {
  927.                     textnya = `Baiklah, lihat apa yang bisa kamu buat, silakan pilih 1 orang yang ingin kamu buka identitasnya\n*LIST PLAYER*:${tok2}\n\nKetik *.wwpc sorcerer nomor* untuk melihat role player`;
  928.  
  929.                     await conn.sendMessage(x.player[i].id, {
  930.                         text: textnya,
  931.                         mentions: membernya,
  932.                     });
  933.                 }
  934.             }
  935.         }
  936.     }
  937. }
  938.  
  939. async function win(x, t, conn, data) {
  940.     const sesinya = x.room;
  941.     if (getWinner(x.room, data).status === false || x.iswin === false) {
  942.         textnya = `*W E R E W O L F - W I N*\n\nTEAM WEREWOLF\n\n`;
  943.         let ment = [];
  944.         for (let i = 0; i < x.player.length; i++) {
  945.             if (x.player[i].role === "sorcerer" || x.player[i].role === "werewolf") {
  946.                 textnya += `${x.player[i].number}) @${x.player[i].id.replace(
  947.           "@s.whatsapp.net",
  948.           ""
  949.         )}\n     *Role* : ${x.player[i].role}\n\n`;
  950.                 ment.push(x.player[i].id);
  951.             }
  952.         }
  953.         return await conn
  954.             .sendMessage(sesinya, {
  955.                 text: textnya,
  956.                 contextInfo: {
  957.                     externalAdReply: {
  958.                         title: "W E R E W O L F",
  959.                         mediaType: 1,
  960.                         renderLargerThumbnail: true,
  961.                         thumbnail: await resize(thumb5, 300, 175),
  962.                         sourceUrl: "",
  963.                         mediaUrl: thumb5,
  964.                     },
  965.                     mentionedJid: ment,
  966.                 },
  967.             })
  968.             .then(() => {
  969.                 delete data[x.room];
  970.             });
  971.     } else if (getWinner(x.room, data).status === true) {
  972.         textnya = `*T E A M - W A R G A - W I N*\n\nTEAM WARGA\n\n`;
  973.         let ment = [];
  974.         for (let i = 0; i < x.player.length; i++) {
  975.             if (
  976.                 x.player[i].role === "warga" ||
  977.                 x.player[i].role === "guardian" ||
  978.                 x.player[i].role === "seer"
  979.             ) {
  980.                 textnya += `${x.player[i].number}) @${x.player[i].id.replace(
  981.           "@s.whatsapp.net",
  982.           ""
  983.         )}\n     *Role* : ${x.player[i].role}\n\n`;
  984.                 ment.push(x.player[i].id);
  985.             }
  986.         }
  987.         return await conn.sendMessage(sesinya, {
  988.             text: textnya,
  989.             contextInfo: {
  990.                 externalAdReply: {
  991.                     title: "W E R E W O L F",
  992.                     mediaType: 1,
  993.                     renderLargerThumbnail: true,
  994.                     thumbnail: await resize(thumb6, 300, 175),
  995.                     sourceUrl: "",
  996.                     mediaUrl: thumb5,
  997.                 },
  998.                 mentionedJid: ment,
  999.             },
  1000.         });
  1001.     }
  1002. }
  1003.  
  1004. // playing
  1005. async function run(conn, id, data) {
  1006.     while (getWinner(id, data).status === null) {
  1007.         if (getWinner(id, data).status != null) {
  1008.             win(getWinner(id, data), 1, conn, data);
  1009.             break;
  1010.         } else {
  1011.             await sleep(90000);
  1012.         }
  1013.         if (getWinner(id, data).status != null) {
  1014.             win(getWinner(id, data), 1, conn, data);
  1015.             break;
  1016.         } else {
  1017.             await pagi(conn, sesi(id, data), data);
  1018.         }
  1019.         if (getWinner(id, data).status != null) {
  1020.             win(getWinner(id, data), 1, conn, data);
  1021.             break;
  1022.         } else {
  1023.             await sleep(90000);
  1024.         }
  1025.         if (getWinner(id, data).status != null) {
  1026.             win(getWinner(id, data), 1, conn, data);
  1027.             break;
  1028.         } else {
  1029.             await voting(conn, sesi(id, data), data);
  1030.         }
  1031.         if (getWinner(id, data).status != null) {
  1032.             win(getWinner(id, data), 1, conn, data);
  1033.             break;
  1034.         } else {
  1035.             await sleep(90000);
  1036.         }
  1037.         if (getWinner(id, data).status != null) {
  1038.             win(getWinner(id, data), 1, conn, data);
  1039.             break;
  1040.         } else {
  1041.             await malam(conn, sesi(id, data), data);
  1042.         }
  1043.         if (getWinner(id, data).status != null) {
  1044.             win(getWinner(id, data), 1, conn, data);
  1045.             break;
  1046.         } else {
  1047.             await skill(conn, sesi(id, data), data);
  1048.         }
  1049.         if (getWinner(id, data).status != null) break;
  1050.     }
  1051.     await win(sesi(id, data), 1, conn, data);
  1052. }
  1053.  
  1054. async function run_vote(conn, id, data) {
  1055.     while (getWinner(id, data).status === null) {
  1056.         if (getWinner(id, data).status != null) {
  1057.             win(getWinner(id, data), 1, conn, data);
  1058.             break;
  1059.         } else {
  1060.             await voting(conn, sesi(id, data), data);
  1061.         }
  1062.         if (getWinner(id, data).status != null) {
  1063.             win(getWinner(id, data), 1, conn, data);
  1064.             break;
  1065.         } else {
  1066.             await sleep(90000);
  1067.         }
  1068.         if (getWinner(id, data).status != null) {
  1069.             win(getWinner(id, data), 1, conn, data);
  1070.             break;
  1071.         } else {
  1072.             await malam(conn, sesi(id, data), data);
  1073.         }
  1074.         if (getWinner(id, data).status != null) {
  1075.             win(getWinner(id, data), 1, conn, data);
  1076.             break;
  1077.         } else {
  1078.             await skill(conn, sesi(id, data), data);
  1079.         }
  1080.         if (getWinner(id, data).status != null) {
  1081.             win(getWinner(id, data), 1, conn, data);
  1082.             break;
  1083.         } else {
  1084.             await sleep(90000);
  1085.         }
  1086.         if (getWinner(id, data).status != null) {
  1087.             win(getWinner(id, data), 1, conn, data);
  1088.             break;
  1089.         } else {
  1090.             await pagi(conn, sesi(id, data), data);
  1091.         }
  1092.         if (getWinner(id, data).status != null) {
  1093.             win(getWinner(id, data), 1, conn, data);
  1094.             break;
  1095.         } else {
  1096.             await sleep(90000);
  1097.         }
  1098.         if (getWinner(id, data).status != null) break;
  1099.     }
  1100.     await win(sesi(id, data), 1, conn, data);
  1101. }
  1102.  
  1103. async function run_malam(conn, id, data) {
  1104.     while (getWinner(id, data).status === null) {
  1105.         if (getWinner(id, data).status != null) {
  1106.             win(getWinner(id, data), 1, conn, data);
  1107.             break;
  1108.         } else {
  1109.             await skill(conn, sesi(id, data), data);
  1110.         }
  1111.         if (getWinner(id, data).status != null) {
  1112.             win(getWinner(id, data), 1, conn, data);
  1113.             break;
  1114.         } else {
  1115.             await sleep(90000);
  1116.         }
  1117.         if (getWinner(id, data).status != null) {
  1118.             win(getWinner(id, data), 1, conn, data);
  1119.             break;
  1120.         } else {
  1121.             await pagi(conn, sesi(id, data), data);
  1122.         }
  1123.         if (getWinner(id, data).status != null) {
  1124.             win(getWinner(id, data), 1, conn, data);
  1125.             break;
  1126.         } else {
  1127.             await sleep(90000);
  1128.         }
  1129.         if (getWinner(id, data).status != null) {
  1130.             win(getWinner(id, data), 1, conn, data);
  1131.             break;
  1132.         } else {
  1133.             await voting(conn, sesi(id, data), data);
  1134.         }
  1135.         if (getWinner(id, data).status != null) {
  1136.             win(getWinner(id, data), 1, conn, data);
  1137.             break;
  1138.         } else {
  1139.             await sleep(90000);
  1140.         }
  1141.         if (getWinner(id, data).status != null) {
  1142.             win(getWinner(id, data), 1, conn, data);
  1143.             break;
  1144.         } else {
  1145.             await malam(conn, sesi(id, data), data);
  1146.         }
  1147.         if (getWinner(id, data).status != null) break;
  1148.     }
  1149.     await win(sesi(id, data), 1, conn, data);
  1150. }
  1151.  
  1152. async function run_pagi(conn, id, data) {
  1153.     while (getWinner(id, data).status === null) {
  1154.         if (getWinner(id, data).status != null) {
  1155.             win(getWinner(id, data), 1, conn, data);
  1156.             break;
  1157.         } else {
  1158.             await pagi(conn, sesi(id, data), data);
  1159.         }
  1160.         if (getWinner(id, data).status != null) {
  1161.             win(getWinner(id, data), 1, conn, data);
  1162.             break;
  1163.         } else {
  1164.             await sleep(90000);
  1165.         }
  1166.         if (getWinner(id, data).status != null) {
  1167.             win(getWinner(id, data), 1, conn, data);
  1168.             break;
  1169.         } else {
  1170.             await voting(conn, sesi(id, data), data);
  1171.         }
  1172.         if (getWinner(id, data).status != null) {
  1173.             win(getWinner(id, data), 1, conn, data);
  1174.             break;
  1175.         } else {
  1176.             await sleep(90000);
  1177.         }
  1178.         if (getWinner(id, data).status != null) {
  1179.             win(getWinner(id, data), 1, conn, data);
  1180.             break;
  1181.         } else {
  1182.             await malam(conn, sesi(id, data), data);
  1183.         }
  1184.         if (getWinner(id, data).status != null) {
  1185.             win(getWinner(id, data), 1, conn, data);
  1186.             break;
  1187.         } else {
  1188.             await skill(conn, sesi(id, data), data);
  1189.         }
  1190.         if (getWinner(id, data).status != null) {
  1191.             win(getWinner(id, data), 1, conn, data);
  1192.             break;
  1193.         } else {
  1194.             await sleep(90000);
  1195.         }
  1196.         if (getWinner(id, data).status != null) break;
  1197.     }
  1198.     await win(sesi(id, data), 1, conn, data);
  1199. }
  1200.  
  1201. module.exports = {
  1202.     emoji_role,
  1203.     sesi,
  1204.     playerOnGame,
  1205.     playerOnRoom,
  1206.     playerExit,
  1207.     dataPlayer,
  1208.     dataPlayerById,
  1209.     getPlayerById,
  1210.     getPlayerById2,
  1211.     killWerewolf,
  1212.     killww,
  1213.     dreamySeer,
  1214.     sorcerer,
  1215.     protectGuardian,
  1216.     roleShuffle,
  1217.     roleChanger,
  1218.     roleAmount,
  1219.     roleGenerator,
  1220.     addTimer,
  1221.     startGame,
  1222.     playerHidup,
  1223.     playerMati,
  1224.     vote,
  1225.     voteResult,
  1226.     clearAllVote,
  1227.     getWinner,
  1228.     win,
  1229.     pagi,
  1230.     malam,
  1231.     skill,
  1232.     voteStart,
  1233.     voteDone,
  1234.     voting,
  1235.     run,
  1236.     run_vote,
  1237.     run_malam,
  1238.     run_pagi,
  1239. };
Add Comment
Please, Sign In to add comment