PDA

Ver la Versión Completa : Diferencia entre Defensa con Escudos y Tácticas de Combate (v0.11.5)



Argentum Online
02/07/2014, 21:16
Originalmente publicado por DarkBlood.-

toy viendo.. pense que era algo simple esta skill.. PERO NO, depende de muuuuchas cosas para "rechazar efectivamente".




1) codigo de la Skill Defensa con Escudos
(skill-points * mod-evasionescudo-clase) / 2 = PoderEvasionEscudo



Function PoderEvasionEscudo(ByVal UserIndex As Integer) As Long


PoderEvasionEscudo = (UserList(UserIndex).Stats.UserSkills(Defensa) * _
ModEvasionDeEscudoClase(UserList(UserIndex).Clase) ) / 2


End Function


1a) codigo de la Skill Tacticas de Combate

Function PoderEvasion(ByVal UserIndex As Integer) As Long
Dim lTemp As Long
With UserList(UserIndex)
lTemp = (.Stats.UserSkills(Tacticas) + _
.Stats.UserSkills(Tacticas) / 33 * .Stats.UserAtributos(Agilidad)) * _
ModificadorEvasion(.Clase)

PoderEvasion = (lTemp + (2.5 * Maximo(.Stats.ELV - 12, 0)))
End With
End Function




2) vemos la Function NpcImpacto (aca usa el PoderEvasionEscudo).


-la parte que marque en negrita es la probabilidad de rechazar un ataque de un NPC.



UserEvasion = PoderEvasion(UserIndex)
NpcPoderAtaque = Npclist(NpcIndex).PoderAtaque
PoderEvasioEscudo = PoderEvasionEscudo(UserIndex)


SkillTacticas = UserList(UserIndex).Stats.UserSkills(Tacticas)
SkillDefensa = UserList(UserIndex).Stats.UserSkills(Defensa)


'Esta usando un escudo ???
If UserList(UserIndex).Invent.EscudoEqpObjIndex > 0 Then UserEvasion = UserEvasion + PoderEvasioEscudo


ProbExito = Maximo(10, Minimo(90, 50 + ((NpcPoderAtaque - UserEvasion) * 0.4)))


NpcImpacto = (RandomNumber(1, 100) <= ProbExito)


' el usuario esta usando un escudo ???
If UserList(UserIndex).Invent.EscudoEqpObjIndex > 0 Then
If NpcImpacto = False Then
ProbRechazo = Maximo(10, Minimo(90, 100 * (SkillDefensa / (SkillDefensa + SkillTacticas))))
Rechazo = (RandomNumber(1, 100) <= ProbRechazo)
If Rechazo = True Then
'Se rechazo el ataque con el escudo




3) vemos la Function UsuarioImpacto (aca tambien usa el PoderEvasionEscudo).



SkillTacticas = UserList(VictimaIndex).Stats.UserSkills(Tacticas)
SkillDefensa = UserList(VictimaIndex).Stats.UserSkills(Defensa)


'Calculamos el poder de evasion...
UserPoderEvasion = PoderEvasion(VictimaIndex)


If UserList(VictimaIndex).Invent.EscudoEqpObjIndex > 0 Then
UserPoderEvasionEscudo = PoderEvasionEscudo(VictimaIndex)
UserPoderEvasion = UserPoderEvasion + UserPoderEvasionEscudo
Else
UserPoderEvasionEscudo = 0
End If


'Esta usando un arma ???
If UserList(AtacanteIndex).Invent.WeaponEqpObjIndex > 0 Then

If proyectil Then
PoderAtaque = PoderAtaqueProyectil(AtacanteIndex)
Else
PoderAtaque = PoderAtaqueArma(AtacanteIndex)
End If
ProbExito = Maximo(10, Minimo(90, 50 + _
((PoderAtaque - UserPoderEvasion) * 0.4)))

Else
PoderAtaque = PoderAtaqueWresterling(AtacanteIndex)
ProbExito = Maximo(10, Minimo(90, 50 + _
((PoderAtaque - UserPoderEvasion) * 0.4)))

End If
UsuarioImpacto = (RandomNumber(1, 100) <= ProbExito)


' el usuario esta usando un escudo ???
If UserList(VictimaIndex).Invent.EscudoEqpObjIndex > 0 Then

'Fallo ???
If UsuarioImpacto = False Then
ProbRechazo = Maximo(10, Minimo(90, 100 * (SkillDefensa / (SkillDefensa + SkillTacticas))))
Rechazo = (RandomNumber(1, 100) <= ProbRechazo)
If Rechazo = True Then
'Se rechazo el ataque con el escudo
Call SendData(ToPCArea, AtacanteIndex, UserList(AtacanteIndex).Pos.Map, "TW" & SND_ESCUDO)
Call SendData(ToIndex, AtacanteIndex, 0, "8")
Call SendData(ToIndex, VictimaIndex, 0, "7")
Call SubirSkill(VictimaIndex, Defensa)
End If
End If
End If
--
=====
--



