Advertisement
bitetti

code1

Mar 13th, 2012
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2.  * @author Marcos Augusto Bitetti
  3.  *
  4.  * NOTE:   HIT SUNT DRACONES
  5.  */
  6.  
  7. var baloons = [];
  8. function addEventBallon(msg, x, y)
  9. {
  10.     var div = document.createElement("div");
  11.     div.className="balao";
  12.     document.getElementById("charlayer").appendChild(div);
  13.     var balao = $(div);
  14.     baloons.push(balao);
  15.     balao.html('<p>' + msg + '</p>');
  16.     balao.css("top",y).css("left",x);
  17.     balao.animate({"top":String(y-100-Math.random()*80)}, 2000+Math.random()*500, "linear", function(e) {$(this).fadeOut("slow", function(e) {$(this).remove()})} );
  18.     /*
  19.     ({
  20.   height:200, width:400, opacity: .5
  21. }, 1000, "linear", function(){ alert("all done"); });*/
  22. }
  23.  
  24. function animageBaloons()
  25. {
  26.     /*var bal;
  27.     for(var i in baloons)
  28.     {
  29.         bal = baloons[i];
  30.     }*/
  31.     if (baloons.length)
  32.         if (baloons[0].css('display')=="none")
  33.         {
  34.             var b = baloons.shift();
  35.             //$("#charlayer")
  36.             b.remove();
  37.         }
  38. }
  39.  
  40. //------ MAQUINA DE ESTADOS ------------
  41. function FSM()
  42. {
  43.     this.hp = 100;
  44.     this.mp = 100;
  45.     this.itens=[];
  46.    
  47.     this.addItem = function (item)
  48.     {
  49.         this.itens.push(item);
  50.     };
  51.    
  52.     this.getItemByName = function(nome)
  53.     {
  54.         for(var i in this.itens) if (this.itens[i].nome==nome) return this.itens[i];
  55.         return null;
  56.     }
  57.    
  58.     this.useItemNamed = function(nome)
  59.     {
  60.         var item = this.getItemByName(nome);
  61.         if (item)
  62.         {
  63.             if (item.condicoes(this))
  64.             {
  65.                 //print("usei o item " + nome);
  66.             } else {
  67.                 //print(EventManager.getString(discurso.atributos.mp.acabouomp));
  68.             }
  69.         }
  70.     }
  71.    
  72.     this.affectMP = function(v)
  73.     {
  74.         this.mp += v;
  75.         if (this.mp<0) this.mp=0;
  76.     }
  77.    
  78.     this.affectHP = function(v)
  79.     {
  80.        
  81.     }
  82.    
  83.     return this;
  84. }
  85.  
  86. var discurso = {
  87.     atributos:{
  88.         mp:{
  89.             acabouo:[
  90.                     "Estou sem MP",
  91.                     "Acabou meu poder porra!"
  92.                 ]
  93.             }
  94.         },
  95.     status:{
  96.         morto:[
  97.             "Ai, Me fudi!",
  98.             "Caraio morri de novo!",
  99.             "Joga direito pô"
  100.         ]
  101.     },
  102.     alerta:{
  103.         bomda:"<b>CORRE NEGADISIS!!!</b>"
  104.     },
  105.     chars:{
  106.         anjo:{
  107.             magia:"Angel Wings",
  108.             nomp:"Sinto não tenho mais milagres",
  109.             tip:"Arcanjo<br />Cura ferimentos e lhe dá impulso."
  110.         },
  111.         aracne:{
  112.             sentido:"Sinto alguém por perto...",
  113.             tip:"Aracne<br />Forte pra cassete!<br />Encostou morreu!"
  114.         },
  115.         morgerco:{
  116.             tip:"Morgerço<br />Morde doído!"
  117.         },
  118.        
  119.         // magias
  120.         bomba:{
  121.             tip:"Ponha no chão e corra feito louco!"
  122.         },
  123.         projAstral:{
  124.             tip:"Projeta seu espírito, os inimigos não podem vê-lo mas você pode pegar objetos."
  125.         },
  126.         aliado:{
  127.             tip:"Dois fantasmas ameaçadores irão atacar tudo que tocarem. Use-os sabiamente."
  128.         },
  129.         pena:{
  130.             tip:"Seu objetivo, a famosa <strong>Pena de Vaca Sagrada</strong> é um raro item mágico que pode salvar o mundo."
  131.         }
  132.     },
  133.     "":""
  134. };
  135.  
  136.  
  137. function frase(ref)
  138. {
  139.     var msg = ref;
  140.     if ( ref instanceof Array )
  141.         msg = ref[ Math.floor( Math.random() * ref.length )];
  142.     return msg;
  143. }
  144.  
  145. //------ FUNÇÔES ENTRE OS PERSONAGENS ---------
  146. function removeAnim(anim)
  147. {
  148.     var i = animationSet.indexOf(anim);
  149.     if (i>-1) animationSet.splice( i,1 );
  150.     //ob.self.remove();
  151. }
  152.  
  153.  
  154. function anjo_atuacao01(ob)
  155. {
  156.     if(ob.col==1)
  157.     {
  158.         if(ob.fsm.mp>0)
  159.         {
  160.             ob.fsm.mp = 0
  161.             player.fsm.hp = 100;
  162.             fly=1;
  163.             addEventBallon(discurso.chars.anjo.magia, ob.x, player.y-30);
  164.             addEventBallon("HP&nbsp;100% XD", player.x+20, player.y-30);
  165.             effects[0].show("slow").css("top",player.y).css("left",player.x);
  166.         } else {
  167.             addEventBallon(frase(discurso.chars.anjo.nomp), ob.x, player.y-30);
  168.         }
  169.     }
  170. }
  171.  
  172. function mana_atuacao01(mana)
  173. {
  174.     if (player.fsm.mp<100)
  175.     {
  176.         player.fsm.mp += 20;
  177.         if (player.fsm.mp>100)
  178.             player.fsm.mp=100;
  179.         mana.remove();
  180.         addEventBallon("<span style=\"color:#46f\">MP&nbsp;+20%</span>", player.x+20, player.y-30);
  181.         //try { swfsound.startSound( sound5 ); } catch (ex) { }
  182.         playSound(5);
  183.     }
  184.     inColl=0;
  185. }
  186.  
  187. function coracao_atuacao01(coracao)
  188. {
  189.     if (player.fsm.hp<100)
  190.     {
  191.         player.fsm.hp += 20;
  192.         if (player.fsm.hp>100)
  193.             player.fsm.hp=100;
  194.         coracao.remove();
  195.         addEventBallon("<span style=\"color:#f00\">HP&nbsp;+20%</span>", player.x+20, player.y-30);
  196.         //try { swfsound.startSound( sound5 ); } catch (ex) { }
  197.         playSound(5);
  198.     }
  199.     inColl=0;
  200. }
  201.  
  202. function carta_atuacao(ob)
  203. {
  204.     //try { swfsound.startSound( sound5 ); } catch (ex) { }
  205.     playSound(5);
  206.     menuItens.reverse();
  207.     if (ob.nome=="carta1")
  208.     {
  209.         menuItens.push( new MenuItem("Projeção Astral (30mp)",function() { animationSet.push(projec_astral); }, 22) );
  210.         addEventBallon("<span style=\"color:#f00\">Obteve Projeção&nbsp;Astral</span>", player.x+20, player.y-30);
  211.     }
  212.     if (ob.nome=="carta2")
  213.     {
  214.         menuItens.push( new MenuItem("Aliado mortal (40mp)",function() { animationSet.push(seguidor_morte); }, 21) );
  215.         addEventBallon("<span style=\"color:#f00\">Obteve Aliado&nbsp;Mortal</span>", player.x+20, player.y-30);
  216.     }
  217.     if (ob.nome=="carta3")
  218.     {
  219.         menuItens.push( new MenuItem("Bomba (60mp)",function() { animationSet.push(bomba_act); }, 20) );
  220.         addEventBallon("<span style=\"color:#f00\">Oteve Bomba</span>", player.x+20, player.y-30);
  221.     }
  222.     if (ob.nome=="carta4")
  223.     {
  224.         menuItens.push( new MenuItem("Corpo Spectral",function() { animationSet.push(projec_astral); }, 22) );
  225.         addEventBallon("<span style=\"color:#f00\">HP&nbsp;+20%</span>", player.x+20, player.y-30);
  226.     }
  227.     menuItens.reverse();
  228.     ob.remove();
  229. }
  230.  
  231. function inimigo_atuacao(ob)
  232. {
  233.     if (ob.nome=="Aracne")
  234.     {
  235.         player.fsm.hp -= 30;
  236.     } else
  237.     if (ob.nome=="morgerco")
  238.     {
  239.         player.fsm.hp -= 4;
  240.     }
  241.     //try { swfsound.startSound( sound4 ); } catch (ex) { }
  242.     playSound(4);
  243.     applySangue(ob);
  244.    
  245. }
  246.  
  247. function pena_atuacao(ob)
  248. {
  249.     vitoria = 1;
  250. }
  251.  
  252. function applySangue(ob)
  253. {
  254.     // efeito de sangue sanguinário pisicotico ^^
  255.     var x = (-96 + Math.random()*192) + (player.x + ob.x) * 0.5;
  256.     var y = (-132 + Math.random()*192) + (player.y + ob.y) * 0.5;
  257.     var img = $(document.createElement('img'));
  258.     img.attr('src', P+"sangue" + String(Math.floor(Math.random()*3)) + ".png" );
  259.     img.css("opacity","0.8").css("filter","alpha(opacity=80)").css("left",x).css("top",y).css("position","absolute");
  260.     $("#charlayer").append(img);
  261. }
  262.  
  263. /*//-----------------------
  264.  
  265.  MAGIAS
  266.  
  267. *///-----------------------
  268.  
  269. // animacoes
  270. var animationSet=[];
  271.  
  272.  
  273. /**
  274.  * Nota o tempo do efeito é definido em spec_corp e tem o valor de 250
  275.  * troar ese valor dentro da funcao tambem no timmer
  276.  */
  277. var spec_corp=0;
  278. var corp_fix;
  279. var spec_timer;
  280. var oldCorp;
  281. function projec_astral(delta)
  282. {
  283.     if (!spec_corp)
  284.     {
  285.         if (player.fsm.mp>30)
  286.         {
  287.             if (!document.getElementById("fakecorpo"))
  288.             {
  289.                 $(player.img).css("opacity","0.5").css("filter","alpha(opacity=50)").css("filer","blur(6px);");
  290.                 spec_corp=250;
  291.                 player.fsm.mp-=30;
  292.                
  293.                 var img = document.createElement("img");
  294.                 img.src = player.states[0];
  295.                 img.className = "Char";
  296.                 img.id = "fakecorpo";
  297.                 $(img).css("top",player.y-TH).css("left",player.x).width(64).height(128);
  298.                 $(img).css("-moz-transform","scaleX("+player.orientation+")").css("-o-transform","scaleX("+player.orientation+")").css("-webkit-transform","scaleX("+player.orientation+")").css("transform","scaleX("+player.orientation+")").css("filter","FlipH").css("-ms-filter","\"FlipH\"");
  299.                 document.getElementById("charlayer").appendChild(img);
  300.                 oldCorp = [player.x,player.y];
  301.                 spec_timer = new Relogio();
  302.                 //try { swfsound.startSound( sound3 ); } catch (ex) { }
  303.                 playSound(3);
  304.                 for(var i in menuItens)
  305.                     if (menuItens[i].data==22) {menuItens.splice(i,1); break;}
  306.             }
  307.         } else {
  308.             addEventBallon( frase(discurso.atributos.mp.acabouo) , player.x+20, player.y-40);
  309.             animationSet.splice(projec_astral,1);
  310.         }
  311.     } else {
  312.         spec_corp--;
  313.         spec_timer.update(spec_corp/250);
  314.         if (spec_corp<=0)
  315.         {
  316.             $(player.img).css("opacity","1").css("filter","alpha(opacity=100)").css("filer","blur(0px);");
  317.             spec_corp=0;
  318.             animationSet.splice(animationSet.indexOf(projec_astral),1);
  319.             var img = $("#fakecorpo");
  320.             player.position(oldCorp[0],oldCorp[1]);
  321.             img.remove();
  322.             spec_timer.end();
  323.         }
  324.     }
  325. }
  326.  
  327. var seg_morte=0;
  328. var seg_morte_timer;
  329. var morte=[0,0];
  330. function seguidor_morte(delta)
  331. {
  332.     if (!seg_morte)
  333.     {
  334.         if (player.fsm.mp>40)
  335.         {
  336.             morte[0] = new Char("morte",-2000,0, 1, [P+"V_mask.png"]);
  337.             morte[1] = new Char("morte",-2000,0, 1, [P+"V_mask.png"]);
  338.             morte[0].delta = Math.PI;
  339.             morte[1].delta = 0;
  340.             seg_morte=400;
  341.             seg_morte_timer = new Relogio();
  342.             player.fsm.mp-=40;
  343.             //try { swfsound.startSound( sound3 ); } catch (ex) { }
  344.             playSound(3);
  345.             for(var i in menuItens)
  346.                 if (menuItens[i].data==21) {menuItens.splice(i,1); break;}
  347.         } else {
  348.             addEventBallon( frase(discurso.atributos.mp.acabouo) , player.x+20, player.y-40);
  349.             animationSet.splice(seguidor_morte,1);
  350.         }
  351.     } else {
  352.         seg_morte--;
  353.         seg_morte_timer.update(seg_morte/400);
  354.         var mt_x,mt_y;
  355.         for(var i=0; i<2; i++)
  356.         {
  357.             if (morte[i].fsm.hp>0)
  358.             {
  359.                 morte[i].delta += 4*0.017453293;
  360.                 mt_x = player.x + Math.cos(morte[i].delta)*TW;
  361.                 mt_y = player.y - 32 + Math.cos(morte[i].delta)*Math.pow(Math.sin(morte[i].delta*4),2)   *TW;
  362.                 morte[i].position(mt_x,mt_y);
  363.                
  364.                 var arr = morte[i].collision();
  365.                 for (var i2 in arr)
  366.                 {
  367.                     var ob = arr[i2];
  368.                     if(ob.nome=="morgerco" || ob.nome=="Aracne")
  369.                     {
  370.                         ob.remove();
  371.                         morte[i].remove();
  372.                         morte[i].fsm.hp=0;
  373.                         //try { swfsound.startSound( sound6 ); } catch (ex) { }
  374.                         playSound(6);
  375.                         applySangue(ob);
  376.                         break;
  377.                     }
  378.             }
  379.             }
  380.         }
  381.         if(seg_morte<=0)
  382.         {
  383.             animationSet.splice(animationSet.indexOf(seguidor_morte),1);
  384.             seg_morte=0;
  385.             seg_morte_timer.end();
  386.             //morte[0].self.remove();
  387.             //morte[1].self.remove();
  388.             //chars.splice(morte[0],1);
  389.             //chars.splice(morte[1],1);
  390.             morte[0].remove();
  391.             morte[1].remove();
  392.         }
  393.     }
  394. }
  395.  
  396. var bomba_c=0;
  397. var bomba_timer;
  398. var bomba;
  399. var bombImg;
  400. var bombLay;
  401. var area1;
  402. var area2;
  403. function bomba_act(delta)
  404. {
  405.     if (!bomba_c)
  406.     {
  407.         if (player.fsm.mp>60)
  408.         {
  409.             bomba = new Char("bomba",-2000,0, 1, [P+"bomb1.gif"]);
  410.             bomba_c=65;
  411.             bomba_timer = new Relogio();
  412.             player.fsm.mp-=60;
  413.             bomba.position(player.x,player.y);
  414.             addEventBallon( frase(discurso.alerta.bomda) , player.x+20, player.y-40);
  415.             //try { swfsound.startSound( sound3 ); } catch (ex) { }
  416.             playSound(3);
  417.             area1 = new Box(bomba.x-256-32, bomba.y-256-32, 511+32,511+32);
  418.             area2 = new Box(area1.lf+TW,area1.tp+TH,388,388);
  419.             if (!bombLay)
  420.             {
  421.                 bombLay = $(document.createElement('div'));
  422.                 bombLay.attr("class","bombMark").width(512).height(512).css("border-color","rgba(255,255,0,0.6)").css("color","rgba(255,255,0,0.6)").html("" +
  423.                 '-60' +
  424.                 '<div class="bombMark" style="left:64px; top:64px; width:384px; height:384px; color: rgba(0,255,0,0.6); border-color:rgba(0,255,0,0.6);">-100</div>' +
  425.                 "");
  426.                 $("#charlayer").append(bombLay);
  427.             }
  428.             bombLay.show().css("top",area1.tp).css("left",area1.lf);
  429.             for(var i in menuItens)
  430.                 if (menuItens[i].data==20) {menuItens.splice(i,1); break;}
  431.         } else {
  432.             addEventBallon( frase(discurso.atributos.mp.acabouo) , player.x+20, player.y-40);
  433.             animationSet.splice(bomba_act,1);
  434.         }
  435.     } else {
  436.         bomba_c--;
  437.         bomba_timer.update(bomba_c/65);
  438.        
  439.         if(bomba_c<=0)
  440.         {
  441.             animationSet.splice(animationSet.indexOf(bomba_act),1);
  442.             bomba_c=0;
  443.             bomba_timer.end();
  444.             bomba.self.remove();
  445.             //chars.splice(bomba,1);
  446.             bomba.remove();
  447.            
  448.             if (!bombImg) bombImg = $(document.createElement('img'));
  449.             bombImg.show().attr("src",P+"Explode.gif").css("position","absolute").css("top",bomba.y-128).css("left",bomba.x-128).width(368).height(368);
  450.             //try { swfsound.startSound( sound2 ); } catch (ex) { }
  451.             playSound(2);
  452.             // TODO Ao usar OGG com audio descomentar a linha abaixo e comentar a mesma em bomb_effect()
  453.             //$("#charlayer").append(bombImg);
  454.             setTimeout(bomb_effect,200);
  455.         }
  456.     }
  457. }
  458. function bomb_effect()
  459. {
  460.     $("#charlayer").append(bombImg);
  461.     removeTileAt(bomba.x,bomba.y);
  462.     removeTileAt(bomba.x,bomba.y-TH);
  463.     removeTileAt(bomba.x,bomba.y+TH);
  464.     removeTileAt(bomba.x-TW,bomba.y-TH);
  465.     removeTileAt(bomba.x+TW,bomba.y-TH);
  466.     removeTileAt(bomba.x-TW,bomba.y);
  467.     removeTileAt(bomba.x+TW,bomba.y);
  468.     bombLay.hide();
  469.     //alert(area.tp + " " + area.lf + " " + area.bt + " " + area.rt);
  470.     // TODO que merda!!!
  471.     // um erro de programação bem simples motivado pelo sono e falta de café.
  472.     // é um negócio tão idiota que eu só fui ver a burrada num domingo de manhã com a mente mais descansada.
  473.     // for(var i in chars) não funciona!
  474.     // depois de olhar com falma vi que o erro éra que toda hora eu removia um ítem do Array chars !
  475.     // clona array viado
  476.     var tmpChars = [];
  477.     for( var i in chars ) tmpChars.push(chars[i]);
  478.     for(var i in tmpChars)
  479.     {
  480.         var c = tmpChars[i];//alert(c.nome);
  481.         if ( c.box.collision(area1) )
  482.         {
  483.             c.fsm.hp-=60;
  484.             if (c.box.collision(area2)) c.fsm.hp-=100;
  485.             if (c.fsm.hp<=0) c.remove();
  486.         }
  487.     }
  488. }
  489.  
  490.  
  491. //----------- CLASSES PRINCIPAIS --------------
  492. var charInd=0;
  493.  
  494. /*
  495.  * Char
  496.  * nome
  497.  * x,y
  498.  * tp: 1=tile 64x64 2=tile 64x128 4=tile 128x128
  499.  * body = sequencia de imagens
  500.  */
  501. function Char(nome, x,y, tp, body)
  502. {
  503.     this.id = charInd; charInd++;
  504.     this.x = x*TW;
  505.     this.y = y*TH;
  506.     this.g = 0;
  507.     this.nome = nome;
  508.     this.width = (tp<4) ? 64 : 128;
  509.     this.height= (tp==1) ? 64 : 128;
  510.     this.states=body;
  511.     this.state=0;
  512.     this.fsm = new FSM();
  513.     this.orientation = -1;
  514.     this.queda=0;
  515.     this.col=0;
  516.     this.tip="";
  517.    
  518.     var charLayer = $("#charlayer");
  519.     this.div = document.createElement("div");
  520.     document.getElementById("charlayer").appendChild(this.div);
  521.     this.div.className="Char";
  522.     this.self = $(this.div);
  523.    
  524.     this.offX = 0;
  525.     this.offY = (tp==1) ? 0 : 64;
  526.     this.box = new Box(this.x,this.y,this.width,this.height);
  527.    
  528.     this.img = document.createElement("img");
  529.     $(this.img).width( this.width ).height( this.height );
  530.     this.img.src=this.states[this.state];
  531.     this.div.appendChild(this.img);
  532.     this.self.css("top", this.y - this.offY).css("left", this.x );
  533.    
  534.    
  535.     this.position = function(x,y)
  536.     {
  537.         this.self.css("top", y - this.offY);
  538.         this.self.css("left", x );
  539.         this.x = x;
  540.         this.y = y;
  541.         this.box.tp=y-this.offY;
  542.         this.box.lf=x;
  543.         this.box.bt=this.box.tp+this.height-1;
  544.         this.box.rt=this.box.lf+this.width-1;
  545.        
  546.         /*if (!this.debug)
  547.         {
  548.             this.debug = $(document.createElement('div'));
  549.             this.debug.css('border','1px solid #ff0').css('position','absolute');
  550.             $('#charlayer').append(this.debug);
  551.         }
  552.         this.debug.css('top',this.box.tp).css('left',this.box.lf).width(this.width).height(this.height);
  553.         */
  554.     };
  555.    
  556.     this.showTip = function(e)
  557.     {
  558.         var off = $(e.target).offset();
  559.         try {
  560.             var tp = $(this).data("char").tip;
  561.             if (tp!="")
  562.                 dica.show().css("top",off.top-32).css("left",off.left+64).html(tp);
  563.         } catch (err) {}
  564.     }
  565.    
  566.     this.hideTip = function()
  567.     {
  568.         dica.hide();
  569.     }
  570.    
  571.    
  572.     this.collision = function()
  573.     {
  574.         var at;
  575.         var ar=[];
  576.         for(var i in chars)
  577.         {
  578.             at = chars[i];
  579.             if (at!=this)
  580.             {
  581.                 if (this.box.collision(at.box))
  582.                 {
  583.                     at.col++;
  584.                     ar.push(at);
  585.                 }  
  586.                 else at.col=0;
  587.             }
  588.         }
  589.         return ar;
  590.     };
  591.    
  592.     this.remove = function()
  593.     {
  594.         this.self.remove();
  595.         for(var i in chars)
  596.             if (chars[i].id==this.id)
  597.             {
  598.                 chars.splice(i,1);
  599.                 break;
  600.             }
  601.         //alert(chars.indexOf(this));
  602.         //chars.splice(chars.indexOf(this),1);
  603.     };
  604.     //this.position(this,this.x,this.y);
  605.     //this.position(this.x,this.y);
  606.     this.self.mouseover(this.showTip).mouseout(this.hideTip).data("char",this);
  607.     chars.push(this);
  608.     return this;
  609. }
  610.  
  611. function Item(nome,c,func)
  612. {
  613.     this.nome = nome;
  614.     this.consumo = c;
  615.     this.callBack = func;
  616.    
  617.     this.condicoes = function(pl)
  618.     {
  619.         if (pl.mp >= this.consumo)
  620.         {
  621.             pl.affectMP(-this.consumo);
  622.             // callback
  623.             return true;
  624.         }
  625.         return false;
  626.     }
  627.    
  628.     return this;
  629. }
  630.  
  631.  
  632. function Box(x,y,w,h)
  633. {
  634.     this.tp=y;
  635.     this.lf=x;
  636.     this.bt=y+h;
  637.     this.rt=x+w;
  638.    
  639.     this.collision = function( bx )
  640.     {
  641.         if (this.bt >= bx.tp )
  642.             if (this.tp <= bx.bt)
  643.                 if (this.rt >= bx.lf)
  644.                     if (this.lf <= bx.rt)
  645.                         return true;
  646.         return false;
  647.     };
  648.    
  649.     return this;
  650. }
  651.  
  652. function MenuItem(label,func,data)
  653. {
  654.     this.label = label;
  655.     this.selected = false;
  656.     this.func = func;
  657.     this.data = data;
  658.     return this;
  659. }
  660.  
  661. function Relogio()
  662. {
  663.     this.div = $(document.createElement("p"));
  664.     this.img = $(document.createElement("img"));
  665.     this.bar = $(document.createElement("div"));
  666.     this.div.width(150).css("display","block");
  667.     this.img.attr("src",P+"relogio.png").attr("width","32").attr("height","32").css("float","left").css("border","none");
  668.     this.bar.css("background","rgba(255,255,0,0.7)").css("float","left").css("width","100px").css("height","8px").css("margin-left","4px").css("margin-top","12px");
  669.     this.div.append(this.img).append(this.bar);
  670.    
  671.     //this.bar = this.div.children().last();
  672.     $("#addons").append(this.div);
  673.    
  674.     this.update = function(d)
  675.     {
  676.         this.bar.width(Math.floor(100*d));
  677.     };
  678.    
  679.     this.end = function()
  680.     {
  681.         this.div.remove();
  682.     };
  683.     return this;
  684. }
  685.  
  686. function colision(x,y)
  687. {
  688.    
  689. }
  690.  
  691. function position(ch,x,y)
  692. {
  693.     ch.self.css("top", y - ch.offY);
  694.     ch.self.css("left", x );;
  695.     ch.x = x;
  696.     ch.y = y;
  697. }
  698.  
  699. function move(ch,x,y)
  700. {
  701.     position(ch,ch.x+x*SPD,ch.y+y*SPD);
  702. }
  703.  
  704. var menuItens =[
  705.     new MenuItem("Ajuda (comandos)",function() {},null),
  706.     new MenuItem("Pausar / Fazer comentário",function() { pausa = 1; $(window).scrollTop($("#game_return").offset().top); },null),
  707.     new MenuItem("Voltar ao jogo",function() {},null)
  708. ];
  709.  
  710.  
  711. function trataMenu()
  712. {  
  713.     var ind=0;
  714.     var ob=[];
  715.     var cont=0;
  716.     $("#gamemenu ul li").each(function(e,v) {cont++;if(v.className=="selectedItem") { ind=e;} v.className="";ob.push($(v)); });
  717.    
  718.     if (up || down)
  719.     {
  720.        
  721.        
  722.         if(up)
  723.         {
  724.             ind --;
  725.             if(ind<0) ind=cont-1;
  726.         }
  727.         if(down)
  728.         {
  729.             ind++;
  730.             if(ind>=cont) ind=0;
  731.         }
  732.        
  733.     }
  734.     ob[ind].attr('class','selectedItem');
  735.    
  736.     if (menu)
  737.     {
  738.         /*if(ind==cont-1)
  739.         {
  740.             showMenu=0;
  741.             $("#gamemenu").hide("slow");
  742.             menu=0;
  743.         }*/
  744.         menuItens[ind].selected=true;
  745.         menuItens[ind].func();
  746.        
  747.         showMenu=0;
  748.         $("#gamemenu").fadeOut("slow");
  749.         menu=0;
  750.     }
  751. }
  752.  
  753. function mostraMenu()
  754. {
  755.     var h = "<h4>Selecione uma opção</h4><ul>";
  756.     // desenha o item e zera o valor selected dos item
  757.     for(var i in menuItens)
  758.     {
  759.         menuItens[i].selected = false;
  760.         h += '<li' + String((i==menuItens.length-1) ? ' class="selectedItem">' : '>') + menuItens[i].label + '</li>';
  761.     }
  762.     menuItens[menuItens.length-1].selected=true;
  763.     h += '</ul>';
  764.    
  765.     var t = $(window).height()*0.5 - $("#gamemenu").height()*0.5;
  766.     if (navigator.userAgent.toLowerCase().indexOf("microsoft")>-1)
  767.         t += $(window).scrollTop();
  768.     $("#gamemenu").fadeIn("slow").html(h).css("top", t);
  769.     // 
  770. }
  771.  
  772.  
  773. // Retorna o tile em determinada posição da tela
  774. function tileAt(x,y)
  775. {
  776.     x = Math.round(x/TW);
  777.     y = Math.round(y/TH);
  778.     if(x>=map[0].length || y>=map.length || x<0 || y<0) return 5;
  779.     var t = mapTokens.indexOf( map[y].charAt(x) );
  780.     return (t<0) ? 0 : t;
  781. }
  782.  
  783. // remove tile
  784. function removeTileAt(x,y, vis)
  785. {
  786.     if (vis==undefined) vis=true;
  787.     x = Math.round(x/TW);
  788.     y = Math.round(y/TH);
  789.     if(x>=map[0].length || y>=map.length || x<0 || y<0) return;
  790.     map[y]=map[y].substring(0,x)+" "+map[y].substring(x+1);
  791.     $("#T"+String(x)+"_"+String(y)).attr("class","").css("background","none");
  792. }
  793.  
  794. /******
  795.  *
  796.  * Carrega objetos, atores, cartas e elementos dinâmicos
  797.  *
  798.  */
  799. function loadObject(index,x,y)
  800. {
  801.     switch (index)
  802.     {
  803.         case "o": //Palyer
  804.             iniX=x;
  805.             iniY=y;
  806.             break;
  807.         case "M":
  808.             inimigos.push( new Char("morgerco",x,y, 1, [P+"animado_ani0475_b.gif"]) );
  809.             break;
  810.         case "A":
  811.             var aracne;
  812.             inimigos.push( aracne = new Char("Aracne",x,y, 4, [P+"aracne.gif"]));
  813.             aracne.tip = discurso.chars.aracne.tip;
  814.             aracne.count=20;
  815.             break;
  816.         case "a": // invertida
  817.             var aracne;
  818.             inimigos.push( aracne = new Char("Aracne",x,y, 4, [P+"aracne.gif"]));
  819.             aracne.tip = discurso.chars.aracne.tip;
  820.             aracne.count=0;
  821.             break;
  822.         case "1":
  823.             var c = new Char("Anjo",x,y, 1, [P+"animado_fanta0045.gif"]);
  824.             c.tip = discurso.chars.anjo.tip;
  825.             break;
  826.         case "2":
  827.             new Char("hp",x,y, 1, [P+"coracao.png"]);
  828.             break;
  829.         case "3":
  830.             new Char("mp",x,y, 1, [P+"mana.png"]);
  831.             break;
  832.         case "4":
  833.             var c = new Char("carta1",x,y, 1, [P+"carta1.png"]);
  834.             c.tip = discurso.chars.projAstral.tip;
  835.             break;
  836.         case "5":
  837.             var c = new Char("carta2",x,y, 1, [P+"carta2.png"]);
  838.             c.tip = discurso.chars.aliado.tip;
  839.             break;
  840.         case "6":
  841.             var c = new Char("carta3",x,y, 1, [P+"carta3.png"]);
  842.             c.tip = discurso.chars.bomba.tip;
  843.             break;
  844.         case "7":
  845.             var c = new Char("carta4",x,y, 1, [P+"carta.png"]);
  846.             break;
  847.         case "P":
  848.             var c = new Char("pena",x,y, 1, [P+"penadevacasagrada.png"]);
  849.             c.tip = discurso.chars.pena.tip;
  850.             break;
  851.     }
  852. }
  853.  
  854. function mountScene()
  855. {
  856.     var html = "<tbody>";
  857.     var tok = 0;
  858.     for(var lin=0; lin<map.length; lin++)
  859.     {
  860.         html += "<tr>"
  861.         for(var col=0; col<map[lin].length; col++)
  862.         {
  863.             tok = mapTokens.indexOf( map[lin].charAt(col) );
  864.             if (tok==-1)
  865.             {
  866.                 loadObject(map[lin].charAt(col), col,lin);
  867.                 tok = 0;
  868.             }
  869.             if (tok>0)
  870.                 html += '<td class="wwp_cg' + tok + '" id="T'+String(col)+"_"+String(lin)+'">&nbsp;</td>';
  871.             else
  872.                 html += '<td>&nbsp;</td>';
  873.             // casos especiais
  874.             if (tok==4)
  875.             {
  876.                 removeTileAt(col*TW, lin*TH, false);
  877.             }
  878.         }
  879.         html += '</tr>';
  880.     }
  881.     html += "</tbody>";
  882.     board.html(html);
  883.     $("#charlayer").width(map[0].length*TW).height(map.length*TH);
  884.    
  885.     player = new Char("Cibele",iniX,iniY, 2, [P+"cibele01.png",P+"cibele02.gif",P+"cibele04.png",P+"cibele05.png",P+"cibele06.gif",P+"cibele08.png",P+"cibele09.png"]);
  886. }
  887.  
  888. function mountEffects()
  889. {
  890.     var off = $("#gameboard").offset();
  891.     var layer = document.createElement("div");
  892.     layer.id="effectslayer";
  893.     document.body.appendChild(layer);
  894.     $(layer).css("top",off.top).css("left",off.left);
  895.    
  896.     var ef = document.createElement("img");
  897.     ef.id="asas";
  898.     ef.src=P+"asa01.gif";
  899.     ef.style.width=64;
  900.     ef.style.height=128;
  901.     //ef.style.display="none";
  902.     layer.appendChild(ef);
  903.     effects.push($(ef));
  904.     effects[0].hide();
  905. }
  906.  
  907. function animPlayer()
  908. {
  909.     var state=0;
  910.     var x=player.x;
  911.     var y=player.y;
  912.     var mx = x;
  913.     var my = y;
  914.     var tile=  [ tileAt(x,y), tileAt(x,y-TH) ];
  915.     if(right || jmp==3)
  916.     {
  917.         if(!jmp)
  918.         {
  919.             mx += SPD;
  920.             state=1;
  921.             cR=0;
  922.         } else if (jmp==3) mx += SPD;
  923.         // flip
  924.         if (!jmp || jmp==3)
  925.         {
  926.             $(player.img).css("-moz-transform","scaleX(-1)").css("-o-transform","scaleX(-1)").css("-webkit-transform","scaleX(-1)").css("transform","scaleX(-1)").css("filter","FlipH").css("-ms-filter","\"FlipH\"");
  927.             effects[0].css("-moz-transform","scaleX(-1)").css("-o-transform","scaleX(-1)").css("-webkit-transform","scaleX(-1)").css("transform","scaleX(-1)").css("filter","FlipH").css("-ms-filter","\"FlipH\"");
  928.             player.orientation = -1;
  929.         }
  930.     }
  931.     if(left  || jmp==2)
  932.     {
  933.         if(!jmp)
  934.         {
  935.             mx -= SPD;
  936.             state=1;
  937.             cL=0;
  938.         }  else if (jmp==2) mx -= SPD;
  939.         // unflip
  940.         if (!jmp || jmp==2)
  941.         {
  942.             $(player.img).css("-moz-transform","scaleX(1)").css("-o-transform","scaleX(1)").css("-webkit-transform","scaleX(1)").css("transform","scaleX(1)").css("filter","").css("-ms-filter","\"\"");
  943.             effects[0].css("-moz-transform","scaleX(1)").css("-o-transform","scaleX(1)").css("-webkit-transform","scaleX(1)").css("transform","scaleX(1)").css("filter","").css("-ms-filter","\"\"");
  944.             player.orientation = 1;
  945.         }
  946.     }
  947.     if(up)
  948.     {
  949.         state=0;
  950.         if( tile[1]==1 || fly) my -= SPD;
  951.     }
  952.     if(down)
  953.     {
  954.         state=0;
  955.         if(tile[0]==1 || fly) my += SPD;
  956.     }
  957.     if(spc && jmp==0)
  958.     {
  959.         player.g=-18;
  960.         jmp=1 + ((right) ? 2:0) + ((left) ? 1:0); // 2=left 3=right 1=stand
  961.     }
  962.    
  963.     if (!fly)
  964.     {
  965.         if (tile[0]!=1 && tile[1]!=1)
  966.         {
  967.             my += player.g += 2;//(G-player.g)*.3;
  968.             if (player.g>24)
  969.             {
  970.                 player.g=24;
  971.                 player.queda++;
  972.             } else player.queda=0;
  973.             //jmp=0;
  974.         } else {
  975.             if (jmp)// && !player.g)
  976.                 player.g=jmp=0;
  977.             if (up || down) state=4; else state=5;
  978.         }
  979.     }
  980.     //normalizadas
  981.     var nx= Math.round(mx/TW)*TW;
  982.     var ny= Math.round(my/TH)*TH;
  983.    
  984.     var bbox = new Box(mx,my-TH,TW,TH*2);
  985.    
  986.     var box = [false,false];
  987.     if(right==1)
  988.     {
  989.         box[0]= (tileAt(nx+TW,ny)>1) ? new Box(nx+TW,ny,TW,TH) : false;
  990.         if(bbox.rt>box[0].lf)
  991.         {
  992.             mx=box[0].lf-TW;
  993.             jmp=player.g=0;
  994.         }
  995.     }
  996.     else
  997.     {
  998.         box[0]= (tileAt(nx-TW,ny)>1) ? new Box(nx-TW,ny,TW,TH) : false;
  999.         if(bbox.lf<box[0].rt)
  1000.         {
  1001.             mx=box[0].rt;
  1002.             jmp=player.g=0;
  1003.         }
  1004.     }
  1005.     box[1]= (tileAt(nx,ny+TH)>1) ? new Box(nx,ny+TH,TW,TH) : false;
  1006.     if(bbox.bt>box[1].tp)
  1007.     {
  1008.         my=box[1].tp-TH;
  1009.         if(/*Math.round(player.g)==24*/ player.queda>3 && spec_corp==0)
  1010.         {
  1011.             var vqueda=20;
  1012.             if (player.queda>4) vqueda=40;
  1013.             if (player.queda>8) vqueda=80;
  1014.             player.fsm.hp -= vqueda;
  1015.             addEventBallon("<strong style=\"color:#f00\">-"+String(vqueda)+"&nbsp;HP</strong>",player.x+20,player.y-40);
  1016.         }
  1017.         jmp=player.g=0;
  1018.     }// else if (player.g>0 && !jmp) jmp=1;
  1019.    
  1020.     if(player.g<0) state=2; else if(player.g>0 && tile[0]!=1) state=3;
  1021.     if (fly)
  1022.     {
  1023.         state=6;
  1024.         effects[0].css("top",y-TH).css("left",x);
  1025.     }
  1026.    
  1027.     //debug[0].css("left",nx-TW).css("top",ny);
  1028.     //debug[1].css("left",nx).css("top",ny+TH);
  1029.     //debug[2].css("left",nx+TW).css("top",ny);
  1030.    
  1031.     //debug[0].css("left",box[0].lf).css("top",box[0].tp);
  1032.     //debug[1].css("left",box[1].lf).css("top",box[1].tp);
  1033.     //debug[2].css("left",bbox.lf).css("top",bbox.tp);
  1034.    
  1035.     var tile=  [ tileAt(nx,ny), tileAt(nx,ny-TH) ];
  1036.     if (tile[0]>1 || tile[1]>1)
  1037.     { //colisao
  1038.         x = Math.round(x/TW)*TW;
  1039.         y = Math.round(y/TH)*TH;
  1040.     } else {
  1041.         x = mx;
  1042.         y = my;
  1043.     }
  1044.  
  1045.     //position(player,x,y);
  1046.     player.position(x,y);
  1047.     if(player.state!=state)player.img.src=player.states[player.state=state];
  1048.        
  1049.     // -------------------------------------
  1050.     // colisao com atores
  1051.     // AJUSTA ACOES
  1052.     // -------------------------------------
  1053.     var arr = player.collision();
  1054.     //if (inColl==0)
  1055.     for (var i in arr)
  1056.     {
  1057.         var ob = arr[i];
  1058.         if (ob.nome=="Anjo") anjo_atuacao01(ob);
  1059.         else
  1060.         if (ob.nome=="hp") coracao_atuacao01(ob);
  1061.         else
  1062.         if (ob.nome=="mp") mana_atuacao01(ob);
  1063.         else
  1064.         if (ob.nome.substring(0,5)=="carta") carta_atuacao(ob);
  1065.         else
  1066.         if (ob.nome=="pena") pena_atuacao(ob);
  1067.         else
  1068.         if (!spec_corp)
  1069.             // se corpo astral nao ativo verifica colisao com inimigos
  1070.             if (ob.nome=="Aracne" || ob.nome=="morgerco") inimigo_atuacao(ob);
  1071.     }
  1072.  
  1073.     inColl=0;//arr.length;
  1074.    
  1075.    
  1076.    
  1077.  
  1078.    
  1079.     // dados hud
  1080.     if (player.fsm.hp>0)
  1081.     {
  1082.         hp.width( Math.round(158*player.fsm.hp*0.01) );
  1083.         mp.width( Math.round(158*player.fsm.mp*0.01) );
  1084.     } else {
  1085.         hp.width( 0 );
  1086.     }
  1087. }
  1088.  
  1089. var morteDiv=0;
  1090. function animMorte()
  1091. {
  1092.     if (!morteDiv)
  1093.     {
  1094.         morteDiv = $(document.createElement('img'));
  1095.         morteDiv.attr("src",P+"gameover.png").attr("class","rip");
  1096.         //try { swfsound.startSound( sound1 ); } catch (ex) { }
  1097.         playSound(1);
  1098.         $("#charlayer").append(morteDiv);
  1099.         $("#hud").css("display","none");
  1100.         $("#asas").remove();
  1101.         $("#game_return").hide();
  1102.     }
  1103.     var x = $("#charlayer").width()*.5 - 256;
  1104.    
  1105.     var wh = $(window).height();
  1106.     var top = $(window).scrollTop() - board.offset().top + (wh*0.5) -256;
  1107.     morteDiv.css("top", top).css("left",x);
  1108. }
  1109.  
  1110. var vitorDiv=0;
  1111. function animVitoria()
  1112. {
  1113.     if (!vitorDiv)
  1114.     {
  1115.         vitorDiv = $(document.createElement('img'));
  1116.         vitorDiv.attr("src",P+"vitoria.gif").attr("class","vit");
  1117.         //try { swfsound.startSound( sound1 ); } catch (ex) { }
  1118.         playSound(1);
  1119.         while (chars.length) { chars[0].remove(); chars.shift(); }
  1120.         $("#asas").remove();
  1121.         $("#charlayer").append(vitorDiv);
  1122.         $("#hud").css("display","none");
  1123.         $(window).scrollTop( $("#game_return").offset().top - $(window).height()+64 );
  1124.         $("#game_return").hide();
  1125.     }
  1126.     var x = $("#charlayer").width()*.5 - 256;
  1127.    
  1128.     var wh = $(window).height();
  1129.     var top = $(window).scrollTop() - board.offset().top + (wh*0.5) -256;
  1130.     vitorDiv.css("top",top).css("left",x);
  1131. }
  1132.  
  1133.  
  1134. function animInimigo()
  1135. {
  1136.     for(var i in inimigos)
  1137.     {
  1138.         var c = inimigos[i];
  1139.         var x;
  1140.         if (c.nome=="morgerco")
  1141.         {
  1142.             x = c.x-6;
  1143.             if (x<-TW) x = board.width()-6;
  1144.             c.position(x, c.y);
  1145.         } else
  1146.         if (c.nome=="Aracne")
  1147.         {
  1148.             c.count += c.orientation;
  1149.             x = c.x + 6*c.orientation;
  1150.             c.position(x,c.y);
  1151.             if (Math.abs(c.count)>20)
  1152.             {
  1153.                 c.orientation *= -1;
  1154.                 $(c.img).css("-moz-transform","scaleX("+-c.orientation+")").css("-o-transform","scaleX("+-c.orientation+")").css("-webkit-transform","scaleX("+-c.orientation+")").css("transform","scaleX("+-c.orientation+")").css("filter","").css("-ms-filter","\"\"");
  1155.             }
  1156.         }
  1157.     }
  1158. }
  1159.  
  1160. function animation()
  1161. {
  1162.     var nTime = new Date().getTime();
  1163.     var wh = $(window).height()/2;
  1164.    
  1165.    
  1166.     if(menu)
  1167.     {
  1168.         if (!showMenu)
  1169.         {
  1170.             mostraMenu();
  1171.             menu=0;
  1172.             showMenu=1;
  1173.         }
  1174.     }
  1175.    
  1176.     if(!showMenu)
  1177.     {
  1178.         if (vitoria) animVitoria();
  1179.         else
  1180.         {
  1181.             if (!pausa && !vitoria)
  1182.             {
  1183.                 if(player.fsm.hp>0) animPlayer();
  1184.                 animInimigo();
  1185.             } else {
  1186.                
  1187.             }
  1188.         }
  1189.     } else trataMenu();
  1190.     //animageBaloons();
  1191.     if (pausa || vitoria || player.fsm.hp<=0)
  1192.     {
  1193.          if (vitoria) animVitoria(); else if (player.fsm.hp<=0) animMorte();
  1194.     }
  1195.    
  1196.     for(var i in animationSet)
  1197.     {
  1198.         var f = animationSet[i];
  1199.         f();
  1200.     }
  1201.    
  1202.    
  1203.     if (!pausa && player.fsm.hp>0 && !vitoria)
  1204.     {
  1205.         var top = $(window).scrollTop();
  1206.         //var yDst = player.self.offset().top - wh + topOff;
  1207.         var wh = $(window).height();
  1208.         var yDst = player.self.offset().top + TH - wh*0.5;
  1209.         top += (yDst-top) *.3;
  1210.         $(window).scrollTop( top );
  1211.        
  1212.         var offB = board.offset();
  1213.         if (offB.top<top)
  1214.         {
  1215.             gameHUD.css("top",0);
  1216.         } else {
  1217.             gameHUD.css("top",offB.top-top);
  1218.         }
  1219.     }
  1220.     // usar setTimeout porque o IE é um lixo que dá pau com setInterval
  1221.     setTimeout("animation()", 50 + ((showMenu!=0) ? 50 : 0));
  1222. }
  1223.  
  1224.  
  1225. //38 up 40 down 39 right 37 left 32 spc 16 shift 17 ctrl
  1226. function kdown(e)
  1227. {
  1228.     if (pausa || player.fsm.hp<=0 || vitoria) return true;
  1229.     switch (e.keyCode)
  1230.     {
  1231.         case 37:
  1232.             if (!jmp) left=1;
  1233.             break;
  1234.         case 39:
  1235.             if (!jmp) right=1;
  1236.             break;
  1237.         case 38:
  1238.             up=1;
  1239.             break;
  1240.         case 40:
  1241.             down=1;
  1242.             break;
  1243.         case 32:
  1244.             spc=1;
  1245.             break;
  1246.         case 13:
  1247.             menu=1;
  1248.             break;
  1249.         default:
  1250.             return true;
  1251.     }
  1252.     return false;
  1253. }
  1254.  
  1255. function kup(e)
  1256. {
  1257.     if (pausa || player.fsm.hp<=0 || vitoria) return true;
  1258.     switch (e.keyCode)
  1259.     {
  1260.         case 37:
  1261.             left=0;
  1262.             break;
  1263.         case 39:
  1264.             right=0;
  1265.             break;
  1266.         case 38:
  1267.             up=0;
  1268.             break;
  1269.         case 40:
  1270.             down=0;
  1271.             break;
  1272.         case 32:
  1273.             spc=0;
  1274.             break;
  1275.         case 13:
  1276.             menu=0;
  1277.             break;
  1278.         default:
  1279.             return true;
  1280.     }
  1281.     return false;
  1282. }
  1283.  
  1284. function definicoes()
  1285. {
  1286.     ww = $(window).width();
  1287.     wh = $(window).height()/2;
  1288. }
  1289.  
  1290.  
  1291. function initAjuda()
  1292. {
  1293.     var ajuda = $("#ajuda");
  1294.     ajuda.mouseover( function() {$("#ajuda").height(512);} ).mouseout( function() {$("#ajuda").height(28);} );
  1295. }
  1296.  
  1297. var topOff=0;
  1298. function init()
  1299. {
  1300.     board=$("#gameboard");
  1301.     width=TW*map[0].length;
  1302.     height=TH*map.length;
  1303.     var charLayer = $("#charlayer");
  1304.     var off = board.offset();
  1305.     topOff = off.top - TH;
  1306.     charLayer.css("top",charLayer.offset().top-off.top);
  1307.     //charLayer.css("left",off.left-12);
  1308.     gameHUD = $("#hud");
  1309.     gameHUD.css("left",off.left).css("top",off.top);
  1310.     mp = $("#mp");
  1311.     hp = $("#hp");
  1312.    
  1313.     mountScene();
  1314.     mountEffects();
  1315.    
  1316.     offChars = charLayer.offset();
  1317.    
  1318.     definicoes();
  1319.    
  1320.     dica = $("#dica");
  1321.    
  1322.     // Inicializa player
  1323.     player.fsm.mp=0;
  1324.    
  1325.     /*for(var d=0;d<3;d++)
  1326.     {
  1327.         var db = document.createElement("div");
  1328.         db.className="debug";
  1329.         document.getElementById("charlayer").appendChild(db);
  1330.         debug.push($(db));
  1331.     }*/
  1332.    
  1333.     animation();
  1334.    
  1335.     $("#game_return").click( function() { if (!vitoria) pausa=0;} );
  1336.  
  1337.     var flashvars = {};
  1338.     var params = { allowscriptaccess:"always"};
  1339.     var attributes = {};
  1340.     //swfobject.embedSWF(P+"gamesounds.swf", "gamesounds", "0", "0", "9");
  1341.    
  1342.     initAjuda();
  1343.     extraInit();
  1344. }
  1345.  
  1346. //var debug=[];
  1347. var vitoria=0;
  1348. var pausa=0;
  1349. var player;
  1350. var chars=[];
  1351. var inimigos=[];
  1352. var effects=[];
  1353. var iniX,iniY;
  1354. var TW=64;
  1355. var TH=64;
  1356. var SPD=8;
  1357. var inColl=0;
  1358. var fly=0;
  1359. var showMenu=0;
  1360. var menu=0;
  1361. var magia=0;
  1362. var offChars;
  1363. var width=0;
  1364. var height=0;
  1365. var hp;
  1366. var mp;
  1367. var cL=0;
  1368. var cR=0;
  1369. var left=0;
  1370. var right=0;
  1371. var down=0;
  1372. var up=0;
  1373. var spc=0;
  1374. var ctrl=0;
  1375. var shift=0;
  1376. var jmp=0;
  1377. var gameHUD=0;
  1378. var oldTime=new Date().getTime();
  1379. var dica;
  1380. var mapTokens=" #=@%";
  1381. var map= [
  1382. "@@   #    ",
  1383. "@@  3#    ",
  1384. "@@ 3 #  o ",
  1385. "=====#====",
  1386. "  P @#    ",
  1387. "    @#   #",
  1388. "    @#  @#",
  1389. "    @# @@#", // Aqui o jogador sofre até ver que
  1390. "  =======#", // não consegue pegar a pena de vaca
  1391. "  =      #",
  1392. "  =6 A   #",
  1393. "  @======#",
  1394. " 24      #",
  1395. "         #",
  1396. "2 2     2#", // talves ele cometa o erro de pular
  1397. "===== ====", // e ver que deixou ítens.
  1398. "    =     ", // TODO: resolver com testes?
  1399. "    = M #5",
  1400. " 2      #=",
  1401. "2 3     #=", // HP extra para compensar a queda
  1402. "========#@",
  1403. "  @     #@",
  1404. "# @ 3 3 #@", // aqui ele usa a primeira bomba
  1405. "#=@===@===",
  1406. "#         ", // média de MP = 10
  1407. "#   @M   5",
  1408. "#        @",
  1409. "#=    @@3@",
  1410. "#    =====",
  1411. "#  @==  3 ",
  1412. "#         ",
  1413. "==   3   6",
  1414. "==  @==  @",
  1415. "6#=      =",
  1416. " # =  3 ==",
  1417. "=#  ==#===",
  1418. " #    # M ", // aqui ele é obrigado a usar a arma
  1419. " # 3  #  3", // para matar o morcego e poder disparar
  1420. "==========", // a bomba
  1421. "@#  M    3",
  1422. "@#   2 M  ", // MP pode estar baixo, para passar o
  1423. "@# 3   3==", // morcego ele deve contar com o HP
  1424. "6===== =  ",
  1425. "M    @3   ", // fartura de MP para deixar o jogador
  1426. "2  # @ 3 2", // sabendo que aqui vai dar merda!
  1427. "===#M===33",
  1428. "  3#  3M==",
  1429. "233# 3 3 @",//
  1430. "3=========",
  1431. "=  #      ",
  1432. "=  #  2 22", // muita HP pra recarregar...
  1433. "==== =====",
  1434. "          ",
  1435. "  a    A  ",// indica q a coisa ta fudida.
  1436. "====%=====",
  1437. " 3@     # ",
  1438. " 3@ 2 2 #5",
  1439. " 3@=====# ",
  1440. " 3   M  # ",
  1441. "        # ",
  1442. "        # ",
  1443. " 1   @  # ",
  1444. "   @@@@ # ",
  1445. "=========="
  1446. ];
  1447.  
  1448. var board;
  1449. var sound1,sound2,sound3,sound4,sound5,sound6;
  1450.  
  1451. /***
  1452.  * Implementação tosca de som
  1453.  **/
  1454.  
  1455. function playSound(n)
  1456. {
  1457.     try { // som
  1458.         switch(n)
  1459.         {
  1460.             case 1:
  1461.                 sound1.play();
  1462.                 break;
  1463.             case 2:
  1464.                 sound2.play();
  1465.                 break;
  1466.             case 3:
  1467.                 sound3.play();
  1468.                 break;
  1469.             case 4:
  1470.                 sound4.play();
  1471.                 break;
  1472.             case 5:
  1473.                 sound5.play();
  1474.                 break;
  1475.             case 6:
  1476.                 sound6.play();
  1477.                 break;
  1478.         }
  1479.     } catch (e) {}
  1480. }
  1481.  
  1482. // inicializa
  1483. $(document).ready(init).keydown(kdown).keyup(kup);
  1484.  
  1485.  
  1486. var P="<%= root_url %>rc/gameplat1/";
  1487.  
  1488. function extraInit()
  1489. {
  1490.     // emenda para fazer funcionar os tiles incorporando a javascript
  1491.     // não sera usado no ambiente Lua
  1492.     $("#gameboard .wwp_cg1").each( function() { $(this).css("background","url("+P+"tile01.png)"); } );
  1493.     $("#gameboard .wwp_cg2").each( function() { $(this).css("background","url("+P+"tile02.png)"); } );
  1494.     $("#gameboard .wwp_cg3").each( function() { $(this).css("background","url("+P+"tile03.png)"); } );
  1495.     $("#gameboard .wwp_cg4").each( function() { $(this).css("background","url("+P+"tile04.png)"); } );
  1496.    
  1497.     sound1 = document.getElementById("gsound1");
  1498.     sound2 = document.getElementById("gsound2");
  1499.     sound3 = document.getElementById("gsound3");
  1500.     sound4 = document.getElementById("gsound4");
  1501.     sound5 = document.getElementById("gsound5");
  1502.     sound6 = document.getElementById("gsound6");
  1503. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement