quinta-feira, 29 de julho de 2010

Matemática no Ragnarok: Parte 2 Fórmulas


Aqui vamos discutir um pouco sobre a mecânica do jogo. Na primeira parte de Matemática no Ragnarok foram discutidos os atributos (stats), agora vamos falar sobre as propriedades destes atributos (substats).

Poucos jogos tem a mecânica tão conhecida como Ragnarok, http://rodatazone.simgaming.net/index.php este site foi a principal fonte de informações sobre a mecânica por um bom tempo, mas logo que você chega na página inicial dá pra ver que ele não é atualizado faz muito tempo. Mesmo assim a maioria dos conceitos apresentados lá ainda estão certos.


Attack - ATK

O cálculo do ataque é bem complexo envolve diversas variáveis

Para um ataque de um personagem Melee a fórmula do dano é essa:

(([((({(STR + [STR/10]^2 + [DEX/5] + [LUK/5] + UpgradeBonus + ImpositioManus + ATKCards + rnd(min(DEX,ATK), ATK)*SizeModifier) * SkillModifiers * (1 - DEF/100) - VitDEF + BaneSkill + UpgradeDamage} + MasterySkill + WeaponryResearchSkill + EnvenomSkill) * ElementalModifier) + Enhancements) * DamageBonusModifiers * DamageReductionModifiers] * NumberOfMultiHits) - KyrieEleisonEffect) / NumberOfMultiHits

Para um ataque de um personagem Ranged a fórmula do dano é essa:

