franciscogazitua / IIC2113-2024

Consultas sobre el proyecto en las Issues
2 stars 0 forks source link

[E4] Duda con Pegasus Flight - E4_2-test_33 #128

Open javialf123 opened 1 week ago

javialf123 commented 1 week ago

Hola, no estoy entendiendo las condiciones de Pegasus Flight. En el test 33 de E4_2 tengo que se enfrentan Camilla vs Lyn, ambos con la skill Pegasus Flight y me pasa que me dice que debería mostrar que camilla obtiene -4 en atk y def siendo que si se cumple la condicion de Lyn para quitarle además el 80% de la dif entre Res_base de cada uno. Los datos de ambos son:

Camille: Spd_inicial = 18, Res_inicial = 53 Lyn: Spd_inicial = 48, Res_inicial = 41

luego, la condicion de spd_inicial unit >= spd_inicial rival -10 se cumple para Lyn por lo que debería restar a atk/def de Camille además de los 4 del principio, 80%(41 - 53) lo que da -12, y como el max es -8, resta -8 quedando en un total de -12 para atk/def de camille, no entiendo porque según el tests debería ser -4 solamente.

Juan-Carlos-Ferrer-Barros commented 1 week ago

Estoy con la misma duda. Eso si, a mi me da -13, porque 80%(41 - 53) es -9.6, que quedaría en -9. Y -9 -4 = -13.

Asumo que con (max. -8) como dice el enunciado, se refiere a puede ser -8 o menos, ya que no tendría mucho sentido si la diferencia da positiva.

RodrigoToroIcarte commented 1 week ago

Rayos, supongo que la descripción es algo confusa.

Los penalties son valores positivos. Por ejemplo, un penalty de 8 significa que se le restará 8 a cierta stat. Entonces, cuando la habilidad dice que el penalty es igual al 80% de la diferencia entre la Res_base de la unidad (Lyn) menos la Res_base del rival (Camille), esto solo tiene sentido si esa diferencia es positiva. Si el Res_base del portador es menor a la Res_base del rival no pasa nada... porque te queda un penalty negativo y los penalties son positivos por definición.[^1]

En este ejemplo, nos queda que la diferencia entre las resistencias es negativa: 41 - 53 = -12. Por eso no hay penalty extra. La parte que es confusa es que después tenemos Max: -8. Creo que hubiese sido más claro tener que el penalty máximo es de 8.

[^1]: Al menos, así los entiendo yo. Habría que preguntarle a @franciscogazitua. Lo que te puedo asegurar, es que yo aplico el penalty solo si la diferencia es positiva y paso todos los test cases.

javialf123 commented 1 week ago

Si, acabo de resolverlo, es porque no se especifica que si el bonus queda negativo, debe tomar el valor de 0. la formula para que funcione es:

_bonus = Math.Floor(Math.Min(0.8 * (units[0].Res_inicial - units[1].Res_inicial), 8)); if (_bonus < 0) _bonus = 0;

franciscogazitua commented 6 days ago

Hola,

Concuerdo en que la descripción de la habilidad puede ser un poco confusa. En el juego Fire Emblem: Heroes la descripción de la habilidad es la siguiente:

Captura

Y la descripción del proyecto es:

Captura2

Ahora, si la diferencia entre los stats de X, entonces eso significa que se tendrá un penalty de -X. Esto significa que si la diferencia entre stats es negativa, entonces el penalty será positivo. Lo que no tiene sentido.

Por otro lado, el max -8 significa que el valor máximo que puede tomar un penalty es de -8. Esto significa que el penalty que se aplicará será el siguiente:

if 0 < stat_difference < 8
{
     penalty = -stat_difference
}
else if stat_difference >= 8
{
     penalty = -8
}

entonces el valor de los Penalty pueden ir de -1 a -8.

Es cierto que eso significaría que $penalty \in[-8,-1]$ y $penalty\in N$.

El máx, en este caso, se refiere a que el penalty más grande que puedes producir (es decir, el que tiene el valor más negativo) es de -8. Esto quiere decir que máx habla de la efectividad del penalty en el combate más que en el valor de este en si. En este sentido, -8 es la mayor efectividad que puede tener la habilidad, porque un penalty de -8 es más efectivo que uno de -5

Concuerdo en que esto es un poco confuso, porque los penalty son negativos, pero en este caso máx se refiere al valor más negativos, que en términos matemáticos es menor valor. Esto, como explicaba antes, se debe a que el máx de la descripción no se refiere al penalty en términos matemáticos, sino que a su efectividad en el combate