¡Vota por nosotros!

Vota diariamente por XatiyaRO para mejorar nuestra reputación y ayudarnos a crecer.

RagnaTOP - Top Ragnarok Online en Español Ragnarok private server
private server TOP RO Hispano

Autor Tema: [Información] Cálculo del daño  (Leído 6873 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Picker~

  • Transcendent Job
  • ****
  • Mensajes: 2033
  • Pj Principal: Cxcxo
[Información] Cálculo del daño
« en: 06 de Junio de 2009, 18:42:15 pm »
Ante tantas dudas y preguntas, subo esta info sobre los calculos de daño basados en las ecuaciones que usa gravity para calcular los daños. Son muy simples y faciles de entender, si necesitan ayuda en algo no duden en preguntar.
 
INTRODUCCION

El algoritmo de calculo de ataque es tomado de aqui, pero he hecho algunas notas.
Solo es valido para ataques de melee player vs player (pvp).
Los ataques magicos y de rango utilizan un algoritmo diferente.
Los ataques de rango en jugadores son aquellos que exclusivamente son realizados con arco y/o es explicita de una skill.

Para un mejor entendimiento de la guia, se usa la siguiente notacion:
*Un numero encerrado en [] debe ser redondeado al menor entero. Ejs. [1.7] = 1, [2.3] = 2.
*rnd(a,z) indica que se escoge un numero al azar entre a y z. Ej. rnd(1,100) es cualquier numero entre 1 y 100.
*min(a,z) indica que se escoge al menor entre a y z. Ej. min(1,5) = 1
*max(a,z) indica que se escoge al mayor entre a y z. Ej. max(1,5) = 5
*a^b es exponenciacion. Ej. 2^3 = 2 * 2 * 2.

----

ALGORITMO

El juego usa una serie de condiciones para hacer el calculo de la cantidad de daño que un ataque produce. Esto asegura un calculo rapido y eficaz.

Considerando que uno realiza un ataque de melee:


1 - ¿Se hace un ataque normal o es un ataque tipo skill? -- En caso de ser tipo skill ir al paso 5, caso contrario ir al paso 2.
** Toda skill activa (sonic blow, bash, etc.) es un ataque tipo skill.
** El double attack cuenta como ataque tipo skill excepto si el ataque es producto de la sidewinder card.
** En el caso de usar dos armas, el ataque del arma en la mano izquierda es considerada tipo skill.
** Ataques derivados de una postura defensiva son considerados normales (Counterattack, Poison react)

2 - ¿Existe Safety Wall en el oponente? -- En caso de que si, daño = 0. En caso de que no, ir al paso 3.

3 - ¿Ocurre perfect dodge en tu oponente? -- En caso de que si, daño = 0. En caso de que no, ir al paso 4.

4 - ¿Ocurre un critico de tu parte? -- En caso de que si ir al paso 6. En caso de que no, ir al paso 5.

5 - ¿Ocurre un miss o hit de tu parte? -- Si ocurre miss, daño = 0. Si ocurre hit ir al paso 6.
**Algunas skills siempre tienen 100% de exito de hit.
**Para obtener el porcentaje de exito de hit, este se calcula como min(80 + TuHit - FleeOponente,100)
Ej. mi hit es 160 y el flee de mi oponente es 199 -- min(80 + 160 - 199,100) = min(41,100) = 41. Tengo un 41% de probabilidad de hacer hit.

6 - Calculo del ataque base (BATK) -- BATK = STR + [STR/10]^2 + [DEX/5] + [LUK/5] + ImpositioManus + ATKCards. Ir paso 7.

7 - Calculo el ataque que me confiere mi arma (WATK), siendo ATK el ataque del arma que viene en su descripcion:
En caso de armas: WATK = rnd(min(DEX*(0.8+0.2*WeaponLevel),ATK), ATK). En caso de critico de tu parte WATK = ATK
En caso de usar solo las manos WATK = 0.
Ir al paso 8.

8. Aplica el modificador de tamaño (MT) a WATK. -- WATK * MT
**Incluyo este paso, pero para fines practicos de la guia es inutil, pues al atacar a otro jugador, el modificador es 1.
**Este famoso modificador influye al atacar a un monstruo. Es el que traen implicitas las armas.
Ej. Hacha de dos manos: MT = 0.5 para monstruo small, MT = 0.75 para monstruo medium, MT = 1 para monstruo Large.
Ir a paso 9.

9. Aplicar los modificadores de la skill (MS) a (BATK + WATK) -- (BATK + WATK) * (1 + MS)
**MS es acumulativo por suma.
Ej. Power Thrust da al Backsmith +25% al ataque en el nivel 5 segun su descripcion. Entonces es (BATK + WATK) * (1.25)
Ej. A un Blacksmith en Power Thrust le hacen provoke nivel 10. Entonces es (BATK + WATK) * (1 + 0.25 + 0.32) = (BATK + WATK) * (1.57)
La cantidad obtenida hasta este paso se le llama TOTAL
Ir a paso 10

Nota --- Se llama HDEF (Hard Defense) a la defensa dada por la armadura y su refinamiento. Se llama SDEF (Soft Defense) a la defensa dada por Vitalidad (VIT).

10. Aplicar HDEF del enemigo -- TOTAL * (1 - HDEF)
**El HDEF supuestamente es el numero que se muestra antes del signo + en la pantalla de status del personaje donde dice def, pero por alguna extraña razon el valor no es el correcto.
Ej. Aproximadamente cada dos refinamientos de la armadura HDEF sube en 3% de manera aproximada, el valor real no es conocido.
Ej Supongamos que el enemigo solo tiene puesto un buckler +4; HDEF = (4 + 6)% = 10% y nuestro ataque seria TOTAL * (1 - 0.1) = TOTAL * (0.9)
Ir a paso 11

11. Restar de TOTAL, la SDEF del enemigo tal cual -- TOTAL - SDEF
** SDEF para el enemigo se calcula como [VIT*0.5] + rnd([VIT*0.3], max([VIT*0.3],[VIT^2/150]-1)). (VIT es la vitalidad del enemigo).
Ir paso 12.

12. ¿El ataque es de tipo Undead? En caso de que si ¿Tiene el enemigo Divine Protection activa?. En caso de que el ataque no sea tipo undead, Ir a paso 13.
Si hay Divine Protection activa, aplicar su reduccion.
** Armas con propiedad Undead: Sharpened Legbone of Ghoul, Evil Bone Wand.
Ir a paso 13

13. Agregar el daño del upgrade del arma (que es el numero que esta despues del signo + en la pantalla de status del personaje donde dice atk. -- Ir a paso 14

14. Al resultado de todo lo anterior, redondear al entero menor mas proximo e ir a paso 15.
Ej. De todo lo anterior me salio 352.99 pasa a ser 352.

15. Sumar el daño que agregan las masteries de algunos personajes (Two handed sword mastery, katar mastery, etc.) Algunas son aditivas (como sword mastery que en lvl 10 agrega 40 al total) y otras son Multiplicativas (como Advanced Katar Mastery, que en lvl 5 agrega 60%)
Ej. Hasta el punto 14 mi daño es de 352, soy Assassin Cross y por alguna razon tengo Katar Mastery en lvl10 (+30) y Advanced Katar Mastery en lvl5 (+60%). El incremento al daño es (352 + 30) * (1.6)
Ir paso 16.

16. Si atacas con Envenom, añadir el bonus correspondiente solo a ese ataque. Ir a paso 17.

17. Si se tiene la skill Weaponry Research, agregar el daño correspondiente al nivel. Ir al paso 18.

18. A todo lo obtenido hasta el paso 17, agregar el modificador de elemento (ME) del arma vs el enemigo.
**La gran mayoria de los ataques efectuados por jugadores toman el elemento del arma que ataca.
**Skills que cambian el elemento del ataque son Endows, Aspersio, Envenom, etc.
**Algunas Skills forzan a cambiar el elemento del arma (Magnum Break, forza a cambiar el elemento del arma a fire).
**Algunas cards cambian el elemento del jugador. Evil Druid hace al player Undead1, Ghostring hace al player Ghost1.
**ME es diferente dependiendo del arma y del elemento del enemigo.
**Supongamos que tenemos endow de fuego y que el enemigo tiene Evil Druid, ME = 1.25.
**Suponemos que tenemos arma normal y el enemigo tiene ghostring, ME = 0.25
**Suponemos que tenemos endow de viento y el enemigo ghostring, ME = 1
Ir a paso 19.

19. A todo lo obtenido hasta el paso 18, agregar las mejorias (Star Crumb) -- +5 por cada "very". Ir a paso 20.

20. Agregar el porcentaje de los bonos de daño. Bonos del mismo tipo son aditivos, Bonus diferentes son multiplicativos.
Para fines practicos el bono es dado como (1 + bonus Modificador racial) * (1 + bonus Modificador tamaño) * (1 + bonus Modificador elemento)
**Los bonus son dados por cards o por la misma arma usada o los bonos son quitados por equipo.
Ej. Supongamos que ataco con un arma neutral con 1 hydra y 1 skel worker (+20% y +15%). El bono es de (1 + 0.20) * (1 + 0.15) * (1 + 0) = 1.38
Ir a paso 21.

21. Agregar el porcentaje de los bonos de reduccion. Bonos del mismo tipo son aditivos, Bonus diferentes son multiplicativos.
Para fines practicos el bono es dado como (1 - bonus Modificador racial) * (1 - bonus Modificador tamaño) * (1 - bonus Modificador elemento) * (1 - bonus energy coat)
**Los bonus son dados por cards o por la misma arma usada o los bonos son quitados por equipo.
Ej. Si mi oponente trae una raydric card (bono contra daño neutral 20%) el bono reductor es (1 - 0) * (1 - 0) * (1 - 0.20) * (1 - 0) = 0.80
Ej. Si ataco a mi oponente con raydric con un arma como la descrita en el paso 20, el efecto total de los bonos seria, 1.38 * 0.80 = 1.104
Ej, Si le hago endow a mi arma, como el elemento atacante no es neutral, la reduccion de la raydric no se incluye, el bono quedaria entonces intacto en 1.38.
**Hay pequeñas reducciones a oponentes que usan armas a dos manos, pero son desconocidas y son multiplicativas (como el bonus del energy coat)
Ir a paso 22.

22. Redonde el total de todo lo obtenido hasta el paso 21 al entero menor proximo. Este es el daño efectuado.

----

EJEMPLOS PRACTICOS.

#### 4 hydras? 3 hydras y 1 skel? 2 hydras y 2 skel???

Para armas con 4 slot esta es una de las dudas mas sonadas.

Para desentrañar vamos a suponer que se esta en pvp, y solo se golpea normal, sin skills. No hay safety wall y hemos conectado un golpe en nuestro oponente ¿cual es el daño?
Entonces vamos a tomar como ejemplo:
un blade [4] +10. En su descripcion el blade es un arma nivel 1 cuyo atk es de 53, el +10 le agrega un BonusRefinamientoArma de entre 23 a 29.
nuestros stats son 120 Str, 70 Dex, 5 Luk que para el daño es lo que cuenta.
Y seguimos los pasos.

Con las condiciones dadas, llegamos al paso 6

Calculamos BATK

BATK = STR + [STR/10]^2 + [DEX/5] + [LUK/5] + ImpositioManus + ATKCards

BATK = 120 + [120/10]^2 + [70/5] + [5/5] + 0 + ATKCards

Dejamos ATKCards variable para poder comprobar despues

Asi
BATK = 120 + 144 + 14 + 1 + 0 + ATKCards

BATK = 279 + ATKCards

Ahora calculamos WATK

WATK = rnd( min(DEX * (0.8 + 0.2 * WeaponLevel), ATK) , ATK )

WATK = rnd( min(70 * (0.8 + 0.2 * 1) , 53) , 53) = rnd ( min(70,53) , 53) = rnd(53,53) = 53 !Noten que a ese nivel de DEX quebre la brecha entre el ataque minimo y maximo en el blade.

WATK = 53

Suponemos que no tenemos Power-Thrust ni Provoke. Ni estamos haciendo una skill, estamos pegando normal. Asi

(BATK + WATK) = 279 + ATKCards + 53

TOTAL = (BATK + WATK) = 332 + ATKCards

Supongamos que nuestro enemigo es un player promedio de VIT de 60 y con equip promedio que le da HDEF de 35

DAÑO = TOTAL * (1 - HDEF) - SDEF = TOTAL * (1 - HDEF) - ([VIT*0.5] + rnd([VIT*0.3], max([VIT*0.3],[VIT^2/150]-1)))

DAÑO = (332 + ATKCards) * (1 - 0.35) - ([60 * 0.5] + rnd([60 * 0.3] , max([60 * 0.3] , [60^2/150] - 1) ))

DAÑO = (332 + ATKCards) * (0.60) - (30 + rnd(18 , max(18 , [3600/150] - 1) )) = (332 + ATKCards) * (0.60) - (30 + rnd(18 , max(18 , 23) ))

DAÑO = (332 + ATKCards) * (0.60) - (30 + rnd(18 , 23)) <-- En el random suponemos que le va bien al enemigo y le cae 23

DAÑO = (332 + ATKCards) * (0.60) - (30 + 23) = (332 + ATKCards) * (0.60) - (53) = 199.2 + 0.60 * ATKCards - 53

DAÑO = 146.2 + 0.60 * ATKCards

El arma no es undead

Agregamos el upgrade del arma; escogemos 23, pero en realidad al realizar el ataque se escoge un numero entre 23 a 29 al azar.

DAÑO = 146.2 + 0.60 * ATKCards + 23

DAÑO = 169.2 + 0.60 * ATKCards

Redondeamos al entero de menor numero


DAÑO = [169.2 + 0.60 * ATKCards]

Supongamos no tener niguna mastery ._.
No estamos golpeando con envenom, no tenemos weaponary research.

Supongamos que el enemigo tiene ghostring y que nosotros tenemos endow en nuestra arma de fuego

DAÑO = [169.2 + 0.60 * ATKCards] * 1 <-- No hay reduccion de daño por la ghostring

Nuestra arma no es very very algo, por lo que no hay adicion

Y al final, la parte de interes, los bonos:

Los bonos de daño:

DAÑO = [169.2 + 0.60 * ATKCards] * (1 + bonus Modificador racial) * (1 + bonus Modificador tamaño) * (1 + bonus Modificador elemento)

La Hydra da bonus racial (20% o sea 0.2) y la Skeleton Worker bonificador de tamaño (15% o sea 0.15), queda:

DAÑO = [169.2 + 0.60 * ATKCards] * (1 + 0.2H) * (1 + 0.15SW)

Donde H es el numero de Hydras que le ponemos al arma y SW el numero de Skeleton Workers que le ponemos al arma

Por ultimo los bonos reductivos del enemigo

DAÑO = [169.2 + 0.60 * ATKCards] * (1 + 0.2H) * (1 + 0.15SW) * (1 - bonus Modificador racial) * (1 - bonus Modificador tamaño) * (1 - bonus Modificador elemento) * (1 - bonus energy coat)

Como ultima suposicion, tenemos a nuestro enemigo con Raydric Card puesta, no tenia ningun otra carta de bonus reductivo ni energy coat. Pero tenemos endow de fuego, por lo que la Raydric no da su bonus reductivo ya que el ataque no es neutral.

Asi finalmente el daño queda:

DAÑO = [169.2 + 0.60 * ATKCards] * (1 + 0.2H) * (1 + 0.15SW)

--> He variado un poco el equipo y las cosas para que no fuera tan aburrido, pero al final, la formula queda como la de arriba con diferentes coeficientes quiza, pero lo que nos interesa es algo relativo, una diferencia. La diferencia entre tener o no un set u otro de cartas, y sus variables principales son: el numero de cartas usadas y el ataque que estas agregan, como esta arriba.
Asi con nuestro formula prototipo vamos por casos

# 4 Hydras --> ATKCards = 0, H = 4, SW = 0
DAÑO = [169.2 + 0.60 * 0] * (1 + 0.2 * 4) * (1 + 0.15 * 0) = [169.2] * (1.8) * (1) = 169 * 1.8 = 304.2
DAÑOFINAL = 304

# 3 Hydras y 1 Skeleton Worker --> ATKCards = 5, H = 3, SW = 1
DAÑO = [169.2 + 0.60 * 5] * (1 + 0.2 * 3) * (1 + 0.15 * 1) = [169.2 + 3] * (1.6) * (1.15) = 316.48
DAÑOFINAL = 316

# 2 Hydras y 2 Skeleton Worker --> ATKCards = 10, H = 2, SW = 2
DAÑO = [169.2 + 0.60 * 10] * (1 + 0.2 * 2) * (1 + 0.15 * 2) = [169.2 + 6] * (1.4) * (1.3) = 318.5
DAÑOFINAL = 318

Conclusion: En este caso particular, por 2 de daño es mejor dos y dos cartas. Pero ¿cuan cierto es esto? la respuesta es que para el caso particular, es mejor esta combinacion, pero hay otras condiciones en las que quiza 3 y 1 son mejor, lo notorio es que tener 4 cartas es mucho menos satisfactorio. Pero, este aumento en la diferencia de ataque es gracias al agregado multiplicativo que da al atk la skel worker a un ataque que no es muy alto. En el caso donde el ataque sea mucho mayor que el +5 dado por la SW, mas cartas hydra son mas efectivas. Y para desmenuzar esto aproximadamente:

Si estas condiciones se cumplen, el daño del set 2 y 2 es menor que el de el set 3 y 1:
(X + 10) * 1.4 * 1.30 < (X + 5) * 1.6 * 1.15

1.82X + 18.2 < 1.84X + 9.2

9 < 0.02X

450 < X

Cuando el ataque que esta entre corchetes es aproximadamente mayor a 450, tener 3 hydras y 1 SW es mejor que tener 2 y 2.
Pero si se desmenuza mas ese 450, se necesita que el enemigo tenga defensas muy debiles lo cual, ¡en un enemigo competente no pasa!

La conclusion final entonces es que al enfrentar enemigos con mucha defensa el set 2 2 es mas efectivo que el 3 1


#### Otro caso que acabo de leer es el de la infiltrator con slot. ¿Es mejor la Hydra o la Skeleton Worker?

Para desentrañar vamos a suponer que se esta en pvp, y solo se golpea normal, sin skills. No hay safety wall y hemos conectado un golpe en nuestro oponente ¿cual es el daño?
Entonces vamos a tomar como ejemplo:
Infiltrator [1] +7. En su descripcion el blade es un arma nivel 4 cuyo atk es de 140, el +7 le agrega un BonusRefinamientoArma de entre 52 a 91.
nuestros stats son 120 Str, 70 Dex, 5 Luk que para el daño es lo que cuenta.
Y seguimos los pasos.

Con las condiciones dadas, llegamos al paso 6

Calculamos BATK

BATK = STR + [STR/10]^2 + [DEX/5] + [LUK/5] + ImpositioManus + ATKCards

BATK = 120 + [120/10]^2 + [70/5] + [5/5] + 0 + ATKCards

Dejamos ATKCards variable para poder comprobar despues

Asi
BATK = 120 + 144 + 14 + 1 + 0 + ATKCards

BATK = 279 + ATKCards

Ahora calculamos WATK

WATK = rnd( min(DEX * (0.8 + 0.2 * WeaponLevel), ATK) , ATK )

WATK = rnd( min(70 * (0.8 + 0.2 * 4) , 140) , 140) = rnd ( min(112,140) , 140) = rnd(112 , 140) = 112 !Noten que a ese nivel de DEX existe una gran brecha entre el ataque minimo y maximo.

Escogi 112 para suponer que nos toca mala suerte

WATK = 112

Suponemos que no tenemos Power-Thrust ni Provoke. Ni estamos haciendo una skill, estamos pegando normal. Asi

(BATK + WATK) = 279 + ATKCards + 112

TOTAL = (BATK + WATK) = 391 + ATKCards

Supongamos que nuestro enemigo es un player promedio de VIT de 60 y con equip promedio que le da HDEF de 35

DAÑO = TOTAL * (1 - HDEF) - SDEF = TOTAL * (1 - HDEF) - ([VIT*0.5] + rnd([VIT*0.3], max([VIT*0.3],[VIT^2/150]-1)))

DAÑO = (391 + ATKCards) * (1 - 0.35) - ([60 * 0.5] + rnd([60 * 0.3] , max([60 * 0.3] , [60^2/150] - 1) ))

DAÑO = (391 + ATKCards) * (0.60) - (30 + rnd(18 , max(18 , [3600/150] - 1) )) = (391 + ATKCards) * (0.60) - (30 + rnd(18 , max(18 , 23) ))

DAÑO = (391 + ATKCards) * (0.60) - (30 + rnd(18 , 23)) <-- En el random suponemos que le va bien al enemigo y le cae 23

DAÑO = (391 + ATKCards) * (0.60) - (30 + 23) = (391 + ATKCards) * (0.60) - (53) = 234.6 + 0.60 * ATKCards - 53

DAÑO = 181.6 + 0.60 * ATKCards

El arma no es undead

Agregamos el upgrade del arma; escogemos 52, pero en realidad al realizar el ataque se escoge un numero entre 52 a 91 al azar.

DAÑO = 181.6 + 0.60 * ATKCards + 52

DAÑO = 233.6 + 0.60 * ATKCards

Redondeamos al entero de menor numero


DAÑO = [169.2 + 0.60 * ATKCards]

Supongamos tener Katar Mastery a lvl10 (+30). Creo que todo Assassin se sube esa skill.

DAÑO = [169.2 + 0.60 * ATKCards] + 30

No estamos golpeando con envenom, no tenemos weaponary research.

Si suponemos que estamos pegando a un enemigo normal, el daño queda igual por que es neutral vs neutral.

Nuestra arma no es very very algo, por lo que no hay adicion

Y al final, la parte de interes, los bonos:

Los bonos de daño:

DAÑO = ([169.2 + 0.60 * ATKCards] + 30) * (1 + bonus Modificador racial) * (1 + bonus Modificador tamaño) * (1 + bonus Modificador elemento)

Donde, 0.2 si es Hydra en el modificador racial y 0.15 si es Skeleton Worker en el modificador de tamaño.
Pero la Infiltrator tiene un bono al ataque de 50% en la raza, es decir 0.5.

Si suponemos que nuestro enemigo tiene Raydric y ninguna otra reduccion agregamos la reduccion al elemento:

DAÑO = ([169.2 + 0.60 * ATKCards] + 30) * (1 + bonus Modificador racial) * (1 + bonus Modificador tamaño) * (1 - 0.20)

#Supongamos que ponemos la Hydra:
DAÑO = ([169.2 + 0.60 * 0] + 30) * (1 + 0.7) * (1 + 0) * (1 - 0.20)
DAÑO = (169 + 30) * (1.7) * (0.80)
DAÑO = 270.64
DAÑOFINAL = 270

#Supongamos que ponemos la Skeleton Worker
DAÑO = ([169.2 + 0.60 * 5] + 30) * (1 + 0.5) * (1 + 0.15) * (1 - 0.20)
DAÑO = ([169.2 + 3] + 30) * (1.5) * (1.15) * (0.80)
DAÑO = 278.76
DAÑOFINAL = 278

Conclusion: La Skeleton Worker es mejor por poco. Pero ¿Cuan mejor puede ser en otros casos? Se puede mostrar de igual manera que como en el caso anterior, que mientras se enfrenten a oponentes con mayor defensa, la efectividad de la Skeleton Worker card aumenta.
« Última modificación: 09 de Agosto de 2012, 01:09:23 am por Lawliet »