Beispiel #1
0
    public void aplicaGolpe(Criature daki)
    {
        golpe G = daki.Golpes[daki.golpeEscolhido];

        System.GC.Collect();
        Resources.UnloadUnusedAssets();

/*
 *              print(G.UltimoUso+" : "+ Time.time+" : "+heroi.tempoNoJogo+" : "+G.TempoReuso);
 *
 *              print(G.UltimoUso < Time.time -  G.TempoReuso);
 */
        if (G.UltimoUso < Time.time - G.TempoReuso)
        {
            daki.cAtributos[1].Corrente -= daki.Golpes[daki.golpeEscolhido].CustoPE;

            G.UltimoUso = Time.time;
            acaoDeGolpe acao = gameObject.AddComponent <acaoDeGolpe> ();
            acao.ativa = G;
            //acao.emissor = emissor;
        }
        else if (gameObject.GetComponent <movimentoBasico>())
        {
            mensagemEmLuta mL = GetComponent <mensagemEmLuta>();
            if (mL)
            {
                mL.fechador();
            }
            mL          = gameObject.AddComponent <mensagemEmLuta>();
            mL.mensagem = string.Format(textos[1], mostradorDeTempo(G.UltimoUso - (Time.time - G.TempoReuso)));
        }
    }
Beispiel #2
0
 void aprendizadoDeGolpe(nivelGolpe novoGolpe)
 {
     golpeAprendido = new pegaUmGolpe(novoGolpe.nome).OGolpe();
     if (fim.vencedor.Golpes.Length < 4)
     {
         List <golpe> G = new List <golpe>();
         G.AddRange(fim.vencedor.Golpes);
         G.Add(new pegaUmGolpe(novoGolpe.nome).OGolpe());
         G[G.Count - 1].Basico   += (uint)novoGolpe.mod;
         G[G.Count - 1].Corrente += (uint)novoGolpe.mod;
         G[G.Count - 1].Maximo   += (uint)(2 * novoGolpe.mod);
         fim.vencedor.Golpes      = G.ToArray();
         fim.conteudo             = "aprendeuEsse";
         fim.aprendeuEsse         = G[G.Count - 1];
         Invoke("aprendeuGolpe", 0.15f);
         fim.entrando        = false;
         passoDaAnimaInicial = 0;
     }
     else
     {
         fim.conteudo     = "podeAprender";
         fim.aprendeuEsse = golpeAprendido;
         Invoke("podeAprenderEsse", 0.15f);
         fim.entrando        = false;
         passoDaAnimaInicial = 0;
     }
 }
Beispiel #3
0
    public static Vector3 useOEmissor(Criature Y, golpe G, Transform T)
    {
        float maisEmissao = 0;
        float acimaDoChao = 0;

        if (Y.distanciaEmissora != null)
        {
            if (Y.distanciaEmissora.ContainsKey(G.nomeID))
            {
                maisEmissao = Y.distanciaEmissora[G.nomeID];
            }
        }

        if (Y.acimaDoChao != null)
        {
            if (Y.acimaDoChao.ContainsKey(G.nomeID))
            {
                acimaDoChao = Y.acimaDoChao[G.nomeID];
            }
        }

        Vector3 posInicial = T.Find(Y.emissor).position
                             + T.forward * (G.DistanciaDeEmissao + maisEmissao)
                             + Vector3.up * acimaDoChao;

        return(posInicial);
    }
