コード例 #1
0
ファイル: DamageManager.cs プロジェクト: fayvit/CustomChar
        public static void AplicaDano(PetManager doAtacado, GameObject atacante, PetAttackBase golpe)
        {
            //Animator animatorDoAtacado = doAtacado.GetComponent<Animator>();
            //EmEstadoDeDano(animatorDoAtacado, doAtacado);

            CalculaDano(doAtacado, atacante, golpe);

            InsereEstouEmDano(doAtacado.gameObject, golpe, atacante);

            VerificaVida(atacante, doAtacado);
        }
コード例 #2
0
        public static void ConfigureCriatureBase(GameObject G, PetBase cBase, Transform dono)
        {
            G.name = "CriatureAtivo";
            PetManager Cc = G.GetComponent <PetManager>();

            MonoBehaviour.Destroy(Cc);
            PetManagerCharacter C = G.AddComponent <PetManagerCharacter>();

            C.T_Dono          = dono;
            C.MeuCriatureBase = cBase;

            //RecolocadorDeStatus.VerificaInsereParticulaDeStatus(C);
        }
コード例 #3
0
        public static PetManager ConfigureCriatureBase(GameObject G, PetBase cBase)
        {
            string s = System.Guid.NewGuid().ToString();

            G.name = "Enemy: " + s.Substring(0, 7);
            PetManager Cc = G.GetComponent <PetManager>();

            MonoBehaviour.Destroy(Cc);
            PetManagerEnemy C = G.AddComponent <PetManagerEnemy>();

            C.MeuCriatureBase = cBase;

            return(C);

            //RecolocadorDeStatus.VerificaInsereParticulaDeStatus(C);
        }
コード例 #4
0
ファイル: DamageManager.cs プロジェクト: fayvit/CustomChar
        static void AplicaCalculoComVIsaoDeDano(PetManager doAtacado,
                                                PetAttackBase golpe,
                                                PetAtributes aDoAtacado,
                                                float multiplicador,
                                                int dano,
                                                int defesa,
                                                int potenciaDoAtacante)
        {
            AplicaCalculoDoDano(aDoAtacado, dano);

            Debug.Log("O dano do Golpe e " + dano + " O nome do golpe e " + golpe.Nome + " o multiplicador e" + multiplicador
                      + " A defesa do inimigo é " + defesa
                      + " A potencia original é " + potenciaDoAtacante
                      + " A potencia do Golpe é " + golpe.PotenciaCorrente);

            AplicaVisaoDeDano(doAtacado, dano, multiplicador);
        }
コード例 #5
0
        protected void IniciaUsoDesseItem(GameObject dono, bool podeUsar, bool temTipo = true, NomeTipos nomeDoTipo = NomeTipos.nulo)
        {
            //Manager = GameController.g.Manager;
            CriatureAlvoDoItem = dono.GetComponent <CharacterManager>().ActivePet;
            Transform pet = CriatureAlvoDoItem.transform;

            if (podeUsar && temTipo && RetirarUmItem(Lista, this, 1))
            {
                //GameController.g.HudM.ModoCriature(false);
                InicializacaoComum(dono, pet);
                Estado = ItemUseState.animandoBraco;
            }
            else
            {
                Estado = ItemUseState.finalizaUsaItem;
                if (!temTipo)
                {
                    Debug.LogError("Uma mensagem de não tem tipo");

                    MessageAgregator <MsgRequestRapidInfo> .Publish(new MsgRequestRapidInfo()
                    {
                        message = string.Format(TextBank.RetornaFraseDoIdioma(TextKey.itens),
                                                "<color = orange>" + nomeDoTipo + "</color>")
                    });

                    //GameController.g.HudM.Painel.AtivarNovaMens(string.Format(
                    //   BancoDeTextos.RetornaListaDeTextoDoIdioma(ChaveDeTexto.itens)[3], nomeDoTipo), 30, 5);
                }
                else if (!podeUsar)
                {
                    Debug.LogError("Uma mensagem de não pode usar");

                    MessageAgregator <MsgRequestRapidInfo> .Publish(new MsgRequestRapidInfo()
                    {
                        message = string.Format(TextBank.RetornaListaDeTextoDoIdioma(TextKey.mensLuta)[2],
                                                CriatureAlvoDoItem.MeuCriatureBase.GetNomeEmLinguas
                                                )
                    });

                    //GameController.g.HudM.Painel.AtivarNovaMens(string.Format(
                    //BancoDeTextos.RetornaListaDeTextoDoIdioma(ChaveDeTexto.mensLuta)[2],
                    //    CriatureAlvoDoItem.MeuCriatureBase.NomeEmLinguas), 30, 5);
                }
            }
        }
