예제 #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);
        }
예제 #2
0
        void instanciaObjetoLista(Habilidade h, int posX, int posY, int width, int height, GameObject prefab, Transform pai, int count)
        {
            GameObject objeto;

            objeto      = Instancia(posX, posY, width, height, prefab, pai);
            objeto.name = h.nome;
            objeto.AddComponent <ShowAbilityDesc>();
            objeto.GetComponent <ShowAbilityDesc>().habilidade = h;
            objeto.GetComponent <ShowAbilityDesc>().button     = objeto.GetComponent <Button>();

            objeto.transform.GetChild(0).GetComponent <Text>().text          = objeto.name;
            objeto.transform.parent.GetComponent <RectTransform>().sizeDelta = new Vector2(123, 24 + (25.25F * count));
        }
예제 #3
0
        public List <Habilidade> getHabilidadesUtilizaveis()
        {
            List <PropertyInfo> propertyInfos = new List <PropertyInfo>((GetType().GetProperties() as PropertyInfo[]));
            // Verifica se o retorno é do mesmo tipo de Habilidade.
            // Assim outros metodos com retorno diferente são descartados
            object objec;

            propertyInfos = propertyInfos.FindAll(objeto => (objec = objeto.GetValue(this, null)) != null && objec.GetType().Equals(typeof(Habilidade)));
            objec         = null;
            List <Habilidade> habilidades = new List <Habilidade>();

            foreach (PropertyInfo objeto in propertyInfos)
            {
                Habilidade habilidade = objeto.GetValue(this, null) as Habilidade;
                if (habilidade != null && habilidade.tipoClasse == Main.classe && habilidade.minLevel <= Main.atributos.Level)
                {
                    habilidades.Add(objeto.GetValue(this, null) as Habilidade);
                }
            }
            return(habilidades);
        }
예제 #4
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;
        }