Beispiel #4
0
    public static void aplicaStatus(Transform T,Criature X,golpe ativa,Criature Y)
    {
        int numStatus;

        switch(ativa.nomeID)
        {
        case nomesGolpes.agulhaVenenosa:
        case nomesGolpes.ondaVenenosa:
        case nomesGolpes.chuvaVenenosa:
            if(recebeStatus(X,ativa,Y))
            {
                envenenado e;
                numStatus = statusTemporarioBase.contemStatus(tipoStatus.envenenado,X);
                if(numStatus==-1)
                {
                    e = T.gameObject.AddComponent<envenenado>();
                    e.forcaDoDano = 2;
                }else
                {
                    e = T.GetComponent<envenenado>();
                    e.forcaDoDano++;
                    e.tempoAteOProximoApply*=(14f/15f);
                    X.statusTemporarios[numStatus].forcaDoDano++;
                    X.statusTemporarios[numStatus].tempoAteOProximoApply*=(14f/15f);
                }
            }
        break;
        case nomesGolpes.olharMal:
            amedrontado a;
            numStatus = statusTemporarioBase.contemStatus(tipoStatus.amedrontado,X);
            if(numStatus == -1)
            {
             	a = T.gameObject.AddComponent<amedrontado>();
                a.tempoAteOProximoApply = 37;
                a.oAfetado = X;
            }else
            {
                a = T.GetComponent<amedrontado>();
                a.tempoAteOProximoApply += 36;
            }
        break;
        case nomesGolpes.olharParalisante:
            print("aqyui");
            paralisado p;
            numStatus = statusTemporarioBase.contemStatus(tipoStatus.paralisado,X);
            if(numStatus == -1)
            {
                p = T.gameObject.AddComponent<paralisado>();
                p.tempoAteOProximoApply = 30;
                p.oAfetado = X;
            }else
            {
                p = T.GetComponent<paralisado>();
                p.tempoAteOProximoApply += 25;
            }
            break;
        }
    }
Beispiel #5
0
 public static string nomeEmLinguas(golpe nomeGolpe)
 {
     //		Debug.Log(itemX.ID);
     if (heroi.lingua != "pt-br")
     {
         return(bancoDeTextos.falacoes[heroi.lingua]["listaDeGolpes"][(int)nomeGolpe.nomeID]);
     }
     else
     {
         return(nomeGolpe.Nome);
     }
 }
Beispiel #6
0
    public static Vector3 ataqueEmissor(
        movimentoBasico mB,
        IA_inimigo IA,
        Transform T,
        out Vector3 posInicial,
        Animator A, golpe G, Criature Y)
    {
        acaoDeGolpeRegenerate.paraliseNoTempo(mB, IA);
        Vector3 forwardInicial = T.forward;

        posInicial = useOEmissor(Y, G, T);
        acaoDeGolpeRegenerate.anime("emissor", A);
        return(forwardInicial);
    }
Beispiel #7
0
    public static void ColocaAddView(
        Vector3 posInicial, Vector3 forwardInicial, Criature Y, golpe G, Transform T,
        string tipo, float tempoDeAtraso, acaoDeGolpe aG, string nomeProjetil, float velocidade,
        string impacto = "impactoComum", float tempoDeGolpe = 10, float tempoDeScript = 2)
    {
        if (tempoDeAtraso > 0)
        {
            useOEmissor(Y, G, T);
        }
        GameObject KY = aG.instancieEDestrua(posInicial, forwardInicial, nomeProjetil, tempoDeGolpe, tempoDeScript);


        Iprojetil proj = null;

        switch (tipo)
        {
        case "rigido":
            proj = KY.AddComponent <projetilRigido>();
            break;

        case "basico":
            proj = KY.AddComponent <projetil>();
            break;

        case "status":
            proj = KY.AddComponent <projetilStatusExpansivel>();
            break;

        case "direcional":
            projetilDirecional projD = KY.AddComponent <projetilDirecional>();
            projD.alvo = (aG.gameObject.name == "inimigo")?GameObject.Find("CriatureAtivo"):GameObject.Find("inimigo");
            proj       = projD;
            break;
        }

        proj.velocidadeProjetil = velocidade;
        proj.noImpacto          = impacto;
        proj.dono = aG.gameObject;
    }
    protected golpe[] golpesAtivos(uint nivel, nivelGolpe[] listaGolpes)
    {
        List <nivelGolpe> L = new List <nivelGolpe> ();
        int i = 0;

        //int N = -1;
        while (i < listaGolpes.Length)
        {
            if (listaGolpes[i].nivel <= nivel && listaGolpes[i].nivel > -1)
            {
                if (L.Count < 4)
                {
                    L.Add(listaGolpes[i]);
                }
                else
                {
                    L[0] = L[1];
                    L[1] = L[2];
                    L[2] = L[3];
                    L[3] = listaGolpes[i];
                }
            }
            i++;
        }

        golpe[] Y = new golpe[L.Count];
        for (i = 0; i < L.Count; i++)
        {
            Y[i]           = new pegaUmGolpe(L[i].nome).OGolpe();
            Y[i].taxaDeUso = L[i].taxaDeUso;
            Y[i].mod       = L[i].mod;
        }



        return(Y);
    }
