sharivan

Gamezer V5 Physics

Oct 28th, 2016 (edited)
59
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function sycf(s) // inicializa os parâmetros do jogo
  2. {
  3.     HDNL_DIS = 0;
  4.     PROC_RD = 0;
  5.     TFC = [];
  6.     TFC.fd_w = 74000; // area width
  7.     TFC.fd_h = 37000; // area height
  8.     TFC.x_offs = 3000;
  9.     TFC.y_offs = 3000;
  10.     TFC.spf = 1;
  11.    
  12.     if (s == "sn")
  13.     {
  14.         TFC.spf = 1.4;
  15.         TFC.upk = 1;
  16.         TFC.pw_cn = 2980;
  17.         TFC.pw_sd = 4260;
  18.         TFC.pdtf = 400;
  19.         TFC["or"] = 840; // raio da bola
  20.         TFC.ei = 8;
  21.         TFC.bi = 7;
  22.         TFC.bnm = 22;
  23.         TFC.whsm = 6;
  24.     }
  25.     else if (s == "cr")
  26.     {
  27.         TFC.spf = 1.1;
  28.         TFC.upk = 0;
  29.         TFC["or"] = 985; // raio da bola
  30.         TFC.ei = 9;
  31.         TFC.bi = 7;
  32.         TFC.bnm = 3;
  33.         TFC.whsm = 5;
  34.     }
  35.     else if (s == "ru")
  36.     {
  37.         TFC.spf = 1;
  38.         TFC.upk = 1;
  39.         TFC.pw_cn = 3000;
  40.         TFC.pw_sd = 3300;
  41.         TFC.pdtf = 400;
  42.         TFC["or"] = 1000; // raio da bola
  43.         TFC.ei = 8;
  44.         TFC.bi = 7;
  45.         TFC.bnm = 16;
  46.         TFC.whsm = 5;
  47.     }
  48.     else if (s == "gz")
  49.     {
  50.         TFC.spf = 1.4;
  51.         TFC.fd_w = 70000;
  52.         TFC.fd_h = 35000;
  53.         TFC.x_offs = 5000;
  54.         TFC.y_offs = 4000;
  55.         TFC.bnm = 16;
  56.         TFC.upk = 1;
  57.         TFC.pw_cn = 3600;
  58.         TFC.pw_sd = 4610;
  59.         TFC.pdtf = 800;
  60.         TFC["or"] = 1000; // raio da bola
  61.         TFC.ei = 8;
  62.         TFC.bi = 7;
  63.         TFC.whsm = 5;
  64.     }
  65.     else
  66.     {
  67.         if (s == "nb")
  68.             TFC.bnm = 10;
  69.         else
  70.             TFC.bnm = 16;
  71.  
  72.         TFC.spf = 1.4;
  73.         TFC.upk = 1;
  74.         s = "am";
  75.         TFC.pw_cn = 3380;
  76.         TFC.pw_sd = 4020;
  77.         TFC.pdtf = 800;
  78.         TFC["or"] = 920; // raio da bola
  79.         TFC.ei = 8;
  80.         TFC.bi = 7;
  81.         TFC.whsm = 5;
  82.     }
  83.    
  84.     TFC.apr = s;
  85.     TFC.pi_e_p = 15;
  86.     TFC.pi_e_m = 5;
  87.     TFC.vc = 2100;
  88.     TFC.od = TFC["or"] * 2; // diâmetro da bola
  89.     TFC.od2 = TFC.od * 2; // dobro do diâmetro da bola
  90.     TFC.ow = TFC.od * TFC.od; // diâmetro da bola ao quadrado
  91.     TFC.ou = TFC["or"] * TFC["or"]; // raio da bola ao quadrado
  92.     TFC.ti = 3.141; // pi
  93.     TFC.te = thma_i(TFC.ti / 180); // pi / 180
  94.     TFC.a_n = TFC["or"] + TFC.x_offs; // left
  95.     TFC.a_x = TFC.fd_w - TFC["or"] + TFC.x_offs; // right
  96.     TFC.b_n = TFC["or"] + TFC.y_offs; // top
  97.     TFC.b_x = TFC.fd_h - TFC["or"] + TFC.y_offs; // bottom
  98.     TFC.a_ct = TFC.fd_w / 2 + TFC.x_offs; // coordenada x do centro da mesa
  99.     TFC.b_ct = TFC.fd_h / 2 + TFC.y_offs; // coordenada y do centro da mesa
  100.     var __reg10 = Math.round(TFC.fd_w / 4);
  101.     TFC.pch_1 = TFC.x_offs + __reg10;
  102.     TFC.pch_2 = TFC.x_offs + __reg10 * 3;
  103.    
  104.     if (TFC.upk)
  105.     {
  106.         var __reg2 = TFC.od * 14;
  107.         var __reg6 = Math.round(thma_i(Math.sin(thma_r(TFC.te * 14))) * __reg2);
  108.         var __reg8 = Math.round(Math.sqrt(Math.abs(__reg2 * __reg2 - __reg6 * __reg6)));
  109.         var __reg1 = TFC["or"] / 2;
  110.         __reg1 = __reg1 * __reg1;
  111.         __reg1 = Math.round(Math.sqrt(Math.abs(__reg1 + __reg1)));
  112.         var __reg3 = TFC.pw_cn / 2;
  113.         __reg3 = __reg3 * __reg3;
  114.         __reg3 = Math.round(Math.sqrt(Math.abs(__reg3 + __reg3)));
  115.         var __reg5 = TFC["or"] / 2;
  116.         __reg5 = __reg5 * __reg5;
  117.         __reg5 = Math.round(Math.sqrt(Math.abs(__reg5 + __reg5)));
  118.         var __reg9 = Math.round(TFC.pw_sd / 2);
  119.         var __reg4 = 1000;
  120.         TFC.k_1a = [TFC.x_offs, TFC.y_offs + __reg3];
  121.         TFC.k_1ga = -22.5;
  122.         TFC.k_1a_pt1 = [TFC.k_1a[0] - __reg2 + __reg1, TFC.k_1a[1] - __reg2 - __reg1];
  123.         TFC.k_1a_pt2 = [TFC.k_1a[0] + __reg1, TFC.k_1a[1] - __reg1];
  124.         TFC.k_1a_pt3 = [TFC.k_1a[0] + __reg1, TFC.k_1a[1] + __reg2];
  125.         TFC.k_1b = [TFC.x_offs + __reg3, TFC.y_offs];
  126.         TFC.k_1gb = 112.5;
  127.         TFC.k_1b_pt1 = [TFC.k_1b[0] - __reg2 - __reg1, TFC.k_1b[1] - __reg2 + __reg1];
  128.         TFC.k_1b_pt2 = [TFC.k_1b[0] - __reg1, TFC.k_1b[1] + __reg1];
  129.         TFC.k_1b_pt3 = [TFC.k_1b[0] + __reg2, TFC.k_1b[1] + __reg1];
  130.         TFC.k_1pkp = [TFC.x_offs, TFC.y_offs];
  131.         TFC.k_1pkp_a = [TFC.k_1pkp[0] - TFC.od, TFC.k_1pkp[1] + TFC.od];
  132.         TFC.k_1pkp_b = [TFC.k_1pkp[0] + TFC.od, TFC.k_1pkp[1] - TFC.od];
  133.         TFC.k_1pkt = [TFC.k_1pkp[0] - __reg5, TFC.k_1pkp[1] - __reg5];
  134.         TFC.k_1bottg = [TFC.x_offs + __reg4, TFC.y_offs + __reg4];
  135.         TFC.k_2a = [TFC.a_ct - __reg9, TFC.y_offs];
  136.         TFC.k_2ga = 52;
  137.         TFC.k_2a_pt1 = [TFC.k_2a[0] + __reg6 + TFC["or"], TFC.k_2a[1] - __reg8];
  138.         TFC.k_2a_pt2 = [TFC.k_2a[0] + TFC["or"], TFC.k_2a[1] + __reg1];
  139.         TFC.k_2a_pt3 = [TFC.k_2a[0] - __reg2, TFC.k_2a[1] + __reg1];
  140.         TFC.k_2b = [TFC.a_ct + __reg9, TFC.y_offs];
  141.         TFC.k_2gb = 128;
  142.         TFC.k_2b_pt1 = [TFC.k_2b[0] - __reg6 - TFC["or"], TFC.k_2b[1] - __reg8];
  143.         TFC.k_2b_pt2 = [TFC.k_2b[0] - TFC["or"], TFC.k_2b[1] + __reg1];
  144.         TFC.k_2b_pt3 = [TFC.k_2a[0] + __reg2, TFC.k_2a[1] + __reg1];
  145.         TFC.k_2pkp = [TFC.a_ct, TFC.y_offs - TFC.pdtf];
  146.         TFC.k_2pkp_a = [TFC.k_2pkp[0] - TFC.od2, TFC.k_2pkp[1]];
  147.         TFC.k_2pkp_b = [TFC.k_2pkp[0] + TFC.od2, TFC.k_2pkp[1]];
  148.         TFC.k_2pkt = [TFC.k_2pkp[0], TFC.k_2pkp[1] - TFC["or"]];
  149.         TFC.k_2bottg = [TFC.a_ct, TFC.y_offs];
  150.         TFC.k_3a = [TFC.fd_w + TFC.x_offs - __reg3, TFC.y_offs];
  151.         TFC.k_3ga = 67.5;
  152.         TFC.k_3a_pt1 = [TFC.k_3a[0] + __reg2 + __reg1, TFC.k_3a[1] - __reg2 + __reg1];
  153.         TFC.k_3a_pt2 = [TFC.k_3a[0] + __reg1, TFC.k_3a[1] + __reg1];
  154.         TFC.k_3a_pt3 = [TFC.k_3a[0] - __reg2, TFC.k_3a[1] + __reg1];
  155.         TFC.k_3b = [TFC.fd_w + TFC.x_offs, TFC.y_offs + __reg3];
  156.         TFC.k_3gb = -157.5;
  157.         TFC.k_3b_pt1 = [TFC.k_3b[0] + __reg2 - __reg1, TFC.k_3b[1] - __reg2 - __reg1];
  158.         TFC.k_3b_pt2 = [TFC.k_3b[0] - __reg1, TFC.k_3b[1] - __reg1];
  159.         TFC.k_3b_pt3 = [TFC.k_3b[0] - __reg1, TFC.k_3b[1] + __reg2];
  160.         TFC.k_3pkp = [TFC.fd_w + TFC.x_offs, TFC.y_offs];
  161.         TFC.k_3pkp_a = [TFC.k_3pkp[0] - TFC.od, TFC.k_3pkp[1] - TFC.od];
  162.         TFC.k_3pkp_b = [TFC.k_3pkp[0] + TFC.od, TFC.k_3pkp[1] + TFC.od];
  163.         TFC.k_3pkt = [TFC.k_3pkp[0] + __reg5, TFC.k_3pkp[1] - __reg5];
  164.         TFC.k_3bottg = [TFC.x_offs + TFC.fd_w - __reg4, TFC.y_offs + __reg4];
  165.         TFC.k_4a = [TFC.x_offs, TFC.fd_h + TFC.y_offs - __reg3];
  166.         TFC.k_4ga = 22.5;
  167.         TFC.k_4a_pt1 = [TFC.k_4a[0] - __reg2 + __reg1, TFC.k_4a[1] + __reg2 + __reg1];
  168.         TFC.k_4a_pt2 = [TFC.k_4a[0] + __reg1, TFC.k_4a[1] + __reg1];
  169.         TFC.k_4a_pt3 = [TFC.k_4a[0] + __reg1, TFC.k_4a[1] - __reg2];
  170.         TFC.k_4b = [TFC.x_offs + __reg3, TFC.fd_h + TFC.y_offs];
  171.         TFC.k_4gb = -112.5;
  172.         TFC.k_4b_pt1 = [TFC.k_4b[0] - __reg2 - __reg1, TFC.k_4b[1] + __reg2 - __reg1];
  173.         TFC.k_4b_pt2 = [TFC.k_4b[0] - __reg1, TFC.k_4b[1] - __reg1];
  174.         TFC.k_4b_pt3 = [TFC.k_4b[0] + __reg2, TFC.k_4b[1] - __reg1];
  175.         TFC.k_4pkp = [TFC.x_offs, TFC.fd_h + TFC.y_offs];
  176.         TFC.k_4pkp_a = [TFC.k_4pkp[0] - TFC.od, TFC.k_4pkp[1] - TFC.od];
  177.         TFC.k_4pkp_b = [TFC.k_4pkp[0] + TFC.od, TFC.k_4pkp[1] + TFC.od];
  178.         TFC.k_4pkt = [TFC.k_4pkp[0] - __reg5, TFC.k_4pkp[1] + __reg5];
  179.         TFC.k_4bottg = [TFC.x_offs + __reg4, TFC.y_offs + TFC.fd_h - __reg4];
  180.         TFC.k_5a = [TFC.a_ct - __reg9, TFC.fd_h + TFC.y_offs];
  181.         TFC.k_5ga = -52;
  182.         TFC.k_5a_pt1 = [TFC.k_5a[0] + __reg6 + TFC["or"], TFC.k_5a[1] + __reg8];
  183.         TFC.k_5a_pt2 = [TFC.k_5a[0] + TFC["or"], TFC.k_5a[1] - __reg1];
  184.         TFC.k_5a_pt3 = [TFC.k_5a[0] - __reg2, TFC.k_5a[1] - __reg1];
  185.         TFC.k_5b = [TFC.a_ct + __reg9, TFC.fd_h + TFC.y_offs];
  186.         TFC.k_5gb = -128;
  187.         TFC.k_5b_pt1 = [TFC.k_5b[0] - __reg6 - TFC["or"], TFC.k_5b[1] + __reg8];
  188.         TFC.k_5b_pt2 = [TFC.k_5b[0] - TFC["or"], TFC.k_5b[1] - __reg1];
  189.         TFC.k_5b_pt3 = [TFC.k_5a[0] + __reg2, TFC.k_5a[1] - __reg1];
  190.         TFC.k_5pkp = [TFC.a_ct, TFC.fd_h + TFC.y_offs + TFC.pdtf];
  191.         TFC.k_5pkp_a = [TFC.k_5pkp[0] - TFC.od2, TFC.k_5pkp[1]];
  192.         TFC.k_5pkp_b = [TFC.k_5pkp[0] + TFC.od2, TFC.k_5pkp[1]];
  193.         TFC.k_5pkt = [TFC.k_5pkp[0], TFC.k_5pkp[1] + TFC["or"]];
  194.         TFC.k_5bottg = [TFC.a_ct, TFC.fd_h + TFC.y_offs];
  195.         TFC.k_6a = [TFC.fd_w + TFC.x_offs - __reg3, TFC.fd_h + TFC.y_offs];
  196.         TFC.k_6ga = -67.5;
  197.         TFC.k_6a_pt1 = [TFC.k_6a[0] + __reg2 + __reg1, TFC.k_6a[1] + __reg2 - __reg1];
  198.         TFC.k_6a_pt2 = [TFC.k_6a[0] + __reg1, TFC.k_6a[1] - __reg1];
  199.         TFC.k_6a_pt3 = [TFC.k_6a[0] - __reg2, TFC.k_6a[1] - __reg1];
  200.         TFC.k_6b = [TFC.fd_w + TFC.x_offs, TFC.fd_h + TFC.y_offs - __reg3];
  201.         TFC.k_6gb = 157.5;
  202.         TFC.k_6b_pt1 = [TFC.k_6b[0] + __reg2 - __reg1, TFC.k_6b[1] + __reg2 + __reg1];
  203.         TFC.k_6b_pt2 = [TFC.k_6b[0] - __reg1, TFC.k_6b[1] + __reg1];
  204.         TFC.k_6b_pt3 = [TFC.k_6b[0] - __reg1, TFC.k_6b[1] - __reg2];
  205.         TFC.k_6pkp = [TFC.fd_w + TFC.x_offs, TFC.fd_h + TFC.y_offs];
  206.         TFC.k_6pkp_a = [TFC.k_6pkp[0] - TFC.od, TFC.k_6pkp[1] + TFC.od];
  207.         TFC.k_6pkp_b = [TFC.k_6pkp[0] + TFC.od, TFC.k_6pkp[1] - TFC.od];
  208.         TFC.k_6pkt = [TFC.k_6pkp[0] + __reg5, TFC.k_6pkp[1] + __reg5];
  209.         TFC.k_6bottg = [TFC.x_offs + TFC.fd_w - __reg4, TFC.y_offs + TFC.fd_h - __reg4];
  210.     }
  211. }
  212.  
  213. function prpy(f) // inicializa a semente
  214. {
  215.     _root.println("prpy: " + f);
  216.     TFC.sqb = [];
  217.     TFC.sqk = _root.hmx(f);
  218.     _root.println("sqk=" + TFC.sqk);
  219.     TFC.sqc = [];
  220.    
  221.     var __reg2 = 0;
  222.     var s = "";
  223.     while (__reg2 < 32)
  224.     {
  225.         TFC.sqc[__reg2] = Math.round(parseInt(TFC.sqk.substr(__reg2, 1), 16));
  226.        
  227.         if (s == "")
  228.             s = "" + TFC.sqc[__reg2];
  229.         else
  230.             s = s + ", " + TFC.sqc[__reg2];
  231.            
  232.         ++__reg2;
  233.     }
  234.    
  235.     _root.println("sqc={" + s + "}");
  236.    
  237.     __reg2 = 0;
  238.     for (;;)
  239.     {
  240.         if (__reg2 >= TFC.bnm)
  241.             return;
  242.        
  243.         if (TFC.sqc[__reg2] % 2 == 0)
  244.             TFC.sqb.push(__reg2);
  245.         else
  246.             TFC.sqb.unshift(__reg2);
  247.        
  248.         ++__reg2;
  249.     }
  250. }
  251.  
  252. function bordhit(c, np) // registra as colisões com as bordas
  253. {
  254.     if (TFC.apr != "cr" || c !== 0)
  255.         return undefined;
  256.  
  257.     if (typeof SH_RTGC.ct == "object")
  258.     {
  259.         var __reg2 = SH_RTGC.ct.length;
  260.         if (__reg2 > 1)
  261.         {
  262.             var __reg1 = 1;
  263.             while (__reg1 < __reg2)
  264.             {
  265.                 if (SH_RTGC.ct[0] != SH_RTGC.ct[__reg1])
  266.                 {
  267.                     return undefined;
  268.                 }
  269.                 ++__reg1;
  270.             }
  271.         }
  272.        
  273.         if (typeof SH_RTGC.pk != "object")
  274.             SH_RTGC.pk = [];
  275.        
  276.        
  277.         if (SH_RTGC.pk.length <= 3)
  278.             SH_RTGC.pk.push([np[0], np[1]]);
  279.     }
  280. }
  281.  
  282. function sound_bordkick(obj, s) // toca o som do efeito da colisão das bolas com as bordas
  283. {
  284.     var __reg1 = soundRat_bordkick * (s / 100);
  285.     if (__reg1 > 100)
  286.         __reg1 = 100;
  287.    
  288.     var __reg2 = new Sound(obj);
  289.     __reg2.attachSound("snb_bordkick");
  290.     __reg2.setVolume(__reg1);
  291.     __reg2.start();
  292. }
  293.  
  294. function sound_kick(obj, s) // toca o som da colisão entre bolas
  295. {
  296.     var __reg1 = soundRat_kick * (s / 100);
  297.     if (__reg1 > 100)
  298.         __reg1 = 100;
  299.    
  300.     var __reg2 = new Sound(obj);
  301.     __reg2.attachSound("snb_kick");
  302.     __reg2.setVolume(__reg1);
  303.     __reg2.start();
  304. }
  305.  
  306. function sound_keykick(obj, s) // toca o som do taco sendo atirado na bola
  307. {
  308.     var __reg1 = soundRat_keykick * (s / 100);
  309.     if (__reg1 > 100)
  310.         __reg1 = 100;
  311.    
  312.     var __reg2 = new Sound(obj);
  313.     __reg2.attachSound("snb_keykick");
  314.     __reg2.setVolume(__reg1);
  315.     __reg2.start();
  316. }
  317.  
  318. function sound_pocket(obj, s) // Toca o som das bolas sendo encaçapadas
  319. {
  320.     var __reg1 = soundRat_pocket * (s / 100);
  321.     if (__reg1 > 100)
  322.         __reg1 = 100;
  323.    
  324.     if (__reg1 < 20)
  325.         __reg1 = 20;
  326.    
  327.     var __reg2 = new Sound(obj);
  328.     __reg2.attachSound("snb_pocket");
  329.     __reg2.setVolume(__reg1);
  330.     __reg2.start();
  331. }
  332.  
  333. function whs(obj, f) // Define o estado de rotação das bolas
  334. {
  335.     if (obj.wheel != undefined)
  336.     {
  337.         var __reg1 = obj.wheel._currentframe + Math.round(f / 100 * TFC.whsm);
  338.         if (__reg1 > 200)
  339.             __reg1 = __reg1 - 200;
  340.         else if (__reg1 < -200)
  341.             __reg1 = 1;
  342.         else if (__reg1 < 1)
  343.             __reg1 = 200 + __reg1;
  344.        
  345.         obj.wheel.gotoAndStop(__reg1);
  346.     }
  347. }
  348.  
  349. function thmj(v1_1a, v1_1b, v1_2a, v1_2b, v2_1a, v2_1b, v2_2a, v2_2b) // Obtém o ponto de intersecção entre dois segmentos de reta
  350. {
  351.     var det = (v1_1a - v1_2a) * (v2_2b - v2_1b) - (v1_1b - v1_2b) * (v2_2a - v2_1a);
  352.     var T_A = (v1_1a - v2_1a) * (v2_2b - v2_1b) - (v1_1b - v2_1b) * (v2_2a - v2_1a);
  353.     var T_B = (v1_1a - v1_2a) * (v1_1b - v2_1b) - (v1_1b - v1_2b) * (v1_1a - v2_1a);
  354.    
  355.     if (Math.abs(det) < 0.000001)
  356.         return [0]; // retorna [0] se a intersecção for vazia devido aos dois segmentos serem paralelos
  357.    
  358.     var ta = T_A / det;
  359.     var tb = T_B / det;
  360.    
  361.     if (0 <= ta && ta <= 1 && 0 <= tb && tb <= 1)
  362.         return [1, ta, tb]; // retorna [1, ta, tb] se a intersecção for não vazia onde ta e tb são as coordenadas do ponto de intersecção
  363.    
  364.     return [-1]; // retorna [-1] se a intersecçao for vazia devido aos dois segmentos não forem paralelos, porém ainda assim não se cruzam
  365. }
  366.  
  367. function thfr(c, a, s) // Adiciona dois vetores dados em coordenadas polares, o primeiro é o vetor posição da bola de índice c e o segundo é dado pelo comprimento s e ângulo a
  368. {
  369.     var cv = LFSET[c].v;
  370.     var cs = LFSET[c].s;
  371.    
  372.     var csy = Math.round(thma_i(Math.sin(thma_r(TFC.te * cv))) * cs);
  373.     var sy = Math.round(thma_i(Math.sin(thma_r(TFC.te * a))) * s);
  374.     var csx = Math.round(Math.sqrt(Math.abs(cs * cs - csy * csy)));
  375.     var sx = Math.round(Math.sqrt(Math.abs(s * s - sy * sy)));
  376.    
  377.     if (Math.abs(cv) > 90)
  378.         csx = 0 - csx;
  379.    
  380.     if (Math.abs(a) > 90)
  381.         sx = 0 - sx;
  382.    
  383.     var x = Math.round(csx + sx);
  384.     var y = Math.round(csy + sy);
  385.     LFSET[c].v = thmg(0, 0, x, y);
  386.     LFSET[c].s = thmd(0, 0, x, y);
  387. }
  388.  
  389. function thmp(a, b, c, d) // Adiciona dois vetores onde o primeiro é dado em coordenadas retangulares (a, b) (usualmente o vetor posição) e o segundo em coordenadas polares (d, c) (usualmente o vetor velocidade) e retorna o resultado em coordenadas retangulares
  390. {
  391.     var y = Math.round(thma_i(Math.sin(thma_r(TFC.te * c))) * d);
  392.     var x = Math.round(Math.sqrt(Math.abs(d * d - y * y)));
  393.     if (Math.abs(c) > 90)
  394.         x = 0 - x;
  395.    
  396.     return [a + x, b + y];
  397. }
  398.  
  399. function thmd(a, b, c, d) // Distância entre dois vetores
  400. {
  401.     var dx = Math.round(a - c);
  402.     var dy = Math.round(b - d);
  403.     return Math.round(Math.sqrt(Math.abs(dx * dx + dy * dy)));
  404. }
  405.  
  406. function thmg(a, b, ar, br) // Ângulo entre dois vetores
  407. {
  408.     var __reg2 = Math.round(ar - a);
  409.     var __reg1 = Math.round(br - b);
  410.     var angle = thma_r(Math.atan2(__reg1, __reg2));
  411.     return thmn(angle / TFC.te);
  412. }
  413.  
  414. function dist_vec_to_line(x0, y0, x1, y1, x2, y2) // Distância entre um vetor e uma reta
  415. {
  416.     var A = y1 - y2;
  417.     var B = x2 - x1;
  418.     var C = x1 * y2 - x2 * y1;
  419.     var D = Math.sqrt(Math.abs(A * A + B * B));
  420.     if (D < 0.000001)
  421.         return 0;
  422.    
  423.     return Math.round(Math.abs(A * x0 + B * y0 + C) / D);
  424. }
  425.  
  426. function thmn(a) // Normaliza um ângulo que esteja no intervalo [0, 360] para o intervalo [-180, 180]
  427. {
  428.     if (a > 180)
  429.         a = a - 360;
  430.    
  431.    
  432.     if (a < -180)
  433.         a = a + 360;
  434.    
  435.    
  436.     return thma_d(a);
  437. }
  438.  
  439. function thma_i(a) // Arredonda um número para 6 casas decimais
  440. {
  441.     return Math.round(a * 1000000) / 1000000;
  442. }
  443.  
  444. function thma_r(a) // Arredonda um número para 4 casas decimais
  445. {
  446.     return Math.round(a * 10000) / 10000;
  447. }
  448.  
  449. function thma_d(a) // Arredonda um número para 2 casas decimais
  450. {
  451.     return Math.round(a * 100) / 100;
  452. }
  453.  
  454. function gfcl(c, np, pkps, angRef)
  455. {
  456.     var s1 = TFC["or"] + LFSET[c].s; // raio da bola + módulo da bola
  457.     var d = thmd(LFSET[c].a, LFSET[c].b, pkps[0], pkps[1]); // distância entre o centro da bola e o vetor pkps
  458.     if (d <= s1)
  459.     {
  460.         var a = thmg(LFSET[c].a, LFSET[c].b, pkps[0], pkps[1]); // ângulo entre o vetor posição da bola e o vetor pkps
  461.         var d2 = thmd(np[0], np[1], pkps[0], pkps[1]); // distância entre np e pkps
  462.         var da = Math.abs(thmn(LFSET[c].v - a)); // diferença entre o ângulo da bola e a
  463.         var __reg10 = Math.abs(Math.round(d * thma_i(Math.sin(thma_r(TFC.te * da)))));
  464.         var __reg9 = thmg(np[0], np[1], pkps[0], pkps[1]);
  465.         var __reg11 = Math.abs(thmn(LFSET[c].v - __reg9));
  466.         if ((d2 < TFC["or"] || __reg11 > 90) && __reg10 < TFC["or"] && da < 90)
  467.             return [1, thmn(2 * angRef - 180 - LFSET[c].v)];
  468.     }
  469.    
  470.     return [0];
  471. }
  472.  
  473. function ipgt(c, n) // encaçapa a bola de índice c na caçapa de índice n
  474. {
  475.     var __reg2 = TFC["k_" + n + "pkt"];
  476.     LFSET[c].h._visible = 0;
  477.     LFSET[c].a = __reg2[0];
  478.     LFSET[c].b = __reg2[1];
  479.     thps(c);
  480.    
  481.     if (typeof SH_RTGC.pk != "object")
  482.         SH_RTGC.pk = [];
  483.    
  484.     SH_RTGC.pk.push([c, n]);
  485. }
  486.  
  487. function iphk(c, np, n) // testa se o seguimento de reta que une a bola de índice c as coordenadas np intersepta o canto de índice n
  488. {
  489.     var ip = thmj(LFSET[c].a, LFSET[c].b, np[0], np[1], TFC["k_" + n + "pkp_a"][0], TFC["k_" + n + "pkp_a"][1], TFC["k_" + n + "pkp_b"][0], TFC["k_" + n + "pkp_b"][1]);
  490.     if (ip[0] == 1)
  491.         return 1;
  492.    
  493.     return 0;
  494. }
  495.  
  496. function tgf_1(c, np)
  497. {
  498.     if (LFSET[c].v < -157.5 || LFSET[c].v > 112.5)
  499.     {
  500.         var __reg3 = gfcl(c, np, TFC.k_1a, TFC.k_1ga);
  501.         if (__reg3[0])
  502.             glob_v_pass = __reg3[1];
  503.     }
  504.    
  505.     if (LFSET[c].v > -112.5 && LFSET[c].v < -22.5)
  506.     {
  507.         var __reg8 = gfcl(c, np, TFC.k_1b, TFC.k_1gb);
  508.         if (__reg8[0])
  509.             glob_v_pass = __reg8[1];
  510.     }
  511.    
  512.     if (Math.abs(LFSET[c].v) == 135 || Math.abs(LFSET[c].v) == 45)
  513.         LFSET[c].v = LFSET[c].v + 0.1;
  514.        
  515.     var __reg5;
  516.     var __reg6;
  517.  
  518.     if (LFSET[c].v < -135 || LFSET[c].v > 45)
  519.     {
  520.         var __reg4 = thmj(LFSET[c].a, LFSET[c].b, np[0], np[1], TFC.k_1a_pt1[0], TFC.k_1a_pt1[1], TFC.k_1a_pt2[0], TFC.k_1a_pt2[1]);
  521.         if (__reg4[0] == 1)
  522.         {
  523.             __reg6 = -135;
  524.             __reg5 = thma_r(__reg4[1] - 0.1) * LFSET[c].s;
  525.             if (__reg5 <= 0)
  526.             {
  527.                 np[0] = LFSET[c].a;
  528.                 np[1] = LFSET[c].b;
  529.             }
  530.             else
  531.                 np = thmp(LFSET[c].a, LFSET[c].b, LFSET[c].v, __reg5);
  532.  
  533.             delete glob_v_pass;
  534.             LFSET[c].v = thmn((LFSET[c].v - __reg6) * -1 + __reg6);
  535.            
  536.             return [1, np];
  537.         }
  538.     }
  539.    
  540.     if (LFSET[c].v > -135 && LFSET[c].v < 45)
  541.     {
  542.         var __reg7 = thmj(LFSET[c].a, LFSET[c].b, np[0], np[1], TFC.k_1b_pt1[0], TFC.k_1b_pt1[1], TFC.k_1b_pt2[0], TFC.k_1b_pt2[1]);
  543.         if (__reg7[0] == 1)
  544.         {
  545.             __reg6 = -135;
  546.             __reg5 = thma_r(__reg7[1] - 0.1) * LFSET[c].s;
  547.             if (__reg5 <= 0)
  548.             {
  549.                 np[0] = LFSET[c].a;
  550.                 np[1] = LFSET[c].b;
  551.             }
  552.             else
  553.                 np = thmp(LFSET[c].a, LFSET[c].b, LFSET[c].v, __reg5);
  554.  
  555.             delete glob_v_pass;
  556.             LFSET[c].v = thmn((LFSET[c].v - __reg6) * -1 + __reg6);
  557.            
  558.             return [1, np];
  559.         }
  560.     }
  561.    
  562.     var __reg10 = thmj(LFSET[c].a, LFSET[c].b, np[0], np[1], TFC.k_1a_pt2[0], TFC.k_1a_pt2[1], TFC.k_1a_pt3[0], TFC.k_1a_pt3[1]);
  563.     if (__reg10[0] == 1)
  564.         return [0, np, 0, "l"];
  565.  
  566.     var __reg9 = thmj(LFSET[c].a, LFSET[c].b, np[0], np[1], TFC.k_1b_pt2[0], TFC.k_1b_pt2[1], TFC.k_1b_pt3[0], TFC.k_1b_pt3[1]);
  567.     if (__reg9[0] == 1)
  568.         return [0, np, 0, "t"];
  569.  
  570.     if (np[0] < TFC.k_1b[0])
  571.     {
  572.         if (np[1] < TFC.k_1a[1])
  573.             return [1, np, 1];
  574.     }
  575.    
  576.     return [0, np];
  577. }
  578.  
  579. function tgf_2(c, np)
  580. {
  581.     if (LFSET[c].v < -83 && LFSET[c].v > -173)
  582.     {
  583.         var __reg3 = gfcl(c, np, TFC.k_2a, TFC.k_2ga);
  584.         if (__reg3[0])
  585.             glob_v_pass = __reg3[1];
  586.     }
  587.    
  588.     if (LFSET[c].v > -97 && LFSET[c].v < -7)
  589.     {
  590.         var __reg8 = gfcl(c, np, TFC.k_2b, TFC.k_2gb);
  591.         if (__reg8[0])
  592.             glob_v_pass = __reg8[1];
  593.     }
  594.    
  595.     if (Math.abs(LFSET[c].v) == 104 || Math.abs(LFSET[c].v) == 76)
  596.         LFSET[c].v = LFSET[c].v + 0.1;
  597.        
  598.     var __reg5;
  599.     var __reg6;
  600.  
  601.     if (LFSET[c].v < -76 || LFSET[c].v > 104)
  602.     {
  603.         var __reg4 = thmj(LFSET[c].a, LFSET[c].b, np[0], np[1], TFC.k_2a_pt1[0], TFC.k_2a_pt1[1], TFC.k_2a_pt2[0], TFC.k_2a_pt2[1]);
  604.         if (__reg4[0] == 1)
  605.         {
  606.             __reg6 = -76;
  607.             __reg5 = thma_r(__reg4[1] - 0.1) * LFSET[c].s;
  608.             if (__reg5 <= 0)
  609.             {
  610.                 np[0] = LFSET[c].a;
  611.                 np[1] = LFSET[c].b;
  612.             }
  613.             else
  614.                 np = thmp(LFSET[c].a, LFSET[c].b, LFSET[c].v, __reg5);
  615.  
  616.             delete glob_v_pass;
  617.             LFSET[c].v = thmn((LFSET[c].v - __reg6) * -1 + __reg6);
  618.            
  619.             return [1, np];
  620.         }
  621.     }
  622.    
  623.     if (LFSET[c].v > -104 && LFSET[c].v < 76)
  624.     {
  625.         var __reg7 = thmj(LFSET[c].a, LFSET[c].b, np[0], np[1], TFC.k_2b_pt1[0], TFC.k_2b_pt1[1], TFC.k_2b_pt2[0], TFC.k_2b_pt2[1]);
  626.         if (__reg7[0] == 1)
  627.         {
  628.             __reg6 = -104;
  629.             __reg5 = thma_r(__reg7[1] - 0.1) * LFSET[c].s;
  630.             if (__reg5 <= 0)
  631.             {
  632.                 np[0] = LFSET[c].a;
  633.                 np[1] = LFSET[c].b;
  634.             }
  635.             else
  636.                 np = thmp(LFSET[c].a, LFSET[c].b, LFSET[c].v, __reg5);
  637.             delete (glob_v_pass);
  638.             LFSET[c].v = thmn((LFSET[c].v - __reg6) * -1 + __reg6);
  639.            
  640.             return [1, np];
  641.         }
  642.     }
  643.    
  644.     var __reg10 = thmj(LFSET[c].a, LFSET[c].b, np[0], np[1], TFC.k_2a_pt2[0], TFC.k_2a_pt2[1], TFC.k_2a_pt3[0], TFC.k_2a_pt3[1]);
  645.     if (__reg10[0] == 1)
  646.         return [0, np, 0, "t"];
  647.  
  648.     var __reg9 = thmj(LFSET[c].a, LFSET[c].b, np[0], np[1], TFC.k_2b_pt2[0], TFC.k_2b_pt2[1], TFC.k_2b_pt3[0], TFC.k_2b_pt3[1]);
  649.     if (__reg9[0] == 1)
  650.         return [0, np, 0, "t"];
  651.  
  652.     if (np[0] > TFC.k_2a[0] && np[0] < TFC.k_2b[0])
  653.         return [1, np, 1];
  654.  
  655.     return [0, np];
  656. }
  657.  
  658. function tgf_3(c, np)
  659. {
  660.     if (LFSET[c].v < -67.5 && LFSET[c].v > -157.5)
  661.     {
  662.         var __reg3 = gfcl(c, np, TFC.k_3a, TFC.k_3ga);
  663.         if (__reg3[0])
  664.             glob_v_pass = __reg3[1];
  665.     }
  666.    
  667.     if (LFSET[c].v > -22.5 && LFSET[c].v < 67.5)
  668.     {
  669.         var __reg8 = gfcl(c, np, TFC.k_3b, TFC.k_3gb);
  670.         if (__reg8[0])
  671.             glob_v_pass = __reg8[1];
  672.     }
  673.    
  674.     if (Math.abs(LFSET[c].v) == 135 || Math.abs(LFSET[c].v) == 45)
  675.         LFSET[c].v = LFSET[c].v + 0.1;
  676.        
  677.     var __reg5;
  678.     var __reg6;
  679.  
  680.     if (LFSET[c].v < -45 || LFSET[c].v > 135)
  681.     {
  682.         var __reg4 = thmj(LFSET[c].a, LFSET[c].b, np[0], np[1], TFC.k_3a_pt1[0], TFC.k_3a_pt1[1], TFC.k_3a_pt2[0], TFC.k_3a_pt2[1]);
  683.         if (__reg4[0] == 1)
  684.         {
  685.             __reg6 = -45;
  686.             __reg5 = thma_r(__reg4[1] - 0.1) * LFSET[c].s;
  687.             if (__reg5 <= 0)
  688.             {
  689.                 np[0] = LFSET[c].a;
  690.                 np[1] = LFSET[c].b;
  691.             }
  692.             else
  693.                 np = thmp(LFSET[c].a, LFSET[c].b, LFSET[c].v, __reg5);
  694.            
  695.             delete (glob_v_pass);
  696.             LFSET[c].v = thmn((LFSET[c].v - __reg6) * -1 + __reg6);
  697.            
  698.             return [1, np];
  699.         }
  700.     }
  701.    
  702.     if (LFSET[c].v > -45 && LFSET[c].v < 135)
  703.     {
  704.         var __reg7 = thmj(LFSET[c].a, LFSET[c].b, np[0], np[1], TFC.k_3b_pt1[0], TFC.k_3b_pt1[1], TFC.k_3b_pt2[0], TFC.k_3b_pt2[1]);
  705.         if (__reg7[0] == 1)
  706.         {
  707.             __reg6 = -45;
  708.             __reg5 = thma_r(__reg7[1] - 0.1) * LFSET[c].s;
  709.             if (__reg5 <= 0)
  710.             {
  711.                 np[0] = LFSET[c].a;
  712.                 np[1] = LFSET[c].b;
  713.             }
  714.             else
  715.                 np = thmp(LFSET[c].a, LFSET[c].b, LFSET[c].v, __reg5);
  716.            
  717.             delete (glob_v_pass);
  718.             LFSET[c].v = thmn((LFSET[c].v - __reg6) * -1 + __reg6);
  719.            
  720.             return [1, np];
  721.         }
  722.     }
  723.    
  724.     var __reg10 = thmj(LFSET[c].a, LFSET[c].b, np[0], np[1], TFC.k_3a_pt2[0], TFC.k_3a_pt2[1], TFC.k_3a_pt3[0], TFC.k_3a_pt3[1]);
  725.     if (__reg10[0] == 1)
  726.         return [0, np, 0, "t"];
  727.  
  728.     var __reg9 = thmj(LFSET[c].a, LFSET[c].b, np[0], np[1], TFC.k_3b_pt2[0], TFC.k_3b_pt2[1], TFC.k_3b_pt3[0], TFC.k_3b_pt3[1]);
  729.     if (__reg9[0] == 1)
  730.         return [0, np, 0, "r"];
  731.  
  732.     if (np[0] > TFC.k_3a[0])
  733.     {
  734.         if (np[1] < TFC.k_3b[1])
  735.             return [1, np, 1];
  736.     }
  737.    
  738.     return [0, np];
  739. }
  740.  
  741. function bgf_1(c, np)
  742. {
  743.     if (LFSET[c].v < -112.5 || LFSET[c].v > 157.5)
  744.     {
  745.         var __reg3 = gfcl(c, np, TFC.k_4a, TFC.k_4ga);
  746.         if (__reg3[0])
  747.             glob_v_pass = __reg3[1];
  748.     }
  749.    
  750.     if (LFSET[c].v > 22.5 && LFSET[c].v < 112.5)
  751.     {
  752.         var __reg8 = gfcl(c, np, TFC.k_4b, TFC.k_4gb);
  753.         if (__reg8[0])
  754.             glob_v_pass = __reg8[1];
  755.     }
  756.    
  757.     if (Math.abs(LFSET[c].v) == 135 || Math.abs(LFSET[c].v) == 45)
  758.         LFSET[c].v = LFSET[c].v + 0.1;
  759.        
  760.     var __reg5;
  761.     var __reg6;
  762.  
  763.     if (LFSET[c].v < -45 || LFSET[c].v > 135)
  764.     {
  765.         var __reg4 = thmj(LFSET[c].a, LFSET[c].b, np[0], np[1], TFC.k_4a_pt1[0], TFC.k_4a_pt1[1], TFC.k_4a_pt2[0], TFC.k_4a_pt2[1]);
  766.         if (__reg4[0] == 1)
  767.         {
  768.             __reg6 = 135;
  769.             __reg5 = thma_r(__reg4[1] - 0.1) * LFSET[c].s;
  770.             if (__reg5 <= 0)
  771.             {
  772.                 np[0] = LFSET[c].a;
  773.                 np[1] = LFSET[c].b;
  774.             }
  775.             else
  776.                 np = thmp(LFSET[c].a, LFSET[c].b, LFSET[c].v, __reg5);
  777.  
  778.             delete glob_v_pass;
  779.             LFSET[c].v = thmn((LFSET[c].v - __reg6) * -1 + __reg6);
  780.            
  781.             return [1, np];
  782.         }
  783.     }
  784.    
  785.     if (LFSET[c].v > -45 && LFSET[c].v < 135)
  786.     {
  787.         var __reg7 = thmj(LFSET[c].a, LFSET[c].b, np[0], np[1], TFC.k_4b_pt1[0], TFC.k_4b_pt1[1], TFC.k_4b_pt2[0], TFC.k_4b_pt2[1]);
  788.         if (__reg7[0] == 1)
  789.         {
  790.             __reg6 = 135;
  791.             __reg5 = thma_r(__reg7[1] - 0.1) * LFSET[c].s;
  792.             if (__reg5 <= 0)
  793.             {
  794.                 np[0] = LFSET[c].a;
  795.                 np[1] = LFSET[c].b;
  796.             }
  797.             else
  798.                 np = thmp(LFSET[c].a, LFSET[c].b, LFSET[c].v, __reg5);
  799.  
  800.             delete glob_v_pass;
  801.             LFSET[c].v = thmn((LFSET[c].v - __reg6) * -1 + __reg6);
  802.            
  803.             return [1, np];
  804.         }
  805.     }
  806.    
  807.     var __reg10 = thmj(LFSET[c].a, LFSET[c].b, np[0], np[1], TFC.k_4a_pt2[0], TFC.k_4a_pt2[1], TFC.k_4a_pt3[0], TFC.k_4a_pt3[1]);
  808.     if (__reg10[0] == 1)
  809.         return [0, np, 0, "l"];
  810.  
  811.     var __reg9 = thmj(LFSET[c].a, LFSET[c].b, np[0], np[1], TFC.k_4b_pt2[0], TFC.k_4b_pt2[1], TFC.k_4b_pt3[0], TFC.k_4b_pt3[1]);
  812.     if (__reg9[0] == 1)
  813.         return [0, np, 0, "b"];
  814.  
  815.     if (np[0] < TFC.k_4b[0])
  816.     {
  817.         if (np[1] > TFC.k_4a[1])
  818.             return [1, np, 1];
  819.     }
  820.    
  821.     return [0, np];
  822. }
  823.  
  824. function bgf_2(c, np)
  825. {
  826.     if (LFSET[c].v < 173 && LFSET[c].v > 83)
  827.     {
  828.         var __reg3 = gfcl(c, np, TFC.k_5a, TFC.k_5ga);
  829.         if (__reg3[0])
  830.             glob_v_pass = __reg3[1];
  831.     }
  832.    
  833.     if (LFSET[c].v > 7 && LFSET[c].v < 97)
  834.     {
  835.         var __reg8 = gfcl(c, np, TFC.k_5b, TFC.k_5gb);
  836.         if (__reg8[0])
  837.             glob_v_pass = __reg8[1];
  838.     }
  839.    
  840.     if (Math.abs(LFSET[c].v) == 104 || Math.abs(LFSET[c].v) == 76)
  841.         LFSET[c].v = LFSET[c].v + 0.1;
  842.        
  843.     var __reg5;
  844.     var __reg6;
  845.  
  846.     if (LFSET[c].v < -104 || LFSET[c].v > 76)
  847.     {
  848.         var __reg4 = thmj(LFSET[c].a, LFSET[c].b, np[0], np[1], TFC.k_5a_pt1[0], TFC.k_5a_pt1[1], TFC.k_5a_pt2[0], TFC.k_5a_pt2[1]);
  849.         if (__reg4[0] == 1)
  850.         {
  851.             __reg6 = 76;
  852.             __reg5 = thma_r(__reg4[1] - 0.1) * LFSET[c].s;
  853.             if (__reg5 <= 0)
  854.             {
  855.                 np[0] = LFSET[c].a;
  856.                 np[1] = LFSET[c].b;
  857.             }
  858.             else
  859.                 np = thmp(LFSET[c].a, LFSET[c].b, LFSET[c].v, __reg5);
  860.  
  861.             delete glob_v_pass;
  862.             LFSET[c].v = thmn((LFSET[c].v - __reg6) * -1 + __reg6);
  863.            
  864.             return [1, np];
  865.         }
  866.     }
  867.    
  868.     if (LFSET[c].v > -76 && LFSET[c].v < 104)
  869.     {
  870.         var __reg7 = thmj(LFSET[c].a, LFSET[c].b, np[0], np[1], TFC.k_5b_pt1[0], TFC.k_5b_pt1[1], TFC.k_5b_pt2[0], TFC.k_5b_pt2[1]);
  871.         if (__reg7[0] == 1)
  872.         {
  873.             __reg6 = 104;
  874.             __reg5 = thma_r(__reg7[1] - 0.1) * LFSET[c].s;
  875.             if (__reg5 <= 0)
  876.             {
  877.                 np[0] = LFSET[c].a;
  878.                 np[1] = LFSET[c].b;
  879.             }
  880.             else
  881.                 np = thmp(LFSET[c].a, LFSET[c].b, LFSET[c].v, __reg5);
  882.  
  883.             delete glob_v_pass;
  884.             LFSET[c].v = thmn((LFSET[c].v - __reg6) * -1 + __reg6);
  885.            
  886.             return [1, np];
  887.         }
  888.     }
  889.    
  890.     var __reg10 = thmj(LFSET[c].a, LFSET[c].b, np[0], np[1], TFC.k_5a_pt2[0], TFC.k_5a_pt2[1], TFC.k_5a_pt3[0], TFC.k_5a_pt3[1]);
  891.     if (__reg10[0] == 1)
  892.         return [0, np, 0, "b"];
  893.  
  894.     var __reg9 = thmj(LFSET[c].a, LFSET[c].b, np[0], np[1], TFC.k_5b_pt2[0], TFC.k_5b_pt2[1], TFC.k_5b_pt3[0], TFC.k_5b_pt3[1]);
  895.     if (__reg9[0] == 1)
  896.         return [0, np, 0, "b"];
  897.  
  898.     if (np[0] > TFC.k_5a[0] && np[0] < TFC.k_5b[0])
  899.         return [1, np, 1];
  900.  
  901.     return [0, np];
  902. }
  903.  
  904. function bgf_3(c, np)
  905. {
  906.     if (LFSET[c].v < 157.5 && LFSET[c].v > 67.5)
  907.     {
  908.         var __reg3 = gfcl(c, np, TFC.k_6a, TFC.k_6ga);
  909.         if (__reg3[0])
  910.             glob_v_pass = __reg3[1];
  911.     }
  912.    
  913.     if (LFSET[c].v > -67.5 && LFSET[c].v < 22.5)
  914.     {
  915.         var __reg8 = gfcl(c, np, TFC.k_6b, TFC.k_6gb);
  916.         if (__reg8[0])
  917.             glob_v_pass = __reg8[1];
  918.     }
  919.    
  920.     if (Math.abs(LFSET[c].v) == 135 || Math.abs(LFSET[c].v) == 45)
  921.         LFSET[c].v = LFSET[c].v + 0.1;
  922.        
  923.     var __reg5;
  924.     var __reg6;
  925.  
  926.     if (LFSET[c].v < -135 || LFSET[c].v > 45)
  927.     {
  928.         var __reg4 = thmj(LFSET[c].a, LFSET[c].b, np[0], np[1], TFC.k_6a_pt1[0], TFC.k_6a_pt1[1], TFC.k_6a_pt2[0], TFC.k_6a_pt2[1]);
  929.         if (__reg4[0] == 1)
  930.         {
  931.             __reg6 = 45;
  932.             __reg5 = thma_r(__reg4[1] - 0.1) * LFSET[c].s;
  933.             if (__reg5 <= 0)
  934.             {
  935.                 np[0] = LFSET[c].a;
  936.                 np[1] = LFSET[c].b;
  937.             }
  938.             else
  939.                 np = thmp(LFSET[c].a, LFSET[c].b, LFSET[c].v, __reg5);
  940.  
  941.             delete glob_v_pass;
  942.             LFSET[c].v = thmn((LFSET[c].v - __reg6) * -1 + __reg6);
  943.            
  944.             return [1, np];
  945.         }
  946.     }
  947.    
  948.     if (LFSET[c].v > -135 && LFSET[c].v < 45)
  949.     {
  950.         var __reg7 = thmj(LFSET[c].a, LFSET[c].b, np[0], np[1], TFC.k_6b_pt1[0], TFC.k_6b_pt1[1], TFC.k_6b_pt2[0], TFC.k_6b_pt2[1]);
  951.         if (__reg7[0] == 1)
  952.         {
  953.             __reg6 = 45;
  954.             __reg5 = thma_r(__reg7[1] - 0.1) * LFSET[c].s;
  955.             if (__reg5 <= 0)
  956.             {
  957.                 np[0] = LFSET[c].a;
  958.                 np[1] = LFSET[c].b;
  959.             }
  960.             else
  961.                 np = thmp(LFSET[c].a, LFSET[c].b, LFSET[c].v, __reg5);
  962.  
  963.             delete glob_v_pass;
  964.             LFSET[c].v = thmn((LFSET[c].v - __reg6) * -1 + __reg6);
  965.            
  966.             return [1, np];
  967.         }
  968.     }
  969.    
  970.     var __reg10 = thmj(LFSET[c].a, LFSET[c].b, np[0], np[1], TFC.k_6a_pt2[0], TFC.k_6a_pt2[1], TFC.k_6a_pt3[0], TFC.k_6a_pt3[1]);
  971.     if (__reg10[0] == 1)
  972.         return [0, np, 0, "b"];
  973.  
  974.     var __reg9 = thmj(LFSET[c].a, LFSET[c].b, np[0], np[1], TFC.k_6b_pt2[0], TFC.k_6b_pt2[1], TFC.k_6b_pt3[0], TFC.k_6b_pt3[1]);
  975.     if (__reg9[0] == 1)
  976.         return [0, np, 0, "r"];
  977.  
  978.     if (np[0] > TFC.k_6a[0])
  979.     {
  980.         if (np[1] > TFC.k_6b[1])
  981.             return [1, np, 1];
  982.     }
  983.    
  984.     return [0, np];
  985. }
  986.  
  987. function thfw(c, blbr)
  988. {
  989.     if (LFSET[c].r_hs > 0)
  990.     {
  991.         if (blbr)
  992.         {
  993.             var s2 = Math.round(LFSET[c].s / 2); // metade do módulo da bola
  994.             if (s2 < 0)
  995.                 s2 = 0;
  996.  
  997.             thfr(c, LFSET[c].r_hv, LFSET[c].r_hs); // adiciona o vetor posição da bola (em coordenadas polares) com o vetor (r_hv, r_hs) dado em coordenadas polares
  998.             LFSET[c].s = LFSET[c].s - s2;
  999.            
  1000.             if (LFSET[c].s < 2)
  1001.                 LFSET[c].s = 2;
  1002.         }
  1003.         else
  1004.         {
  1005.             thfr(c, LFSET[c].r_hv, LFSET[c].r_hs);
  1006.             LFSET[c].s = Math.round(LFSET[c].s * 0.7);
  1007.         }
  1008.  
  1009.         LFSET[c].r_hs = 0;
  1010.     }
  1011. }
  1012.  
  1013. function thpc(c)
  1014. {
  1015.     if (!LFSET[c].e)
  1016.     {
  1017.         if (LFSET[c].c._visible)
  1018.         {
  1019.             var __reg23 = LFSET[c].c._alpha;
  1020.             __reg23 = __reg23 - 25;
  1021.             if (__reg23 <= 0)
  1022.             {
  1023.                 LFSET[c].h._visible = 0;
  1024.                 LFSET[c].c._visible = 0;
  1025.                 LFSET[c].c._alpha = 100;
  1026.             }
  1027.             else
  1028.                 LFSET[c].c._alpha = __reg23;
  1029.         }
  1030.        
  1031.         return 1;
  1032.     }
  1033.    
  1034.     delete glob_v_pass;
  1035.    
  1036.     if (LFSET[c].r_hs > 0)
  1037.         LFSET[c].r_hs = LFSET[c].r_hs - TFC.pi_e_p;
  1038.  
  1039.     if (LFSET[c].ri_v > 0)
  1040.     {
  1041.         LFSET[c].ri_v = LFSET[c].ri_v - 10;
  1042.         if (LFSET[c].ri_v < 0)
  1043.             LFSET[c].ri_v = 0;
  1044.     }
  1045.     else if (LFSET[c].ri_v < 0)
  1046.     {
  1047.         LFSET[c].ri_v = LFSET[c].ri_v + 10;
  1048.         if (LFSET[c].ri_v > 0)
  1049.             LFSET[c].ri_v = 0;
  1050.     }
  1051.    
  1052.     if (LFSET[c].ri_h > 0)
  1053.     {
  1054.         LFSET[c].ri_h = LFSET[c].ri_h - 5;
  1055.         if (LFSET[c].ri_h < 0)
  1056.             LFSET[c].ri_h = 0;
  1057.     }
  1058.     else if (LFSET[c].ri_h < 0)
  1059.     {
  1060.         LFSET[c].ri_h = LFSET[c].ri_h + 5;
  1061.         if (LFSET[c].ri_h > 0)
  1062.             LFSET[c].ri_h = 0;
  1063.     }
  1064.    
  1065.     if (LFSET[c].r_ms > 0)
  1066.     {
  1067.         LFSET[c].r_ms = LFSET[c].r_ms - TFC.pi_e_m;
  1068.         thfr(c, LFSET[c].r_mv, LFSET[c].r_ms);
  1069.     }
  1070.    
  1071.     LFSET[c].v = thmn(LFSET[c].v);
  1072.     LFSET[c].s = Math.round(LFSET[c].s - TFC.ei);
  1073.     if (LFSET[c].s < 1)
  1074.     {
  1075.         LFSET[c].s = 0;
  1076.         var __reg24 = 1;
  1077.         if (Math.abs(LFSET[c].ri_v) > 0)
  1078.         {
  1079.             whs(LFSET[c].c, LFSET[c].ri_v);
  1080.             __reg24 = 0;
  1081.         }
  1082.        
  1083.         if (Math.abs(LFSET[c].ri_h) > 0)
  1084.         {
  1085.             LFSET[c].c.wheel._rotation = thmn(LFSET[c].c.wheel._rotation + LFSET[c].ri_h / 20);
  1086.             __reg24 = 0;
  1087.         }
  1088.        
  1089.         return __reg24;
  1090.     }
  1091.     else if (LFSET[c].s > TFC.vc)
  1092.         LFSET[c].s = TFC.vc;
  1093.  
  1094.     var ods = TFC.od + LFSET[c].s; // diâmetro da bola + módulo do vetor velocidade
  1095.     var vec = thmp(LFSET[c].a, LFSET[c].b, LFSET[c].v, LFSET[c].s); // adiciona a posição atual da bola ao seu vetor velocidade
  1096.    
  1097.     ltBKD = []; // collision data
  1098.     ltBKD.u = -1; // collision ball index
  1099.     ltBKD.n = 9999999; // collision ball velocity modulus
  1100.     ltBKD.al = 0; // collision ball velocity angle
  1101.    
  1102.     // faz a checagem de colisão com todas as demais bolas
  1103.     var idx = 0;
  1104.     while (idx < TFC.bnm)
  1105.     {
  1106.         if (idx != c) // verifica se a bola a ser verificada não é a mesma que esta sendo usada como teste de prova
  1107.         {
  1108.             if (LFSET[idx].e) // verifica se a bola a ser verificada está na mesa
  1109.             {
  1110.                 var d = thmd(LFSET[c].a, LFSET[c].b, LFSET[idx].a, LFSET[idx].b); // calcula a distância entre a bola de prova e a bola que está sendo testada
  1111.                 if (d <= ods)
  1112.                 {
  1113.                     var tetha = thmg(LFSET[c].a, LFSET[c].b, LFSET[idx].a, LFSET[idx].b); // calcula a o ângulo entre a bola de prova e a bola que está sendo verificada
  1114.                     var d2 = thmd(vec[0], vec[1], LFSET[idx].a, LFSET[idx].b);
  1115.                     var dt = Math.abs(thmn(LFSET[c].v - tetha));
  1116.                     var dy = Math.abs(Math.round(d * thma_i(Math.sin(thma_r(TFC.te * dt)))));
  1117.                     var tetha2 = thmg(vec[0], vec[1], LFSET[idx].a, LFSET[idx].b);
  1118.                     var dt2 = Math.abs(thmn(LFSET[c].v - tetha2));
  1119.                     if ((d2 < TFC.od || dt2 > 90) && dy < TFC.od && dt < 90)
  1120.                     {
  1121.                         var dy2 = dy * dy;
  1122.                         var dx_1 = Math.round(Math.sqrt(Math.abs(d * d - dy2)));
  1123.                         var dx_2 = Math.round(Math.sqrt(Math.abs(TFC.ow - dy2)));
  1124.                         var dxx = dx_1 - dx_2;
  1125.                         if (dxx <= 0)
  1126.                         {
  1127.                             LFSET[idx].s = Math.round(LFSET[c].s / 2);
  1128.                             ltBKD.u = idx;
  1129.                             ltBKD.n = 0;
  1130.                             ltBKD.al = tetha;
  1131.                             break;
  1132.                         }
  1133.                        
  1134.                         if (dxx < ltBKD.n)
  1135.                         {
  1136.                             ltBKD.u = idx;
  1137.                             ltBKD.n = dxx;
  1138.                             ltBKD.al = tetha;
  1139.                         }
  1140.                     }
  1141.                 }
  1142.             }
  1143.         }
  1144.        
  1145.         ++idx;
  1146.     }
  1147.    
  1148.     if (ltBKD.u >= 0) // se ouve colisão
  1149.     {
  1150.         var u = ltBKD.u;
  1151.         if (SH_RTGC.t == c) // se a bola de teste for a cue ball
  1152.         {
  1153.             if (typeof SH_RTGC.ct != "object")
  1154.                 SH_RTGC.ct = [];
  1155.  
  1156.             SH_RTGC.ct.push(u); // adiciona a bola colidida a lista de bolas colididas pela cue ball
  1157.         }
  1158.         else if (SH_RTGC.t == u) // caso contrário, se a bola colidida for a cue ball
  1159.         {
  1160.             if (typeof SH_RTGC.ct != "object")
  1161.                 SH_RTGC.ct = [];
  1162.  
  1163.             SH_RTGC.ct.push(c); // adiciona a bola de teste a lista de bolas colididas pela cue ball
  1164.         }
  1165.        
  1166.         sound_kick(LFSET[c].c, LFSET[c].s);
  1167.         if (ltBKD.n > 0)
  1168.             vec = thmp(LFSET[c].a, LFSET[c].b, LFSET[c].v, ltBKD.n);
  1169.         else
  1170.             vec = [LFSET[c].a, LFSET[c].b];
  1171.  
  1172.         var cval = thmn(LFSET[c].v - ltBKD.al);
  1173.         var angle;
  1174.        
  1175.         // calcula o ângulo em relação ao ângulo inicial que a bola de teste terá após a colisão, este ângulo devera ser 90 ou -90 graus dependendo de qual direção a bola de teste veio
  1176.         if (cval < 0)
  1177.             angle = -90;
  1178.         else
  1179.             angle = 90;
  1180.  
  1181.         var cvalangle = thmn(cval - angle);
  1182.         var uval = thmn(LFSET[u].v - ltBKD.al);
  1183.         uval = thmn(uval - angle);
  1184.         var cs = LFSET[c].s;
  1185.         var us = LFSET[u].s;
  1186.         var dcsy = Math.round(thma_i(Math.sin(thma_r(TFC.te * cvalangle))) * cs);
  1187.         var cusy = Math.round(thma_i(Math.sin(thma_r(TFC.te * uval))) * us);
  1188.         var dcsx = Math.round(Math.sqrt(Math.abs(cs * cs - dcsy * dcsy)));
  1189.         var dusx = Math.round(Math.sqrt(Math.abs(us * us - cusy * cusy)));
  1190.         if (Math.abs(cvalangle) < 90)
  1191.             dcsx = 0 - dcsx;
  1192.  
  1193.         if (Math.abs(uval) < 90)
  1194.             dusx = 0 - dusx;
  1195.  
  1196.         var dcusy = Math.round((dcsy + cusy - (dcsy - cusy)) * 0.5);
  1197.         var ducsy = Math.round((dcsy + cusy - (cusy - dcsy)) * 0.5);
  1198.         var dcusx = Math.round(Math.sqrt(Math.abs(dcsx * dcsx + dcusy * dcusy)));
  1199.         var ducsx = Math.round(Math.sqrt(Math.abs(dusx * dusx + ducsy * ducsy)));
  1200.         var dcusv = thmn(thmg(0, 0, dcusy, dcsx) + 90);
  1201.         var ducsa = thmn(thmg(0, 0, ducsy, dusx) + 90);
  1202.         var dcusval = thmn(dcusv + ltBKD.al);
  1203.         dcusval = thmn(dcusval + angle);
  1204.         var ducsaal = thmn(ducsa + ltBKD.al);
  1205.         ducsaal = thmn(ducsaal + angle);
  1206.         LFSET[u].v = ducsaal;
  1207.         LFSET[u].s = ducsx;
  1208.         LFSET[c].v = dcusval;
  1209.         LFSET[c].s = dcusx;
  1210.         thfw(c, 1);
  1211.         thfw(u, 1);
  1212.     }
  1213.    
  1214.     var __reg14 = [];
  1215.     var __reg15 = 0;
  1216.     var __reg17 = 0;
  1217.     if (TFC.upk)
  1218.     {
  1219.         if (vec[1] < TFC.b_ct)
  1220.         {
  1221.             if (vec[0] < TFC.pch_1)
  1222.             {
  1223.                 __reg14 = tgf_1(c, vec);
  1224.                 vec = __reg14[1];
  1225.                 __reg17 = __reg14[0];
  1226.                 __reg15 = 1;
  1227.             }
  1228.             else if (vec[0] < TFC.pch_2)
  1229.             {
  1230.                 __reg14 = tgf_2(c, vec);
  1231.                 vec = __reg14[1];
  1232.                 __reg17 = __reg14[0];
  1233.                 __reg15 = 2;
  1234.             }
  1235.             else
  1236.             {
  1237.                 __reg14 = tgf_3(c, vec);
  1238.                 vec = __reg14[1];
  1239.                 __reg17 = __reg14[0];
  1240.                 __reg15 = 3;
  1241.             }
  1242.         }
  1243.         else if (vec[0] < TFC.pch_1)
  1244.         {
  1245.             __reg14 = bgf_1(c, vec);
  1246.             vec = __reg14[1];
  1247.             __reg17 = __reg14[0];
  1248.             __reg15 = 4;
  1249.         }
  1250.         else if (vec[0] < TFC.pch_2)
  1251.         {
  1252.             __reg14 = bgf_2(c, vec);
  1253.             vec = __reg14[1];
  1254.             __reg17 = __reg14[0];
  1255.             __reg15 = 5;
  1256.         }
  1257.         else
  1258.         {
  1259.             __reg14 = bgf_3(c, vec);
  1260.             vec = __reg14[1];
  1261.             __reg17 = __reg14[0];
  1262.             __reg15 = 6;
  1263.         }
  1264.     }
  1265.    
  1266.     var __reg32;
  1267.     var __reg38;
  1268.     var __reg39;
  1269.     var __reg44;
  1270.    
  1271.     if (__reg17 == 1)
  1272.     {
  1273.         if (__reg14[2] !== 1)
  1274.         {
  1275.             thfw(c, 0);
  1276.             sound_bordkick(LFSET[c].c, LFSET[c].s);
  1277.             bordhit(c, vec);
  1278.         }
  1279.     }
  1280.     else
  1281.     {
  1282.         if (vec[0] < TFC.a_n && Math.abs(LFSET[c].v) > 90 && (__reg14[3] == undefined || __reg14[3] == "l"))
  1283.         {
  1284.             sound_bordkick(LFSET[c].c, LFSET[c].s);
  1285.             bordhit(c, vec);
  1286.             __reg44 = 180 - Math.abs(LFSET[c].v);
  1287.             __reg32 = TFC.a_n - vec[0];
  1288.             __reg38 = Math.round(__reg32 * thma_i(Math.tan(thma_r(TFC.te * __reg44))));
  1289.             __reg39 = Math.round(Math.sqrt(Math.abs(__reg32 * __reg32 + __reg38 * __reg38)));
  1290.             if (__reg39 > LFSET[c].s)
  1291.             {
  1292.                 vec = [LFSET[c].a, LFSET[c].b];
  1293.             }
  1294.             else
  1295.             {
  1296.                 vec = thmp(LFSET[c].a, LFSET[c].b, LFSET[c].v, LFSET[c].s - __reg39);
  1297.             }
  1298.            
  1299.             if (glob_v_pass == undefined)
  1300.             {
  1301.                 LFSET[c].v = thmn(180 - LFSET[c].v);
  1302.                 LFSET[c].s = LFSET[c].s - TFC.bi;
  1303.             }
  1304.             else
  1305.             {
  1306.                 LFSET[c].v = glob_v_pass;
  1307.                 delete (glob_v_pass);
  1308.             }
  1309.            
  1310.             thfw(c, 0);
  1311.         }
  1312.        
  1313.         if (vec[0] > TFC.a_x && Math.abs(LFSET[c].v) < 90 && (__reg14[3] == undefined || __reg14[3] == "r"))
  1314.         {
  1315.             sound_bordkick(LFSET[c].c, LFSET[c].s);
  1316.             bordhit(c, vec);
  1317.             __reg44 = Math.abs(LFSET[c].v);
  1318.             __reg32 = vec[0] - TFC.a_x;
  1319.             __reg38 = Math.round(__reg32 * thma_i(Math.tan(thma_r(TFC.te * __reg44))));
  1320.             __reg39 = Math.round(Math.sqrt(Math.abs(__reg32 * __reg32 + __reg38 * __reg38)));
  1321.             if (__reg39 > LFSET[c].s)
  1322.                 vec = [LFSET[c].a, LFSET[c].b];
  1323.             else
  1324.                 vec = thmp(LFSET[c].a, LFSET[c].b, LFSET[c].v, LFSET[c].s - __reg39);
  1325.  
  1326.             if (glob_v_pass == undefined)
  1327.             {
  1328.                 LFSET[c].v = thmn(180 - LFSET[c].v);
  1329.                 LFSET[c].s = LFSET[c].s - TFC.bi;
  1330.             }
  1331.             else
  1332.             {
  1333.                 LFSET[c].v = glob_v_pass;
  1334.                 delete glob_v_pass;
  1335.             }
  1336.            
  1337.             thfw(c, 0);
  1338.         }
  1339.        
  1340.         if (vec[1] < TFC.b_n && LFSET[c].v < 0 && (__reg14[3] == undefined || __reg14[3] == "t"))
  1341.         {
  1342.             sound_bordkick(LFSET[c].c, LFSET[c].s);
  1343.             bordhit(c, vec);
  1344.             __reg44 = Math.abs(Math.abs(LFSET[c].v) - 90);
  1345.             __reg32 = TFC.b_n - vec[1];
  1346.             __reg38 = Math.round(__reg32 * thma_i(Math.tan(thma_r(TFC.te * __reg44))));
  1347.             __reg39 = Math.round(Math.sqrt(Math.abs(__reg32 * __reg32 + __reg38 * __reg38)));
  1348.             if (__reg39 > LFSET[c].s)
  1349.                 vec = [LFSET[c].a, LFSET[c].b];
  1350.             else
  1351.                 vec = thmp(LFSET[c].a, LFSET[c].b, LFSET[c].v, LFSET[c].s - __reg39);
  1352.  
  1353.             if (glob_v_pass == undefined)
  1354.             {
  1355.                 LFSET[c].v = 0 - LFSET[c].v;
  1356.                 LFSET[c].s = LFSET[c].s - TFC.bi;
  1357.             }
  1358.             else
  1359.             {
  1360.                 LFSET[c].v = glob_v_pass;
  1361.                 delete (glob_v_pass);
  1362.             }
  1363.            
  1364.             thfw(c, 0);
  1365.         }
  1366.        
  1367.         if (vec[1] > TFC.b_x && LFSET[c].v > 0 && (__reg14[3] == undefined || __reg14[3] == "b"))
  1368.         {
  1369.             sound_bordkick(LFSET[c].c, LFSET[c].s);
  1370.             bordhit(c, vec);
  1371.             __reg44 = Math.abs(Math.abs(LFSET[c].v) - 90);
  1372.             __reg32 = vec[1] - TFC.b_x;
  1373.             __reg38 = Math.round(__reg32 * thma_i(Math.tan(thma_r(TFC.te * __reg44))));
  1374.             __reg39 = Math.round(Math.sqrt(Math.abs(__reg32 * __reg32 + __reg38 * __reg38)));
  1375.             if (__reg39 > LFSET[c].s)
  1376.                 vec = [LFSET[c].a, LFSET[c].b];
  1377.             else
  1378.                 vec = thmp(LFSET[c].a, LFSET[c].b, LFSET[c].v, LFSET[c].s - __reg39);
  1379.  
  1380.             if (glob_v_pass == undefined)
  1381.             {
  1382.                 LFSET[c].v = 0 - LFSET[c].v;
  1383.                 LFSET[c].s = LFSET[c].s - TFC.bi;
  1384.             }
  1385.             else
  1386.             {
  1387.                 LFSET[c].v = glob_v_pass;
  1388.                 delete (glob_v_pass);
  1389.             }
  1390.            
  1391.             thfw(c, 0);
  1392.         }
  1393.     }
  1394.    
  1395.     if (glob_v_pass != undefined)
  1396.     {
  1397.         LFSET[c].v = glob_v_pass;
  1398.         delete (glob_v_pass);
  1399.     }
  1400.    
  1401.     if (__reg15 > 0)
  1402.     {
  1403.         if (iphk(c, vec, __reg15)) // testa se a bola foi encaçapada
  1404.         {
  1405.             sound_pocket(LFSET[c].c, LFSET[c].s);
  1406.             ipgt(c, __reg15);
  1407.             LFSET[c].e = 0;
  1408.             LFSET[c].s = 0;
  1409.             LFSET[c].v = 0;
  1410.             LFSET[c].r_mv = 0;
  1411.             LFSET[c].r_ms = 0;
  1412.             LFSET[c].r_hv = 0;
  1413.             LFSET[c].r_hs = 0;
  1414.             LFSET[c].ri_h = 0;
  1415.             LFSET[c].ri_v = 0;
  1416.             return 1;
  1417.         }
  1418.     }
  1419.    
  1420.     if (Math.abs(LFSET[c].ri_v) > LFSET[c].s / 1)
  1421.         whs(LFSET[c].c, LFSET[c].ri_v);
  1422.     else
  1423.     {
  1424.         whs(LFSET[c].c, LFSET[c].s);
  1425.         if (LFSET[c].rv != LFSET[c].v)
  1426.             LFSET[c].c.wheel._rotation = thmn(LFSET[c].v - 180);
  1427.  
  1428.         LFSET[c].rv = LFSET[c].v;
  1429.     }
  1430.    
  1431.     if (Math.abs(LFSET[c].ri_h) > 0)
  1432.     {
  1433.         LFSET[c].c.wheel._rotation = thmn(LFSET[c].c.wheel._rotation + LFSET[c].ri_h / 20);
  1434.     }
  1435.    
  1436.     LFSET[c].a = vec[0];
  1437.     LFSET[c].b = vec[1];
  1438.     thps(c);
  1439.    
  1440.     return 0;
  1441. }
  1442.  
  1443. function thps(c)
  1444. {
  1445.     LFSET[c].h._x = LFSET[c].c._x = LFSET[c].a / 100;
  1446.     LFSET[c].h._y = LFSET[c].c._y = LFSET[c].b / 100;
  1447. }
  1448.  
  1449. function abcht()
  1450. {
  1451.     LFSET = [];
  1452.     var __reg4 = 0;
  1453.     bst.removeMovieClip();
  1454.     ztable.removeMovieClip();
  1455.     this.createEmptyMovieClip("bst", 50);
  1456.     bst.attachMovie("deny_logo", "deny_logo", 799);
  1457.     bst.attachMovie("htgy", "htgy", 9);
  1458.     bst.createEmptyMovieClip("guide_sc", 2);
  1459.     bst.createEmptyMovieClip("guide_mask", 3);
  1460.     bst.createEmptyMovieClip("cue_mask", 4);
  1461.     this.attachMovie("ztable_" + TFC.apr, "ztable", 40);
  1462.     bst._x = bst._y = ztable._x = ztable._y = 0;
  1463.     bst._xscale = bst._yscale = ztable._xscale = ztable._yscale = 100;
  1464.     ztable.guide_switch._visible = GUIDE_ON;
  1465.     ztable.tbarea.onRelease =
  1466.         function ()
  1467.         {
  1468.         };
  1469.     ztable.tbarea.useHandCursor = false;
  1470.     bst.onEnterFrame =
  1471.         function ()
  1472.         {
  1473.             thrt();
  1474.         };
  1475.     bst.guide_mask.beginFill(0, 0);
  1476.     bst.guide_mask.moveTo(TFC.x_offs / 100, TFC.y_offs / 100);
  1477.     bst.guide_mask.lineTo(TFC.x_offs / 100 + TFC.fd_w / 100, TFC.y_offs / 100);
  1478.     bst.guide_mask.lineTo(TFC.x_offs / 100 + TFC.fd_w / 100, TFC.y_offs / 100 + TFC.fd_h / 100);
  1479.     bst.guide_mask.lineTo(TFC.x_offs / 100, TFC.y_offs / 100 + TFC.fd_h / 100);
  1480.     bst.guide_mask.lineTo(TFC.x_offs / 100, TFC.y_offs / 100);
  1481.     bst.guide_mask.endFill();
  1482.     bst.guide_sc.setMask(bst.guide_mask);
  1483.     bst.cue_mask.beginFill(0, 0);
  1484.     bst.cue_mask.moveTo(0, 0);
  1485.     bst.cue_mask.lineTo(800, 0);
  1486.     bst.cue_mask.lineTo(800, 430);
  1487.     bst.cue_mask.lineTo(0, 430);
  1488.     bst.cue_mask.lineTo(0, 0);
  1489.     bst.cue_mask.endFill();
  1490.     bst.deny_logo._visible = 0;
  1491.     bst.htgy._visible = 0;
  1492.     var __reg2 = 0;
  1493.     var __reg5;
  1494.     while (__reg2 < TFC.bnm)
  1495.     {
  1496.         if (TFC.apr == "sn" && __reg2 > 6)
  1497.             __reg4 = "r";
  1498.         else
  1499.             __reg4 = __reg2;
  1500.  
  1501.         var __reg3 = bst.attachMovie("ballshw_" + TFC.apr, "sh" + __reg2, 50 + __reg2);
  1502.         __reg5 = bst.attachMovie(TFC.apr + "_" + __reg4, "b" + __reg2, 100 + __reg2);
  1503.         __reg5.mi = __reg2;
  1504.         __reg5._x = __reg3._x = -500;
  1505.         __reg5._y = __reg3._y = -500;
  1506.         LFSET[__reg2] = [];
  1507.         LFSET[__reg2].h = __reg3;
  1508.         LFSET[__reg2].c = __reg5;
  1509.         LFSET[__reg2].e = 1;
  1510.         LFSET[__reg2].s = 0;
  1511.         LFSET[__reg2].v = 0;
  1512.         LFSET[__reg2].r_mv = 0;
  1513.         LFSET[__reg2].r_ms = 0;
  1514.         LFSET[__reg2].r_hv = 0;
  1515.         LFSET[__reg2].r_hs = 0;
  1516.         LFSET[__reg2].ri_h = 0;
  1517.         LFSET[__reg2].ri_v = 0;
  1518.         LFSET[__reg2].a = 0;
  1519.         LFSET[__reg2].b = 0;
  1520.         whs(__reg5, (random(18) + 1) * 100);
  1521.         ++__reg2;
  1522.     }
  1523.    
  1524.     if (!SPECT_U && STP_EX)
  1525.     {
  1526.         UITW_S = getTimer() + IUEWT_S * 1000;
  1527.         __reg5 = bst.attachMovie("quit_bt", "quit_bt", 3021);
  1528.         __reg5.onEnterFrame = function ()
  1529.         {
  1530.             this._parent._parent.iuewt(this);
  1531.         }
  1532.         ;
  1533.     }
  1534.    
  1535.     STP_EX = 1;
  1536. }
  1537.  
  1538. function atchs(t, a)
  1539. {
  1540.     var __reg1 = bst.attachMovie("cue", "cue", 899);
  1541.     __reg1.attachMovie("cuesrc_" + t, "ins", 10);
  1542.     __reg1.setMask(bst.cue_mask);
  1543.     __reg1.acdt = a;
  1544.     return __reg1;
  1545. }
  1546.  
  1547. function thrt()
  1548. {
  1549.     var __reg5 = 1;
  1550.     var __reg1 = 0;
  1551.    
  1552.     while (__reg1 < TFC.bnm)
  1553.     {
  1554.         var __reg2 = TFC.sqb[__reg1];
  1555.         if (!thpc(__reg2))
  1556.             __reg5 = 0;
  1557.  
  1558.         ++__reg1;
  1559.     }
  1560.    
  1561.     if (__reg5)
  1562.         sy_ydsp();
  1563.  
  1564.     if (HP_ACTIVE > 0)
  1565.     {
  1566.         var __reg3 = Math.round(bst._xmouse * 100);
  1567.         var __reg4 = Math.round(bst._ymouse * 100);
  1568.         var __reg8 = TFC.a_n + 200;
  1569.         var __reg6 = TFC.a_x - 200;
  1570.         if (__reg3 < __reg8)
  1571.             __reg3 = __reg8;
  1572.         else if (__reg3 > __reg6)
  1573.             __reg3 = __reg6;
  1574.  
  1575.         __reg8 = TFC.b_n + 200;
  1576.         __reg6 = TFC.b_x - 200;
  1577.         if (__reg4 < __reg8)
  1578.             __reg4 = __reg8;
  1579.         else if (__reg4 > __reg6)
  1580.             __reg4 = __reg6;
  1581.  
  1582.         if (HP_ACTIVE > 1)
  1583.         {
  1584.             if (__reg3 < 58500)
  1585.                 __reg3 = 58500;
  1586.         }
  1587.        
  1588.         if (HP_ACTIVE == 3)
  1589.         {
  1590.             if (thmd(58500, TFC.b_ct, __reg3, __reg4) > 6200)
  1591.             {
  1592.                 var __reg9 = thmg(58500, TFC.b_ct, __reg3, __reg4);
  1593.                 var __reg7 = thmp(58500, TFC.b_ct, __reg9, 6200);
  1594.                 __reg3 = __reg7[0];
  1595.                 __reg4 = __reg7[1];
  1596.             }
  1597.         }
  1598.        
  1599.         bst.deny_logo._x = LFSET[STCH.t].h._x = LFSET[STCH.t].c._x = __reg3 / 100;
  1600.         bst.deny_logo._y = LFSET[STCH.t].h._y = LFSET[STCH.t].c._y = __reg4 / 100;
  1601.         if (sh_chhp(STCH.t, __reg3, __reg4))
  1602.         {
  1603.             bst.deny_logo._visible = 0;
  1604.             return;
  1605.         }
  1606.        
  1607.         bst.deny_logo._visible = 1;
  1608.     }
  1609. }
  1610.  
  1611. function iuewt(obj)
  1612. {
  1613.     if (getTimer() > UITW_S && UITW_S > 0)
  1614.     {
  1615.         UITW_S = 0;
  1616.         obj.removeMovieClip();
  1617.     }
  1618. }
  1619.  
  1620. function opwtc()
  1621. {
  1622.     obj = bst.cue;
  1623.     if (obj.ra > 0)
  1624.     {
  1625.         --obj.ra;
  1626.         obj.cr = obj.cr + obj.rs;
  1627.         obj._rotation = obj.cr;
  1628.         return;
  1629.     }
  1630.    
  1631.     if (obj.cr != obj.rt)
  1632.     {
  1633.         obj.cr = obj.rt;
  1634.         obj._rotation = obj.cr;
  1635.     }
  1636. }
  1637.  
  1638. function opcue(k)
  1639. {
  1640.     obj = bst.cue;
  1641.     obj.ins._x = obj.ins._x + 5;
  1642.     if (obj.ins._x >= TPSH.s / (TFC.vc / 100))
  1643.     {
  1644.         delete obj.onEnterFrame;
  1645.         obj.ins._x = -5;
  1646.         obj.play();
  1647.         var __reg1 = TPSH.t;
  1648.         delete (TPSH.t);
  1649.         for (var __reg2 in TPSH)
  1650.             LFSET[__reg1][__reg2] = TPSH[__reg2];
  1651.  
  1652.         sound_keykick(sound_vc, TPSH.s);
  1653.         TPSH = [];
  1654.         sh_hsrgs(__reg1, k);
  1655.     }
  1656. }
  1657.  
  1658. function rtcue()
  1659. {
  1660.     if (bst.tgpos == undefined)
  1661.     {
  1662.         obj = bst.cue;
  1663.         var __reg5 = thmg(obj._x, obj._y, bst._xmouse, bst._ymouse);
  1664.         var __reg10 = thmn(__reg5 + 180);
  1665.         obj._rotation = __reg10;
  1666.         if (STCH.press == 1)
  1667.         {
  1668.             var __reg7 = 100;
  1669.             obj.ins._x = obj.ins._x + STCH.cuer;
  1670.             if (obj.ins._x > __reg7)
  1671.             {
  1672.                 obj.ins._x = __reg7;
  1673.                 STCH.cuer = 0 - STCH.cuer;
  1674.             }
  1675.             else if (obj.ins._x < 0)
  1676.             {
  1677.                 obj.ins._x = 0;
  1678.                 STCH.cuer = 0 - STCH.cuer;
  1679.             }
  1680.         }
  1681.        
  1682.         bst.guide_sc.clear();
  1683.         if (GUIDE_ON && ztable.guide_switch.ST_ON)
  1684.         {
  1685.             // draw guide
  1686.             bst.guide_sc.lineStyle(1.5, 3394560, 100);
  1687.            
  1688.             var x = Math.round(bst._xmouse * 100);
  1689.             var y = Math.round(bst._ymouse * 100);
  1690.            
  1691.             var c = STCH.t;
  1692.            
  1693.             var ltBKD = [];
  1694.             ltBKD.u = -1;
  1695.             ltBKD.d = 9999999;
  1696.             ltBKD.px = 0;
  1697.             ltBKD.py = 0;
  1698.            
  1699.             if (EXTENDED_GUIDE_ON)
  1700.             {
  1701.                 var a = LFSET[c].a;
  1702.                 var b = LFSET[c].b;
  1703.                 var d1 = thmd(a, b, x, y);
  1704.                 var dx = (x - a) / d1;
  1705.                 var dy = (y - b) / d1;
  1706.                
  1707.                 for (var idx = 0; idx < TFC.bnm; idx++)
  1708.                 {
  1709.                     if (idx == c || !LFSET[idx].e)
  1710.                         continue;
  1711.                        
  1712.                     var a1 = LFSET[idx].a;
  1713.                     var b1 = LFSET[idx].b;
  1714.  
  1715.                     var d = dist_vec_to_line(a1, b1, a, b, x, y);
  1716.                     var d2 = thmd(a, b, a1, b1);
  1717.  
  1718.                     var d4 = Math.sqrt(d2 * d2 - d * d) - Math.sqrt(TFC.ow - d * d);
  1719.                    
  1720.                     if (d >= TFC.od)
  1721.                         continue;
  1722.                    
  1723.                     var d3 = thmd(x, y, a1, b1);
  1724.                    
  1725.                     var d1_2 = d1 * d1;
  1726.                     var d2_2 = d2 * d2;
  1727.                     var d3_2 = d3 * d3;
  1728.                    
  1729.                     if (d1_2 + d2_2 < d3_2 || d1_2 + d3_2 < d2_2)
  1730.                         continue;
  1731.                        
  1732.                     if (d2 < ltBKD.d)
  1733.                     {
  1734.                         ltBKD.u = idx;
  1735.                         ltBKD.d = d2;
  1736.                         ltBKD.px = a + dx * d4;
  1737.                         ltBKD.py = b + dy * d4;
  1738.                     }
  1739.                 }
  1740.             }
  1741.            
  1742.             if (ltBKD.u >= 0)
  1743.             {
  1744.                 var d5 = thmd(ltBKD.px, ltBKD.py, LFSET[ltBKD.u].a, LFSET[ltBKD.u].b);
  1745.                 var dx2 = (LFSET[ltBKD.u].a - ltBKD.px) / d5;
  1746.                 var dy2 = (LFSET[ltBKD.u].b - ltBKD.py) / d5;
  1747.            
  1748.                 bst.guide_sc.moveTo(obj._x, obj._y);
  1749.                 bst.guide_sc.lineTo(ltBKD.px / 100, ltBKD.py / 100);
  1750.                
  1751.                 bst.guide_sc.moveTo(LFSET[ltBKD.u].a / 100, LFSET[ltBKD.u].b / 100)
  1752.                 bst.guide_sc.lineTo((LFSET[ltBKD.u].a + dx2 * 100000) / 100, (LFSET[ltBKD.u].b + dy2 * 100000) / 100);
  1753.                
  1754.                 var p2x = ltBKD.px - dy2 * 100000;
  1755.                 var p2y = ltBKD.py + dx2 * 100000;
  1756.                 var p3x = ltBKD.px + dy2 * 100000;
  1757.                 var p3y = ltBKD.py - dx2 * 100000;
  1758.                
  1759.                 var dp2 = thmd(a, b, p2x, p2y);
  1760.                 var dp3 = thmd(a, b, p3x, p3y);
  1761.                
  1762.                 var px;
  1763.                 var py;
  1764.                 if (dp2 >= dp3)
  1765.                 {
  1766.                     px = p2x;
  1767.                     py = p2y;
  1768.                 }
  1769.                 else
  1770.                 {
  1771.                     px = p3x;
  1772.                     py = p3y;
  1773.                 }
  1774.                
  1775.                 bst.guide_sc.moveTo(ltBKD.px / 100, ltBKD.py / 100);
  1776.                 bst.guide_sc.lineTo(px / 100, py / 100);
  1777.             }
  1778.             else
  1779.             {
  1780.                 bst.guide_sc.moveTo(obj._x, obj._y);
  1781.                
  1782.                 var an = TFC.a_n / 100;
  1783.                 var ax = TFC.a_x / 100;
  1784.                 var bn = TFC.b_n / 100;
  1785.                 var bx = TFC.b_x / 100;
  1786.                
  1787.                 r_w = ax - an;
  1788.                 r_h = bx - bn;
  1789.                
  1790.                 var ctop = thmj(obj._x, obj._y, bst._xmouse, bst._ymouse, an, bn, ax, bn); // testa colisão com o canto superior
  1791.                 var cright = thmj(obj._x, obj._y, bst._xmouse, bst._ymouse, an, bx, ax, bx); // testa colisão com o canto direito
  1792.                 var cleft = thmj(obj._x, obj._y, bst._xmouse, bst._ymouse, an, bn, an, bx); // testa colisão com o canto esquerdo
  1793.                 var cbottom = thmj(obj._x, obj._y, bst._xmouse, bst._ymouse, ax, bn, ax, bx); // testa colisão com o canto inferior
  1794.                
  1795.                 var __reg6;
  1796.                 var __reg9;
  1797.                
  1798.                 if (ctop[0] == 1 && obj._y > bn)
  1799.                 {
  1800.                     __reg6 = [an + r_w * ctop[2], bn];
  1801.                     bst.guide_sc.lineTo(__reg6[0], __reg6[1]);
  1802.                     __reg9 = thmp(__reg6[0], __reg6[1], 0 - __reg5, 3000);
  1803.                     bst.guide_sc.lineTo(__reg9[0], __reg9[1]);
  1804.                 }
  1805.                 else if (cright[0] == 1 && obj._y < bx)
  1806.                 {
  1807.                     __reg6 = [an + r_w * cright[2], bx];
  1808.                     bst.guide_sc.lineTo(__reg6[0], __reg6[1]);
  1809.                     __reg9 = thmp(__reg6[0], __reg6[1], 0 - __reg5, 3000);
  1810.                     bst.guide_sc.lineTo(__reg9[0], __reg9[1]);
  1811.                 }
  1812.                 else if (cleft[0] == 1 && obj._x > an)
  1813.                 {
  1814.                     __reg6 = [an, bn + r_h * cleft[2]];
  1815.                     bst.guide_sc.lineTo(__reg6[0], __reg6[1]);
  1816.                     __reg9 = thmp(__reg6[0], __reg6[1], thmn(180 - __reg5), 3000);
  1817.                     bst.guide_sc.lineTo(__reg9[0], __reg9[1]);
  1818.                 }
  1819.                 else if (cbottom[0] == 1 && obj._x < ax)
  1820.                 {
  1821.                     __reg6 = [ax, bn + r_h * cbottom[2]];
  1822.                     bst.guide_sc.lineTo(__reg6[0], __reg6[1]);
  1823.                     __reg9 = thmp(__reg6[0], __reg6[1], thmn(180 - __reg5), 3000);
  1824.                     bst.guide_sc.lineTo(__reg9[0], __reg9[1]);
  1825.                 }
  1826.                 else
  1827.                     bst.guide_sc.lineTo(bst._xmouse, bst._ymouse);
  1828.             }
  1829.         }
  1830.        
  1831.         ++obj.cntout;
  1832.         if (obj.cntout > 30)
  1833.         {
  1834.             obj.cntout = 0;
  1835.             STCH.t = Math.round(STCH.t);
  1836.             LFSET[STCH.t].a = Math.round(LFSET[STCH.t].a);
  1837.             LFSET[STCH.t].b = Math.round(LFSET[STCH.t].b);
  1838.             sy_ocsp(STCH.t, __reg10, [LFSET[STCH.t].a, LFSET[STCH.t].b]);
  1839.         }
  1840.     }
  1841. }
  1842.  
  1843. function shc_a()
  1844. {
  1845.     if (ztable.tbarea.hitTest(_root._xmouse, _root._ymouse))
  1846.     {
  1847.         if (_root.alertwindow != undefined)
  1848.         {
  1849.             if (_root.alertwindow.hitTest(_root._xmouse, _root._ymouse))
  1850.                 return undefined;
  1851.         }
  1852.        
  1853.         if (bst.cue == undefined || bst.tgpos != undefined || thmd(LFSET[STCH.t].c._x, LFSET[STCH.t].c._y, bst._xmouse, bst._ymouse) < TFC["or"] / 100 + 5)
  1854.             return undefined;
  1855.  
  1856.         var __reg2 = 0;
  1857.         while (__reg2 < TFC.bnm)
  1858.         {
  1859.             if (LFSET[__reg2].e)
  1860.                 delete (LFSET[__reg2].c.onRelease);
  1861.  
  1862.             ++__reg2;
  1863.         }
  1864.        
  1865.         STCH.press = 1;
  1866.     }
  1867. }
  1868. function shc_b()
  1869. {
  1870.     if (bst.cue != undefined)
  1871.     {
  1872.         if (STCH.press == 1)
  1873.         {
  1874.             obj = bst.cue;
  1875.             delete (obj.onEnterFrame);
  1876.             delete (obj.onMouseDown);
  1877.             delete (obj.onMouseUp);
  1878.             sh_sh();
  1879.             STCH = [];
  1880.             obj.ins._x = -5;
  1881.             obj.play();
  1882.         }
  1883.     }
  1884. }
  1885.  
  1886. function htgbs_a()
  1887. {
  1888.     var __reg1 = 0;
  1889.     for (;;)
  1890.     {
  1891.         if (__reg1 >= TFC.bnm)
  1892.             return;
  1893.  
  1894.         if (LFSET[__reg1].e && __reg1 != t)
  1895.         {
  1896.             var __reg2 = bst.attachMovie("htgy", "htb_" + __reg1, 10 + __reg1);
  1897.             __reg2._x = LFSET[__reg1].c._x;
  1898.             __reg2._y = LFSET[__reg1].c._y;
  1899.         }
  1900.        
  1901.         ++__reg1;
  1902.     }
  1903. }
  1904.  
  1905. function htgbs_b()
  1906. {
  1907.     var i = 0;
  1908.     for (;;)
  1909.     {
  1910.         if (i >= TFC.bnm)
  1911.             return;
  1912.  
  1913.         var h = eval("bst.htb_" + i);
  1914.         if (typeof h == "movieclip")
  1915.             h.removeMovieClip();
  1916.  
  1917.         ++i;
  1918.     }
  1919. }
  1920.  
  1921. function sh_chhp(t, a, b)
  1922. {
  1923.     var __reg1 = 0;
  1924.     while (__reg1 < TFC.bnm)
  1925.     {
  1926.         if (LFSET[__reg1].e && __reg1 != t)
  1927.         {
  1928.             if (thmd(a, b, LFSET[__reg1].a, LFSET[__reg1].b) - 200 < TFC.od)
  1929.                 return 0;
  1930.         }
  1931.        
  1932.         ++__reg1;
  1933.     }
  1934.    
  1935.     return 1;
  1936. }
  1937.  
  1938. function sh_sbc(obj)
  1939. {
  1940.     if (ztable.tbarea.hitTest(_root._xmouse, _root._ymouse))
  1941.     {
  1942.         if (LFSET[obj.mi].e)
  1943.         {
  1944.             var __reg2 = 0;
  1945.             while (__reg2 < TFC.bnm)
  1946.             {
  1947.                 if (LFSET[__reg2].e)
  1948.                     delete (LFSET[__reg2].c.onRelease);
  1949.  
  1950.                 ++__reg2;
  1951.             }
  1952.            
  1953.             htgbs_b();
  1954.             STCH.t = obj.mi;
  1955.             sh_ist(STCH.hp);
  1956.         }
  1957.     }
  1958. }
  1959.  
  1960. function sh_stbhp()
  1961. {
  1962.     if (ztable.tbarea.hitTest(_root._xmouse, _root._ymouse))
  1963.     {
  1964.         var __reg3 = Math.round(LFSET[STCH.t].c._x * 100);
  1965.         var __reg2 = Math.round(LFSET[STCH.t].c._y * 100);
  1966.         var __reg5 = TFC.a_n + 200;
  1967.         var __reg4 = TFC.a_x - 200;
  1968.         if (__reg3 < __reg5)
  1969.             __reg3 = __reg5;
  1970.         else if (__reg3 > __reg4)
  1971.             __reg3 = __reg4;
  1972.  
  1973.         __reg5 = TFC.b_n + 200;
  1974.         __reg4 = TFC.b_x - 200;
  1975.         if (__reg2 < __reg5)
  1976.             __reg2 = __reg5;
  1977.         else if (__reg2 > __reg4)
  1978.             __reg2 = __reg4;
  1979.  
  1980.         if (sh_chhp(STCH.t, __reg3, __reg2))
  1981.         {
  1982.             bst.deny_logo._visible = 0;
  1983.             HP_ACTIVE = 0;
  1984.             ztable.tbarea.useHandCursor = false;
  1985.             delete (LFSET[STCH.t].c.onMouseUp);
  1986.             LFSET[STCH.t].c.swapDepths(STCH.t + 100);
  1987.             LFSET[STCH.t].a = __reg3;
  1988.             LFSET[STCH.t].b = __reg2;
  1989.             sh_ist(0);
  1990.         }
  1991.     }
  1992. }
  1993.  
  1994. function sh_ist(hp)
  1995. {
  1996.     LCOUTLS = 999;
  1997.     hp = hp * 1;
  1998.     if (hp > 0)
  1999.     {
  2000.         ztable.tbarea.useHandCursor = true;
  2001.         LFSET[STCH.t].c.swapDepths(699);
  2002.         LFSET[STCH.t].c.onMouseUp =
  2003.             function ()
  2004.             {
  2005.                 sh_stbhp();
  2006.             };
  2007.         HP_ACTIVE = hp;
  2008.         return undefined;
  2009.     }
  2010.    
  2011.     HP_ACTIVE = 0;
  2012.     if (typeof LFSET[STCH.t] == "object")
  2013.     {
  2014.         if (!HDNL_DIS && !SPECT_U && SPIN_ON)
  2015.         {
  2016.             HDNL_DIS = 1;
  2017.             var __reg4 = bst.attachMovie("aim_tx", "aim_tx", 3260);
  2018.             __reg4._x = LFSET[STCH.t].c._x;
  2019.             __reg4._y = LFSET[STCH.t].c._y;
  2020.         }
  2021.        
  2022.         var __reg2 = atchs(CUE_CURR_PFX, "u");
  2023.         __reg2._x = LFSET[STCH.t].c._x;
  2024.         __reg2._y = LFSET[STCH.t].c._y;
  2025.         __reg2._rotation = thmn(thmg(__reg2._x, __reg2._y, bst._xmouse, bst._ymouse) + 180);
  2026.         __reg2.cntout = 999;
  2027.         __reg2.onEnterFrame =
  2028.             function ()
  2029.             {
  2030.                 rtcue();
  2031.             };
  2032.         __reg2.onMouseDown =
  2033.             function ()
  2034.             {
  2035.                 shc_a();
  2036.             };
  2037.         __reg2.onMouseUp =
  2038.             function ()
  2039.             {
  2040.                 shc_b();
  2041.             };
  2042.         __reg2.filters = SHW_FT;
  2043.         if (SPIN_ON)
  2044.         {
  2045.             LFSET[STCH.t].c.onRelease =
  2046.                 function ()
  2047.                 {
  2048.                     opgh(this.mi);
  2049.                 };
  2050.         }
  2051.     }
  2052. }
  2053.  
  2054. function opgh(c)
  2055. {
  2056.     if (!ztable.tbarea.hitTest(_root._xmouse, _root._ymouse) || !SPIN_ON)
  2057.         return undefined;
  2058.  
  2059.     if (typeof LFSET[c].c != "movieclip" || !LFSET[c].e || bst.tgpos != undefined)
  2060.         return undefined;
  2061.  
  2062.     bst.guide_sc.clear();
  2063.     var __reg2 = 70;
  2064.     var __reg5 = bst.attachMovie("tgpos", "tgpos", 4990);
  2065.     var __reg4 = LFSET[c].c._x;
  2066.     var __reg3 = LFSET[c].c._y;
  2067.     if (__reg4 < __reg2 + TFC.x_offs / 100)
  2068.         __reg4 = __reg2 + TFC.x_offs / 100;
  2069.     else if (__reg4 > (TFC.x_offs + TFC.fd_w) / 100 - __reg2)
  2070.         __reg4 = (TFC.x_offs + TFC.fd_w) / 100 - __reg2;
  2071.    
  2072.     if (__reg3 < __reg2 + TFC.y_offs / 100)
  2073.         __reg3 = __reg2 + TFC.y_offs / 100;
  2074.     else if (__reg3 > (TFC.y_offs + TFC.fd_h) / 100 - __reg2)
  2075.         __reg3 = (TFC.y_offs + TFC.fd_h) / 100 - __reg2;
  2076.  
  2077.     __reg5._x = __reg4;
  2078.     __reg5._y = __reg3;
  2079.     __reg5.filters = SHW_FT;
  2080. }
  2081.  
  2082. function sh_hsrgs(t, p)
  2083. {
  2084.     SH_RTGC = [];
  2085.     SH_RTGC.t = t;
  2086.     SH_RTGC.p = p;
  2087. }
  2088.  
  2089. function sh_stlp(a, b)
  2090. {
  2091.     STCH.tgp = [a, b];
  2092. }
  2093.  
  2094. function sh_stla(a)
  2095. {
  2096.     STCH.tga = a;
  2097. }
  2098.  
  2099. function sh_sh()
  2100. {
  2101.     PROC_RD = 1;
  2102.     ztable.tbarea.useHandCursor = false;
  2103.     bst.deny_logo._visible = 0;
  2104.     bst.htgy._visible = 0;
  2105.     bst.guide_sc.clear();
  2106.     var __reg1 = STCH.t;
  2107.     var __reg5 = bst.cue.ins._x * TFC.spf / 100;
  2108.     LFSET[__reg1].e = 0;
  2109.     LFSET[__reg1].v = thmn(bst.cue._rotation + 180);
  2110.     LFSET[__reg1].s = Math.round(TFC.vc * __reg5 + 1);
  2111.     sound_keykick(sound_vc, LFSET[__reg1].s);
  2112.     STCH.tga = Math.round(Math.abs(STCH.tga));
  2113.     LFSET[__reg1].r_mv = 0;
  2114.     LFSET[__reg1].r_ms = 0;
  2115.     if (STCH.tga > 0)
  2116.     {
  2117.         if (STCH.tgp[0] > 0)
  2118.         {
  2119.             LFSET[__reg1].r_mv = thmn(LFSET[__reg1].v - 90);
  2120.             LFSET[__reg1].r_ms = Math.round(Math.abs(STCH.tgp[0] * 3 * (STCH.tga * 2 / 100)));
  2121.         }
  2122.         else if (STCH.tgp[0] < 0)
  2123.         {
  2124.             LFSET[__reg1].r_mv = thmn(LFSET[__reg1].v + 90);
  2125.             LFSET[__reg1].r_ms = Math.round(Math.abs(STCH.tgp[0] * 3 * (STCH.tga * 2 / 100)));
  2126.         }
  2127.     }
  2128.    
  2129.     var __reg8 = thmn(thmg(0, 0, STCH.tgp[0], STCH.tgp[1]) + 90);
  2130.     var __reg7 = thmd(0, 0, STCH.tgp[0], STCH.tgp[1]);
  2131.     LFSET[__reg1].r_hv = thmn(LFSET[__reg1].v + __reg8);
  2132.     LFSET[__reg1].r_hs = Math.round(Math.abs(__reg7 * 3 * __reg5)) * 14;
  2133.     LFSET[__reg1].ri_h = Math.round(STCH.tgp[0] * -30 * __reg5);
  2134.     LFSET[__reg1].ri_v = Math.round(STCH.tgp[1] * -30 * __reg5);
  2135.     j.wheel._rotation = thmn(LFSET[__reg1].v - 180);
  2136.     LFSET[__reg1].e = 1;
  2137.     LFSET[__reg1].h._visible = 1;
  2138.     LFSET[__reg1].c._visible = 1;
  2139.     LFSET[__reg1].c._alpha = 100;
  2140.     var __reg3 = [];
  2141.     __reg3.push(Math.round(LFSET[__reg1].v * 100).toString(16));
  2142.     __reg3.push(Math.round(LFSET[__reg1].s).toString(16));
  2143.     __reg3.push(Math.round(LFSET[__reg1].r_mv * 100).toString(16));
  2144.     __reg3.push(Math.round(LFSET[__reg1].r_ms).toString(16));
  2145.     __reg3.push(Math.round(LFSET[__reg1].r_hv * 100).toString(16));
  2146.     __reg3.push(Math.round(LFSET[__reg1].r_hs).toString(16));
  2147.     __reg3.push(Math.round(LFSET[__reg1].ri_h).toString(16));
  2148.     __reg3.push(Math.round(LFSET[__reg1].ri_v).toString(16));
  2149.     var __reg6 = __reg3.join("{");
  2150.     var __reg2 = sy_pfgt(__reg6, 0);
  2151.     for (var __reg4 in __reg2)
  2152.         LFSET[__reg1][__reg4] = __reg2[__reg4];
  2153.  
  2154.     sy_osh(__reg6);
  2155.     sh_hsrgs(__reg1, 1);
  2156. }
  2157.  
  2158. function sy_htgy(c)
  2159. {
  2160.     bst.htgy._x = LFSET[c].a / 100;
  2161.     bst.htgy._y = LFSET[c].b / 100;
  2162.     bst.htgy._visible = 1;
  2163. }
  2164.  
  2165. function sy_gbs()
  2166. {
  2167.     var __reg3 = 0;
  2168.     var __reg4 = [];
  2169.     var __reg1 = 0;
  2170.    
  2171.     while (__reg1 < TFC.bnm)
  2172.     {
  2173.         if (LFSET[__reg1].e)
  2174.         {
  2175.             var __reg2 = [];
  2176.             __reg2.push(Math.round(__reg1 + TFC.sqc[__reg3]).toString(16));
  2177.             __reg2.push(Math.round(LFSET[__reg1].a + TFC.sqc[__reg3 + 1] * 1000).toString(16));
  2178.             __reg2.push(Math.round(LFSET[__reg1].b + TFC.sqc[__reg3 + 2] * 1000).toString(16));
  2179.             __reg4[__reg3] = __reg2.join("}");
  2180.             LFSET[__reg1].a = Math.round(parseInt(__reg2[1], 16) - TFC.sqc[__reg3 + 1] * 1000);
  2181.             LFSET[__reg1].b = Math.round(parseInt(__reg2[2], 16) - TFC.sqc[__reg3 + 2] * 1000);
  2182.             ++__reg3;
  2183.         }
  2184.        
  2185.         ++__reg1;
  2186.     }
  2187.    
  2188.     return __reg4.join("{");
  2189. }
  2190.  
  2191. function sy_sbs(t) // reposiciona as bolas em suas posições iniciais na mesa ou de acordo com uma posição desejada
  2192. {
  2193.     ztable.tbarea.useHandCursor = false;
  2194.     bst.guide_sc.clear();
  2195.    
  2196.     var __reg3 = [];
  2197.     var __reg6;
  2198.    
  2199.     if (t == "snooker")
  2200.     {
  2201.         __reg13 = [1, 2, 3, 4, 5];
  2202.         __reg20 = 24000;
  2203.         __reg16 = TFC.b_ct;
  2204.         __reg11 = TFC.od + 90;
  2205.         __reg15 = 1500;
  2206.         __reg21 = 61500;
  2207.         __reg22 = TFC.b_ct;
  2208.         __reg17 = __reg13.length;
  2209.         __reg4 = 7;
  2210.         __reg12 = __reg20;
  2211.         __reg23 = 0;
  2212.         __reg6 = 0;
  2213.         while (__reg6 < __reg17)
  2214.         {
  2215.             __reg9 = __reg13[__reg6];
  2216.             __reg8 = __reg16 - __reg9 * __reg11 / 2 + TFC["or"];
  2217.             __reg5 = 1;
  2218.             while (__reg5 <= __reg9)
  2219.             {
  2220.                 LFSET[__reg4].a = __reg12 + (TFC.sqc[__reg4] - 7) * 10;
  2221.                 LFSET[__reg4].b = __reg8 + (TFC.sqc[31 - __reg4] - 7) * 10;
  2222.                 __reg8 = __reg8 + __reg11;
  2223.                 thps(__reg4);
  2224.                 ++__reg4;
  2225.                 ++__reg5;
  2226.             }
  2227.            
  2228.             __reg12 = __reg12 - __reg15;
  2229.             ++__reg6;
  2230.         }
  2231.        
  2232.         LFSET[0].a = __reg21;
  2233.         LFSET[0].b = __reg22;
  2234.         thps(0);
  2235.         LFSET[1].a = TFC.x_offs + 55500;
  2236.         LFSET[1].b = TFC.b_ct - 6000;
  2237.         thps(1);
  2238.         LFSET[2].a = TFC.x_offs + 55500;
  2239.         LFSET[2].b = TFC.b_ct + 6000;
  2240.         thps(2);
  2241.         LFSET[3].a = TFC.x_offs + 55500;
  2242.         LFSET[3].b = __reg22;
  2243.         thps(3);
  2244.         LFSET[4].a = TFC.a_ct;
  2245.         LFSET[4].b = TFC.b_ct;
  2246.         thps(4);
  2247.         LFSET[5].a = LFSET[7].a + TFC.od + 200;
  2248.         LFSET[5].b = __reg22;
  2249.         thps(5);
  2250.         LFSET[6].a = TFC.x_offs + 8000;
  2251.         LFSET[6].b = __reg22;
  2252.         thps(6);
  2253.        
  2254.         return undefined;
  2255.     }
  2256.     else if (t == "carom")
  2257.     {
  2258.         LFSET[1].a = 21500;
  2259.         LFSET[1].b = TFC.b_ct - 5000;
  2260.         thps(1);
  2261.         LFSET[2].a = 21500;
  2262.         LFSET[2].b = TFC.b_ct;
  2263.         thps(2);
  2264.         LFSET[0].a = 58500;
  2265.         LFSET[0].b = TFC.b_ct;
  2266.         thps(0);
  2267.         return undefined;
  2268.     }
  2269.     else if (t == "pyramid" || t == "svoi")
  2270.     {
  2271.         __reg3 = [];
  2272.         __reg6 = 1;
  2273.         while (__reg6 < TFC.bnm)
  2274.         {
  2275.             if (TFC.sqc[__reg6] > 8)
  2276.                 __reg3.push(__reg6);
  2277.             else
  2278.                 __reg3.unshift(__reg6);
  2279.            
  2280.             ++__reg6;
  2281.         }
  2282.        
  2283.         __reg13 = [1, 2, 3, 4, 5];
  2284.         __reg20 = 24000;
  2285.         __reg16 = TFC.b_ct;
  2286.         __reg11 = TFC.od + 100;
  2287.         __reg15 = 1780;
  2288.         __reg21 = 58500;
  2289.         __reg22 = TFC.b_ct;
  2290.         __reg17 = __reg13.length;
  2291.         __reg4 = 0;
  2292.         __reg12 = __reg20;
  2293.         __reg23 = 0;
  2294.         __reg6 = 0;
  2295.         while (__reg6 < __reg17)
  2296.         {
  2297.             __reg9 = __reg13[__reg6];
  2298.             __reg8 = __reg16 - __reg9 * __reg11 / 2 + TFC["or"];
  2299.             __reg5 = 1;
  2300.             while (__reg5 <= __reg9)
  2301.             {
  2302.                 LFSET[__reg3[__reg4]].a = __reg12 + (TFC.sqc[__reg4] - 7) * 10;
  2303.                 LFSET[__reg3[__reg4]].b = __reg8 + (TFC.sqc[31 - __reg4] - 7) * 10;
  2304.                 __reg8 = __reg8 + __reg11;
  2305.                 thps(__reg3[__reg4]);
  2306.                 ++__reg4;
  2307.                 ++__reg5;
  2308.             }
  2309.            
  2310.             __reg12 = __reg12 - __reg15;
  2311.             ++__reg6;
  2312.         }
  2313.         LFSET[0].a = __reg21;
  2314.         LFSET[0].b = __reg22;
  2315.         thps(0);
  2316.         return undefined;
  2317.     }
  2318.     else if (t == "9ball")
  2319.     {
  2320.         var __reg19 = TFC.od + 130;
  2321.         var __reg18 = TFC["or"] + 70;
  2322.         var __reg7 = [];
  2323.         __reg7[0] = [];
  2324.         __reg7[9] = [22500, TFC.b_ct];
  2325.         __reg7[1] = [__reg7[9][0] + 3300, TFC.b_ct];
  2326.         __reg7[8] = [__reg7[9][0] - 3300, TFC.b_ct];
  2327.         __reg7[4] = [__reg7[9][0] - 1650, TFC.b_ct - __reg18];
  2328.         __reg7[6] = [__reg7[9][0] + 1650, TFC.b_ct - __reg18];
  2329.         __reg7[3] = [__reg7[9][0] - 1650, TFC.b_ct + __reg18];
  2330.         __reg7[5] = [__reg7[9][0] + 1650, TFC.b_ct + __reg18];
  2331.         __reg7[2] = [__reg7[9][0], TFC.b_ct - __reg19];
  2332.         __reg7[7] = [__reg7[9][0], TFC.b_ct + __reg19];
  2333.         __reg6 = 1;
  2334.         while (__reg6 < __reg7.length)
  2335.         {
  2336.             LFSET[__reg6].a = __reg7[__reg6][0] + (TFC.sqc[__reg6] - 7) * 10;
  2337.             LFSET[__reg6].b = __reg7[__reg6][1] + (TFC.sqc[31 - __reg6] - 7) * 10;
  2338.             thps(__reg6);
  2339.             ++__reg6;
  2340.         }
  2341.        
  2342.         __reg21 = 58500;
  2343.         __reg22 = TFC.b_ct;
  2344.         LFSET[0].a = __reg21;
  2345.         LFSET[0].b = __reg22;
  2346.         thps(0);
  2347.        
  2348.         return undefined;
  2349.     }
  2350.     else if (t == "gzpool")
  2351.     {
  2352.         __reg3 = [];
  2353.         __reg6 = 1;
  2354.         while (__reg6 < TFC.bnm)
  2355.         {
  2356.             if (TFC.sqc[__reg6] > 8)
  2357.                 __reg3.push(__reg6);
  2358.             else
  2359.                 __reg3.unshift(__reg6);
  2360.  
  2361.             ++__reg6;
  2362.         }
  2363.        
  2364.         __reg13 = [1, 2, 3, 4, 5];
  2365.         __reg20 = 24000;
  2366.         __reg16 = TFC.b_ct;
  2367.         __reg11 = TFC.od + 100;
  2368.         __reg15 = 1730;
  2369.         __reg21 = 58500;
  2370.         __reg22 = TFC.b_ct;
  2371.         __reg17 = __reg13.length;
  2372.         __reg4 = 0;
  2373.         __reg12 = __reg20;
  2374.         __reg23 = 0;
  2375.         __reg6 = 0;
  2376.         while (__reg6 < __reg17)
  2377.         {
  2378.             __reg9 = __reg13[__reg6];
  2379.             __reg8 = __reg16 - __reg9 * __reg11 / 2 + TFC["or"];
  2380.             __reg5 = 1;
  2381.             while (__reg5 <= __reg9)
  2382.             {
  2383.                 LFSET[__reg3[__reg4]].a = __reg12 + (TFC.sqc[__reg4] - 7) * 10;
  2384.                 LFSET[__reg3[__reg4]].b = __reg8 + (TFC.sqc[31 - __reg4] - 7) * 10;
  2385.                 __reg8 = __reg8 + __reg11;
  2386.                 thps(__reg3[__reg4]);
  2387.                 ++__reg4;
  2388.                 ++__reg5;
  2389.             }
  2390.            
  2391.             __reg12 = __reg12 - __reg15;
  2392.             ++__reg6;
  2393.         }
  2394.        
  2395.         LFSET[0].a = __reg21;
  2396.         LFSET[0].b = __reg22;
  2397.         thps(0);
  2398.        
  2399.         return undefined;
  2400.     }
  2401.     else if (t == "straight" || t == "8ball" || t == "brpool")
  2402.     {
  2403.         __reg3 = [];
  2404.         __reg6 = 1;
  2405.         while (__reg6 < TFC.bnm)
  2406.         {
  2407.             if (TFC.sqc[__reg6] > 8)
  2408.                 __reg3.push(__reg6);
  2409.             else
  2410.                 __reg3.unshift(__reg6);
  2411.  
  2412.             ++__reg6;
  2413.         }
  2414.        
  2415.         __reg6 = 1;
  2416.         while (__reg6 < TFC.bnm)
  2417.         {
  2418.             if (__reg3[__reg6] == 8)
  2419.             {
  2420.                 __reg3[__reg6] = __reg3[4];
  2421.                 __reg3[4] = 8;
  2422.                 break;
  2423.             }
  2424.            
  2425.             ++__reg6;
  2426.         }
  2427.        
  2428.         var __reg13 = [1, 2, 3, 4, 5];
  2429.         var __reg20 = 24000;
  2430.         var __reg16 = TFC.b_ct;
  2431.         var __reg11 = TFC.od + 100;
  2432.         var __reg15 = 1620;
  2433.         var __reg21 = 58500;
  2434.         var __reg22 = TFC.b_ct;
  2435.         var __reg17 = __reg13.length;
  2436.         var __reg4 = 0;
  2437.         var __reg12 = __reg20;
  2438.         var __reg23 = 0;
  2439.         __reg6 = 0;
  2440.         while (__reg6 < __reg17)
  2441.         {
  2442.             var __reg9 = __reg13[__reg6];
  2443.             var __reg8 = __reg16 - __reg9 * __reg11 / 2 + TFC["or"];
  2444.             var __reg5 = 1;
  2445.             while (__reg5 <= __reg9)
  2446.             {
  2447.                 LFSET[__reg3[__reg4]].a = __reg12 + (TFC.sqc[__reg4] - 7) * 10;
  2448.                 LFSET[__reg3[__reg4]].b = __reg8 + (TFC.sqc[31 - __reg4] - 7) * 10;
  2449.                 __reg8 = __reg8 + __reg11;
  2450.                 thps(__reg3[__reg4]);
  2451.                 ++__reg4;
  2452.                 ++__reg5;
  2453.             }
  2454.            
  2455.             __reg12 = __reg12 - __reg15;
  2456.             ++__reg6;
  2457.         }
  2458.        
  2459.         LFSET[0].a = __reg21;
  2460.         LFSET[0].b = __reg22;
  2461.         thps(0);
  2462.        
  2463.         return undefined;
  2464.     }
  2465.                        
  2466.     t = t.split("{", TFC.bnm);
  2467.     __reg6 = 0;
  2468.     for (;;)
  2469.     {
  2470.         if (__reg6 >= TFC.bnm)
  2471.             return;
  2472.  
  2473.         var __reg10 = _root.lim_split(t[__reg6], "}", 4);
  2474.         var __reg2 = Math.round(parseInt(__reg10[0], 16) - TFC.sqc[__reg6]);
  2475.         var v = Math.round(parseInt(__reg10[3], 16));
  2476.         if (typeof LFSET[__reg2] == "object")
  2477.         {
  2478.             LFSET[__reg2].s = 0;
  2479.             LFSET[__reg2].v = 0;
  2480.             LFSET[__reg2].r_mv = 0;
  2481.             LFSET[__reg2].r_ms = 0;
  2482.             LFSET[__reg2].r_hv = 0;
  2483.             LFSET[__reg2].r_hs = 0;
  2484.             LFSET[__reg2].ri_h = 0;
  2485.             LFSET[__reg2].ri_v = 0;
  2486.             LFSET[__reg2].a = Math.round(parseInt(__reg10[1], 16) - TFC.sqc[__reg6 + 1] * 1000);
  2487.             LFSET[__reg2].b = Math.round(parseInt(__reg10[2], 16) - TFC.sqc[__reg6 + 2] * 1000);
  2488.             if (v)
  2489.             {
  2490.                 LFSET[__reg2].e = 1;
  2491.                 LFSET[__reg2].h._visible = 1;
  2492.                 LFSET[__reg2].c._visible = 1;
  2493.                 LFSET[__reg2].c._alpha = 100;              
  2494.             }
  2495.             else
  2496.             {
  2497.                 LFSET[__reg2].e = 0;
  2498.                 LFSET[__reg2].h._visible = 0;
  2499.                 LFSET[__reg2].c._visible = 0;
  2500.                 LFSET[__reg2].c._alpha = 0;        
  2501.             }
  2502.            
  2503.             thps(__reg2);
  2504.         }
  2505.        
  2506.         ++__reg6;
  2507.     }
  2508. }
  2509.  
  2510. function sy_cpa(tgb, hp)
  2511. {
  2512.     PROC_RD = 1;
  2513.     OPCTVD = [];
  2514.     STD_CONFIRM_CUP = 0;
  2515.     STBL_SET = 0;
  2516.     HP_ACTIVE = 0;
  2517.     ztable.tbarea.useHandCursor = false;
  2518.     bst.deny_logo._visible = 0;
  2519.     STCH = [];
  2520.     STCH.press = 0;
  2521.     STCH.cuer = 4;
  2522.     STCH.tgp = [0, 0];
  2523.     STCH.tga = 0;
  2524.     STCH.hp = hp;
  2525.     if (tgb == "0")
  2526.     {
  2527.         STCH.t = 0;
  2528.         sh_ist(hp);
  2529.         return;
  2530.     }
  2531.    
  2532.     htgbs_a();
  2533.     var __reg2 = 0;
  2534.     for (;;)
  2535.     {
  2536.         if (__reg2 >= TFC.bnm)
  2537.             return;
  2538.  
  2539.         if (LFSET[__reg2].e)
  2540.         {
  2541.             LFSET[__reg2].c.onRelease =
  2542.                 function ()
  2543.                 {
  2544.                     this._parent._parent.sh_sbc(this);
  2545.                 };
  2546.         }
  2547.        
  2548.         ++__reg2;
  2549.     }
  2550. }
  2551.  
  2552. function sy_pfgt(r, fp)
  2553. {
  2554.     var __reg2 = [];
  2555.     var __reg3;
  2556.    
  2557.     if (fp)
  2558.     {
  2559.         __reg3 = _root.lim_split(r, "{", 9);
  2560.         __reg2.t = Math.round(parseInt(__reg3[0], 16));
  2561.     }
  2562.     else
  2563.     {
  2564.         __reg3 = _root.lim_split(r, "{", 8);
  2565.         __reg3.unshift(0);
  2566.     }
  2567.    
  2568.     __reg2.v = thmn(parseInt(__reg3[1], 16) / 100);
  2569.     if (isNaN(__reg2.v))
  2570.         __reg2.v = 0;
  2571.    
  2572.     __reg2.s = Math.round(parseInt(__reg3[2], 16));
  2573.     if (isNaN(__reg2.s))
  2574.         __reg2.s = 0;
  2575.  
  2576.     __reg2.r_mv = thmn(parseInt(__reg3[3], 16) / 100);
  2577.     if (isNaN(__reg2.r_mv))
  2578.         __reg2.r_mv = 0;
  2579.  
  2580.     __reg2.r_ms = Math.round(parseInt(__reg3[4], 16));
  2581.     if (isNaN(__reg2.r_ms))
  2582.         __reg2.r_ms = 0;
  2583.  
  2584.     if (__reg2.r_ms > 1500)
  2585.         __reg2.r_ms = 1500;
  2586.  
  2587.     __reg2.r_hv = thmn(parseInt(__reg3[5], 16) / 100);
  2588.     if (isNaN(__reg2.r_hv))
  2589.         __reg2.r_hv = 0;
  2590.  
  2591.     __reg2.r_hs = Math.round(parseInt(__reg3[6], 16));
  2592.     if (isNaN(__reg2.r_hs))
  2593.         __reg2.r_hs = 0;
  2594.  
  2595.     if (__reg2.r_hs > 1500)
  2596.         __reg2.r_hs = 1500;
  2597.  
  2598.     __reg2.ri_h = Math.round(parseInt(__reg3[7], 16));
  2599.     if (isNaN(__reg2.ri_h))
  2600.         __reg2.ri_h = 0;
  2601.  
  2602.     __reg2.ri_v = Math.round(parseInt(__reg3[8], 16));
  2603.     if (isNaN(__reg2.ri_v))
  2604.         __reg2.ri_v = 0;
  2605.  
  2606.     return __reg2;
  2607. }
  2608.  
  2609. function sy_psh(r)
  2610. {
  2611.     PROC_RD = 1;
  2612.     OPCTVD = [];
  2613.     STD_CONFIRM_CUP = 0;
  2614.     STBL_SET = 0;
  2615.     bst.deny_logo._visible = 0;
  2616.     bst.htgy._visible = 0;
  2617.     bst.guide_sc.clear();
  2618.     TPSH = sy_pfgt(r, 1);
  2619.     var __reg2 = TPSH.t;
  2620.     if (LFSET[__reg2].e)
  2621.     {
  2622.         var __reg1 = atchs(CUE_OPP_PFX, "p");
  2623.         __reg1._x = LFSET[__reg2].c._x;
  2624.         __reg1._y = LFSET[__reg2].c._y;
  2625.         __reg1._rotation = thmn(TPSH.v + 180);
  2626.         __reg1.onEnterFrame =
  2627.             function ()
  2628.             {
  2629.                 opcue(2);
  2630.             };
  2631.         __reg1.filters = SHW_FT;
  2632.     }
  2633. }
  2634.  
  2635. function sy_bshe(t, st)
  2636. {
  2637.     PROC_RD = 1;
  2638.     bst.deny_logo._visible = 0;
  2639.     bst.htgy._visible = 0;
  2640.     bst.guide_sc.clear();
  2641.     if (LFSET[t].e)
  2642.     {
  2643.         if (typeof st != "object")
  2644.             st = [];
  2645.  
  2646.         var __reg9;
  2647.         var __reg17;
  2648.         var __reg23 = [];
  2649.         var __reg25 = [];
  2650.         var __reg1 = 0;
  2651.         var __reg27;
  2652.         var __reg28 = [];
  2653.         var __reg30;
  2654.         var __reg33;
  2655.         var __reg34;
  2656.        
  2657.         while (__reg1 < st.length)
  2658.         {
  2659.             __reg25[st[__reg1]] = 1;
  2660.             ++__reg1;
  2661.         }
  2662.        
  2663.         if (!TFC.upk)
  2664.         {
  2665.             __reg17 = random(40000) + 1000;
  2666.             __reg9 = random(360) - 180;
  2667.             __reg1 = TFC.bnm;
  2668.             while (__reg1 >= 0)
  2669.             {
  2670.                 if (LFSET[__reg1].e && t != __reg1 && __reg25[__reg1])
  2671.                 {
  2672.                     __reg17 = thmd(LFSET[t].a, LFSET[t].b, LFSET[__reg1].a, LFSET[__reg1].b);
  2673.                     __reg9 = thmg(LFSET[t].a, LFSET[t].b, LFSET[__reg1].a, LFSET[__reg1].b);
  2674.                     break;
  2675.                 }
  2676.                
  2677.                 --__reg1;
  2678.             }
  2679.  
  2680.             if (__reg17 > 15000)
  2681.                 __reg34 = (16 + random(6)) * 100;
  2682.             else
  2683.                 __reg34 = (10 + random(11)) * 100;
  2684.            
  2685.             TPSH = [];
  2686.             TPSH.t = Math.round(t);
  2687.             TPSH.v = thmn(__reg9);
  2688.             TPSH.s = __reg34;
  2689.             TPSH.r_mv = 0;
  2690.             TPSH.r_ms = 0;
  2691.             TPSH.r_hv = 0;
  2692.             TPSH.r_hs = 0;
  2693.             TPSH.ri_h = 0;
  2694.             TPSH.ri_v = 0;
  2695.            
  2696.             __reg30 = atchs(CUE_OPP_PFX, "b");
  2697.             __reg30._x = LFSET[t].c._x;
  2698.             __reg30._y = LFSET[t].c._y;
  2699.             __reg30._rotation = thmn(TPSH.v + 180);
  2700.             __reg30.onEnterFrame =
  2701.                 function ()
  2702.                 {
  2703.                     opcue(3);
  2704.                 };
  2705.            
  2706.             __reg30.filters = SHW_FT;
  2707.             __reg28 = [];
  2708.             __reg28.push(Math.round(TPSH.v * 100).toString(16));
  2709.             __reg28.push(Math.round(TPSH.s).toString(16));
  2710.             __reg28.push(Math.round(TPSH.r_mv * 100).toString(16));
  2711.             __reg28.push(Math.round(TPSH.r_ms).toString(16));
  2712.             __reg28.push(Math.round(TPSH.r_hv * 100).toString(16));
  2713.             __reg28.push(Math.round(TPSH.r_hs).toString(16));
  2714.             __reg28.push(Math.round(TPSH.ri_h).toString(16));
  2715.             __reg28.push(Math.round(TPSH.ri_v).toString(16));
  2716.             __reg33 = __reg28.join("{");
  2717.             __reg27 = sy_pfgt(__reg33, 0);
  2718.             for (var __reg32 in __reg27)
  2719.                 TPSH[__reg32] = __reg27[__reg32];
  2720.            
  2721.             sy_osh(__reg33);
  2722.             return undefined;
  2723.         }
  2724.        
  2725.         var __reg16 = TFC.od - 10;
  2726.         var __reg35 = [];
  2727.         __reg1 = 0;
  2728.         while (__reg1 < TFC.bnm)
  2729.         {
  2730.             if (LFSET[__reg1].e && t != __reg1 && __reg25[__reg1])
  2731.             {
  2732.                 __reg17 = thmd(LFSET[t].a, LFSET[t].b, LFSET[__reg1].a, LFSET[__reg1].b);
  2733.                 __reg9 = thmg(LFSET[t].a, LFSET[t].b, LFSET[__reg1].a, LFSET[__reg1].b);
  2734.                 var __reg5 = 0;
  2735.                 while (__reg5 < 6)
  2736.                 {
  2737.                     var __reg4 = [];
  2738.                     var __reg19 = thmd(LFSET[__reg1].a, LFSET[__reg1].b, TFC["k_" + __reg5 + "bottg"][0], TFC["k_" + __reg5 + "bottg"][1]);
  2739.                     var __reg11 = thmg(LFSET[__reg1].a, LFSET[__reg1].b, TFC["k_" + __reg5 + "bottg"][0], TFC["k_" + __reg5 + "bottg"][1]);
  2740.                     var __reg15 = thmn(__reg11 - __reg9);
  2741.                     __reg4.cue_crs = 0;
  2742.                     __reg4.tg_crs = 0;
  2743.                     __reg4.fr_ang = __reg15;
  2744.                     __reg4.sumd = __reg17 + __reg19;
  2745.                     var __reg8 = Math.sin(TFC.te * __reg15) * __reg16;
  2746.                     var __reg20 = __reg8 * __reg8;
  2747.                     var __reg22 = Math.sqrt(Math.abs(__reg16 * __reg16 - __reg20));
  2748.                     var __reg21 = __reg17 - Math.abs(__reg22);
  2749.                     var __reg18 = Math.atan(__reg8 / __reg21) / TFC.te;
  2750.                     __reg4.v = __reg9 - __reg18;
  2751.                     var __reg2 = 0;
  2752.                     var __reg6;
  2753.                     var __reg14;
  2754.                     var __reg12;
  2755.                     var __reg13;
  2756.                     while (__reg2 < TFC.bnm)
  2757.                     {
  2758.                         if (LFSET[__reg2].e && t != __reg1 && __reg1 != __reg2)
  2759.                         {
  2760.                             __reg13 = thmd(LFSET[t].a, LFSET[t].b, LFSET[__reg2].a, LFSET[__reg2].b);
  2761.                             __reg12 = thmg(LFSET[t].a, LFSET[t].b, LFSET[__reg2].a, LFSET[__reg2].b);
  2762.                             __reg6 = Math.abs(thmn(__reg9 - __reg12));
  2763.                             if (__reg6 < 90)
  2764.                             {
  2765.                                 __reg14 = Math.abs(Math.sin(TFC.te * __reg6) * __reg13);
  2766.                                 if (__reg14 <= TFC.od)
  2767.                                     ++__reg4.cue_crs;
  2768.                             }
  2769.                         }
  2770.                        
  2771.                         ++__reg2;
  2772.                     }
  2773.                    
  2774.                     __reg2 = 0;
  2775.                     while (__reg2 < TFC.bnm)
  2776.                     {
  2777.                         if (LFSET[__reg2].e && t != __reg1 && __reg1 != __reg2)
  2778.                         {
  2779.                             __reg13 = thmd(LFSET[__reg1].a, LFSET[__reg1].b, LFSET[__reg2].a, LFSET[__reg2].b);
  2780.                             __reg12 = thmg(LFSET[__reg1].a, LFSET[__reg1].b, LFSET[__reg2].a, LFSET[__reg2].b);
  2781.                             __reg6 = Math.abs(thmn(__reg11 - __reg12));
  2782.                             if (Math.abs(__reg6) < 90)
  2783.                             {
  2784.                                 __reg14 = Math.abs(Math.sin(TFC.te * __reg6) * __reg13);
  2785.                                 if (__reg14 <= TFC.od)
  2786.                                     ++__reg4.tg_crs;
  2787.                             }
  2788.                         }
  2789.                        
  2790.                         ++__reg2;
  2791.                     }
  2792.                    
  2793.                     __reg23["_" + __reg1 + "_" + __reg5] = __reg4;
  2794.                     ++__reg5;
  2795.                 }
  2796.             }
  2797.            
  2798.             ++__reg1;
  2799.         }
  2800.        
  2801.         var __reg24 = "";
  2802.         var __reg29;
  2803.         for (var __reg31 in __reg23)
  2804.         {
  2805.             var __reg7 = __reg23[__reg31];
  2806.             if (__reg24 == "")
  2807.                 __reg24 = __reg31;
  2808.             else
  2809.             {
  2810.                 var __reg10 = 0;
  2811.                 __reg29 = __reg23[__reg24];
  2812.                 if (Math.abs(__reg7.fr_ang) < 80)
  2813.                 {
  2814.                     if (__reg7.cue_crs == 0 && __reg7.tg_crs == 0 && (__reg29.cue_crs > 0 || __reg29.tg_crs > 0))
  2815.                         __reg10 = 1;
  2816.  
  2817.                     if ((__reg7.cue_crs == 0 || __reg7.tg_crs == 0) && __reg29.cue_crs > 0 && __reg29.tg_crs > 0)
  2818.                         __reg10 = 1;
  2819.  
  2820.                     if (__reg29.cue_crs == 0 && __reg29.tg_crs == 0 && (__reg7.cue_crs > 0 || __reg7.tg_crs > 0))
  2821.                         __reg10 = -1;
  2822.  
  2823.                     if ((__reg29.cue_crs == 0 || __reg29.tg_crs == 0) && __reg7.cue_crs > 0 && __reg7.tg_crs > 0)
  2824.                         __reg10 = -1;
  2825.  
  2826.                     if (__reg10 == 0)
  2827.                     {
  2828.                         if (Math.abs(__reg7.fr_ang) < Math.abs(__reg29.fr_ang))
  2829.                             __reg10 = 1;
  2830.                     }
  2831.                    
  2832.                     if (__reg10 == 1)
  2833.                         __reg24 = __reg31;
  2834.                 }
  2835.             }
  2836.         }
  2837.        
  2838.         __reg29 = __reg23[__reg24];
  2839.         if (__reg29 == undefined)
  2840.         {
  2841.             __reg29 = [];
  2842.             __reg29.v = random(360) - 180;
  2843.             __reg34 = (3 + random(8)) * 100;
  2844.         }
  2845.         else if (Math.abs(__reg29.fr_ang) > 20 || __reg29.sumd > 15000)
  2846.             __reg34 = (16 + random(6)) * 100;
  2847.         else
  2848.             __reg34 = (10 + random(11)) * 100;
  2849.  
  2850.         RESVC = thma_d(__reg29.v);
  2851.         TPSH = [];
  2852.         TPSH.t = Math.round(t);
  2853.         TPSH.v = thmn(__reg29.v);
  2854.         TPSH.s = __reg34;
  2855.         TPSH.r_mv = 0;
  2856.         TPSH.r_ms = 0;
  2857.         TPSH.r_hv = 0;
  2858.         TPSH.r_hs = 0;
  2859.         TPSH.ri_h = 0;
  2860.         TPSH.ri_v = 0;
  2861.         __reg30 = atchs(CUE_OPP_PFX, "b");
  2862.         __reg30._x = LFSET[t].c._x;
  2863.         __reg30._y = LFSET[t].c._y;
  2864.         __reg30._rotation = thmn(TPSH.v + 180);
  2865.         __reg30.onEnterFrame =
  2866.             function ()
  2867.             {
  2868.                 opcue(3);
  2869.             };
  2870.         __reg30.filters = SHW_FT;
  2871.         __reg28 = [];
  2872.         __reg28.push(Math.round(TPSH.v * 100).toString(16));
  2873.         __reg28.push(Math.round(TPSH.s).toString(16));
  2874.         __reg28.push(Math.round(TPSH.r_mv * 100).toString(16));
  2875.         __reg28.push(Math.round(TPSH.r_ms).toString(16));
  2876.         __reg28.push(Math.round(TPSH.r_hv * 100).toString(16));
  2877.         __reg28.push(Math.round(TPSH.r_hs).toString(16));
  2878.         __reg28.push(Math.round(TPSH.ri_h).toString(16));
  2879.         __reg28.push(Math.round(TPSH.ri_v).toString(16));
  2880.         __reg33 = __reg28.join("{");
  2881.         __reg27 = sy_pfgt(__reg33, 0);
  2882.         for (__reg32 in __reg27)
  2883.             TPSH[__reg32] = __reg27[__reg32];
  2884.  
  2885.         sy_osh(__reg33);
  2886.     }
  2887. }
  2888.  
  2889. function sy_acud(vf)
  2890. {
  2891.     if (typeof vf == "object")
  2892.     {
  2893.         if (vf.i != undefined)
  2894.         {
  2895.             if (LFSET[vf.i].e)
  2896.                 OPCTVD.i = vf.i;
  2897.         }
  2898.        
  2899.         if (typeof vf.p == "object" && OPCTVD.i != undefined)
  2900.         {
  2901.             var __reg5 = Math.round(parseInt(vf.p[0], 16));
  2902.             var __reg4 = Math.round(parseInt(vf.p[1], 16));
  2903.             if (isNaN(__reg5))
  2904.                 __reg5 = 0;
  2905.  
  2906.             if (isNaN(__reg4))
  2907.                 __reg4 = 0;
  2908.  
  2909.             if (__reg5 < TFC.a_n)
  2910.                 __reg5 = TFC.a_n;
  2911.             else if (__reg5 > TFC.a_x)
  2912.                 __reg5 = TFC.a_x;
  2913.  
  2914.             if (__reg4 < TFC.b_n)
  2915.                 __reg4 = TFC.b_n;
  2916.             else if (__reg4 > TFC.b_x)
  2917.                 __reg4 = TFC.b_x;
  2918.  
  2919.             LFSET[vf.i].a = __reg5;
  2920.             LFSET[vf.i].b = __reg4;
  2921.             thps(vf.i);
  2922.         }
  2923.        
  2924.         var __reg1 = vf.a;
  2925.         if (isNaN(__reg1) || !LFSET[OPCTVD.i].e || OPCTVD.i == undefined)
  2926.             return undefined;
  2927.  
  2928.         if (Math.abs(__reg1) > 360)
  2929.             __reg1 = 0;
  2930.  
  2931.         __reg1 = Math.round(thmn(__reg1) * 10) / 10;
  2932.         if (Math.abs(__reg1) == 180 || __reg1 == 0)
  2933.             __reg1 = Math.round(thmn(__reg1 + 0.1) * 10) / 10;
  2934.  
  2935.         var __reg2 = bst.cue;
  2936.         if (__reg2.acdt == undefined)
  2937.         {
  2938.             __reg2 = atchs(CUE_OPP_PFX, "w");
  2939.             __reg2._x = LFSET[OPCTVD.i].c._x;
  2940.             __reg2._y = LFSET[OPCTVD.i].c._y;
  2941.             __reg2.onEnterFrame =
  2942.                 function ()
  2943.                 {
  2944.                     opwtc();
  2945.                 };
  2946.             __reg2.filters = SHW_FT;
  2947.             __reg2._rotation = __reg1;
  2948.             __reg2.cr = __reg1;
  2949.         }
  2950.         else if (__reg2.acdt != "w")
  2951.             return undefined;
  2952.  
  2953.         __reg2.rt = __reg1;
  2954.         __reg2.ra = 3;
  2955.         __reg2.rs = thmn(__reg1 - __reg2.cr) / 3;
  2956.     }
  2957. }
  2958.  
  2959. function sy_ocsp(t, g, p)
  2960. {
  2961.     g = Math.round(g);
  2962.     var __reg3;
  2963.     if (STBL_SET)
  2964.     {
  2965.         if (STD_CONFIRM_CUP || g == LCOUTLS)
  2966.             return undefined;
  2967.  
  2968.         LCOUTLS = g;
  2969.         __reg3 = {f: "cu", a: g};
  2970.     }
  2971.     else
  2972.     {
  2973.         STBL_SET = 1;
  2974.         __reg3 = {f: "cuf", a: g, v: t + "_" + p[0].toString(16) + "_" + p[1].toString(16)};
  2975.     }
  2976.    
  2977.     STD_CONFIRM_CUP = 1;
  2978.     _parent._parent.send_gamecom(__reg3);
  2979. }
  2980.  
  2981. function sy_cfcsp()
  2982. {
  2983.     STD_CONFIRM_CUP = 0;
  2984. }
  2985.  
  2986. function sy_osh(r)
  2987. {
  2988.     _parent.stop_timer();
  2989.     _parent._parent.send_gamecom({f: "ht", v: r});
  2990. }
  2991.  
  2992. function sy_ydsp()
  2993. {
  2994.     if (typeof SH_RTGC == "object")
  2995.     {
  2996.         if (SPECT_U)
  2997.         {
  2998.             SH_RTGC = "";
  2999.             PROC_RD = 0;
  3000.             _parent._parent.send_gamecom({f: "cj"});
  3001.             _parent.spbhg();
  3002.             return undefined;
  3003.         }
  3004.     }
  3005.     else
  3006.         return undefined;
  3007.  
  3008.     var __reg7 = "";
  3009.     var __reg5;
  3010.     if (typeof SH_RTGC.pk == "object")
  3011.     {
  3012.         __reg5 = SH_RTGC.pk.length;
  3013.         var __reg2 = 0;
  3014.         while (__reg2 < __reg5)
  3015.         {
  3016.             SH_RTGC.pk[__reg2] = Math.round(SH_RTGC.pk[__reg2][0] + TFC.sqc[__reg2 + 2]).toString(16) + "}" + SH_RTGC.pk[__reg2][1];
  3017.             ++__reg2;
  3018.         }
  3019.        
  3020.         __reg7 = SH_RTGC.pk.join("{");
  3021.     }
  3022.    
  3023.     var __reg4 = "";
  3024.     if (typeof SH_RTGC.ct == "object")
  3025.     {
  3026.         __reg4 = [];
  3027.         var __reg3 = [];
  3028.         __reg5 = SH_RTGC.ct.length;
  3029.         __reg2 = 0;
  3030.         while (__reg2 < __reg5)
  3031.         {
  3032.             if (__reg3["_" + SH_RTGC.ct[__reg2]] != 1)
  3033.             {
  3034.                 __reg3["_" + SH_RTGC.ct[__reg2]] = 1;
  3035.                 __reg4.push(Math.round(SH_RTGC.ct[__reg2]).toString(16));
  3036.             }
  3037.            
  3038.             ++__reg2;
  3039.         }
  3040.         __reg4 = __reg4.join("{");
  3041.     }
  3042.    
  3043.     _parent.pychs();
  3044.     var __reg6 = Math.round(SH_RTGC.t).toString(16) + ";" + sy_gbs() + ";" + __reg7 + ";" + __reg4;
  3045.     if (SH_RTGC.p == 1 || SH_RTGC.p == 3)
  3046.         _parent._parent.send_gamecom({f: "prm", v: __reg6});
  3047.     else
  3048.         _parent._parent.send_gamecom({f: "cj"});
  3049.  
  3050.     SH_RTGC = "";
  3051. }
  3052.  
  3053. function sy_fdsi(w, m, r)
  3054. {
  3055.     ztable.tbarea.useHandCursor = false;
  3056.     bst.deny_logo._visible = 0;
  3057.     bst.htgy._visible = 0;
  3058.     bst.guide_sc.clear();
  3059.     if (r == "1" && !SPECT_U)
  3060.         bst.attachMovie("replay_bt", "replay_bt", 3020);
  3061.  
  3062.     bst.attachMovie("quit_bt", "quit_bt", 3021);
  3063.     var obj;
  3064.     if (w == 1 || w == 2)
  3065.     {
  3066.         obj = bst.attachMovie("end_winner", "win_res", 3010);
  3067.         if (!SPECT_U)
  3068.             obj.W_SOUND = m;
  3069.  
  3070.         var n = eval("_parent.scboard.playername" + w);
  3071.         if (n == undefined)
  3072.             n = "";
  3073.  
  3074.         obj.winner_name = n;
  3075.     }
  3076.     else
  3077.         obj = bst.attachMovie("end_over", "win_res", 3010);
  3078.  
  3079.     obj.filters = SHW_FT;
  3080. }
  3081.  
  3082. function sy_esch(i)
  3083. {
  3084.     var __reg1 = bst.attachMovie("sn_error", "sn_error", 3030);
  3085.     __reg1.filters = SHW_FT;
  3086.     __reg1.i = i;
  3087. }
  3088.  
  3089. function zoom_switch()
  3090. {
  3091.     if (bst._xscale > 101)
  3092.     {
  3093.         bst._x = bst._y = 0;
  3094.         ztable._x = ztable._y = 0;
  3095.         bst._xscale = bst._yscale = 100;
  3096.         ztable._xscale = ztable._yscale = 100;
  3097.         return;
  3098.     }
  3099.    
  3100.     bst._y = ztable._y = -85;
  3101.     bst._xscale = bst._yscale = ztable._xscale = ztable._yscale = 124.9;
  3102. }
  3103.  
  3104. CUE_CURR_PFX = "";
  3105. CUE_OPP_PFX = "";
  3106. GUIDE_ON = false;
  3107. EXTENDED_GUIDE_ON = false;
  3108. SPIN_ON = 0;
  3109. SPECT_U = 0;
  3110. IUEWT_S = 5;
  3111. HDNL_DIS = 0;
  3112. soundRat_kick = 3;
  3113. soundRat_bordkick = 2;
  3114. soundRat_keykick = 3;
  3115. soundRat_pocket = 4;
  3116. SH_RTGC = "";
  3117. OPCTVD = [];
  3118. LCOUTLS = 999;
  3119. STD_CONFIRM_CUP = 0;
  3120. STBL_SET = 0;
  3121. HP_ACTIVE = 0;
  3122. SHW_FT = [new flash.filters.DropShadowFilter(9, 45, 0, 0.4, 6, 6, 1, 3, false, false, false)];
  3123. STCH = [];
  3124. TPSH = [];
  3125. PROC_RD = 0;
  3126. STP_EX = 0;
  3127. UITW_S = 0;
  3128.  
  3129. this.createEmptyMovieClip("sound_vc", 3990);
  3130.  
  3131. if (_root.zoom_keyListener == undefined)
  3132. {
  3133.     _root.zoom_keyListener = new Object();
  3134.     _root.zoom_keyListener.onKeyDown =
  3135.         function ()
  3136.         {
  3137.             if (Key.getCode() == 90 && _root._xmouse < 800)
  3138.             {
  3139.                 _root.currentmod.sections.sc_game.sectionmod.game_mod.gkernel.zoom_switch();
  3140.             }
  3141.         };
  3142.     Key.addListener(_root.zoom_keyListener);
  3143. }
RAW Paste Data