([({(DEX + [DEX/10]^2 + [STR/5] + [LUK/5] + UpgradeBonus + ImpositioManus + ATKCards + (rnd(ATK/100*min(ATK, dex*(0.8+0.2*WeaponLevel)), max(ATK, ATK/100*min(ATK, dex*(0.8+0.2*WeaponLevel)) + rnd(0, ArrowATK - 1)) * SizeModifier) * SkillModifiers * (1 - DEF/100) - VitDEF + BaneSkill + Upgrades} + EnvenomSkill) * ElementalModifier * DamageBonusModifiers * DamageReductionModifiers] * NumberOfMultiHits) - KyrieEleisonEffect) / NumberOfMultiHits

Para o ataque de um monstro (ranged ou melee) a fórmula do dano é essa:

(([({rnd(MinATK,MaxATK) * SkillModifiers * (1 - DEF/100) - VitDEF - ProtectionSkills} + EnvenomSkill) * ElementalModifier * DamageReductionModifiers] * NumberOfMultiHits) - KyrieEleisonEffect) / NumberOfMultiHits


O básico em matemática é primeiro o que está dentro dos parênteses, e as operações se dão na ordem exponencial e redicial, depois multiplicações e divisões e por último soma e subtrações.

Bom agora precisamos destrinchar um pouco essas fórmulas para facilitar a compreensão vamos análisar o ataque melee, depois para compreender o ranged é só usar o mesmo conceito, 

(STR + [STR/10]^2 + [DEX/5] + [LUK/5] + UpgradeBonus + ImpositioManus + ATKCards + rnd(min(DEX,ATK), ATK)*SizeModifier) - Aqui é o seu ataque propriamente dito, aquele lugar onde diz rnd, é o ataque da sua arma que apresenta um elemento randômico (se você atacar sem arma vai causar sempre o mesmo dano), aqui é importante analisar o bônus em STR, digamos que você tem 100 de STR, então além do dano aumentar em 100, você ainda tem o bonus (STR/10)^2 = (100/10)^2 = 10^2 = 100, então para 100 de STR o bonus praticamente dobra seu ataque (se etiver desarmado, e sem bonus em outros atributos), sendo que de 110 pra cima em STR o bonus passa a ser maior que o valor bruto de STR.

SkillModifiers - Aqui é onde se calculam as skills, por exemplo a Mammonita nível dez vai multiplicar o valor do seu ataque por 6 (600%)

(1 - DEF/100) - Nesse ponto temos a redução do dano devido a DEF do adversário, depois vou explicar um pouco melhor a DEF

- VitDEF + BaneSkill + UpgradeDamage - Nesse ponto temos a redução do dano devido a VitDEF do adversário, Bane skills são habilidades tipo Divine Protection, esse UpgradeDamage é o upgrade da sua arma.

MasterySkill + WeaponryResearchSkill + EnvenomSkill - Nesse ponto temos as skills do tipo Sword Mastery. Então aqui podemos ver um dos motivos porque essas habilidades são questionadas em algumas builds. Digamos que você esteja usando uma espada ou adaga e tenha Sword Mastery 10 e um ataque de 100 e usou mammonita o dano fica 100*6+40 = 640. para que esse tipo de habilidade fosse mais útil na maioria dos casos ele deveria se somar ao ataque antes da multiplicação pelas skills dai teriamos (100+40)*6 = 840. Portanto esse tipo de skill só é útil para ataques normais e contra personagens de alta DEF (pois o dano é calculado após a redução de DEF). 

ElementalModifier - Nesse ponto temos o Elemento, ele multiplica tudo que já foi citado, então se esse modificador for 0 independente de quão grande é seu ataque o dano vai ser 0 (por exemplo um ataque neutro em um monstro do elemento fantasma 4)

Enhancements - Nesse ponto somamos os Fortíssimos das armas então, mesmo se você atacar com o elemento que talvez não causasse dano tipo atacar um monstro fantasma 4 com uma arma forte ou fortíssima vai causar dano, mas esse dano é só referente ao aprimoramento da arma, independe do seu ataque. Esse ataque é chamado de never miss, além de acertar elementos que normalmente não dariam dano você também acerta independentemente da flee do adversário.

DamageBonusModifiers * DamageReductionModifiers - Nesse ponto temos os bonus e reduções devido raça elemento e tamanho, normalmente estes são provindos de carta, mas pode ser de equipamentos e armas também. Como os ataques que ignoram a DEF já foram aplicados antes então aqui cartas como Thara e Raydric ainda reduzem o dano desses tipos de ataque.


Magical Attacks - MATK

O cálculo aqui é bem mais simples:

{rnd(minMATK,maxMATK) * ItemModifier * SkillModifier * (1-MDEF/100) - INT - VIT/2} * Elemental Modifier

O seu dano depende apenas da sua INT (um valor randomico entre o minimo e maximo MATK), de modificadores por equipamentos , itens ou cartas (como a Imp ou a Siroma), da skill (por exemplo lança de fogo tem o dano de 1*MATK, mas existem skills que tem 1,7*MATK como Fire Ball 10), modificador elemental (por exemplo se você usar um ataque do elemento água em um monstro do elemento fogo nível 3 o modificador é 2), e da MDEF e IntMDEF.


DEF

Bom, agora vamos trabalhar na defesa. a fórmila de dano é sempre a mesma então agora vamos analisar como ela funciona para defesa.

Temos 3 pontos que podem aumentar sua defesa:

DEF: é um valor que causa uma redução proporcional ao dano (é o valor da soma das DEF dos equipamentos, sendo que quando um equipamento é refinado +1, você  tem um aumento de 0,8 em DEF)

VitDEF (também chamada de Soft DEF): sempre apresenta uma redução constante no dano independente do valor do ataque do adversário (esse valor de VitDEF é 0,8*VIT e habilidades como Divine Protection).

Redução por cartas e equipamentos: também apresenta uma redução porporcional ao dano.

Para MDEF é praticamente a mesma coisa MDEF e reduções por cartas são proporcionais ao dano, e IntMDEF é uma redução constante (IntMDEF é calculada INT+VIT/2).


Attack Speed - ASPD

A fórmula para o cálculo da velocidade é:

ASPD = 200-(WD-([WD*AGI/25]+[WD*DEX/100])/10)*(1-SM)

Sendo que WD é weapon delay, que depende da sua arma e da sua classe. E SM é speed modifier que são as cartas, habilidades ou poções para deixar o personagem mais rápido (tipo poção do despertar, habilidade rapidez com duas maos, ou carta dopplerganger).


Cast Time

A fórmula do cálculo do cast time é:

Cast time = Base time * (1 - DEX/150) * (1 - 0.15 * SUF) * (1 - CTM)

Simplificando aqui temos que 150 de DEX é o único modo de se alcançar instant cast. SUF é sufragium, a habilidade dos priests, e CMT é cast time modifiers em geral cartas, talves tenha alguma arma ou item que reduza ou aumente o cast time, mas eu não lembro.

Se uma skill levaria 10 segundos para ser conjurada, digamos que você tenha 75 de DEX, então se uma skill leva 5 segundo. se além dos 75 de DEX você tem duas cartas siroma (cada uma reduz o cast time em 25%), então o cast time vai ser 2,5 segundos. (a redução vinda das cartas não se soma com a vinda de DEX, elas se multiplicam).


Outros atributos

Ragnarok é um jogo bem complexo tem fórmulas pra tudo, HP máximo, regeneração narural de HP, SP máximo, regeneração narural de SP, Flee, Hit, Crítico, etc. Mas acredito que sabendo o que foi dito até agora já se possa ter uma boa base do funcionamento da mecânica do jogo.