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!
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!