Advertisement
Guest User

Untitled

a guest
May 24th, 2016
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 39.50 KB | None | 0 0
  1. function connect() {
  2. console.log("ws://" + bso.ip + ":" + bso.po + "/slither");
  3. if (0 == sos.length)
  4. waiting_for_sos || (waiting_for_sos = !0,
  5. sos_ready_after_mtm = -1);
  6. else {
  7. waiting_for_sos = !1;
  8. sos_ready_after_mtm = -1;
  9. resetGame();
  10. connecting = !0;
  11. start_connect_mtm = Date.now();
  12. if (!forcing) {
  13. for (var b = 0; b < sos.length; b++)
  14. sos[b].ptm = 9999999;
  15. for (var f = null , c = 9999999, b = clus.length - 1; 0 <= b; b--) {
  16. var h = clus[b];
  17. if (h && 0 < h.ptms.length) {
  18. for (var u = 0, q = h.ptms.length - 1; 0 <= q; q--)
  19. u += h.ptms[q];
  20. u /= h.ptms.length;
  21. testing && 0 == q && console.log("cluster " + b + " ping time: " + u);
  22. u < c && (c = u,
  23. f = h);
  24. for (q = sos.length -
  25. 1; 0 <= q; q--)
  26. sos[q].clu == b && (sos[q].ptm = u)
  27. }
  28. }
  29. if ("undefined" != typeof rmsos)
  30. for (b = 0; b < rmsos.length; b++)
  31. for (h = "." + rmsos[b].a[0] + "." + rmsos[b].a[1] + "." + rmsos[b].a[2],
  32. c = rmsos[b].a[3],
  33. q = sos.length - 1; 0 <= q; q--)
  34. 0 <= sos[q].ip.indexOf(h) && sos[q].po == c && sos.splice(q, 1);
  35. var e, c = null ;
  36. if (h = f)
  37. for (q = 0; 50 > q && null == c; q++)
  38. if (0 < h.sos.length) {
  39. for (b = f = 0; b < h.sos.length; b++)
  40. e = h.sos[b],
  41. f += e.wg / h.swg,
  42. e.ptv = f;
  43. e.ptv = 1;
  44. f = Math.random();
  45. c = h.sos[0];
  46. for (b = 0; b < h.sos.length; b++)
  47. e = h.sos[b],
  48. e.tainted || e.ptv < f && (c = e);
  49. c.tainted && (c = null )
  50. }
  51. if (null !=
  52. c)
  53. bso = c;
  54. else
  55. for (sos.sort(function(b, c) {
  56. return parseFloat(b.po) - parseFloat(c.po)
  57. }),
  58. bso = sos[Math.floor(Math.random() * sos.length)],
  59. b = sos.length - 1; 0 <= b; b--)
  60. sos[b].tainted || sos[b].ptm <= bso.ptm && 20 < sos[b].ac && (bso = sos[b])
  61. }
  62. testing && (q = "",
  63. null != c && (q = "(fbso!)"),
  64. console.log("connecting to " + bso.ip + ":" + bso.po + "... " + q));
  65. ws = new WebSocket("ws://185.50.104.178:444/slither");
  66. ws.binaryType = "arraybuffer";
  67. window.ws = ws;
  68. ws.onmessage = function(b) {
  69. if (ws == this && (b = new Uint8Array(b.data),
  70. rdps += b.length,
  71. 2 <= b.length)) {
  72. lptm =
  73. cptm;
  74. cptm = Date.now();
  75. var c = b[0] << 8 | b[1]
  76. , e = cptm - lptm;
  77. 0 == lptm && (e = 0);
  78. etm += Math.max(-180, Math.min(180, e - c));
  79. testing && (rdpspc[b[2]] += b.length);
  80. var h = String.fromCharCode(b[2])
  81. , c = 3
  82. , f = b.length
  83. , e = b.length - 2
  84. , q = b.length - 3;
  85. if ("a" == h)
  86. connecting = !1,
  87. playing = connected = !0,
  88. play_btn_click_mtm = -1,
  89. grd = b[c] << 16 | b[c + 1] << 8 | b[c + 2],
  90. c += 3,
  91. e = b[c] << 8 | b[c + 1],
  92. c += 2,
  93. sector_size = b[c] << 8 | b[c + 1],
  94. c += 2,
  95. sector_count_along_edge = b[c] << 8 | b[c + 1],
  96. c += 2,
  97. spangdv = b[c] / 10,
  98. c++,
  99. nsp1 = (b[c] << 8 | b[c + 1]) / 100,
  100. c += 2,
  101. nsp2 = (b[c] << 8 | b[c + 1]) / 100,
  102. c += 2,
  103. nsp3 = (b[c] <<
  104. 8 | b[c + 1]) / 100,
  105. c += 2,
  106. mamu = (b[c] << 8 | b[c + 1]) / 1E3,
  107. c += 2,
  108. mamu2 = (b[c] << 8 | b[c + 1]) / 1E3,
  109. c += 2,
  110. cst = (b[c] << 8 | b[c + 1]) / 1E3,
  111. c += 2,
  112. c < f && (protocol_version = b[c]),
  113. setMscps(e),
  114. lbh.style.display = "inline",
  115. lbs.style.display = "inline",
  116. lbn.style.display = "inline",
  117. lbp.style.display = "inline",
  118. lbf.style.display = "inline",
  119. vcm.style.display = "inline",
  120. loch.style.display = "inline",
  121. startShowGame();
  122. else if ("e" == h || "E" == h || "3" == h || "4" == h || "5" == h) {
  123. var t = b[c] << 8 | b[c + 1]
  124. , c = c + 2
  125. , u = -1
  126. , z = -1
  127. , I = -1
  128. , M = -1;
  129. if (6 <= protocol_version)
  130. 6 == e ? (u = "e" == h ? 1 : 2,
  131. z = 2 * b[c] *
  132. Math.PI / 256,
  133. c++,
  134. I = 2 * b[c] * Math.PI / 256,
  135. c++,
  136. M = b[c] / 18) : 5 == e ? "e" == h ? (z = 2 * b[c] * Math.PI / 256,
  137. c++,
  138. M = b[c] / 18) : "E" == h ? (u = 1,
  139. I = 2 * b[c] * Math.PI / 256,
  140. c++,
  141. M = b[c] / 18) : "4" == h ? (u = 2,
  142. I = 2 * b[c] * Math.PI / 256,
  143. c++,
  144. M = b[c] / 18) : "3" == h ? (u = 1,
  145. z = 2 * b[c] * Math.PI / 256,
  146. c++,
  147. I = 2 * b[c] * Math.PI / 256) : "5" == h && (u = 2,
  148. z = 2 * b[c] * Math.PI / 256,
  149. c++,
  150. I = 2 * b[c] * Math.PI / 256) : 4 == e && ("e" == h ? z = 2 * b[c] * Math.PI / 256 : "E" == h ? (u = 1,
  151. I = 2 * b[c] * Math.PI / 256) : "4" == h ? (u = 2,
  152. I = 2 * b[c] * Math.PI / 256) : "3" == h && (M = b[c] / 18));
  153. else if (3 <= protocol_version) {
  154. "3" != h && (8 == e || 7 == e || 6 == e && "3" !=
  155. h || 5 == e && "3" != h) && (u = "e" == h ? 1 : 2);
  156. if (8 == e || 7 == e || 5 == e && "3" == h || 6 == e && "3" == h)
  157. z = 2 * (b[c] << 8 | b[c + 1]) * Math.PI / 65535,
  158. c += 2;
  159. if (8 == e || 7 == e || 5 == e && "3" != h || 6 == e && "3" != h)
  160. I = 2 * (b[c] << 8 | b[c + 1]) * Math.PI / 65535,
  161. c += 2;
  162. if (8 == e || 6 == e || 4 == e)
  163. M = b[c] / 18
  164. } else {
  165. if (11 == q || 8 == q || 9 == q || 6 == q)
  166. u = b[c] - 48,
  167. c++;
  168. if (11 == q || 7 == q || 9 == q || 5 == q)
  169. z = 2 * (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) * Math.PI / 16777215,
  170. c += 3;
  171. if (11 == q || 8 == q || 9 == q || 6 == q)
  172. I = 2 * (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) * Math.PI / 16777215,
  173. c += 3;
  174. if (11 == q || 7 == q || 8 == q || 4 == q)
  175. M = (b[c] << 8 | b[c + 1]) / 1E3
  176. }
  177. if (f = os["s" + t]) {
  178. -1 !=
  179. u && (f.dir = u);
  180. anguc++;
  181. if (-1 != z) {
  182. f.ang == z && angnuc++;
  183. b = (z - f.ang) % pi2;
  184. 0 > b && (b += pi2);
  185. b > Math.PI && (b -= pi2);
  186. t = f.fapos;
  187. for (q = 0; q < afc; q++)
  188. f.fas[t] -= b * afas[q],
  189. t++,
  190. t >= afc && (t = 0);
  191. f.fatg = afc;
  192. f.ang = z
  193. }
  194. -1 != I && (f.wang == I && wangnuc++,
  195. f.wang = I,
  196. f != snake && (f.eang = I));
  197. -1 != M && (f.sp = M,
  198. f.spang = f.sp / spangdv,
  199. 1 < f.spang && (f.spang = 1))
  200. }
  201. } else if ("h" == h) {
  202. if (t = b[c] << 8 | b[c + 1],
  203. c += 2,
  204. u = (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) / 16777215,
  205. f = os["s" + t])
  206. f.fam = u,
  207. snl(f)
  208. } else if ("r" == h) {
  209. if (t = b[c] << 8 | b[c + 1],
  210. c += 2,
  211. f = os["s" + t]) {
  212. 4 <= q && (f.fam = (b[c] << 16 | b[c + 1] << 8 | b[c +
  213. 2]) / 16777215);
  214. for (q = 0; q < f.pts.length; q++)
  215. if (!f.pts[q].dying) {
  216. f.pts[q].dying = !0;
  217. f.sct--;
  218. f.sc = Math.min(6, 1 + (f.sct - 2) / 106);
  219. f.scang = .13 + .87 * Math.pow((7 - f.sc) / 6, 2);
  220. f.ssp = nsp1 + nsp2 * f.sc;
  221. f.fsp = f.ssp + .1;
  222. f.wsep = 6 * f.sc;
  223. b = nsep / gsc;
  224. f.wsep < b && (f.wsep = b);
  225. break
  226. }
  227. snl(f)
  228. }
  229. } else if ("g" == h || "n" == h || "G" == h || "N" == h) {
  230. if (playing) {
  231. var x = "n" == h || "N" == h
  232. , t = b[c] << 8 | b[c + 1]
  233. , c = c + 2;
  234. if (f = os["s" + t]) {
  235. if (x)
  236. f.sct++;
  237. else
  238. for (q = 0; q < f.pts.length; q++)
  239. if (!f.pts[q].dying) {
  240. f.pts[q].dying = !0;
  241. break
  242. }
  243. var C = f.pts[f.pts.length - 1]
  244. , q = C;
  245. 3 <= protocol_version ?
  246. "g" == h || "n" == h ? (e = b[c] << 8 | b[c + 1],
  247. c += 2,
  248. D = b[c] << 8 | b[c + 1],
  249. c += 2) : (e = q.xx + b[c] - 128,
  250. c++,
  251. D = q.yy + b[c] - 128,
  252. c++) : (e = (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) / 5,
  253. c += 3,
  254. D = (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) / 5,
  255. c += 3);
  256. x && (f.fam = (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) / 16777215);
  257. (C = points_dp.get()) || (C = {
  258. exs: [],
  259. eys: [],
  260. efs: [],
  261. ems: []
  262. });
  263. C.eiu = 0;
  264. C.xx = e;
  265. C.yy = D;
  266. C.fx = 0;
  267. C.fy = 0;
  268. C.da = 0;
  269. C.ebx = C.xx - q.xx;
  270. C.eby = C.yy - q.yy;
  271. f.pts.push(C);
  272. f.iiv && (b = f.xx + f.fx - C.xx,
  273. c = f.yy + f.fy - C.yy,
  274. C.fx += b,
  275. C.fy += c,
  276. C.exs[C.eiu] = b,
  277. C.eys[C.eiu] = c,
  278. C.efs[C.eiu] = 0,
  279. C.ems[C.eiu] = 1,
  280. C.eiu++);
  281. t = f.pts.length -
  282. 3;
  283. if (1 <= t)
  284. for (u = f.pts[t],
  285. h = n = 0,
  286. q = t - 1; 0 <= q; q--)
  287. t = f.pts[q],
  288. n++,
  289. b = t.xx,
  290. c = t.yy,
  291. 4 >= n && (h = cst * n / 4),
  292. t.xx += (u.xx - t.xx) * h,
  293. t.yy += (u.yy - t.yy) * h,
  294. f.iiv && (b -= t.xx,
  295. c -= t.yy,
  296. t.fx += b,
  297. t.fy += c,
  298. t.exs[t.eiu] = b,
  299. t.eys[t.eiu] = c,
  300. t.efs[t.eiu] = 0,
  301. t.ems[t.eiu] = 2,
  302. t.eiu++),
  303. u = t;
  304. f.sc = Math.min(6, 1 + (f.sct - 2) / 106);
  305. f.scang = .13 + .87 * Math.pow((7 - f.sc) / 6, 2);
  306. f.ssp = nsp1 + nsp2 * f.sc;
  307. f.fsp = f.ssp + .1;
  308. f.wsep = 6 * f.sc;
  309. b = nsep / gsc;
  310. f.wsep < b && (f.wsep = b);
  311. x && snl(f);
  312. f.lnp = C;
  313. f == snake && (ovxx = snake.xx + snake.fx,
  314. ovyy = snake.yy + snake.fy);
  315. t = etm / 8 * f.sp / 4;
  316. t *= lag_mult;
  317. q = f.chl - 1;
  318. f.chl = t / f.msl;
  319. h = f.xx;
  320. x = f.yy;
  321. f.xx = e + Math.cos(f.ang) * t;
  322. f.yy = D + Math.sin(f.ang) * t;
  323. b = f.xx - h;
  324. c = f.yy - x;
  325. e = f.chl - q;
  326. t = f.fpos;
  327. for (q = 0; q < rfc; q++)
  328. f.fxs[t] -= b * rfas[q],
  329. f.fys[t] -= c * rfas[q],
  330. f.fchls[t] -= e * rfas[q],
  331. t++,
  332. t >= rfc && (t = 0);
  333. f.fx = f.fxs[f.fpos];
  334. f.fy = f.fys[f.fpos];
  335. f.fchl = f.fchls[f.fpos];
  336. f.ftg = rfc;
  337. f.ehl = 0;
  338. if (f == snake) {
  339. b = view_xx;
  340. c = view_yy;
  341. view_xx = snake.xx + snake.fx;
  342. view_yy = snake.yy + snake.fy;
  343. bgx -= view_xx - b;
  344. bgy -= view_yy - c;
  345. b = view_xx - ovxx;
  346. c = view_yy - ovyy;
  347. t = fvpos;
  348. for (q = 0; q < vfc; q++)
  349. fvxs[t] -= b * vfas[q],
  350. fvys[t] -=
  351. c * vfas[q],
  352. t++,
  353. t >= vfc && (t = 0);
  354. fvtg = vfc
  355. }
  356. }
  357. }
  358. } else if ("l" == h) {
  359. if (playing) {
  360. wumsts = !0;
  361. z = C = D = "";
  362. M = I = 0;
  363. -1 == lb_fr && -1 == dead_mtm && (lb_fr = 0);
  364. var H = b[c];
  365. c++;
  366. rank = b[c] << 8 | b[c + 1];
  367. rank < best_rank && (best_rank = rank);
  368. c += 2;
  369. snake_count = b[c] << 8 | b[c + 1];
  370. snake_count > biggest_snake_count && (biggest_snake_count = snake_count);
  371. for (c += 2; c < f; ) {
  372. var K = b[c] << 8 | b[c + 1]
  373. , c = c + 2
  374. , u = (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) / 16777215
  375. , c = c + 3
  376. , x = b[c] % 9;
  377. c++;
  378. e = b[c];
  379. c++;
  380. M++;
  381. h = "";
  382. for (q = 0; q < e; q++)
  383. t = b[c],
  384. h += String.fromCharCode(t),
  385. c++;
  386. M != H && (gdnm(h) || (h = ""));
  387. for (var N =
  388. "", q = 0; q < e; q++)
  389. t = h.charCodeAt(q),
  390. N = 38 == t ? N + "&amp;" : 60 == t ? N + "&lt;" : 62 == t ? N + "&gt;" : 32 == t ? N + "&nbsp;" : N + String.fromCharCode(t);
  391. h = N;
  392. I++;
  393. score = Math.floor(15 * (fpsls[K] + u / fmlts[K] - 1) - 5) / 1;
  394. t = M == H ? 1 : .7 * (.3 + .7 * (1 - I / 10));
  395. D += '<span style="opacity:' + t + "; color:" + per_color_imgs[x].cs + ';">' + score + "</span><BR>";
  396. C += '<span style="opacity:' + t + "; color:" + per_color_imgs[x].cs + ";" + (M == H ? "font-weight:bold;" : "") + '">' + h + "</span><BR>";
  397. z += '<span style="opacity:' + t + "; color:" + per_color_imgs[x].cs + ';">#' + I + "</span><BR>"
  398. }
  399. lbs.innerHTML =
  400. D;
  401. lbn.innerHTML = C;
  402. lbp.innerHTML = z
  403. }
  404. } else if ("v" == h)
  405. 2 == b[c] ? (want_close_socket = !0,
  406. want_victory_message = !1,
  407. want_hide_victory = 1,
  408. hvfr = 0) : (dead_mtm = Date.now(),
  409. play_btn.setEnabled(!0),
  410. e = Math.floor(15 * (fpsls[snake.sct] + snake.fam / fmlts[snake.sct] - 1) - 5) / 1,
  411. twt.href = "http://twitter.com/intent/tweet?status=" + encodeURIComponent("I got a length of " + e + " in http://slither.io! Can you beat that? #slitherio"),
  412. D = "Your final length was",
  413. "DE" == country ? D = "Deine endg\u00fcltige L\u00e4nge war" : "FR" == country ? D = "Votre longueur finale \u00e9tait de" :
  414. "BR" == country && (D = "Seu comprimento final foi de"),
  415. f = "",
  416. 1E3 < e && (f = "!"),
  417. lastscore.innerHTML = '<span style="opacity: .45;">' + D + " </span><b>" + e + "</b>" + f,
  418. e = "Play Again",
  419. "FR" == country ? e = "Jouer" : "BR" == country && (e = "Joga"),
  420. play_btn.setText(String.fromCharCode(160) + e + String.fromCharCode(160)),
  421. 1 == b[c] ? (nick_holder.style.display = "none",
  422. playh.style.display = "none",
  423. smh.style.display = "none",
  424. victory_holder.style.display = "inline",
  425. saveh.style.display = "block",
  426. want_victory_focus = want_victory_message = !0,
  427. victory.disabled =
  428. !1,
  429. save_btn.setEnabled(!0)) : want_close_socket = !0);
  430. else if ("W" == h)
  431. e = b[c],
  432. c++,
  433. D = b[c],
  434. f = {},
  435. f.xx = e,
  436. f.yy = D,
  437. sectors.push(f);
  438. else if ("w" == h)
  439. if (8 <= protocol_version ? (f = 2,
  440. e = b[c],
  441. c++,
  442. D = b[c]) : (f = b[c],
  443. c++,
  444. e = b[c] << 8 | b[c + 1],
  445. c += 2,
  446. D = b[c] << 8 | b[c + 1]),
  447. 1 == f)
  448. f = {},
  449. f.xx = e,
  450. f.yy = D,
  451. sectors.push(f);
  452. else {
  453. for (x = cm1 = foods_c - 1; 0 <= x; x--)
  454. q = foods[x],
  455. q.sx == e && q.sy == D && (x == cm1 ? foods[x] = null : (foods[x] = foods[cm1],
  456. foods[cm1] = null ),
  457. foods_c--,
  458. cm1--);
  459. for (x = sectors.length - 1; 0 <= x; x--)
  460. f = sectors[x],
  461. f.xx == e && f.yy == D && sectors.splice(x, 1)
  462. }
  463. else if ("m" ==
  464. h) {
  465. K = b[c] << 16 | b[c + 1] << 8 | b[c + 2];
  466. c += 3;
  467. u = (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) / 16777215;
  468. c += 3;
  469. D = Math.floor(15 * (fpsls[K] + u / fmlts[K] - 1) - 5) / 1;
  470. e = b[c];
  471. c++;
  472. q = "";
  473. for (x = 0; x < e; x++)
  474. q += String.fromCharCode(b[c]),
  475. c++;
  476. gdnm(q) || (q = "");
  477. for (e = ""; c < f; )
  478. e += String.fromCharCode(b[c]),
  479. c++;
  480. gdnm(e) || (e = "");
  481. q = q.split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;");
  482. e = e.split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;");
  483. 0 < D && (b = "",
  484. 0 < e.length && (b += "<span style='font-size:17px;'><b><i><span style='opacity: .5;'>&quot;</span>" +
  485. e + "<span style='opacity: .5;'>&quot;</span></i></b></span><BR><div style='height: 5px;'></div>"),
  486. 0 < q.length ? (b = 0 < e.length ? b + ("<i><span style='opacity: .5;'>- </span><span style='opacity: .75;'><b>" + q + "</b></span><span style='opacity: .5;'>, today's longest</span></i>") : "<i><span style='opacity: .5;'>Today's longest was </span><span style='opacity: .75;'><b>" + q + "</b></span></i>",
  487. b += "<br><i><span style='opacity: .5;'>with a length of </span><span style='opacity: .65;'><b>" + D + "</b></span></i>") : b = 0 <
  488. e.length ? b + "<i><span style='opacity: .5;'>- </span><span style='opacity: .5;'>today's longest</span></i>" + ("<br><i><span style='opacity: .5;'>with a length of </span><span style='opacity: .65;'><b>" + D + "</b></span></i>") : b + ("<i><span style='opacity: .5;'>Today's longest: </span><span style='opacity: .75;'><b>" + D + "</b></span></i>"),
  489. vcm.innerHTML = b)
  490. } else if ("p" == h)
  491. wfpr = !1,
  492. lagging && (etm *= lag_mult,
  493. lagging = !1);
  494. else if ("u" == h) {
  495. q = asmc.getContext("2d");
  496. q.clearRect(0, 0, 80, 80);
  497. q.fillStyle = "#FFFFFF";
  498. for (var D =
  499. e = 0; c < f && !(80 <= D); )
  500. if (t = b[c++],
  501. 128 <= t)
  502. for (t -= 128,
  503. x = 0; x < t && !(e++,
  504. 80 <= e && (e = 0,
  505. D++,
  506. 80 <= D)); x++)
  507. ;
  508. else
  509. for (x = 0; 7 > x && !(0 < (t & u_m[x]) && q.fillRect(e, D, 1, 1),
  510. e++,
  511. 80 <= e && (e = 0,
  512. D++,
  513. 80 <= D)); x++)
  514. ;
  515. } else if ("s" == h) {
  516. if (playing)
  517. if (t = b[c] << 8 | b[c + 1],
  518. c += 2,
  519. 6 < q) {
  520. z = 2 * (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) * Math.PI / 16777215;
  521. c += 3;
  522. c++;
  523. I = 2 * (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) * Math.PI / 16777215;
  524. c += 3;
  525. M = (b[c] << 8 | b[c + 1]) / 1E3;
  526. c += 2;
  527. u = (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) / 16777215;
  528. c += 3;
  529. x = b[c];
  530. c++;
  531. H = [];
  532. K = (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) / 5;
  533. c += 3;
  534. N = (b[c] << 16 | b[c + 1] << 8 | b[c +
  535. 2]) / 5;
  536. c += 3;
  537. e = b[c];
  538. c++;
  539. h = "";
  540. for (q = 0; q < e; q++)
  541. h += String.fromCharCode(b[c]),
  542. c++;
  543. for (var D = e = 0, O, L = !1; c < f; )
  544. q = e,
  545. O = D,
  546. L ? (e += (b[c] - 127) / 2,
  547. c++,
  548. D += (b[c] - 127) / 2,
  549. c++) : (e = (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) / 5,
  550. c += 3,
  551. D = (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) / 5,
  552. c += 3,
  553. q = e,
  554. O = D,
  555. L = !0),
  556. (C = points_dp.get()) || (C = {
  557. exs: [],
  558. eys: [],
  559. efs: [],
  560. ems: []
  561. }),
  562. C.eiu = 0,
  563. C.xx = e,
  564. C.yy = D,
  565. C.fx = 0,
  566. C.fy = 0,
  567. C.da = 0,
  568. C.ebx = e - q,
  569. C.eby = D - O,
  570. H.push(C);
  571. f = newSnake(t, K, N, x, z, H);
  572. null == snake ? (view_xx = e,
  573. view_yy = D,
  574. snake = f,
  575. snake.md = !1,
  576. snake.wmd = !1,
  577. f.nk = my_nick) : (f.nk = h,
  578. gdnm(h) || (f.nk = ""));
  579. f.eang = f.wang = I;
  580. f.sp = M;
  581. f.spang = f.sp / spangdv;
  582. 1 < f.spang && (f.spang = 1);
  583. f.fam = u;
  584. f.sc = Math.min(6, 1 + (f.sct - 2) / 106);
  585. f.scang = .13 + .87 * Math.pow((7 - f.sc) / 6, 2);
  586. f.ssp = nsp1 + nsp2 * f.sc;
  587. f.fsp = f.ssp + .1;
  588. f.wsep = 6 * f.sc;
  589. b = nsep / gsc;
  590. f.wsep < b && (f.wsep = b);
  591. f.sep = f.wsep;
  592. snl(f)
  593. } else
  594. for (b = 1 == b[c],
  595. x = snakes.length - 1; 0 <= x; x--)
  596. if (snakes[x].id == t) {
  597. snakes[x].id = -1234;
  598. b ? (snakes[x].dead = !0,
  599. snakes[x].dead_amt = 0,
  600. snakes[x].edir = 0) : snakes.splice(x, 1);
  601. delete os["s" + t];
  602. break
  603. }
  604. } else if ("F" == h)
  605. if (4 <= protocol_version)
  606. for (h = !1; c < f; )
  607. x = b[c],
  608. c++,
  609. e =
  610. b[c] << 8 | b[c + 1],
  611. c += 2,
  612. D = b[c] << 8 | b[c + 1],
  613. c += 2,
  614. q = b[c] / 5,
  615. c++,
  616. t = D * grd * 3 + e,
  617. q = newFood(t, e, D, q, !0, x),
  618. h || (h = !0,
  619. u = Math.floor(e / sector_size),
  620. C = Math.floor(D / sector_size)),
  621. q.sx = u,
  622. q.sy = C;
  623. else
  624. for (u = b[c] << 8 | b[c + 1],
  625. c += 2,
  626. C = b[c] << 8 | b[c + 1],
  627. c += 2; c < f; )
  628. t = b[c] << 16 | b[c + 1] << 8 | b[c + 2],
  629. c += 3,
  630. x = b[c],
  631. c++,
  632. e = sector_size * (u + b[c] / 255),
  633. c++,
  634. D = sector_size * (C + b[c] / 255),
  635. c++,
  636. q = b[c] / 5,
  637. c++,
  638. q = newFood(t, e, D, q, !0, x),
  639. q.sx = u,
  640. q.sy = C;
  641. else if ("b" == h || "f" == h)
  642. 4 <= protocol_version ? (x = b[c],
  643. c++,
  644. 4 < q && (e = b[c] << 8 | b[c + 1],
  645. c += 2,
  646. D = b[c] << 8 | b[c + 1],
  647. t = D * grd * 3 + e,
  648. q = b[c +
  649. 2] / 5,
  650. q = newFood(t, e, D, q, "b" == h, x),
  651. q.sx = Math.floor(e / sector_size),
  652. q.sy = Math.floor(D / sector_size))) : (t = b[c] << 16 | b[c + 1] << 8 | b[c + 2],
  653. c += 3,
  654. 4 < q && (x = b[c],
  655. c++,
  656. u = b[c] << 8 | b[c + 1],
  657. c += 2,
  658. C = b[c] << 8 | b[c + 1],
  659. c += 2,
  660. e = sector_size * (u + b[c] / 255),
  661. c++,
  662. D = sector_size * (C + b[c] / 255),
  663. c++,
  664. q = b[c] / 5,
  665. q = newFood(t, e, D, q, "b" == h, x),
  666. q.sx = u,
  667. q.sy = C));
  668. else if ("c" == h) {
  669. 4 <= protocol_version ? (e = b[c] << 8 | b[c + 1],
  670. c += 2,
  671. D = b[c] << 8 | b[c + 1],
  672. c += 2,
  673. t = D * grd * 3 + e) : (t = b[c] << 16 | b[c + 1] << 8 | b[c + 2],
  674. c += 3);
  675. for (x = cm1 = foods_c - 1; 0 <= x; x--)
  676. if (q = foods[x],
  677. q.id == t) {
  678. q.eaten = !0;
  679. c +
  680. 2 <= f ? (b = b[c] << 8 | b[c + 1],
  681. q.eaten_by = os["s" + b],
  682. q.eaten_fr = 0) : (x == cm1 ? foods[x] = null : (foods[x] = foods[cm1],
  683. foods[cm1] = null ),
  684. foods_c--,
  685. cm1--);
  686. t = -1;
  687. break
  688. }
  689. testing && -1 != t && console.log("wtf")
  690. } else if ("j" == h) {
  691. t = b[c] << 8 | b[c + 1];
  692. c += 2;
  693. e = 1 + 3 * (b[c] << 8 | b[c + 1]);
  694. c += 2;
  695. D = 1 + 3 * (b[c] << 8 | b[c + 1]);
  696. c += 2;
  697. f = null ;
  698. for (x = preys.length - 1; 0 <= x; x--)
  699. if (preys[x].id == t) {
  700. f = preys[x];
  701. break
  702. }
  703. if (f) {
  704. t = etm / 8 * f.sp / 4;
  705. t *= lag_mult;
  706. h = f.xx;
  707. x = f.yy;
  708. 15 == q ? (f.dir = b[c] - 48,
  709. c++,
  710. f.ang = 2 * (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) * Math.PI / 16777215,
  711. c += 3,
  712. f.wang = 2 * (b[c] << 16 | b[c +
  713. 1] << 8 | b[c + 2]) * Math.PI / 16777215,
  714. c += 3,
  715. f.sp = (b[c] << 8 | b[c + 1]) / 1E3) : 11 == q ? (f.ang = 2 * (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) * Math.PI / 16777215,
  716. c += 3,
  717. f.sp = (b[c] << 8 | b[c + 1]) / 1E3) : 12 == q ? (f.dir = b[c] - 48,
  718. c++,
  719. f.wang = 2 * (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) * Math.PI / 16777215,
  720. c += 3,
  721. f.sp = (b[c] << 8 | b[c + 1]) / 1E3) : 13 == q ? (f.dir = b[c] - 48,
  722. c++,
  723. f.ang = 2 * (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) * Math.PI / 16777215,
  724. c += 3,
  725. f.wang = 2 * (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) * Math.PI / 16777215) : 9 == q ? f.ang = 2 * (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) * Math.PI / 16777215 : 10 == q ? (f.dir = b[c] - 48,
  726. c++,
  727. f.wang = 2 * (b[c] <<
  728. 16 | b[c + 1] << 8 | b[c + 2]) * Math.PI / 16777215) : 8 == q && (f.sp = (b[c] << 8 | b[c + 1]) / 1E3);
  729. f.xx = e + Math.cos(f.ang) * t;
  730. f.yy = D + Math.sin(f.ang) * t;
  731. b = f.xx - h;
  732. c = f.yy - x;
  733. t = f.fpos;
  734. for (q = 0; q < rfc; q++)
  735. f.fxs[t] -= b * rfas[q],
  736. f.fys[t] -= c * rfas[q],
  737. t++,
  738. t >= rfc && (t = 0);
  739. f.fx = f.fxs[f.fpos];
  740. f.fy = f.fys[f.fpos];
  741. f.ftg = rfc
  742. }
  743. } else if ("y" == h)
  744. if (t = b[c] << 8 | b[c + 1],
  745. c += 2,
  746. 2 == q)
  747. for (x = preys.length - 1; 0 <= x; x--) {
  748. if (f = preys[x],
  749. f.id == t) {
  750. preys.splice(x, 1);
  751. break
  752. }
  753. }
  754. else if (4 == q)
  755. for (b = b[c] << 8 | b[c + 1],
  756. x = preys.length - 1; 0 <= x; x--) {
  757. if (f = preys[x],
  758. f.id == t) {
  759. f.eaten = !0;
  760. f.eaten_by =
  761. os["s" + b];
  762. f.eaten_by ? f.eaten_fr = 0 : preys.splice(x, 1);
  763. break
  764. }
  765. }
  766. else
  767. x = b[c],
  768. c++,
  769. e = (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) / 5,
  770. c += 3,
  771. D = (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) / 5,
  772. c += 3,
  773. q = b[c] / 5,
  774. c++,
  775. u = b[c] - 48,
  776. c++,
  777. I = 2 * (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) * Math.PI / 16777215,
  778. c += 3,
  779. z = 2 * (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) * Math.PI / 16777215,
  780. c += 3,
  781. M = (b[c] << 8 | b[c + 1]) / 1E3,
  782. newPrey(t, e, D, q, x, u, I, z, M)
  783. }
  784. }
  785. ;
  786. ws.onerror = function(b) {}
  787. ;
  788. ws.onclose = function(b) {
  789. ws == this && (playing = connected = !1)
  790. }
  791. ;
  792. ws.onopen = function(b) {
  793. if (ws == this) {
  794. b = asciize(nick.value);
  795. 24 < b.length && (b = b.substr(0,
  796. 24));
  797. my_nick = b;
  798. gdnm(b) || (b = "");
  799. var c = Math.floor(9 * Math.random());
  800. try {
  801. var e = localStorage.snakercv;
  802. e == "" + Number(e) && (c = Number(e))
  803. } catch (f) {}
  804. e = new Uint8Array(3 + b.length);
  805. e[0] = 115;
  806. e[1] = 7;
  807. e[2] = c;
  808. for (c = 0; c < b.length; c++)
  809. e[c + 3] = b.charCodeAt(c);
  810. ws.send(e);
  811. high_quality = !0;
  812. gla = 1;
  813. wdfg = 0;
  814. qsm = 1;
  815. 0 == want_quality && (high_quality = !1,
  816. gla = 0,
  817. qsm = 1.7);
  818. 1 == render_mode && (high_quality = !1,
  819. gla = 0);
  820. lpstm = Date.now()
  821. }
  822. }
  823. }
  824. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement