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); }
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)); }
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); }
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; }