public AtaqueCombate Atacar(AtaqueID ataqueID) { AtaqueCombate proximoAtaque = new AtaqueCombate(); proximoAtaque.haFallado = ComprobarSiElAtaqueFalla(ataqueID); proximoAtaque.tipoAtaque = Pokemon.Ataque(ataqueID).DatosFijos.tipoDeAtaque; if (!proximoAtaque.haFallado) { proximoAtaque.id = ataqueID; proximoAtaque.danio = CalcularDanio(ataqueID); proximoAtaque.estadoAlteradoProvocado = CalcularEstadoAlterado(ataqueID); if (ComprobarSiSeAutoCura(ataqueID)) { proximoAtaque.pokemonOriginalSeCura = true; proximoAtaque.porcentajeCuracionPokemonOriginal = Pokemon.Ataque(ataqueID).DatosFijos.porcentajeDeCuracion; } if (ComprobarSiSeAutoInflingeDanio(ataqueID)) { proximoAtaque.pokemonOriginalSeHaceDanio = true; proximoAtaque.porcentajeDanioPokemonOriginal = Pokemon.Ataque(ataqueID).DatosFijos.porcentajeDeDanioAutoInflingido; } } Debug.Log(string.Concat("Pokemon ", Pokemon.ID.ToString(), " va a atacar: ", ataqueID.ToString(), " ", proximoAtaque.ToString())); return(proximoAtaque); }
public EventoProximaAccionCombate(TipoAccion tipoAccion, AtaqueID ataque, Item item, PokemonModelo proximoPokemon = null) { TipoAccion = tipoAccion; Ataque = ataque; Item = item; ProximoPokemon = proximoPokemon; }
public bool MostrarAnimacionAtaque(AtaqueID id, Atacante atacante) { Ataque ataque = ControladorDatos.Instancia.ObtenerAtaque(id); if (ataque.animacionAtaque == null) { return(false); } if (!animacionAsignada) { animacionAsignada = true; if (atacante == Atacante.Enemigo) { contenedorAnimadorAtaque.transform.localScale = new Vector3(-1, 1, 1); } else { contenedorAnimadorAtaque.transform.localScale = new Vector3(1, 1, 1); } } if (!animadorAtaque.ReproducirClipAnimacionAtaque(ataque.animacionAtaque)) { spriteAtaque.sprite = null; animacionAsignada = false; return(false); } return(true); }
public void OnPointerClick(PointerEventData eventData) { if (ataqueID != AtaqueID.NINGUNO) { ControladorEventos.Instancia.LanzarEvento(new EventoProximaAccionCombate(TipoAccion.Atacar, ataqueID, null)); ataqueID = AtaqueID.NINGUNO; } }
private int CalcularDanio(AtaqueID ataqueID) { float valorPorElementoDelPokemon = ValorPorElementoDelPokemon(ataqueID); int valorPorEstadisticaDelPokemon = ValorPorEstadisticaDelPokemon(ataqueID); float valorPorPotenciaDelAtaqueBase = (Pokemon.Ataque(ataqueID).DatosFijos.poder / 10); return((int)((valorPorEstadisticaDelPokemon + valorPorPotenciaDelAtaqueBase) * valorPorElementoDelPokemon)); }
private bool ComprobarSiSeAutoInflingeDanio(AtaqueID ataqueID) { if (Pokemon.Ataque(ataqueID).DatosFijos.seAutoInflingeDanio) { return(ComprobarProbabilidad(Pokemon.Ataque(ataqueID).DatosFijos.probabilidadDeAutoInflingirseDanio)); } return(false); }
private bool ComprobarSiSeAutoCura(AtaqueID ataqueID) { if (Pokemon.Ataque(ataqueID).DatosFijos.seAutoCura) { return(ComprobarProbabilidad(Pokemon.Ataque(ataqueID).DatosFijos.probabilidadDeCurarse)); } return(false); }
private float ValorPorElementoDelPokemon(AtaqueID ataqueID) { float multiplicadorTipo = 1; if (Pokemon.Ataque(ataqueID).DatosFijos.ataqueElemento == Pokemon.DatosFijos.tipoElemento1 || Pokemon.Ataque(ataqueID).DatosFijos.ataqueElemento == Pokemon.DatosFijos.tipoElemento2) { multiplicadorTipo = 1.2f; } return(multiplicadorTipo); }
public void AprenderNuevoAtaque(AtaqueID ataqueAnterior, AtaqueID nuevoAtaque) { for (int i = 0; i < _ataques.Length; i++) { if (_ataques[i].ID == ataqueAnterior) { _ataques[i] = new AtaquesModelo(nuevoAtaque); break; } } }
private EstadoAlterado CalcularEstadoAlterado(AtaqueID ataqueID) { if (Pokemon.Ataque(ataqueID).DatosFijos.provocaEstadoAlterado != EstadoAlterado.NINGUNO) { if (ComprobarProbabilidad(Pokemon.Ataque(ataqueID).DatosFijos.probabilidadDeProvocarEstadoAlterado)) { return(Pokemon.Ataque(ataqueID).DatosFijos.provocaEstadoAlterado); } } return(EstadoAlterado.NINGUNO); }
public AtaquesModelo Ataque(AtaqueID id) { for (int i = 0; i < _ataques.Length; i++) { if (_ataques[i].ID == id) { return(_ataques[i]); } } return(null); }
public Ataque ObtenerAtaque(AtaqueID ataqueID) { if (!contenedorAtaques.ContainsKey(ataqueID)) { string nombreFichero = vinculadorResources.ObtenerNombreFicheroAtaque(ataqueID); if (!string.IsNullOrEmpty(nombreFichero)) { Ataque ataque = (Ataque)Resources.Load(nombreFichero); contenedorAtaques.Add(ataque.ID, ataque); } } return(contenedorAtaques[ataqueID]); }
private int ValorPorEstadisticaDelPokemon(AtaqueID ataqueID) { int multiplicadorTipoDeAtaque = 1; if (Pokemon.Ataque(ataqueID).DatosFijos.tipoDeAtaque == TipoDeAtaque.Fisico) { multiplicadorTipoDeAtaque = Pokemon.EstadisticaAtaqueFisico(); } else { multiplicadorTipoDeAtaque = Pokemon.EstadisticaAtaqueMagico(); } return(multiplicadorTipoDeAtaque); }
public string ObtenerNombreFicheroAtaque(AtaqueID ataque) { for (int i = 0; i < listaAtaque.Count; i++) { if (listaAtaque[i].ID == ataque) { return(listaAtaque[i].nombreFichero); } } if (ataque != AtaqueID.NINGUNO) { Debug.LogWarning(string.Concat("No se ha encontrado ningún Ataque con el ID ", ataque.ToString())); } return(string.Empty); }
public void MostrarDatosAtaque(AtaquesModelo ataque) { if (ataque == null || ataque.ID == AtaqueID.NINGUNO) { gameObject.SetActive(false); } else { nombre.text = ataque.DatosFijos.nombre; pp.text = ataque.TextoPPActualYMaximo(); elemento.text = Herramientas.TextoAtaqueElemento(ataque.DatosFijos.ataqueElemento); poder.text = ataque.DatosFijos.poder.ToString(); ataqueID = ataque.ID; gameObject.SetActive(true); } }
private bool ComprobarSiElAtaqueFalla(AtaqueID ataqueID) { //TODO: implementar switch (Pokemon.EstadoAlterado) { case EstadoAlterado.Paralizado: break; case EstadoAlterado.Confuso: break; case EstadoAlterado.Dormido: break; case EstadoAlterado.Envenedado: break; } //Devolvemos lo contrario al método return(!ComprobarProbabilidad(Pokemon.Ataque(ataqueID).DatosFijos.precision)); }
public void MostrarVentana(PokemonModelo pokemon, AtaqueID nuevoAtaque) { this.pokemon = pokemon; nuevoAtaqueAprender = ControladorDatos.Instancia.ObtenerAtaque(nuevoAtaque); AtaqueSeleccionado = null; nuevoAtaqueNombre.text = nuevoAtaqueAprender.nombre; nuevoAtaqueElemento.text = Herramientas.TextoAtaqueElemento(nuevoAtaqueAprender.ataqueElemento); nuevoAtaquePoderYTipo.text = string.Concat(nuevoAtaqueAprender.poder, " ", nuevoAtaqueAprender.TextoTipoAtaque()); for (int i = 0; i < detallesAtaques.Length; i++) { detallesAtaques[i].gameObject.SetActive(false); } for (int i = 0; i < pokemon.Ataques().Length; i++) { detallesAtaques[i].MostrarAtaque(pokemon.Ataques()[i].DatosFijos, this); } gameObject.SetActive(true); }
public AtaquesModelo(AtaqueID id) { this.id = id; this.pp = DatosFijos.ppMaximos; }
private bool AtaqueCritico(AtaqueID ataqueID) { return(ComprobarProbabilidad(Pokemon.Ataque(ataqueID).DatosFijos.posibilidadCritico)); }
public void RestarPP(AtaqueID ataque) { Pokemon.Ataque(ataque).RestarPP(); }
public AtaqueVinculado(AtaqueID ataque, string nombreFichero) { this.ID = ataque; this.nombreFichero = nombreFichero; }