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); }
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); }
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); }
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); }
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); } } }
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); } } }
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); }
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); }
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); }
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 * } */ } }
public virtual void VerificaAplicaStatus(PetBase atacante, PetManager atacado) { }
public override void VerificaAplicaStatus(PetBase atacante, PetManager atacado) { throw new System.NotImplementedException(); }
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); }
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); }
// 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); }