IEnumerator RunMoveEffects(MoveEffects Effects, Pokemon source, Pokemon target, MoveTarget moveTarget) { var effects = Effects; if (effects.Boosts != null) { if (moveTarget == MoveTarget.Self) { source.ApplyBoosts(effects.Boosts); } else { target.ApplyBoosts(effects.Boosts); } } if (effects.Status != StatusID.none) { target.SetStatus(effects.Status); } if (effects.VolatileStatus != StatusID.none) { target.SetVolatileStatus(effects.VolatileStatus); } yield return(ShowStatChanges(source)); yield return(ShowStatChanges(target)); }
IEnumerator RuneMoveEffects(MoveEffects effects, Pokemon source, Pokemon target, MoveTarget moveTarget) //Creating a function of the Effects move, so we'll call it easyly { if (effects.Boosts != null) //Call for stat boost { if (moveTarget == MoveTarget.Self) { source.ApplyBoosts(effects.Boosts); } else { target.ApplyBoosts(effects.Boosts); } } //Check from the dictionnary if there are any status condition, and call for status if (effects.Status != ConditionID.none) { target.SetStatus(effects.Status); } //Same with volatile status if (effects.VolatileStatus != ConditionID.none) { target.SetVolatileStatus(effects.VolatileStatus); } yield return(ShowStatusChanges(source)); yield return(ShowStatusChanges(target)); }
/* * Metodo encargado de gestionar los efectos secundarios de los ataques, como bajadas de stats o estados alterados */ IEnumerator RunMoveEffects(MoveEffects effects, Pokemon source, Pokemon target, MoveTarget moveTarget) { //Boosts if (effects.Boosts != null) //de momento solo contemplamos los ataques de estado que implican boosts { if (moveTarget == MoveTarget.Self) { source.ApplyBoosts(effects.Boosts); } else if (moveTarget == MoveTarget.Foe) { target.ApplyBoosts(effects.Boosts); } } //Status conditions if (effects.Status != ConditionID.none) { //TODO: Estamos suponiendo que el target del status es el enemigo y no uno mismo EffectResult result = target.SetStatus(effects.Status); if (result == EffectResult.AlreadyOne) { yield return(dialogBox.TypeDialog($"{source.CurrentMove.Base.Name} had no effect!")); } else if (result == EffectResult.Inmune) { yield return(dialogBox.TypeDialog($"{target.Base.Name} it's inmune!")); } } //Volatile Status conditions if (effects.VolatileStatus != ConditionID.none) { //TODO: Estamos suponiendo que el target del status es el enemigo y no uno mismo target.SetVolatileStatus(effects.VolatileStatus); } //Mostramos en el dialogo las bajadas y subidas de stats de ambos pokemons yield return(ShowStatusChanges(source)); yield return(ShowStatusChanges(target)); }
IEnumerator RunMoveEffects(Move move, Pokemon source, Pokemon target) { var effects = move.Base.Effects; if (effects.Boosts != null) { if (move.Base.Target == MoveTarget.Self) { source.ApplyBoosts(move.Base.Effects.Boosts); } else { target.ApplyBoosts(move.Base.Effects.Boosts); } } yield return(ShowStatusChanges(source)); yield return(ShowStatusChanges(target)); }
IEnumerator RunMoveEffects(Move move, Pokemon source, Pokemon target) { var effects = move.Base.Effects; if (effects.Boosts != null) { if (move.Base.Target == MoveTarget.Self) { source.ApplyBoosts(effects.Boosts); } else { target.ApplyBoosts(effects.Boosts); } } if (effects.Status != ConditionID.none) { //move causes a status condition target.SetStatus(effects.Status); } yield return(ShowStatusChanges(source)); yield return(ShowStatusChanges(target)); }