@k4la/library 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/data/asahotak.json +1142 -0
- package/data/family100.json +73589 -0
- package/data/susunkata.json +3008 -0
- package/data/tebakbendera.json +346 -0
- package/data/tebakgambar.json +6002 -0
- package/data/tebakkata.json +1512 -0
- package/data/tebakkimia.json +502 -0
- package/index.js +29 -0
- package/lib/blackjack.js +219 -0
- package/lib/converter.js +105 -0
- package/lib/exif.js +205 -0
- package/lib/function.js +13 -0
- package/lib/game.js +58 -0
- package/lib/tictactoe.js +164 -0
- package/lib/ulartangga.js +181 -0
- package/lib/uno.js +250 -0
- package/lib/uploader.js +136 -0
- package/lib/werewolf.js +1208 -0
- package/package.json +23 -0
package/lib/werewolf.js
ADDED
|
@@ -0,0 +1,1208 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file lib/utils/werewolf.js
|
|
3
|
+
* @description Utility functions for managing Werewolf game logic
|
|
4
|
+
* @author K4lameety
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
let toMs = require("ms")
|
|
8
|
+
let jimp = require("jimp")
|
|
9
|
+
|
|
10
|
+
let thumb1 = "https://user-images.githubusercontent.com/72728486/235344562-4677d2ad-48ee-419d-883f-e0ca9ba1c7b8.jpg"
|
|
11
|
+
let thumb2 = "https://user-images.githubusercontent.com/72728486/235344861-acdba7d1-8fce-41b8-adf6-337c818cda2b.jpg"
|
|
12
|
+
let thumb3 = "https://user-images.githubusercontent.com/72728486/235316834-f9f84ba0-8df3-4444-81d8-db5270995e6d.jpg"
|
|
13
|
+
let thumb4 = "https://user-images.githubusercontent.com/72728486/235354619-6ad1cabd-216c-4c7c-b7c2-3a564836653a.jpg"
|
|
14
|
+
let thumb5 = "https://user-images.githubusercontent.com/72728486/235365156-cfab66ce-38b2-4bc7-90d7-7756fc320e06.jpg"
|
|
15
|
+
let thumb6 = "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
|
+
|
|
23
|
+
var a
|
|
24
|
+
var b
|
|
25
|
+
var d
|
|
26
|
+
var e
|
|
27
|
+
var f
|
|
28
|
+
var textnya
|
|
29
|
+
var idd
|
|
30
|
+
var room
|
|
31
|
+
|
|
32
|
+
async function sleep(ms) {
|
|
33
|
+
return new Promise((resolve) => setTimeout(resolve, ms))
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function emoji_role(role) {
|
|
37
|
+
if (role === "warga") {
|
|
38
|
+
return ""
|
|
39
|
+
} else if (role === "seer") {
|
|
40
|
+
return ""
|
|
41
|
+
} else if (role === "guardian") {
|
|
42
|
+
return ""
|
|
43
|
+
} else if (role === "sorcerer") {
|
|
44
|
+
return ""
|
|
45
|
+
} else if (role === "werewolf") {
|
|
46
|
+
return ""
|
|
47
|
+
} else {
|
|
48
|
+
return ""
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const findObject = (obj = {}, key, value) => {
|
|
53
|
+
const result = []
|
|
54
|
+
const recursiveSearch = (obj = {}) => {
|
|
55
|
+
if (!obj || typeof obj !== "object") {
|
|
56
|
+
return
|
|
57
|
+
}
|
|
58
|
+
if (obj[key] === value) {
|
|
59
|
+
result.push(obj)
|
|
60
|
+
}
|
|
61
|
+
Object.keys(obj).forEach(function(k) {
|
|
62
|
+
recursiveSearch(obj[k])
|
|
63
|
+
})
|
|
64
|
+
}
|
|
65
|
+
recursiveSearch(obj)
|
|
66
|
+
return result
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const sesi = (from, data) => {
|
|
70
|
+
if (!data[from]) return false
|
|
71
|
+
return data[from]
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const playerOnGame = (sender, data) => {
|
|
75
|
+
let result = findObject(data, "id", sender)
|
|
76
|
+
let index = false
|
|
77
|
+
if (result.length === 0) {
|
|
78
|
+
return index
|
|
79
|
+
} else {
|
|
80
|
+
index = true
|
|
81
|
+
}
|
|
82
|
+
return index
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
const playerOnRoom = (sender, from, data) => {
|
|
86
|
+
let result = findObject(data, "id", sender)
|
|
87
|
+
let index = false
|
|
88
|
+
if (result.length > 0 && result[0].sesi === from) {
|
|
89
|
+
index = true
|
|
90
|
+
} else {
|
|
91
|
+
return index
|
|
92
|
+
}
|
|
93
|
+
return index
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const dataPlayer = (sender, data) => {
|
|
97
|
+
let result = findObject(data, "id", sender)
|
|
98
|
+
let index = false
|
|
99
|
+
if (result.length > 0 && result[0].id === sender) {
|
|
100
|
+
index = result[0]
|
|
101
|
+
} else {
|
|
102
|
+
return index
|
|
103
|
+
}
|
|
104
|
+
return index
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
const dataPlayerById = (id, data) => {
|
|
108
|
+
let result = findObject(data, "number", id)
|
|
109
|
+
let index = false
|
|
110
|
+
if (result.length > 0 && result[0].number === id) {
|
|
111
|
+
index = result[0]
|
|
112
|
+
} else {
|
|
113
|
+
return index
|
|
114
|
+
}
|
|
115
|
+
return index
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
const playerExit = (from, id, data) => {
|
|
119
|
+
room = sesi(from, data)
|
|
120
|
+
if (!room) return false
|
|
121
|
+
const indexPlayer = room.player.findIndex((i) => i.id === id)
|
|
122
|
+
room.player.splice(indexPlayer, 1)
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
const getPlayerById = (from, sender, id, data) => {
|
|
126
|
+
room = sesi(from, data)
|
|
127
|
+
if (!room) return false
|
|
128
|
+
const indexPlayer = room.player.findIndex((i) => i.number === id)
|
|
129
|
+
if (indexPlayer === -1) return false
|
|
130
|
+
return {
|
|
131
|
+
index: indexPlayer,
|
|
132
|
+
sesi: room.player[indexPlayer].sesi,
|
|
133
|
+
db: room.player[indexPlayer],
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
const getPlayerById2 = (sender, id, data) => {
|
|
138
|
+
let result = findObject(data, "id", sender)
|
|
139
|
+
if (result.length > 0 && result[0].id === sender) {
|
|
140
|
+
let from = result[0].sesi
|
|
141
|
+
room = sesi(from, data)
|
|
142
|
+
if (!room) return false
|
|
143
|
+
const indexPlayer = room.player.findIndex((i) => i.number === id)
|
|
144
|
+
if (indexPlayer === -1) return false
|
|
145
|
+
return {
|
|
146
|
+
index: indexPlayer,
|
|
147
|
+
sesi: room.player[indexPlayer].sesi,
|
|
148
|
+
db: room.player[indexPlayer],
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
const killWerewolf = (sender, id, data) => {
|
|
154
|
+
let result = getPlayerById2(sender, id, data)
|
|
155
|
+
if (!result) return false
|
|
156
|
+
let {
|
|
157
|
+
index,
|
|
158
|
+
sesi,
|
|
159
|
+
db
|
|
160
|
+
} = result
|
|
161
|
+
if (data[sesi].player[index].number === id) {
|
|
162
|
+
if (db.effect.includes("guardian")) {
|
|
163
|
+
data[sesi].guardian.push(parseInt(id))
|
|
164
|
+
data[sesi].dead.push(parseInt(id))
|
|
165
|
+
} else if (!db.effect.includes("guardian")) {
|
|
166
|
+
data[sesi].dead.push(parseInt(id))
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
const dreamySeer = (sender, id, data) => {
|
|
172
|
+
let result = getPlayerById2(sender, id, data)
|
|
173
|
+
if (!result) return false
|
|
174
|
+
let {
|
|
175
|
+
index,
|
|
176
|
+
sesi,
|
|
177
|
+
db
|
|
178
|
+
} = result
|
|
179
|
+
if (data[sesi].player[index].role === "werewolf") {
|
|
180
|
+
data[sesi].seer = true
|
|
181
|
+
}
|
|
182
|
+
return data[sesi].player[index].role
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
const sorcerer = (sender, id, data) => {
|
|
186
|
+
let result = getPlayerById2(sender, id, data)
|
|
187
|
+
if (!result) return false
|
|
188
|
+
let {
|
|
189
|
+
index,
|
|
190
|
+
sesi,
|
|
191
|
+
db
|
|
192
|
+
} = result
|
|
193
|
+
return data[sesi].player[index].role
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
const protectGuardian = (sender, id, data) => {
|
|
197
|
+
let result = getPlayerById2(sender, id, data)
|
|
198
|
+
if (!result) return false
|
|
199
|
+
let {
|
|
200
|
+
index,
|
|
201
|
+
sesi,
|
|
202
|
+
db
|
|
203
|
+
} = result
|
|
204
|
+
data[sesi].player[index].effect.push("guardian")
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
const roleShuffle = (array) => {
|
|
208
|
+
let currentIndex = array.length,
|
|
209
|
+
randomIndex
|
|
210
|
+
while (currentIndex != 0) {
|
|
211
|
+
randomIndex = Math.floor(Math.random() * currentIndex)
|
|
212
|
+
currentIndex--
|
|
213
|
+
[array[currentIndex], array[randomIndex]] = [
|
|
214
|
+
array[randomIndex],
|
|
215
|
+
array[currentIndex],
|
|
216
|
+
]
|
|
217
|
+
}
|
|
218
|
+
return array
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
const roleChanger = (from, id, role, data) => {
|
|
222
|
+
room = sesi(from, data)
|
|
223
|
+
if (!room) return false
|
|
224
|
+
var index = room.player.findIndex((i) => i.id === id)
|
|
225
|
+
if (index === -1) return false
|
|
226
|
+
room.player[index].role = role
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
const roleAmount = (from, data) => {
|
|
230
|
+
const result = sesi(from, data)
|
|
231
|
+
if (!result) return false
|
|
232
|
+
if (result.player.length == 4) {
|
|
233
|
+
return {
|
|
234
|
+
werewolf: 1,
|
|
235
|
+
seer: 1,
|
|
236
|
+
guardian: 1,
|
|
237
|
+
warga: 1,
|
|
238
|
+
sorcere: 0,
|
|
239
|
+
}
|
|
240
|
+
} else if (result.player.length == 5) {
|
|
241
|
+
return {
|
|
242
|
+
werewolf: 1,
|
|
243
|
+
seer: 1,
|
|
244
|
+
guardian: 1,
|
|
245
|
+
warga: 3,
|
|
246
|
+
sorcere: 0,
|
|
247
|
+
}
|
|
248
|
+
} else if (result.player.length == 6) {
|
|
249
|
+
return {
|
|
250
|
+
werewolf: 2,
|
|
251
|
+
seer: 1,
|
|
252
|
+
guardian: 1,
|
|
253
|
+
warga: 2,
|
|
254
|
+
sorcere: 0,
|
|
255
|
+
}
|
|
256
|
+
} else if (result.player.length == 7) {
|
|
257
|
+
return {
|
|
258
|
+
werewolf: 2,
|
|
259
|
+
seer: 1,
|
|
260
|
+
guardian: 1,
|
|
261
|
+
warga: 3,
|
|
262
|
+
sorcere: 0,
|
|
263
|
+
}
|
|
264
|
+
} else if (result.player.length == 8) {
|
|
265
|
+
return {
|
|
266
|
+
werewolf: 2,
|
|
267
|
+
seer: 1,
|
|
268
|
+
guardian: 1,
|
|
269
|
+
warga: 4,
|
|
270
|
+
sorcere: 0,
|
|
271
|
+
}
|
|
272
|
+
} else if (result.player.length == 9) {
|
|
273
|
+
return {
|
|
274
|
+
werewolf: 2,
|
|
275
|
+
seer: 1,
|
|
276
|
+
guardian: 1,
|
|
277
|
+
warga: 4,
|
|
278
|
+
sorcere: 1,
|
|
279
|
+
}
|
|
280
|
+
} else if (result.player.length == 10) {
|
|
281
|
+
return {
|
|
282
|
+
werewolf: 2,
|
|
283
|
+
seer: 1,
|
|
284
|
+
guardian: 1,
|
|
285
|
+
warga: 5,
|
|
286
|
+
sorcere: 1,
|
|
287
|
+
}
|
|
288
|
+
} else if (result.player.length == 11) {
|
|
289
|
+
return {
|
|
290
|
+
werewolf: 2,
|
|
291
|
+
seer: 1,
|
|
292
|
+
guardian: 2,
|
|
293
|
+
warga: 5,
|
|
294
|
+
sorcere: 1,
|
|
295
|
+
}
|
|
296
|
+
} else if (result.player.length == 12) {
|
|
297
|
+
return {
|
|
298
|
+
werewolf: 2,
|
|
299
|
+
seer: 1,
|
|
300
|
+
guardian: 2,
|
|
301
|
+
warga: 6,
|
|
302
|
+
sorcere: 1,
|
|
303
|
+
}
|
|
304
|
+
} else if (result.player.length == 13) {
|
|
305
|
+
return {
|
|
306
|
+
werewolf: 2,
|
|
307
|
+
seer: 1,
|
|
308
|
+
guardian: 1,
|
|
309
|
+
warga: 7,
|
|
310
|
+
sorcere: 1,
|
|
311
|
+
}
|
|
312
|
+
} else if (result.player.length == 14) {
|
|
313
|
+
return {
|
|
314
|
+
werewolf: 2,
|
|
315
|
+
seer: 2,
|
|
316
|
+
guardian: 2,
|
|
317
|
+
warga: 7,
|
|
318
|
+
sorcere: 1,
|
|
319
|
+
}
|
|
320
|
+
} else if (result.player.length == 15) {
|
|
321
|
+
return {
|
|
322
|
+
werewolf: 3,
|
|
323
|
+
seer: 2,
|
|
324
|
+
guardian: 3,
|
|
325
|
+
warga: 6,
|
|
326
|
+
sorcere: 1,
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
const roleGenerator = (from, data) => {
|
|
332
|
+
room = sesi(from, data)
|
|
333
|
+
if (!room) return false
|
|
334
|
+
var role = roleAmount(from, data)
|
|
335
|
+
for (var i = 0; i < role.werewolf; i++) {
|
|
336
|
+
var player = room.player.filter((x) => x.role === false)
|
|
337
|
+
var list = roleShuffle(player)
|
|
338
|
+
if (list.length === 0) return false
|
|
339
|
+
var random = Math.floor(Math.random() * list.length)
|
|
340
|
+
roleChanger(from, list[random].id, "werewolf", data)
|
|
341
|
+
}
|
|
342
|
+
for (var i = 0; i < role.seer; i++) {
|
|
343
|
+
var player = room.player.filter((x) => x.role === false)
|
|
344
|
+
var list = roleShuffle(player)
|
|
345
|
+
if (list.length === 0) return false
|
|
346
|
+
var random = Math.floor(Math.random() * list.length)
|
|
347
|
+
roleChanger(from, list[random].id, "seer", data)
|
|
348
|
+
}
|
|
349
|
+
for (var i = 0; i < role.guardian; 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, "guardian", data)
|
|
355
|
+
}
|
|
356
|
+
for (var i = 0; i < role.warga; 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, "warga", data)
|
|
362
|
+
}
|
|
363
|
+
for (var i = 0; i < role.sorcere; 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, "sorcerer", data)
|
|
369
|
+
}
|
|
370
|
+
shortPlayer(from, data)
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
const addTimer = (from, data) => {
|
|
374
|
+
room = sesi(from, data)
|
|
375
|
+
if (!room) return false
|
|
376
|
+
room.cooldown = Date.now() + toMs(90 + "s")
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
const startGame = (from, data) => {
|
|
380
|
+
room = sesi(from, data)
|
|
381
|
+
if (!room) return false
|
|
382
|
+
room.status = true
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
const changeDay = (from, data) => {
|
|
386
|
+
room = sesi(from, data)
|
|
387
|
+
if (!room) return false
|
|
388
|
+
if (room.time === "pagi") {
|
|
389
|
+
room.time = "voting"
|
|
390
|
+
} else if (room.time === "malem") {
|
|
391
|
+
room.time = "pagi"
|
|
392
|
+
room.day += 1
|
|
393
|
+
} else if (room.time === "voting") {
|
|
394
|
+
room.time = "malem"
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
const dayVoting = (from, data) => {
|
|
399
|
+
room = sesi(from, data)
|
|
400
|
+
if (!room) return false
|
|
401
|
+
if (room.time === "malem") {
|
|
402
|
+
room.time = "voting"
|
|
403
|
+
} else if (room.time === "pagi") {
|
|
404
|
+
room.time = "voting"
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
const vote = (from, id, sender, data) => {
|
|
409
|
+
room = sesi(from, data)
|
|
410
|
+
if (!room) return false
|
|
411
|
+
const idGet = room.player.findIndex((i) => i.id === sender)
|
|
412
|
+
if (idGet === -1) return false
|
|
413
|
+
const indexPlayer = room.player.findIndex((i) => i.number === id)
|
|
414
|
+
if (indexPlayer === -1) return false
|
|
415
|
+
if (idGet !== -1) {
|
|
416
|
+
room.player[idGet].isvote = true
|
|
417
|
+
}
|
|
418
|
+
room.player[indexPlayer].vote += 1
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
const voteResult = (from, data) => {
|
|
422
|
+
room = sesi(from, data)
|
|
423
|
+
if (!room) return false
|
|
424
|
+
room.player.sort((a, b) => (a.vote < b.vote ? 1 : -1))
|
|
425
|
+
if (room.player[0].vote === 0) return 0
|
|
426
|
+
if (room.player[0].vote === room.player[1].vote) return 1
|
|
427
|
+
return room.player[0]
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
const voteKill = (from, data) => {
|
|
431
|
+
room = sesi(from, data)
|
|
432
|
+
if (!room) return false
|
|
433
|
+
room.player.sort((a, b) => (a.vote < b.vote ? 1 : -1))
|
|
434
|
+
if (room.player[0].vote === 0) return 0
|
|
435
|
+
if (room.player[0].vote === room.player[1].vote) return 1
|
|
436
|
+
room.player[0].isdead = true
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
const resetVote = (from, data) => {
|
|
440
|
+
room = sesi(from, data)
|
|
441
|
+
if (!room) return false
|
|
442
|
+
for (let i = 0; i < room.player.length; i++) {
|
|
443
|
+
room.player[i].vote = 0
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
const voteDone = (from, data) => {
|
|
448
|
+
room = sesi(from, data)
|
|
449
|
+
if (!room) return false
|
|
450
|
+
room.voting = false
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
const voteStart = (from, data) => {
|
|
454
|
+
room = sesi(from, data)
|
|
455
|
+
if (!room) return false
|
|
456
|
+
room.voting = true
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
const clearAllVote = (from, data) => {
|
|
460
|
+
room = sesi(from, data)
|
|
461
|
+
if (!room) return false
|
|
462
|
+
for (let i = 0; i < room.player.length; i++) {
|
|
463
|
+
room.player[i].vote = 0
|
|
464
|
+
room.player[i].isvote = false
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
const clearAll = (from, data) => {
|
|
469
|
+
room = sesi(from, data)
|
|
470
|
+
if (!room) return false
|
|
471
|
+
room.dead = []
|
|
472
|
+
room.seer = false
|
|
473
|
+
room.guardian = []
|
|
474
|
+
room.voting = false
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
const clearAllSTATUS = (from, data) => {
|
|
478
|
+
room = sesi(from, data)
|
|
479
|
+
if (!room) return false
|
|
480
|
+
for (let i = 0; i < room.player.length; i++) {
|
|
481
|
+
room.player[i].effect = []
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
const skillOn = (from, data) => {
|
|
486
|
+
room = sesi(from, data)
|
|
487
|
+
if (!room) return false
|
|
488
|
+
for (let i = 0; i < room.player.length; i++) {
|
|
489
|
+
room.player[i].status = false
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
const skillOff = (from, data) => {
|
|
494
|
+
room = sesi(from, data)
|
|
495
|
+
if (!room) return false
|
|
496
|
+
for (let i = 0; i < room.player.length; i++) {
|
|
497
|
+
room.player[i].status = true
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
const playerHidup = (data) => {
|
|
502
|
+
const hasil = data.player.filter((x) => x.isdead === false)
|
|
503
|
+
return hasil.length
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
const playerMati = (data) => {
|
|
507
|
+
const hasil = data.player.filter((x) => x.isdead === true)
|
|
508
|
+
return hasil.length
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
const getWinner = (from, data) => {
|
|
512
|
+
room = sesi(from, data)
|
|
513
|
+
if (!room) return false
|
|
514
|
+
var ww = 0
|
|
515
|
+
var orang_baek = 0
|
|
516
|
+
for (let i = 0; i < room.player.length; i++) {
|
|
517
|
+
if (room.player[i].isdead === false) {
|
|
518
|
+
if (
|
|
519
|
+
room.player[i].role === "werewolf" ||
|
|
520
|
+
room.player[i].role === "sorcerer"
|
|
521
|
+
) {
|
|
522
|
+
ww += 1
|
|
523
|
+
} else if (
|
|
524
|
+
room.player[i].role === "warga" ||
|
|
525
|
+
room.player[i].role === "guardian" ||
|
|
526
|
+
room.player[i].role === "seer"
|
|
527
|
+
) {
|
|
528
|
+
orang_baek += 1
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
if (room.voting) {
|
|
533
|
+
b = voteResult(from, data)
|
|
534
|
+
if (b != 0 && b != 1) {
|
|
535
|
+
if (b.role === "werewolf" || b.role === "sorcerer") {
|
|
536
|
+
ww -= 1
|
|
537
|
+
} else if (
|
|
538
|
+
b.role === "warga" ||
|
|
539
|
+
b.role === "seer" ||
|
|
540
|
+
b.role === "guardian"
|
|
541
|
+
) {
|
|
542
|
+
orang_baek -= 1
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
if (ww === 0) {
|
|
547
|
+
room.iswin = true
|
|
548
|
+
return {
|
|
549
|
+
voting: room.voting,
|
|
550
|
+
status: true
|
|
551
|
+
}
|
|
552
|
+
} else if (ww === orang_baek) {
|
|
553
|
+
room.iswin = false
|
|
554
|
+
return {
|
|
555
|
+
voting: room.voting,
|
|
556
|
+
status: false
|
|
557
|
+
}
|
|
558
|
+
} else if (orang_baek === 0) {
|
|
559
|
+
room.iswin = false
|
|
560
|
+
return {
|
|
561
|
+
voting: room.voting,
|
|
562
|
+
status: false
|
|
563
|
+
}
|
|
564
|
+
} else {
|
|
565
|
+
return {
|
|
566
|
+
voting: room.voting,
|
|
567
|
+
status: null
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
const shortPlayer = (from, data) => {
|
|
573
|
+
room = sesi(from, data)
|
|
574
|
+
if (!room) return false
|
|
575
|
+
room.player.sort((a, b) => a.number - b.number)
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
const killww = (from, id, data) => {
|
|
579
|
+
room = sesi(from, data)
|
|
580
|
+
if (!room) return false
|
|
581
|
+
for (let j = 0; j < room.dead.length; j++) {
|
|
582
|
+
idd = getPlayerById(from, room.player[0].id, room.dead[j], data)
|
|
583
|
+
if (!idd) return false
|
|
584
|
+
if (room.player[idd.index].effect.includes("guardian")) return
|
|
585
|
+
room.player[idd.index].isdead = true
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
const pagii = (data) => {
|
|
590
|
+
if (data.dead.length < 1) {
|
|
591
|
+
return `W E R E W O L F - G A M E\n\nThe sun has risen, there are no casualties tonight, villagers return to their activities as usual.\n90 seconds remain before decision time, villagers are welcome to discuss\nDay ${data.day}`
|
|
592
|
+
} else {
|
|
593
|
+
a = ""
|
|
594
|
+
d = ""
|
|
595
|
+
e = []
|
|
596
|
+
f = []
|
|
597
|
+
for (let i = 0; i < data.dead.length; i++) {
|
|
598
|
+
b = data.player.findIndex((x) => x.number === data.dead[i])
|
|
599
|
+
if (data.player[b].effect.includes("guardian")) {
|
|
600
|
+
e.push(data.player[b].id)
|
|
601
|
+
} else {
|
|
602
|
+
f.push(data.player[b].id)
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
for (let i = 0; i < f.length; i++) {
|
|
606
|
+
if (i === f.length - 1) {
|
|
607
|
+
if (f.length > 1) {
|
|
608
|
+
a += ` and @${f[i].replace("@s.whatsapp.net", "")}`
|
|
609
|
+
} else {
|
|
610
|
+
a += `@${f[i].replace("@s.whatsapp.net", "")}`
|
|
611
|
+
}
|
|
612
|
+
} else if (i === f.length - 2) {
|
|
613
|
+
a += `@${f[i].replace("@s.whatsapp.net", "")}`
|
|
614
|
+
} else {
|
|
615
|
+
a += `@${f[i].replace("@s.whatsapp.net", "")}, `
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
for (let i = 0; i < e.length; i++) {
|
|
619
|
+
if (i === e.length - 1) {
|
|
620
|
+
if (e.length > 1) {
|
|
621
|
+
d += ` and @${e[i].replace("@s.whatsapp.net", "")}`
|
|
622
|
+
} else {
|
|
623
|
+
d += `@${e[i].replace("@s.whatsapp.net", "")}`
|
|
624
|
+
}
|
|
625
|
+
} else if (i === e.length - 2) {
|
|
626
|
+
d += `@${e[i].replace("@s.whatsapp.net", "")}`
|
|
627
|
+
} else {
|
|
628
|
+
d += `@${e[i].replace("@s.whatsapp.net", "")}, `
|
|
629
|
+
}
|
|
630
|
+
}
|
|
631
|
+
textnya = `W E R E W O L F - G A M E\n\nMorning has arrived, villagers found ${
|
|
632
|
+
data.dead.length > 1 ? "some" : "1"
|
|
633
|
+
} bodies in piles of rubble and scattered blood. ${a ? a + " has died! " : ""}${
|
|
634
|
+
d.length > 1
|
|
635
|
+
? ` ${d} was almost killed, but the Guardian Angel managed to protect them.`
|
|
636
|
+
: ""
|
|
637
|
+
}\n\nSuddenly it is noon, the sun is directly overhead, the scorching heat makes the atmosphere chaotic, villagers have 90 seconds to discuss\nDay ${
|
|
638
|
+
data.day
|
|
639
|
+
}`
|
|
640
|
+
return textnya
|
|
641
|
+
}
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
async function pagi(Kyzo, x, data) {
|
|
645
|
+
skillOff(x.room, data)
|
|
646
|
+
let ment = []
|
|
647
|
+
for (let i = 0; i < x.player.length; i++) {
|
|
648
|
+
ment.push(x.player[i].id)
|
|
649
|
+
}
|
|
650
|
+
shortPlayer(x.room, data)
|
|
651
|
+
killww(x.room, x.dead, data)
|
|
652
|
+
shortPlayer(x.room, data)
|
|
653
|
+
changeDay(x.room, data)
|
|
654
|
+
return await Kyzo.sendMessage(x.room, {
|
|
655
|
+
text: pagii(x),
|
|
656
|
+
contextInfo: {
|
|
657
|
+
externalAdReply: {
|
|
658
|
+
title: "W E R E W O L F",
|
|
659
|
+
mediaType: 1,
|
|
660
|
+
renderLargerThumbnail: true,
|
|
661
|
+
thumbnail: await resize(thumb1, 300, 175),
|
|
662
|
+
sourceUrl: "",
|
|
663
|
+
mediaUrl: thumb1,
|
|
664
|
+
},
|
|
665
|
+
mentionedJid: ment,
|
|
666
|
+
},
|
|
667
|
+
})
|
|
668
|
+
}
|
|
669
|
+
|
|
670
|
+
async function voting(Kyzo, x, data) {
|
|
671
|
+
let row = []
|
|
672
|
+
let ment = []
|
|
673
|
+
voteStart(x.room, data)
|
|
674
|
+
textnya =
|
|
675
|
+
"W E R E W O L F - G A M E\n\nTwilight has arrived. All villagers gather at the village hall to choose who will be executed. Some villagers look busy preparing torture tools for tonight. You have 90 seconds to choose! Be careful, there is a traitor among you!\n\nL I S T - P L A Y E R:\n"
|
|
676
|
+
shortPlayer(x.room, data)
|
|
677
|
+
for (let i = 0; i < x.player.length; i++) {
|
|
678
|
+
textnya += `(${x.player[i].number}) @${x.player[i].id.replace(
|
|
679
|
+
"@s.whatsapp.net",
|
|
680
|
+
""
|
|
681
|
+
)} ${x.player[i].isdead === true ? "" : ""}\n`
|
|
682
|
+
ment.push(x.player[i].id)
|
|
683
|
+
}
|
|
684
|
+
textnya += "\ntype .ww vote number to vote player"
|
|
685
|
+
dayVoting(x.room, data)
|
|
686
|
+
clearAll(x.room, data)
|
|
687
|
+
clearAllSTATUS(x.room, data)
|
|
688
|
+
return await Kyzo.sendMessage(x.room, {
|
|
689
|
+
text: textnya,
|
|
690
|
+
contextInfo: {
|
|
691
|
+
externalAdReply: {
|
|
692
|
+
title: "W E R E W O L F",
|
|
693
|
+
mediaType: 1,
|
|
694
|
+
renderLargerThumbnail: true,
|
|
695
|
+
thumbnail: await resize(thumb2, 300, 175),
|
|
696
|
+
sourceUrl: "",
|
|
697
|
+
mediaUrl: thumb2,
|
|
698
|
+
},
|
|
699
|
+
mentionedJid: ment,
|
|
700
|
+
},
|
|
701
|
+
})
|
|
702
|
+
}
|
|
703
|
+
|
|
704
|
+
async function malam(Kyzo, x, data) {
|
|
705
|
+
var hasil_vote = voteResult(x.room, data)
|
|
706
|
+
if (hasil_vote === 0) {
|
|
707
|
+
textnya = `W E R E W O L F - G A M E\n\nToo hesitant to choose. Villagers returned to their homes, no one was executed today. The moon shines brightly, a gripping night has come. Hopefully no one dies tonight. Night players: you have 90 seconds to act!`
|
|
708
|
+
return Kyzo
|
|
709
|
+
.sendMessage(x.room, {
|
|
710
|
+
text: textnya,
|
|
711
|
+
contextInfo: {
|
|
712
|
+
externalAdReply: {
|
|
713
|
+
title: "W E R E W O L F",
|
|
714
|
+
mediaType: 1,
|
|
715
|
+
renderLargerThumbnail: true,
|
|
716
|
+
thumbnail: await resize(thumb3, 300, 175),
|
|
717
|
+
sourceUrl: "",
|
|
718
|
+
mediaUrl: thumb3,
|
|
719
|
+
},
|
|
720
|
+
},
|
|
721
|
+
})
|
|
722
|
+
.then(() => {
|
|
723
|
+
changeDay(x.room, data)
|
|
724
|
+
voteDone(x.room, data)
|
|
725
|
+
resetVote(x.room, data)
|
|
726
|
+
clearAllVote(x.room, data)
|
|
727
|
+
if (getWinner(x.room, data).status != null)
|
|
728
|
+
return win(x, 1, Kyzo, data)
|
|
729
|
+
})
|
|
730
|
+
} else if (hasil_vote === 1) {
|
|
731
|
+
textnya = `W E R E W O L F - G A M E\n\nThe villagers have voted, but the result is a tie.\n\nThe stars shine beautifully tonight, villagers rest in their respective residences. Night players: you have 90 seconds to act!`
|
|
732
|
+
return Kyzo
|
|
733
|
+
.sendMessage(x.room, {
|
|
734
|
+
text: textnya,
|
|
735
|
+
contextInfo: {
|
|
736
|
+
externalAdReply: {
|
|
737
|
+
title: "W E R E W O L F",
|
|
738
|
+
mediaType: 1,
|
|
739
|
+
renderLargerThumbnail: true,
|
|
740
|
+
thumbnail: await resize(thumb3, 300, 175),
|
|
741
|
+
sourceUrl: "",
|
|
742
|
+
mediaUrl: thumb3,
|
|
743
|
+
},
|
|
744
|
+
},
|
|
745
|
+
})
|
|
746
|
+
.then(() => {
|
|
747
|
+
changeDay(x.room, data)
|
|
748
|
+
voteDone(x.room, data)
|
|
749
|
+
resetVote(x.room, data)
|
|
750
|
+
clearAllVote(x.room, data)
|
|
751
|
+
if (getWinner(x.room, data).status != null)
|
|
752
|
+
return win(x, 1, Kyzo, data)
|
|
753
|
+
})
|
|
754
|
+
} else if (hasil_vote != 0 && hasil_vote != 1) {
|
|
755
|
+
if (hasil_vote.role === "werewolf") {
|
|
756
|
+
textnya = `W E R E W O L F - G A M E\n\nVillagers have chosen and agreed @${hasil_vote.id.replace(
|
|
757
|
+
"@s.whatsapp.net",
|
|
758
|
+
""
|
|
759
|
+
)} to be executed.\n\n@${hasil_vote.id.replace(
|
|
760
|
+
"@s.whatsapp.net",
|
|
761
|
+
""
|
|
762
|
+
)} was a ${hasil_vote.role} ${emoji_role(hasil_vote.role)}`
|
|
763
|
+
voteKill(x.room, data)
|
|
764
|
+
let ment = []
|
|
765
|
+
ment.push(hasil_vote.id)
|
|
766
|
+
return await Kyzo
|
|
767
|
+
.sendMessage(x.room, {
|
|
768
|
+
text: textnya,
|
|
769
|
+
contextInfo: {
|
|
770
|
+
externalAdReply: {
|
|
771
|
+
title: "W E R E W O L F",
|
|
772
|
+
mediaType: 1,
|
|
773
|
+
renderLargerThumbnail: true,
|
|
774
|
+
thumbnail: await resize(thumb4, 300, 175),
|
|
775
|
+
sourceUrl: "",
|
|
776
|
+
mediaUrl: thumb4,
|
|
777
|
+
},
|
|
778
|
+
mentionedJid: ment,
|
|
779
|
+
},
|
|
780
|
+
})
|
|
781
|
+
.then(() => {
|
|
782
|
+
changeDay(x.room, data)
|
|
783
|
+
voteDone(x.room, data)
|
|
784
|
+
resetVote(x.room, data)
|
|
785
|
+
clearAllVote(x.room, data)
|
|
786
|
+
if (getWinner(x.room, data).status != null)
|
|
787
|
+
return win(x, 1, Kyzo, data)
|
|
788
|
+
})
|
|
789
|
+
} else {
|
|
790
|
+
textnya = `W E R E W O L F - G A M E\n\nVillagers have chosen and agreed @${hasil_vote.id.replace(
|
|
791
|
+
"@s.whatsapp.net",
|
|
792
|
+
""
|
|
793
|
+
)} to be executed.\n\n@${hasil_vote.id.replace(
|
|
794
|
+
"@s.whatsapp.net",
|
|
795
|
+
""
|
|
796
|
+
)} was a ${hasil_vote.role} ${emoji_role(
|
|
797
|
+
hasil_vote.role
|
|
798
|
+
)}\n\nThe moon shines brightly tonight, villagers rest in their respective residences. Night players: you have 90 seconds to act!`
|
|
799
|
+
voteKill(x.room, data)
|
|
800
|
+
let ment = []
|
|
801
|
+
ment.push(hasil_vote.id)
|
|
802
|
+
return await Kyzo
|
|
803
|
+
.sendMessage(x.room, {
|
|
804
|
+
text: textnya,
|
|
805
|
+
contextInfo: {
|
|
806
|
+
externalAdReply: {
|
|
807
|
+
title: "W E R E W O L F",
|
|
808
|
+
mediaType: 1,
|
|
809
|
+
renderLargerThumbnail: true,
|
|
810
|
+
thumbnail: await resize(thumb4, 300, 175),
|
|
811
|
+
sourceUrl: "",
|
|
812
|
+
mediaUrl: thumb4,
|
|
813
|
+
},
|
|
814
|
+
mentionedJid: ment,
|
|
815
|
+
},
|
|
816
|
+
})
|
|
817
|
+
.then(() => {
|
|
818
|
+
changeDay(x.room, data)
|
|
819
|
+
voteDone(x.room, data)
|
|
820
|
+
resetVote(x.room, data)
|
|
821
|
+
clearAllVote(x.room, data)
|
|
822
|
+
if (getWinner(x.room, data).status != null)
|
|
823
|
+
return win(x, 1, Kyzo, data)
|
|
824
|
+
})
|
|
825
|
+
}
|
|
826
|
+
}
|
|
827
|
+
}
|
|
828
|
+
|
|
829
|
+
async function skill(Kyzo, x, data) {
|
|
830
|
+
skillOn(x.room, data)
|
|
831
|
+
if (getWinner(x.room, data).status != null || x.win != null) {
|
|
832
|
+
return win(x, 1, Kyzo, data)
|
|
833
|
+
} else {
|
|
834
|
+
if (!x) return
|
|
835
|
+
if (!x.player) return
|
|
836
|
+
if (x.win != null) return
|
|
837
|
+
let tok1 = "\n"
|
|
838
|
+
let tok2 = "\n"
|
|
839
|
+
let membernya = []
|
|
840
|
+
shortPlayer(x.room, data)
|
|
841
|
+
for (let i = 0; i < x.player.length; i++) {
|
|
842
|
+
tok1 += `(${x.player[i].number}) @${x.player[i].id.replace(
|
|
843
|
+
"@s.whatsapp.net",
|
|
844
|
+
""
|
|
845
|
+
)}${x.player[i].isdead === true ? " " : ""}\n`
|
|
846
|
+
membernya.push(x.player[i].id)
|
|
847
|
+
}
|
|
848
|
+
for (let i = 0; i < x.player.length; i++) {
|
|
849
|
+
tok2 += `(${x.player[i].number}) @${x.player[i].id.replace(
|
|
850
|
+
"@s.whatsapp.net",
|
|
851
|
+
""
|
|
852
|
+
)} ${
|
|
853
|
+
x.player[i].role === "werewolf" || x.player[i].role === "sorcerer"
|
|
854
|
+
? `${x.player[i].isdead === true ? ` ` : ` ${x.player[i].role}`}`
|
|
855
|
+
: " "
|
|
856
|
+
}\n`
|
|
857
|
+
membernya.push(x.player[i].id)
|
|
858
|
+
}
|
|
859
|
+
for (let i = 0; i < x.player.length; i++) {
|
|
860
|
+
if (x.player[i].role === "werewolf") {
|
|
861
|
+
if (x.player[i].isdead != true) {
|
|
862
|
+
textnya = `Please choose one person to eat tonight\nLIST PLAYER:\n${tok2}\n\nType .wwpc kill number to kill player`
|
|
863
|
+
|
|
864
|
+
await Kyzo.sendMessage(x.player[i].id, {
|
|
865
|
+
text: textnya,
|
|
866
|
+
mentions: membernya,
|
|
867
|
+
})
|
|
868
|
+
}
|
|
869
|
+
} else if (x.player[i].role === "warga") {
|
|
870
|
+
if (x.player[i].isdead != true) {
|
|
871
|
+
textnya = `W E R E W O L F - G A M E\n\nAs a villager be careful, you might be the next target.\nLIST PLAYER:${tok1}`
|
|
872
|
+
await Kyzo.sendMessage(x.player[i].id, {
|
|
873
|
+
text: textnya,
|
|
874
|
+
mentions: membernya,
|
|
875
|
+
})
|
|
876
|
+
}
|
|
877
|
+
} else if (x.player[i].role === "seer") {
|
|
878
|
+
if (x.player[i].isdead != true) {
|
|
879
|
+
textnya = `Alright, who do you want to see the role of this time.\nLIST PLAYER:${tok1}\n\nType .wwpc dreamy number to see player role`
|
|
880
|
+
|
|
881
|
+
await Kyzo.sendMessage(x.player[i].id, {
|
|
882
|
+
text: textnya,
|
|
883
|
+
mentions: membernya,
|
|
884
|
+
})
|
|
885
|
+
}
|
|
886
|
+
} else if (x.player[i].role === "guardian") {
|
|
887
|
+
if (x.player[i].isdead != true) {
|
|
888
|
+
textnya = `You are a Guardian, protect the villagers, please choose 1 player you want to protect\nLIST PLAYER:${tok1}\n\nType .wwpc deff number to protect player`
|
|
889
|
+
|
|
890
|
+
await Kyzo.sendMessage(x.player[i].id, {
|
|
891
|
+
text: textnya,
|
|
892
|
+
mentions: membernya,
|
|
893
|
+
})
|
|
894
|
+
}
|
|
895
|
+
} else if (x.player[i].role === "sorcerer") {
|
|
896
|
+
if (x.player[i].isdead != true) {
|
|
897
|
+
textnya = `Alright, see what you can do, please choose 1 person you want to reveal identity\nLIST PLAYER:${tok2}\n\nType .wwpc sorcerer number to see player role`
|
|
898
|
+
|
|
899
|
+
await Kyzo.sendMessage(x.player[i].id, {
|
|
900
|
+
text: textnya,
|
|
901
|
+
mentions: membernya,
|
|
902
|
+
})
|
|
903
|
+
}
|
|
904
|
+
}
|
|
905
|
+
}
|
|
906
|
+
}
|
|
907
|
+
}
|
|
908
|
+
|
|
909
|
+
async function win(x, t, Kyzo, data) {
|
|
910
|
+
const sesinya = x.room
|
|
911
|
+
if (getWinner(x.room, data).status === false || x.iswin === false) {
|
|
912
|
+
textnya = `W E R E W O L F - W I N\n\nTEAM WEREWOLF\n\n`
|
|
913
|
+
let ment = []
|
|
914
|
+
for (let i = 0; i < x.player.length; i++) {
|
|
915
|
+
if (x.player[i].role === "sorcerer" || x.player[i].role === "werewolf") {
|
|
916
|
+
textnya += `${x.player[i].number}) @${x.player[i].id.replace(
|
|
917
|
+
"@s.whatsapp.net",
|
|
918
|
+
""
|
|
919
|
+
)}\n Role : ${x.player[i].role}\n\n`
|
|
920
|
+
ment.push(x.player[i].id)
|
|
921
|
+
}
|
|
922
|
+
}
|
|
923
|
+
return await Kyzo
|
|
924
|
+
.sendMessage(sesinya, {
|
|
925
|
+
text: textnya,
|
|
926
|
+
contextInfo: {
|
|
927
|
+
externalAdReply: {
|
|
928
|
+
title: "W E R E W O L F",
|
|
929
|
+
mediaType: 1,
|
|
930
|
+
renderLargerThumbnail: true,
|
|
931
|
+
thumbnail: await resize(thumb5, 300, 175),
|
|
932
|
+
sourceUrl: "",
|
|
933
|
+
mediaUrl: thumb5,
|
|
934
|
+
},
|
|
935
|
+
mentionedJid: ment,
|
|
936
|
+
},
|
|
937
|
+
})
|
|
938
|
+
.then(() => {
|
|
939
|
+
delete data[x.room]
|
|
940
|
+
})
|
|
941
|
+
} else if (getWinner(x.room, data).status === true) {
|
|
942
|
+
textnya = `V I L L A G E R - T E A M - W I N\n\nTEAM VILLAGER\n\n`
|
|
943
|
+
let ment = []
|
|
944
|
+
for (let i = 0; i < x.player.length; i++) {
|
|
945
|
+
if (
|
|
946
|
+
x.player[i].role === "warga" ||
|
|
947
|
+
x.player[i].role === "guardian" ||
|
|
948
|
+
x.player[i].role === "seer"
|
|
949
|
+
) {
|
|
950
|
+
textnya += `${x.player[i].number}) @${x.player[i].id.replace(
|
|
951
|
+
"@s.whatsapp.net",
|
|
952
|
+
""
|
|
953
|
+
)}\n Role : ${x.player[i].role}\n\n`
|
|
954
|
+
ment.push(x.player[i].id)
|
|
955
|
+
}
|
|
956
|
+
}
|
|
957
|
+
return await Kyzo.sendMessage(sesinya, {
|
|
958
|
+
text: textnya,
|
|
959
|
+
contextInfo: {
|
|
960
|
+
externalAdReply: {
|
|
961
|
+
title: "W E R E W O L F",
|
|
962
|
+
mediaType: 1,
|
|
963
|
+
renderLargerThumbnail: true,
|
|
964
|
+
thumbnail: await resize(thumb6, 300, 175),
|
|
965
|
+
sourceUrl: "",
|
|
966
|
+
mediaUrl: thumb5,
|
|
967
|
+
},
|
|
968
|
+
mentionedJid: ment,
|
|
969
|
+
},
|
|
970
|
+
})
|
|
971
|
+
}
|
|
972
|
+
}
|
|
973
|
+
|
|
974
|
+
async function run(Kyzo, id, data) {
|
|
975
|
+
while (getWinner(id, data).status === null) {
|
|
976
|
+
if (getWinner(id, data).status != null) {
|
|
977
|
+
win(getWinner(id, data), 1, Kyzo, data)
|
|
978
|
+
break
|
|
979
|
+
} else {
|
|
980
|
+
await sleep(90000)
|
|
981
|
+
}
|
|
982
|
+
if (getWinner(id, data).status != null) {
|
|
983
|
+
win(getWinner(id, data), 1, Kyzo, data)
|
|
984
|
+
break
|
|
985
|
+
} else {
|
|
986
|
+
await pagi(Kyzo, sesi(id, data), data)
|
|
987
|
+
}
|
|
988
|
+
if (getWinner(id, data).status != null) {
|
|
989
|
+
win(getWinner(id, data), 1, Kyzo, data)
|
|
990
|
+
break
|
|
991
|
+
} else {
|
|
992
|
+
await sleep(90000)
|
|
993
|
+
}
|
|
994
|
+
if (getWinner(id, data).status != null) {
|
|
995
|
+
win(getWinner(id, data), 1, Kyzo, data)
|
|
996
|
+
break
|
|
997
|
+
} else {
|
|
998
|
+
await voting(Kyzo, sesi(id, data), data)
|
|
999
|
+
}
|
|
1000
|
+
if (getWinner(id, data).status != null) {
|
|
1001
|
+
win(getWinner(id, data), 1, Kyzo, data)
|
|
1002
|
+
break
|
|
1003
|
+
} else {
|
|
1004
|
+
await sleep(90000)
|
|
1005
|
+
}
|
|
1006
|
+
if (getWinner(id, data).status != null) {
|
|
1007
|
+
win(getWinner(id, data), 1, Kyzo, data)
|
|
1008
|
+
break
|
|
1009
|
+
} else {
|
|
1010
|
+
await malam(Kyzo, sesi(id, data), data)
|
|
1011
|
+
}
|
|
1012
|
+
if (getWinner(id, data).status != null) {
|
|
1013
|
+
win(getWinner(id, data), 1, Kyzo, data)
|
|
1014
|
+
break
|
|
1015
|
+
} else {
|
|
1016
|
+
await skill(Kyzo, sesi(id, data), data)
|
|
1017
|
+
}
|
|
1018
|
+
if (getWinner(id, data).status != null) break
|
|
1019
|
+
}
|
|
1020
|
+
await win(sesi(id, data), 1, Kyzo, data)
|
|
1021
|
+
}
|
|
1022
|
+
|
|
1023
|
+
async function run_vote(Kyzo, id, data) {
|
|
1024
|
+
while (getWinner(id, data).status === null) {
|
|
1025
|
+
if (getWinner(id, data).status != null) {
|
|
1026
|
+
win(getWinner(id, data), 1, Kyzo, data)
|
|
1027
|
+
break
|
|
1028
|
+
} else {
|
|
1029
|
+
await voting(Kyzo, sesi(id, data), data)
|
|
1030
|
+
}
|
|
1031
|
+
if (getWinner(id, data).status != null) {
|
|
1032
|
+
win(getWinner(id, data), 1, Kyzo, data)
|
|
1033
|
+
break
|
|
1034
|
+
} else {
|
|
1035
|
+
await sleep(90000)
|
|
1036
|
+
}
|
|
1037
|
+
if (getWinner(id, data).status != null) {
|
|
1038
|
+
win(getWinner(id, data), 1, Kyzo, data)
|
|
1039
|
+
break
|
|
1040
|
+
} else {
|
|
1041
|
+
await malam(Kyzo, sesi(id, data), data)
|
|
1042
|
+
}
|
|
1043
|
+
if (getWinner(id, data).status != null) {
|
|
1044
|
+
win(getWinner(id, data), 1, Kyzo, data)
|
|
1045
|
+
break
|
|
1046
|
+
} else {
|
|
1047
|
+
await skill(Kyzo, sesi(id, data), data)
|
|
1048
|
+
}
|
|
1049
|
+
if (getWinner(id, data).status != null) {
|
|
1050
|
+
win(getWinner(id, data), 1, Kyzo, data)
|
|
1051
|
+
break
|
|
1052
|
+
} else {
|
|
1053
|
+
await sleep(90000)
|
|
1054
|
+
}
|
|
1055
|
+
if (getWinner(id, data).status != null) {
|
|
1056
|
+
win(getWinner(id, data), 1, Kyzo, data)
|
|
1057
|
+
break
|
|
1058
|
+
} else {
|
|
1059
|
+
await pagi(Kyzo, sesi(id, data), data)
|
|
1060
|
+
}
|
|
1061
|
+
if (getWinner(id, data).status != null) {
|
|
1062
|
+
win(getWinner(id, data), 1, Kyzo, data)
|
|
1063
|
+
break
|
|
1064
|
+
} else {
|
|
1065
|
+
await sleep(90000)
|
|
1066
|
+
}
|
|
1067
|
+
if (getWinner(id, data).status != null) break
|
|
1068
|
+
}
|
|
1069
|
+
await win(sesi(id, data), 1, Kyzo, data)
|
|
1070
|
+
}
|
|
1071
|
+
|
|
1072
|
+
async function run_malam(Kyzo, id, data) {
|
|
1073
|
+
while (getWinner(id, data).status === null) {
|
|
1074
|
+
if (getWinner(id, data).status != null) {
|
|
1075
|
+
win(getWinner(id, data), 1, Kyzo, data)
|
|
1076
|
+
break
|
|
1077
|
+
} else {
|
|
1078
|
+
await skill(Kyzo, sesi(id, data), data)
|
|
1079
|
+
}
|
|
1080
|
+
if (getWinner(id, data).status != null) {
|
|
1081
|
+
win(getWinner(id, data), 1, Kyzo, data)
|
|
1082
|
+
break
|
|
1083
|
+
} else {
|
|
1084
|
+
await sleep(90000)
|
|
1085
|
+
}
|
|
1086
|
+
if (getWinner(id, data).status != null) {
|
|
1087
|
+
win(getWinner(id, data), 1, Kyzo, data)
|
|
1088
|
+
break
|
|
1089
|
+
} else {
|
|
1090
|
+
await pagi(Kyzo, sesi(id, data), data)
|
|
1091
|
+
}
|
|
1092
|
+
if (getWinner(id, data).status != null) {
|
|
1093
|
+
win(getWinner(id, data), 1, Kyzo, data)
|
|
1094
|
+
break
|
|
1095
|
+
} else {
|
|
1096
|
+
await sleep(90000)
|
|
1097
|
+
}
|
|
1098
|
+
if (getWinner(id, data).status != null) {
|
|
1099
|
+
win(getWinner(id, data), 1, Kyzo, data)
|
|
1100
|
+
break
|
|
1101
|
+
} else {
|
|
1102
|
+
await voting(Kyzo, sesi(id, data), data)
|
|
1103
|
+
}
|
|
1104
|
+
if (getWinner(id, data).status != null) {
|
|
1105
|
+
win(getWinner(id, data), 1, Kyzo, data)
|
|
1106
|
+
break
|
|
1107
|
+
} else {
|
|
1108
|
+
await sleep(90000)
|
|
1109
|
+
}
|
|
1110
|
+
if (getWinner(id, data).status != null) {
|
|
1111
|
+
win(getWinner(id, data), 1, Kyzo, data)
|
|
1112
|
+
break
|
|
1113
|
+
} else {
|
|
1114
|
+
await malam(Kyzo, sesi(id, data), data)
|
|
1115
|
+
}
|
|
1116
|
+
if (getWinner(id, data).status != null) break
|
|
1117
|
+
}
|
|
1118
|
+
await win(sesi(id, data), 1, Kyzo, data)
|
|
1119
|
+
}
|
|
1120
|
+
|
|
1121
|
+
async function run_pagi(Kyzo, id, data) {
|
|
1122
|
+
while (getWinner(id, data).status === null) {
|
|
1123
|
+
if (getWinner(id, data).status != null) {
|
|
1124
|
+
win(getWinner(id, data), 1, Kyzo, data)
|
|
1125
|
+
break
|
|
1126
|
+
} else {
|
|
1127
|
+
await pagi(Kyzo, sesi(id, data), data)
|
|
1128
|
+
}
|
|
1129
|
+
if (getWinner(id, data).status != null) {
|
|
1130
|
+
win(getWinner(id, data), 1, Kyzo, data)
|
|
1131
|
+
break
|
|
1132
|
+
} else {
|
|
1133
|
+
await sleep(90000)
|
|
1134
|
+
}
|
|
1135
|
+
if (getWinner(id, data).status != null) {
|
|
1136
|
+
win(getWinner(id, data), 1, Kyzo, data)
|
|
1137
|
+
break
|
|
1138
|
+
} else {
|
|
1139
|
+
await voting(Kyzo, sesi(id, data), data)
|
|
1140
|
+
}
|
|
1141
|
+
if (getWinner(id, data).status != null) {
|
|
1142
|
+
win(getWinner(id, data), 1, Kyzo, data)
|
|
1143
|
+
break
|
|
1144
|
+
} else {
|
|
1145
|
+
await sleep(90000)
|
|
1146
|
+
}
|
|
1147
|
+
if (getWinner(id, data).status != null) {
|
|
1148
|
+
win(getWinner(id, data), 1, Kyzo, data)
|
|
1149
|
+
break
|
|
1150
|
+
} else {
|
|
1151
|
+
await malam(Kyzo, sesi(id, data), data)
|
|
1152
|
+
}
|
|
1153
|
+
if (getWinner(id, data).status != null) {
|
|
1154
|
+
win(getWinner(id, data), 1, Kyzo, data)
|
|
1155
|
+
break
|
|
1156
|
+
} else {
|
|
1157
|
+
await skill(Kyzo, sesi(id, data), data)
|
|
1158
|
+
}
|
|
1159
|
+
if (getWinner(id, data).status != null) {
|
|
1160
|
+
win(getWinner(id, data), 1, Kyzo, data)
|
|
1161
|
+
break
|
|
1162
|
+
} else {
|
|
1163
|
+
await sleep(90000)
|
|
1164
|
+
}
|
|
1165
|
+
if (getWinner(id, data).status != null) break
|
|
1166
|
+
}
|
|
1167
|
+
await win(sesi(id, data), 1, Kyzo, data)
|
|
1168
|
+
}
|
|
1169
|
+
|
|
1170
|
+
module.exports = {
|
|
1171
|
+
emoji_role,
|
|
1172
|
+
sesi,
|
|
1173
|
+
playerOnGame,
|
|
1174
|
+
playerOnRoom,
|
|
1175
|
+
playerExit,
|
|
1176
|
+
dataPlayer,
|
|
1177
|
+
dataPlayerById,
|
|
1178
|
+
getPlayerById,
|
|
1179
|
+
getPlayerById2,
|
|
1180
|
+
killWerewolf,
|
|
1181
|
+
killww,
|
|
1182
|
+
dreamySeer,
|
|
1183
|
+
sorcerer,
|
|
1184
|
+
protectGuardian,
|
|
1185
|
+
roleShuffle,
|
|
1186
|
+
roleChanger,
|
|
1187
|
+
roleAmount,
|
|
1188
|
+
roleGenerator,
|
|
1189
|
+
addTimer,
|
|
1190
|
+
startGame,
|
|
1191
|
+
playerHidup,
|
|
1192
|
+
playerMati,
|
|
1193
|
+
vote,
|
|
1194
|
+
voteResult,
|
|
1195
|
+
clearAllVote,
|
|
1196
|
+
getWinner,
|
|
1197
|
+
win,
|
|
1198
|
+
pagi,
|
|
1199
|
+
malam,
|
|
1200
|
+
skill,
|
|
1201
|
+
voteStart,
|
|
1202
|
+
voteDone,
|
|
1203
|
+
voting,
|
|
1204
|
+
run,
|
|
1205
|
+
run_vote,
|
|
1206
|
+
run_malam,
|
|
1207
|
+
run_pagi,
|
|
1208
|
+
}
|