コード例 #6
0
ファイル: DamageManager.cs プロジェクト: fayvit/CustomChar
        public static void VerificaDano(GameObject atacado, GameObject atacante, PetAttackBase golpe)
        {
            if (atacado.tag == "eventoComGolpe" /*&& !GameController.g.estaEmLuta*/)
            {
                Debug.LogWarning("Evento com golpe removido, necessário refazer, condicional de esta em luta removido");
                //atacado.GetComponent<EventoComGolpe>().DisparaEvento(golpe.Nome);
            }

            PetManager GdC = atacado.GetComponent <PetManager>();

            if (GdC /*&& !GameController.g.UsandoItemOuTrocandoCriature*/)
            {
                Debug.Log("Um condicional para impedir dano em uso de item foi retirado");
                if (GdC.MeuCriatureBase.PetFeat.meusAtributos.PV.Corrente > 0)
                {
                    AplicaDano(GdC, atacante, golpe);
                }
            }
        }
コード例 #7
0
ファイル: DamageManager.cs プロジェクト: fayvit/CustomChar
        public static void AplicaVisaoDeDano(PetManager doAtacado, int dano, float mod)
        {
            GameObject G = null;

            if (mod < .25f)
            {
                G = Resources.Load <GameObject>("DamageView/DanoMuitoReduzido");
            }
            else if (mod < .8f)
            {
                G = Resources.Load <GameObject>("DamageView/DanoReduzido");
            }
            else if (mod < 1.2f)
            {
                G = Resources.Load <GameObject>("DamageView/DanoNormal");
            }
            else if (mod < 1.8f)
            {
                G = Resources.Load <GameObject>("DamageView/DanoAumentado");
            }
            else
            {
                G = Resources.Load <GameObject>("DamageView/DanoMuitoAumentado");
            }


            //Debug.LogError("temos que mudar visao de dano para um evento evnviado ao gamecontroller");
            //GameObject visaoDeDano = null;// GameController.g.El.retorna("visaoDeDano");
            GameObject     visaoDeDano = (GameObject)MonoBehaviour.Instantiate(G, doAtacado.transform.position, Quaternion.identity);
            DanoAparecendo danoAp      = visaoDeDano.GetComponent <DanoAparecendo>();

            danoAp.dano    = dano.ToString();
            danoAp.atacado = doAtacado.transform;

            /* INSERIDO PARA ATUALIZAR A HUD VIDA */
            //GameController.g.HudM.AtualizaDadosDaHudVida(false);
            //if (GameController.g.estaEmLuta)
            //    GameController.g.HudM.AtualizaDadosDaHudVida(true);
        }
コード例 #8
0
ファイル: DamageManager.cs プロジェクト: fayvit/CustomChar
        static void CalculaDano(PetManager doAtacado, GameObject atacante, PetAttackBase golpe)
        {
            float multiplicador = 1;

            for (int i = 0; i < doAtacado.MeuCriatureBase.PetFeat.contraTipos.Length; i++)
            {
                if (golpe.Tipo.ToString() == doAtacado.MeuCriatureBase.PetFeat.contraTipos[i].Nome)
                {
                    multiplicador *= doAtacado.MeuCriatureBase.PetFeat.contraTipos[i].Mod;
                }
            }

            PetBase      cDoAtacante = atacante.GetComponent <PetManager>().MeuCriatureBase;
            PetAtributes A           = cDoAtacante.PetFeat.meusAtributos;

            int potenciaDoAtacante = (golpe.Caracteristica == AttackDiferentialId.colisao)
                ?
                                     Mathf.RoundToInt(A.Ataque.Minimo + (A.Ataque.Corrente - A.Ataque.Minimo) * Random.Range(0.85f, 1))
                :
                                     Mathf.RoundToInt(A.Poder.Minimo + (A.Poder.Corrente - A.Poder.Minimo) * Random.Range(0.85f, 1));

            int numStatus = StatusTemporarioBase.ContemStatus(StatusType.fraco, cDoAtacante);

            if (numStatus > -1)
            {
                potenciaDoAtacante = (int)Mathf.Max(1 / cDoAtacante.StatusTemporarios[numStatus].Quantificador * potenciaDoAtacante, (A.Ataque.Minimo + A.Poder.Minimo) / 2);
                golpe.ModCorrente  = -(int)cDoAtacante.StatusTemporarios[numStatus].Quantificador;
            }
            else
            {
                golpe.ModCorrente = 0;
            }

            PetAttackDb golpePersonagem = cDoAtacante.GerenteDeGolpes.ProcuraGolpeNaLista(cDoAtacante.NomeID, golpe.Nome);

            CalculoC(multiplicador, golpe, golpePersonagem, potenciaDoAtacante, doAtacado, cDoAtacante);

            golpe.VerificaAplicaStatus(cDoAtacante, doAtacado);
        }