Beispiel #9
0
    // Update is called once per frame
    protected void Update()
    {
        if (!pausaJogo.pause)
        {
            coolDown -= Time.deltaTime;


            if (alvo != null
                &&
                podeAtualizar
                &&
                coolDown < 0
                &&
                C.cAtributos[0].Corrente > 0
                &&
                (
                    noChao(C.distanciaFundamentadora + 0.5f)
                    ||
                    C.Golpes[C.golpeEscolhido].CaracGolpe == caracGolpe.colisaoComPow
                    ||
                    C.Golpes[C.golpeEscolhido].CaracGolpe == caracGolpe.colisao)
                )
            {
                if (criatureAlvo.cAtributos[0].Corrente > 0)
                {
                    golpe GG = C.Golpes[C.golpeEscolhido];
                    //print(GG.CaracGolpe+" : "+GG.Nome);
                    if (GG.CaracGolpe == caracGolpe.colisao)
                    {
                        if (statusTemporarioBase.contemStatus(tipoStatus.amedrontado, C) > -1)
                        {
                            afastamento();
                        }
                        else
                        //print((alvo.position-transform.position).magnitude+" : "+(GG.tempoMoveMax-GG.tempoMoveMin));
                        if ((alvo.position - transform.position).magnitude
                            >
                            18f * (GG.tempoMoveMax - GG.tempoMoveMin)
                            )
                        {
                            retornaOMovimento();
                        }
                        else
                        {
                            if (siga != null)
                            {
                                siga.enabled = false;
                                if (nav == null)
                                {
                                    nav = GetComponent <NavMeshAgent>();
                                }

                                nav.enabled = false;

                                animator.SetFloat("velocidade", 0);
                            }

                            disparador();
                        }
                    }
                    else
                    {
                        disparador();
                    }
                }
            }
            else if (C.cAtributos[0].Corrente <= 0 && GameObject.Find("CriatureAtivo"))
            {
                paraMovimento();
                animator.CrossFade("cair", 0);
            }
            else if (!podeAtualizar)           // essas linhas estavam comentadas, descomentei para corrigir o Bug que fazia
            {
                paraMovimento();               // o inimigo atacar mesmo tomando dano (nao sei se contribuiu para a soluçao)
            }
            else if (GameObject.Find("CriatureAtivo"))
            {
                defineAlvo();
            }
        }
    }
Beispiel #10
0
    static bool recebeStatus(Criature X/*O que recebe o Status*/,golpe ativa,Criature Y)
    {
        bool retorno = false;
        switch(ativa.nomeID)
        {
        case nomesGolpes.agulhaVenenosa:
        case nomesGolpes.ondaVenenosa:
        case nomesGolpes.chuvaVenenosa:
            float ff = ativa.Corrente*
                Mathf.Max(1,
                          Random.Range(0.75f,1f)*Y.cAtributos[(int)nomesAtributos.Poder].Corrente-
                          Random.Range(0,0.75f)*X.cAtributos[(int)nomesAtributos.Defesa].Corrente);
            if(X.contraTipos[(int)nomeTipos.Veneno].Mod*ff+Random.Range(0,100)>80)
                retorno = true;
        break;
        }

        return retorno;
    }
