void VerifiqueSigaOuAtaque(GolpeBase GB, Atributos A) { if ((criatureDoJogador.transform.position - meuCriature.transform.position).magnitude > MOD_DISTANCIA_DE_ATAQUE * (GB.TempoDeMoveMax - GB.TempoDeMoveMin) ) { int numStatus = StatusTemporarioBase.ContemStatus(TipoStatus.amedrontado, meuCriature.MeuCriatureBase); if (numStatus > -1) { siga.ModVelocidade = 1 / (float)meuCriature.MeuCriatureBase.StatusTemporarios[numStatus].Quantificador; } else { siga.ModVelocidade = 1; } siga.Update(criatureDoJogador.transform.position); } else { siga.PareAgora(); Disparador(GB, A); } }
public override void AcaoDoItemConsumivel(CriatureBase C) { List <CriatureBase> meusC = GameController.g.Manager.Dados.CriaturesAtivos; StatusTemporarioBase[] meusStatus = GameController.g.ContStatus.StatusDoHeroi.ToArray(); StatusTemporarioBase sTb = null; for (int i = 0; i < meusStatus.Length; i++) { Debug.Log(meusC.IndexOf(meusStatus[i].OAfetado) + " :" + meusC.IndexOf(C) + " : " + meusStatus[i].Dados.Tipo + " : " + qualStatusRemover); if (meusC.IndexOf(meusStatus[i].OAfetado) == meusC.IndexOf(C) && meusStatus[i].Dados.Tipo == qualStatusRemover) { sTb = meusStatus[i]; } } if (sTb != null) { sTb.RetiraComponenteStatus(); } else { Debug.Log("Status foi alcançado como nulo"); } }
bool VerificaPodeUsarStatus(CriatureBase C) { Atributos A = C.CaracCriature.meusAtributos; int temStatus = StatusTemporarioBase.ContemStatus(qualStatusRemover, C); bool vivo = A.PV.Corrente > 0; return(vivo && temStatus > -1); }
void ModificaApresentacaoDoStatus() { if (criatureDoStatus.StatusTemporarios.Count > 0) { TipoStatus tipo = criatureDoStatus.StatusTemporarios[indiceDoStatus].Tipo; imgDoStatus.texture = GameController.g.El.RetornaMini(tipo); txDoStatus.text = StatusTemporarioBase.NomeEmLinguas(tipo); } }
public static void VerificaInsereParticulaDeStatus(CreatureManager C) { for (int i = 0; i < GameController.g.ContStatus.StatusDoHeroi.Count; i++) { StatusTemporarioBase sTb = GameController.g.ContStatus.StatusDoHeroi[i]; if (GameController.g.Manager.Dados.CriaturesAtivos.IndexOf(sTb.OAfetado) == GameController.g.Manager.Dados.CriaturesAtivos.IndexOf(C.MeuCriatureBase)) { sTb.CDoAfetado = C; sTb.Start(); } } }
protected override void EscolhiEmQuemUsar(int indice) { CriatureBase C = GameController.g.Manager.Dados.CriaturesAtivos[indice]; Atributos A = C.CaracCriature.meusAtributos; int temStatus = StatusTemporarioBase.ContemStatus(qualStatusRemover, C); bool vivo = A.PV.Corrente > 0; if (temStatus > -1 || !vivo) { EscolhiEmQuemUsar(indice, vivo, true); } else { MensDeUsoDeItem.MensDeNaoPrecisaDesseItem(C.NomeEmLinguas); } }
public override void VerificaAplicaStatus(CriatureBase atacante, CreatureManager cDoAtacado) { StatusTemporarioBase S = new Fraco() { Dados = new DatesForTemporaryStatus() { Quantificador = 2, TempoSignificativo = 250, Tipo = TipoStatus.fraco //trocavel }, CDoAfetado = cDoAtacado, OAfetado = cDoAtacado.MeuCriatureBase }; int num = StatusTemporarioBase.ContemStatus(TipoStatus.fraco /*trocavel*/, cDoAtacado.MeuCriatureBase); AdicionaStatusSimples.InsereStatusSimples(cDoAtacado, S, num); Debug.Log("enfraqueceu"); }
public override void VerificaAplicaStatus(CriatureBase atacante, CreatureManager cDoAtacado) { StatusTemporarioBase S = new Amedrontado() { Dados = new DatesForTemporaryStatus() { Quantificador = 2, TempoSignificativo = 240, Tipo = TipoStatus.amedrontado }, CDoAfetado = cDoAtacado, OAfetado = cDoAtacado.MeuCriatureBase }; int num = StatusTemporarioBase.ContemStatus(TipoStatus.amedrontado, cDoAtacado.MeuCriatureBase); AdicionaStatusSimples.InsereStatusSimples(cDoAtacado, S, num); Debug.Log("amedrontou"); }
static void CalculaDano(CreatureManager doAtacado, GameObject atacante, IGolpeBase golpe) { float multiplicador = 1; for (int i = 0; i < doAtacado.MeuCriatureBase.CaracCriature.contraTipos.Length; i++) { if (golpe.Tipo.ToString() == doAtacado.MeuCriatureBase.CaracCriature.contraTipos[i].Nome) { multiplicador *= doAtacado.MeuCriatureBase.CaracCriature.contraTipos[i].Mod; } } CriatureBase cDoAtacante = atacante.GetComponent <CreatureManager>().MeuCriatureBase; Atributos A = cDoAtacante.CaracCriature.meusAtributos; int potenciaDoAtacante = (golpe.Caracteristica == caracGolpe.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(TipoStatus.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; } GolpePersonagem golpePersonagem = cDoAtacante.GerenteDeGolpes.ProcuraGolpeNaLista(cDoAtacante.NomeID, golpe.Nome); CalculoC(multiplicador, golpe, golpePersonagem, potenciaDoAtacante, doAtacado, cDoAtacante); golpe.VerificaAplicaStatus(cDoAtacante, doAtacado); }
/* * public static void InserindoNovoStatus(CreatureManager levou, CriatureBase C, DatesForTemporaryStatus dadosDoStatus,bool eLoad = false) * { * C.StatusTemporarios.Add(dadosDoStatus); * * * * if (levou != null) * { * * if (levou.name == "CriatureAtivo") * { * GameController.g.ContStatus.AdicionaStatusAoHeroi(S); * } * else * { * GameController.g.ContStatus.AdicionaStatusAoInimigo(S); * * } * } * else * GameController.g.ContStatus.AdicionaStatusAoHeroi(S); * }*/ public static void InsereStatus(CreatureManager levou, CriatureBase C, DatesForTemporaryStatus dadosDoStatus) { int numStatus = StatusTemporarioBase.ContemStatus(TipoStatus.envenenado, C); if (numStatus == -1) { StatusTemporarioBase S = new Envenenado() { Dados = dadosDoStatus, CDoAfetado = levou, OAfetado = C }; AdicionaStatusSimples.InserindoNovoStatus(levou, C, S); //InserindoNovoStatus(levou, C, dadosDoStatus); } else { DatesForTemporaryStatus d = C.StatusTemporarios[numStatus]; d.Quantificador = Mathf.Max(dadosDoStatus.Quantificador, d.Quantificador + 1); d.TempoSignificativo *= (14f / 15f); } }
// Update is called once per frame void Update() { //Debug.DrawRay(transform.position, Vector3.up); switch (estado) { case CreatureState.parado: case CreatureState.emDano: case CreatureState.aplicandoGolpe: if (mov != null) { mov.AplicadorDeMovimentos(Vector3.zero, meuCriatureBase.CaracCriature.distanciaFundamentadora, transform); } else { SetaMov(); } break; case CreatureState.seguindo: case CreatureState.selvagem: ia.Update(); break; case CreatureState.aPasseio: case CreatureState.emLuta: Vector3 dir = Vector3.zero; if (comandR != null) { dir = comandR.VetorDirecao(); if (estado == CreatureState.emLuta) { dir = comandR.DirDeEixos(); dir = direcaoInduzida(dir.x, dir.z); } else { dir = comandR.VetorDirecao(); } } if (mov == null) { SetaMov(); } else { int temStatus = StatusTemporarioBase.ContemStatus(TipoStatus.amedrontado, meuCriatureBase); if (temStatus > -1) { dir *= 1 / (float)meuCriatureBase.StatusTemporarios[temStatus].Quantificador; } if (!GameController.g.HudM.MenuDePause.EmPause) { mov.AplicadorDeMovimentos(dir, meuCriatureBase.CaracCriature.distanciaFundamentadora, transform); } } break; } }