Exemplo n.º 1
0
        private Habilidade getHabilidade(string abilityName)
        {
            if (abilityName == null || abilityName.Length == 0)
            {
                return(null);
            }
            Habilidade habilidade = Habilidades.getHabilidadeByMethodName(abilityName);

            try {
                if (habilidade.tipoClasse == Main.classe)
                {
                    if (habilidade.minLevel <= Main.atributos.Level)
                    {
                        return(habilidade);
                    }
                    ConsoleReport.Log("Seu nível é muito baixo para utilizar esta Habilidade", ConsoleType.BATTLE);
                }
                else
                {
                    ConsoleReport.Log("A classe " + Main.classe.ToString() + " não pode utilizar esta Habilidade!", ConsoleType.BATTLE);
                }
            } catch (NullReferenceException) {
                ConsoleReport.Log("Habilidade não encontrada!", ConsoleType.BATTLE);
            }
            return(null);
        }
Exemplo n.º 2
0
 private bool verificaDistancia(int maxDistancia, int minDistancia)
 {
     if (Distancia > maxDistancia)
     {
         ConsoleReport.Log("VOCÊ ESTÁ MUITO LONGE PARA ACERTAR! DISTANCIA: " + Distancia, ConsoleType.BATTLE);
         actionOrder.ActualOrder++;
         return(true);
     }
     if (Distancia < minDistancia)
     {
         ConsoleReport.Log("VOCÊ ESTÁ MUITO PERTO PARA ACERTAR! DISTANCIA: " + Distancia, ConsoleType.BATTLE);
         actionOrder.ActualOrder++;
         return(true);
     }
     if (Distancia < minDistancia)
     {
         ConsoleReport.Log("VOCÊ ESTÁ MUITO PERTO PARA ACERTAR! DISTANCIA: " + Distancia, ConsoleType.BATTLE);
         actionOrder.ActualOrder++;
         return(true);
     }
     return(false);
 }
Exemplo n.º 3
0
        private IEnumerator attack(string abilityName, GameObject target, int order)
        {
            yield return(new WaitUntil(() => order == actionOrder.ActualOrder));

            if (Main.status.acao > 0 && Main.status.pontosAcao >= 5)
            {
                if (MainIsDead)
                {
                    ConsoleReport.Log("PERSONAGEM ATACANTE ESTÁ MORTO!", ConsoleType.BATTLE);
                    actionOrder.ActualOrder++;
                    yield break;
                }
                this.Target             = target.GetComponent <Player>();
                this.ModificadorEsquiva = Target.atributos.CA;
                if (TargetIsDead)
                {
                    ConsoleReport.Log("O ALVO SELECIONADO ESTÁ MORTO!", ConsoleType.BATTLE);
                    actionOrder.ActualOrder++;
                    yield break;
                }
                int        maxDistancia    = Main.atributos.DistAtqMax;
                int        minDistancia    = Main.atributos.DistAtqMin;
                int        bonusAcerto     = 0;
                int        custoPontosAcao = Main.atributos.CustoAtaqueBasico;
                Habilidade habilidade      = getHabilidade(abilityName);
                if (habilidade != null)
                {
                    ConsoleReport.LogBattle(habilidade.nome);
                    maxDistancia    = habilidade.maxDistancia;
                    minDistancia    = habilidade.minDistancia;
                    bonusAcerto     = habilidade.bonusAcerto;
                    custoPontosAcao = habilidade.custoPontoAcao;
                }
                else if (abilityName != null && abilityName.Length > 0)
                {
                    yield break;
                }
                if (verificaDistancia(maxDistancia, minDistancia))
                {
                    yield break;
                }
                if (habilidade != null && !Main.status.UseSp(habilidade.custoSp))
                {
                    ConsoleReport.Log("VOCÊ NÃO TEM SP SUFICIENTE PARA UTILIZAR ESTÁ HABILIDADE! SEU SP: " + Main.status.mana + " | SP NECESSÁRIA: " + habilidade.custoSp, ConsoleType.BATTLE);
                    actionOrder.ActualOrder++;
                    yield break;
                }
                this.Main.status.acao--;
                this.Main.status.pontosAcao -= custoPontosAcao;
                int  damage     = 0;
                bool isOfensiva = true;
                if (habilidade != null)
                {
                    isOfensiva = habilidade.IsOfensiva;
                    if (habilidade.tipoHabilidade.Equals(TipoHabilidades.HP))
                    {
                        this.Target.status.Heal(habilidade.Cura);
                    }
                    else if (habilidade.tipoHabilidade.Equals(TipoHabilidades.SP))
                    {
                        this.Target.status.Rejuvenate(habilidade.Rejuvenescer);
                    }
                    else if (habilidade.tipoHabilidade.Equals(TipoHabilidades.HPSP))
                    {
                        this.Target.status.Heal(habilidade.Cura);
                        this.Target.status.Rejuvenate(habilidade.Rejuvenescer);
                    }
                    else if (habilidade.tipoHabilidade.Equals(TipoHabilidades.OFENSIVA))
                    {
                        damage = habilidade.Dano;
                    }
                }
                if (isOfensiva)
                {
                    this.ModificadorAcerto = Main.atributos.AcertoBase + bonusAcerto;
                    if (hit)
                    {
                        if (damage.Equals(0))
                        {
                            damage = Main.atributos.Dano;
                        }
                        if (damage < 0)
                        {
                            damage = 0;
                        }
                        ConsoleReport.Log("ModificadorAcerto: " + ModificadorAcerto + "| ModificadorEsquiva: " + ModificadorEsquiva + "| DANO: " + damage, ConsoleType.BATTLE);
                        Main.status.attBarras();
                        this.Target.status.Damage(damage);
                    }
                    else
                    {
                        SoundManager.instance.Sfx("Miss");
                        ConsoleReport.Log("Errou", ConsoleType.BATTLE);
                        ConsoleReport.Log("ModificadorAcerto: " + ModificadorAcerto + "| ModificadorEsquiva: " + ModificadorEsquiva, ConsoleType.BATTLE);
                        Target.GetComponent <EffectsPlayer>().show(tipoEffect.DANO, "Errou", Target.GetComponent <Transform>().position);
                    }
                    Main.status.attBarras();
                }
            }
            actionOrder.ActualOrder++;
            yield break;
        }