Beispiel #11
0
    protected golpe[] golpesAtivos(uint nivel,nivelGolpe[] listaGolpes)
    {
        List<nivelGolpe> L = new List<nivelGolpe> ();
        int i = 0;
        //int N = -1;
        while(i<listaGolpes.Length)
        {
            if(listaGolpes[i].nivel<=nivel && listaGolpes[i].nivel>-1){
                if(L.Count<4)
                    L.Add(listaGolpes[i]);
                else
                {
                    L[0] = L[1];
                    L[1] = L[2];
                    L[2] = L[3];
                    L[3] = listaGolpes[i];
                }
            }
            i++;
        }

        golpe[] Y = new golpe[L.Count];
        for(i = 0;i<L.Count;i++)
        {
            Y[i] = new pegaUmGolpe(L[i].nome).OGolpe();
            Y[i].taxaDeUso = L[i].taxaDeUso;
            Y[i].mod = L[i].mod;
        }

        return Y;
    }
Beispiel #12
0
    public pegaUmGolpe(nomesGolpes nome)
    {
        switch(nome)
        {
        case nomesGolpes.rajadaDeAgua:
            G = new rajadaDeAgua();
        break;
        case nomesGolpes.turboDeAgua:
            G = new turboDeAgua();
        break;
        case nomesGolpes.bolaDeFogo:
            G = new bolaDeFogo();
        break;
        case nomesGolpes.rajadaDeFogo:
            G = new rajadaDeFogo();
        break;
        case nomesGolpes.laminaDeFolha:
            G = new laminaDeFolha();
        break;
        case nomesGolpes.furacaoDeFolhas:
            G = new furacaoDeFolhas();
        break;
        case nomesGolpes.chifre:
            G = new Chifre();
        break;
        case nomesGolpes.tapa:
            G = new tapa();
        break;
        case nomesGolpes.garra:
            G = new garra();
        break;
        case nomesGolpes.chicoteDeMao:
            G = new chicoteDeMao();
        break;
        case nomesGolpes.dentada:
            G = new dentada();
        break;
        case nomesGolpes.bico:
            G = new bico();
        break;
        case nomesGolpes.ventania:
            G = new ventania();
        break;
        case nomesGolpes.ventosCortantes:
            G = new ventosCortantes();
        break;
        case nomesGolpes.gosmaDeInseto:
            G = new gosmaDeInseto();
        break;
        case nomesGolpes.gosmaAcida:
            G = new gosmaAcida();
        break;
        case nomesGolpes.chicoteDeCalda:
            G = new chicoteDeCalda();
        break;
        case nomesGolpes.cabecada:
            G = new cabecada();
        break;
        case nomesGolpes.eletricidade:
            G = new eletricidade();
        break;
        case nomesGolpes.eletricidadeConcentrada:
            G = new eletricidadeConcentrada();
        break;
        case nomesGolpes.agulhaVenenosa:
            G = new agulhaVenenosa();
        break;
        case nomesGolpes.ondaVenenosa:
            G = new ondaVenenosa();
        break;
        case nomesGolpes.chute:
            G = new chute();
        break;
        case nomesGolpes.espada:
            G = new espada();
        break;
        case nomesGolpes.sobreSalto:
            G = new sobreSalto();
        break;
        case nomesGolpes.cascalho:
            G = new cascalho();
        break;
        case nomesGolpes.pedregulho:
            G = new pedregulho();
        break;
        case nomesGolpes.rajadaDeTerra:
            G = new rajadaDeTerra();
        break;
        case nomesGolpes.energiaDeGarras:
            G = new energiaDeGarras();
        break;
        case nomesGolpes.vingancaDaTerra:
            G = new vingancaDaTerra();
        break;
        case nomesGolpes.psicose:
            G = new psicose();
        break;
        case nomesGolpes.hidroBomba:
            G = new hidroBomba();
        break;
        case nomesGolpes.bolaPsiquica:
            G = new bolaPsiquica();
        break;
        case nomesGolpes.tosteAtaque:
            G = new tosteAtaque();
        break;
        case nomesGolpes.tempestadeDeFolhas:
            G = new tempestadeDeFolhas();
        break;
        case nomesGolpes.chuvaVenenosa:
            G = new chuvaVenenosa();
        break;
        case nomesGolpes.multiplicar:
            G = new multiplicar();
        break;
        case nomesGolpes.tempestadeEletrica:
            G = new tempestadeEletrica();
        break;
        case nomesGolpes.avalanche:
            G = new Avalanche();
        break;
        case nomesGolpes.olharMal:
            G = new olharMal();
        break;
        case nomesGolpes.anelDoOlhar:
            G = new anelDoOlhar();
        break;
        case nomesGolpes.cortinaDeTerra:
            G = new cortinaDeTerra();
        break;
        case nomesGolpes.teletransporte:
            G = new Teletransporte();
        break;
        case nomesGolpes.olharParalisante:
            G = new olharParalisante();
        break;
        case nomesGolpes.sobreVoo:
            G = new sobreVoo();
        break;
        case nomesGolpes.bombaDeGas:
            G = new bombaDeGas();
        break;
        case nomesGolpes.rajadaDeGas:
            G = new rajadaDeGas();
        break;
        case nomesGolpes.cortinaDeFumaca:
            G = new cortinaDeFumaca();
        break;
        case nomesGolpes.bastao:
            G = new bastao();
        break;
        case nomesGolpes.sabreDeAsa:
            G = new sabre();
            G.Nome = "Sabre de Asa";
        break;
        case nomesGolpes.sabreDeNadadeira:
            G = new sabre();
            G.Nome = "Sabre de Nadadeira";
        break;
        case nomesGolpes.sabreDeEspada:
            G = new sabre();
            G.Nome = "Sabre de Espada";
        break;
        case nomesGolpes.sabreDeBastao:
            G = new sabre();
            G.Nome = "Sabre de Bastao";
        break;
        case nomesGolpes.nulo:
        case nomesGolpes.cancelado:
            G = new golpe();
        break;
        }

        G.nomeID = nome;
        G.TempoReuso = Mathf.Max(2.5f,G.TempoReuso);
    }