-------------------------------------------------------------------------------------------------------------------------------------------------
Originalmente publicado por DarkBlood.-

al atacarte un NPC, si vos NO tenes escudo equipado, hace:


ProbExito = Maximo(10, Minimo(90, 50 + ((NpcPoderAtaque - UserEvasion) * 0.4)))
'calcula probexito(posibilidad de esquivar golpe), segun la punteria del npc y los skill points tactica del pj.


NpcImpacto = (RandomNumber(1, 100) <= ProbExito)
'luego ya calculada la ProbExito, hace un random de 1a100 y si es menor o igual a ProbExito, ESQUIVA efectivamente el golpe del npc.





------------


al atacarte un NPC, si vos TENES escudo equipado, aumenta la posiblidad de esquivar gracias a los puntos de Defensa con Escudo!!:


osea que para esquivar el golpe no solo depende de Tacticas sino de Defensa con escudos y que el escudo te equipado sino no sirve de nada.



-------------------------------------------------------------------------------------------------------------------------------------------------
Originalmente publicado por (Pato)².-

Primero que nada falto quotear esto :D:

Function PoderEvasion(ByVal UserIndex As Integer) As Long
Dim lTemp As Long
With UserList(UserIndex)
lTemp = (.Stats.UserSkills(Tacticas) + _
.Stats.UserSkills(Tacticas) / 33 * .Stats.UserAtributos(Agilidad)) * _
ModificadorEvasion(.Clase)

PoderEvasion = (lTemp + (2.5 * Maximo(.Stats.ELV - 12, 0)))
End With
End Function


y esto:

Function PoderAtaqueArma(ByVal UserIndex As Integer) As Long
Dim PoderAtaqueTemp As Long


If UserList(UserIndex).Stats.UserSkills(Armas) < 31 Then
PoderAtaqueTemp = (UserList(UserIndex).Stats.UserSkills(Armas) * _
ModificadorPoderAtaqueArmas(UserList(UserIndex).Cl ase))
ElseIf UserList(UserIndex).Stats.UserSkills(Armas) < 61 Then
PoderAtaqueTemp = ((UserList(UserIndex).Stats.UserSkills(Armas) + _
UserList(UserIndex).Stats.UserAtributos(Agilidad)) * _
ModificadorPoderAtaqueArmas(UserList(UserIndex).Cl ase))
ElseIf UserList(UserIndex).Stats.UserSkills(Armas) < 91 Then
PoderAtaqueTemp = ((UserList(UserIndex).Stats.UserSkills(Armas) + _
(2 * UserList(UserIndex).Stats.UserAtributos(Agilidad)) ) * _
ModificadorPoderAtaqueArmas(UserList(UserIndex).Cl ase))
Else
PoderAtaqueTemp = ((UserList(UserIndex).Stats.UserSkills(Armas) + _
(3 * UserList(UserIndex).Stats.UserAtributos(Agilidad)) ) * _
ModificadorPoderAtaqueArmas(UserList(UserIndex).Cl ase))
End If


PoderAtaqueArma = (PoderAtaqueTemp + (2.5 * Maximo(UserList(UserIndex).Stats.ELV - 12, 0)))
End Function




No era tan dificil despues de todo...
Para explicarlo mejor vamos a poner el ejemplo de un guerrero (que tiene modificador de escudo 1 y mod de evasion 1) nivel 30 y 38 de agilidad con 100 a escudo y 100 a tacticas y 100 a combate con armas...


Su poder de evasion con el escudo va a ser: 310,15151515...
El de ataque: 221
El de evasion sin escudo: 260.1515151515...


Entonces al atacarte una araña se tira un numero al azar entre 1 y 10. Si es menor o igual a 10 te pega...


Sino ya te fallo el golpe... lo que sigue despues, si no me confundo, es un calculo muy al pedo para ver si te pone "La criatura fallo el golpe" o "Has rechazado el ataque con el escudo... Y tambien me parece que contra la araña este guerrero es lo mismo que use o no escudo...


Ahora supongamos que le planta a un bardo nivel 30 con 38 de agi y 100 a tacticas y escudo...


Poder de evasion del bardo con escudo: 309,166666666666666666
Sin escudo: 271,666666666666666666


Cada vez que el guerre tira un control se tira un numero al azar entre 1 y 100. Cuando tiene escudo, si es menor/igual a 15 le pega...
Si no tiene escudo le pega cuando es menor/igual a 30, por lo que el escudo en este caso le duplica la evasion al bardo...
Y tambien aca los calculos que siguen son solamente para ver que cartelido aparece.


Suerte!