コード例 #9
0
ファイル: DamageManager.cs プロジェクト: fayvit/CustomChar
        static void CalculoC(
            float multiplicador,
            PetAttackBase golpe,
            PetAttackDb golpePersonagem,
            int potenciaDoAtacante,
            PetManager doAtacado,
            PetBase cDoAtacado)
        {
            PetAtributes aDoAtacado = doAtacado.MeuCriatureBase.PetFeat.meusAtributos;
            float        rd         = Random.Range(0.85f, 1);
            int          level      = cDoAtacado.PetFeat.mNivel.Nivel;
            float        STAB       = 1;

            if (cDoAtacado.PetFeat.TemOTipo(golpe.Tipo))
            {
                STAB = 1.5f;
            }
            Debug.Log("modificador de potencia para esse golpe é " + golpePersonagem.ModPersonagem);
            //int  dano = (int)((((((((2 * level / 5) + 2) * potenciaDoAtacante* 20*(golpe.PotenciaCorrente+golpePersonagem.ModPersonagem) )/ aDoAtacado.Defesa.Corrente)/ 50) +2) *STAB * multiplicador) *rd / 100);
            int dano = (int)(((2 * level) * potenciaDoAtacante * (golpe.PotenciaCorrente + golpePersonagem.ModPersonagem) / (45f * aDoAtacado.Defesa.Corrente + 250) + 2) * STAB * multiplicador * rd);

            AplicaCalculoComVIsaoDeDano(doAtacado, golpe, aDoAtacado, multiplicador, dano, aDoAtacado.Defesa.Corrente, potenciaDoAtacante);
        }
コード例 #10
0
ファイル: DamageManager.cs プロジェクト: fayvit/CustomChar
        static void VerificaVida(GameObject atacante, PetManager doAtacado)
        {
            ConsumableAttribute A = doAtacado.MeuCriatureBase.PetFeat.meusAtributos.PV;

            if (A.Corrente <= 0)
            {
                MessageAgregator <MsgCriatureDefeated> .Publish(new MsgCriatureDefeated()
                {
                    defeated    = doAtacado.gameObject,
                    atacker     = atacante,
                    doDerrotado = doAtacado.MeuCriatureBase
                });

                Debug.LogError("Morte não implementada");
                //a.SetBool("cair", true);

                //UnityEngine.AI.NavMeshAgent nav = a.GetComponent<UnityEngine.AI.NavMeshAgent>();
                //if (nav.enabled)
                //    nav.Stop();// nav.isStopped = true;

                /*   doAtacado.MudaParaDerrotado();
                 *
                 * if (!doAtacado.gerenteCri)
                 * {
                 *     AplicaSelvagemDerrotado aSD =  doAtacado.gameObject.AddComponent<AplicaSelvagemDerrotado>();
                 *     aSD.oDerrotado = doAtacado;
                 *     aSD.oQDerrotou = atacante.GetComponent<GerenciadorDeCriature>();
                 *
                 * }
                 * else
                 * {
                 *     //Morte de um criature selvagem
                 * }
                 */
            }
        }
コード例 #11
0
ファイル: PetAttackBase.cs プロジェクト: fayvit/CustomChar
 public virtual void VerificaAplicaStatus(PetBase atacante, PetManager atacado)
 {
 }
コード例 #12
0
ファイル: PetAttackBase.cs プロジェクト: fayvit/CustomChar
 public override void VerificaAplicaStatus(PetBase atacante, PetManager atacado)
 {
     throw new System.NotImplementedException();
 }
コード例 #13
0
ファイル: DamageManager.cs プロジェクト: fayvit/CustomChar
        static void CalculoA(float multiplicador, PetAttackBase golpe, PetAttackDb golpePersonagem, int potenciaDoAtacante, PetManager doAtacado)
        {
            int dano = Mathf.Abs(
                Mathf.RoundToInt(
                    multiplicador * (golpe.PotenciaCorrente
                                     + golpePersonagem.ModPersonagem
                                     + potenciaDoAtacante)
                    ));

            potenciaDoAtacante = dano;

            PetAtributes aDoAtacado = doAtacado.MeuCriatureBase.PetFeat.meusAtributos;

            int defesa = Mathf.RoundToInt(aDoAtacado.Defesa.Corrente * Random.Range(0.85f, 1));

            if (defesa < 0.75f * dano)
            {
                dano = (dano - defesa >= 1) ? dano - defesa : 1;
            }
            else
            {
                dano = (int)(0.25f * dano) >= 1 ? Mathf.Max((int)(0.25f * dano * Random.Range(0.9f, 1.15f)), 1) : 1;
            }



            AplicaCalculoComVIsaoDeDano(doAtacado, golpe, aDoAtacado, multiplicador, dano, defesa, potenciaDoAtacante);
        }