Beispiel #13
0
    void aprendizadoDeGolpe(nivelGolpe novoGolpe)
    {
        golpeAprendido = new pegaUmGolpe(novoGolpe.nome).OGolpe();
        if(fim.vencedor.Golpes.Length< 4)
        {
            List<golpe> G = new List<golpe>();
            G.AddRange(fim.vencedor.Golpes);
            G.Add(new pegaUmGolpe(novoGolpe.nome).OGolpe());
            G[G.Count-1].Basico += (uint)novoGolpe.mod;
            G[G.Count-1].Corrente += (uint)novoGolpe.mod;
            G[G.Count-1].Maximo += (uint)(2*novoGolpe.mod);
            fim.vencedor.Golpes = G.ToArray();
            fim.conteudo = "aprendeuEsse";
            fim.aprendeuEsse = G[G.Count-1];
            Invoke("aprendeuGolpe",0.15f);
            fim.entrando = false;
            passoDaAnimaInicial = 0;
        }else
        {

            fim.conteudo = "podeAprender";
            fim.aprendeuEsse = golpeAprendido;
            Invoke("podeAprenderEsse",0.15f);
            fim.entrando = false;
            passoDaAnimaInicial = 0;
        }
    }
Beispiel #14
0
    public pegaUmGolpe(nomesGolpes nome)
    {
        switch (nome)
        {
        case nomesGolpes.rajadaDeAgua:
            G = new rajadaDeAgua();
            break;

        case nomesGolpes.turboDeAgua:
            G = new turboDeAgua();
            break;

        case nomesGolpes.bolaDeFogo:
            G = new bolaDeFogo();
            break;

        case nomesGolpes.rajadaDeFogo:
            G = new rajadaDeFogo();
            break;

        case nomesGolpes.laminaDeFolha:
            G = new laminaDeFolha();
            break;

        case nomesGolpes.furacaoDeFolhas:
            G = new furacaoDeFolhas();
            break;

        case nomesGolpes.chifre:
            G = new Chifre();
            break;

        case nomesGolpes.tapa:
            G = new tapa();
            break;

        case nomesGolpes.garra:
            G = new garra();
            break;

        case nomesGolpes.chicoteDeMao:
            G = new chicoteDeMao();
            break;

        case nomesGolpes.dentada:
            G = new dentada();
            break;

        case nomesGolpes.bico:
            G = new bico();
            break;

        case nomesGolpes.ventania:
            G = new ventania();
            break;

        case nomesGolpes.ventosCortantes:
            G = new ventosCortantes();
            break;

        case nomesGolpes.gosmaDeInseto:
            G = new gosmaDeInseto();
            break;

        case nomesGolpes.gosmaAcida:
            G = new gosmaAcida();
            break;

        case nomesGolpes.chicoteDeCalda:
            G = new chicoteDeCalda();
            break;

        case nomesGolpes.cabecada:
            G = new cabecada();
            break;

        case nomesGolpes.eletricidade:
            G = new eletricidade();
            break;

        case nomesGolpes.eletricidadeConcentrada:
            G = new eletricidadeConcentrada();
            break;

        case nomesGolpes.agulhaVenenosa:
            G = new agulhaVenenosa();
            break;

        case nomesGolpes.ondaVenenosa:
            G = new ondaVenenosa();
            break;

        case nomesGolpes.chute:
            G = new chute();
            break;

        case nomesGolpes.espada:
            G = new espada();
            break;

        case nomesGolpes.sobreSalto:
            G = new sobreSalto();
            break;

        case nomesGolpes.cascalho:
            G = new cascalho();
            break;

        case nomesGolpes.pedregulho:
            G = new pedregulho();
            break;

        case nomesGolpes.rajadaDeTerra:
            G = new rajadaDeTerra();
            break;

        case nomesGolpes.energiaDeGarras:
            G = new energiaDeGarras();
            break;

        case nomesGolpes.vingancaDaTerra:
            G = new vingancaDaTerra();
            break;

        case nomesGolpes.psicose:
            G = new psicose();
            break;

        case nomesGolpes.hidroBomba:
            G = new hidroBomba();
            break;

        case nomesGolpes.bolaPsiquica:
            G = new bolaPsiquica();
            break;

        case nomesGolpes.tosteAtaque:
            G = new tosteAtaque();
            break;

        case nomesGolpes.tempestadeDeFolhas:
            G = new tempestadeDeFolhas();
            break;

        case nomesGolpes.chuvaVenenosa:
            G = new chuvaVenenosa();
            break;

        case nomesGolpes.multiplicar:
            G = new multiplicar();
            break;

        case nomesGolpes.tempestadeEletrica:
            G = new tempestadeEletrica();
            break;

        case nomesGolpes.avalanche:
            G = new Avalanche();
            break;

        case nomesGolpes.olharMal:
            G = new olharMal();
            break;

        case nomesGolpes.anelDoOlhar:
            G = new anelDoOlhar();
            break;

        case nomesGolpes.cortinaDeTerra:
            G = new cortinaDeTerra();
            break;

        case nomesGolpes.teletransporte:
            G = new Teletransporte();
            break;

        case nomesGolpes.olharParalisante:
            G = new olharParalisante();
            break;

        case nomesGolpes.sobreVoo:
            G = new sobreVoo();
            break;

        case nomesGolpes.bombaDeGas:
            G = new bombaDeGas();
            break;

        case nomesGolpes.rajadaDeGas:
            G = new rajadaDeGas();
            break;

        case nomesGolpes.cortinaDeFumaca:
            G = new cortinaDeFumaca();
            break;

        case nomesGolpes.bastao:
            G = new bastao();
            break;

        case nomesGolpes.sabreDeAsa:
            G      = new sabre();
            G.Nome = "Sabre de Asa";
            break;

        case nomesGolpes.sabreDeNadadeira:
            G      = new sabre();
            G.Nome = "Sabre de Nadadeira";
            break;

        case nomesGolpes.sabreDeEspada:
            G      = new sabre();
            G.Nome = "Sabre de Espada";
            break;

        case nomesGolpes.sabreDeBastao:
            G      = new sabre();
            G.Nome = "Sabre de Bastao";
            break;

        case nomesGolpes.nulo:
        case nomesGolpes.cancelado:
            G = new golpe();
            break;
        }

        G.nomeID     = nome;
        G.TempoReuso = Mathf.Max(2.5f, G.TempoReuso);
    }