コード例 #14
0
ファイル: DamageManager.cs プロジェクト: fayvit/CustomChar
        static void CalculoB(float multiplicador, PetAttackBase golpe, PetAttackDb golpePersonagem, int potenciaDoAtacante, PetManager doAtacado)
        {
            PetAtributes aDoAtacado = doAtacado.MeuCriatureBase.PetFeat.meusAtributos;

            int defesa = Mathf.RoundToInt(aDoAtacado.Defesa.Corrente * Random.Range(0.85f, 1));
            int dano   = (int)(multiplicador * (golpe.PotenciaCorrente + golpePersonagem.ModPersonagem + potenciaDoAtacante / defesa));

            AplicaCalculoComVIsaoDeDano(doAtacado, golpe, aDoAtacado, multiplicador, dano, defesa, potenciaDoAtacante);
        }
コード例 #15
0
ファイル: CaptureManager.cs プロジェクト: fayvit/CustomChar
        // Update is called once per frame
        public bool Update()
        {
            tempoDecorrido += Time.deltaTime;
            switch (fase)
            {
            case FaseDoAnimaCaptura.inicial:

                PetManager enemyManager = FindByOwner.GetManagerEnemy(dono);
                //AplicadorDeCamera.cam.FocarPonto(10, enemyManager.MeuCriatureBase.distanciaCameraLuta);
                CameraApplicator.cam.FocusInPoint(enemyManager.MeuCriatureBase.distanciaCameraLuta);
                int     arredondado = Mathf.RoundToInt(tempoDecorrido);
                Vector3 variacao    = arredondado % 2 == 1 ? Vector3.zero : new Vector3(1.5f, 1.5f, 1.5f);

                if (arredondado != disparado && arredondado < LOOPS)
                {
                    ParticleOfSubstitution.ParticulaSaiDaLuva(CriatureAlvoDoItem.transform.position);

                    MessageAgregator <MsgRequestDamageAnimateWithFade> .Publish(
                        new MsgRequestDamageAnimateWithFade()
                    {
                        animatePet = enemyManager.gameObject
                    }
                        );

                    //animator.CrossFade("dano1", 0);
                    //animator.SetBool("dano1", true);
                    //animator.SetBool("dano2", true);

                    disparado = arredondado;
                }

                if (arredondado >= LOOPS)
                {
                    if (iraCapturar)
                    {
                        PreparaFinalComCaptura();
                        fase = FaseDoAnimaCaptura.cameraDoHeroi;
                    }
                    else
                    {
                        PreparaFinalSemCaptura();
                        fase = FaseDoAnimaCaptura.finalizaSemCapturar;
                    }

                    tempoDecorrido = 0;
                }

                CriatureAlvoDoItem.transform.localScale = Vector3.Lerp(
                    CriatureAlvoDoItem.transform.localScale, variacao, Time.deltaTime);

                break;

            case FaseDoAnimaCaptura.finalizaSemCapturar:
                if (tempoDecorrido > 1)
                {
                    return(false);
                }
                break;

            case FaseDoAnimaCaptura.cameraDoHeroi:
                if (tempoDecorrido > 1.5f)
                {
                    CameraApplicator.cam.StartShowPointCamera(dono.transform, new SinglePointCameraProperties()
                    {
                        velOrTimeFocus  = .85f,
                        characterHeight = 1.75f,
                        withTime        = true
                    });
                    //AplicadorDeCamera.cam.InicializaCameraExibicionista(GameController.g.Manager.transform);
                    fase           = FaseDoAnimaCaptura.animaPersonagemCapturando;
                    tempoDecorrido = 0;
                }
                break;

            case FaseDoAnimaCaptura.animaPersonagemCapturando:
                if (tempoDecorrido > 1)
                {
                    PetManager P = FindByOwner.GetManagerEnemy(dono);
                    animaPose = new AnimateCapturePose(P.MeuCriatureBase, dono);
                    MonoBehaviour.Destroy(P.gameObject);
                    fase = FaseDoAnimaCaptura.finalizaCapturando;
                }
                break;

            case FaseDoAnimaCaptura.finalizaCapturando:
                if (!animaPose.Update())
                {
                    return(false);
                }
                break;
            }

            return(true);
        }