PDA

Ver la Versión Completa : Daño que hace la matadragones (v0.11.5)



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

hice este thread para saber como funciona el daño que hace a cualquier otra cosa que no sea un dragon.


(para el que todavia no sabe: al golpear dragon efectivamente con una/s matadragones mata al dragon de una y desaparece 1 sola matadragones del inv.)


---------
al pegarle a un usuario o NPC(menos dragon) con la matadragones HACE:
siendo guerrero, drogado 38fz y golpe 99/99




CalcularDaño = CInt(UserList(UserIndex).Stats.MaxHIT / 5)


(The CInt function converts an expression to type Integer.) , luego


CalcularDaño = (((3 * 1) + ((1 / 5) * Maximo 0, AtributoFuerza - 15))) + DañoUsuario) * 1.1)


(((3 + 0,2 * 23)) + ¿99 o 20?) * 1.1 = 190 o 103 [Daño final sera?]





Public Function CalcularDaño(ByVal UserIndex As Integer, Optional ByVal NpcIndex As Integer = 0) As Long
Dim DañoArma As Long, DañoUsuario As Long, Arma As ObjData, ModifClase As Single
Dim proyectil As ObjData
Dim DañoMaxArma As Long


''sacar esto si no queremos q la matadracos mate el dragon si o si
Dim matodragon As Boolean
matodragon = False




If UserList(UserIndex).Invent.WeaponEqpObjIndex > 0 Then
Arma = ObjData(UserList(UserIndex).Invent.WeaponEqpObjInd ex)




' Ataca a un npc?
If NpcIndex > 0 Then


'Usa la mata dragones?
If Arma.SubTipo = MATADRAGONES Then ' Usa la matadragones?
ModifClase = ModicadorDañoClaseArmas(UserList(UserIndex).Clase)
If Npclist(NpcIndex).NPCtype = DRAGON Then 'Ataca dragon?
DañoArma = RandomNumber(Arma.MinHIT, Arma.MaxHIT)
DañoMaxArma = Arma.MaxHIT
matodragon = True ''sacar esto si no queremos q la matadracos mate el dragon si o si
Else ' Sino es dragon daño es 1
DañoArma = 1
DañoMaxArma = 1
End If
Else ' daño comun
If Arma.proyectil = 1 Then
ModifClase = ModicadorDañoClaseProyectiles(UserList(UserIndex). Clase)
DañoArma = RandomNumber(Arma.MinHIT, Arma.MaxHIT)
DañoMaxArma = Arma.MaxHIT
If Arma.Municion = 1 Then
proyectil = ObjData(UserList(UserIndex).Invent.MunicionEqpObjI ndex)
DañoArma = DañoArma + RandomNumber(proyectil.MinHIT, proyectil.MaxHIT)
DañoMaxArma = Arma.MaxHIT
End If
Else
ModifClase = ModicadorDañoClaseArmas(UserList(UserIndex).Clase)
DañoArma = RandomNumber(Arma.MinHIT, Arma.MaxHIT)
DañoMaxArma = Arma.MaxHIT
End If
End If


Else ' Ataca usuario
If Arma.SubTipo = MATADRAGONES Then
ModifClase = ModicadorDañoClaseArmas(UserList(UserIndex).Clase)
DañoArma = 1 ' Si usa la espada matadragones daño es 1
DañoMaxArma = 1
Else
If Arma.proyectil = 1 Then
ModifClase = ModicadorDañoClaseProyectiles(UserList(UserIndex). Clase)
DañoArma = RandomNumber(Arma.MinHIT, Arma.MaxHIT)
DañoMaxArma = Arma.MaxHIT
If Arma.Municion = 1 Then
proyectil = ObjData(UserList(UserIndex).Invent.MunicionEqpObjI ndex)
DañoArma = DañoArma + RandomNumber(proyectil.MinHIT, proyectil.MaxHIT)
DañoMaxArma = Arma.MaxHIT
End If
Else
ModifClase = ModicadorDañoClaseArmas(UserList(UserIndex).Clase)
DañoArma = RandomNumber(Arma.MinHIT, Arma.MaxHIT)
DañoMaxArma = Arma.MaxHIT
End If
End If
End If
Else
CalcularDaño = CInt(UserList(UserIndex).Stats.MaxHIT / 5)
Exit Function
End If


DañoUsuario = RandomNumber(UserList(UserIndex).Stats.MinHIT, UserList(UserIndex).Stats.MaxHIT)


''sacar esto si no queremos q la matadracos mate el dragon si o si
If matodragon Then
CalcularDaño = Npclist(NpcIndex).Stats.MinHP + Npclist(NpcIndex).Stats.Def
Else
CalcularDaño = (((3 * DañoArma) + ((DañoMaxArma / 5) * Maximo(0, (UserList(UserIndex).Stats.UserAtributos(Fuerza) - 15))) + DañoUsuario) * ModifClase)
End If


End Function


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




Function Maximo(ByVal A As Single, ByVal b As Single) As Single
If A > b Then
Maximo = A
Else: Maximo = b
End If
End Function
----------------- ----------------- ----------------- ----------------- ----------------- ----------------- ----------------- ----------------- --------
Originalmente publicado por Integer.-

Bueno, paso a explicar este código:
La parte que realmente nos interesa es la que señalo en negrita.



Public Function CalcularDaño(ByVal UserIndex As Integer, Optional ByVal NpcIndex As Integer = 0) As Long
Dim DañoArma As Long, DañoUsuario As Long, Arma As ObjData, ModifClase As Single
Dim proyectil As ObjData
Dim DañoMaxArma As Long


''sacar esto si no queremos q la matadracos mate el dragon si o si
Dim matodragon As Boolean
matodragon = False




If UserList(UserIndex).Invent.WeaponEqpObjIndex > 0 Then
Arma = ObjData(UserList(UserIndex).Invent.WeaponEqpObjInd ex)


' Ataca a un npc?
If NpcIndex > 0 Then

'Usa la mata dragones?
If Arma.SubTipo = MATADRAGONES Then ' Usa la matadragones?
ModifClase = ModicadorDañoClaseArmas(UserList(UserIndex).Clase)
If Npclist(NpcIndex).NPCtype = DRAGON Then 'Ataca dragon?
DañoArma = RandomNumber(Arma.MinHIT, Arma.MaxHIT)
DañoMaxArma = Arma.MaxHIT
matodragon = True ''sacar esto si no queremos q la matadracos mate el dragon si o si
Else ' Sino es dragon daño es 1
DañoArma = 1
DañoMaxArma = 1
End If
Else ' daño comun
If Arma.proyectil = 1 Then
ModifClase = ModicadorDañoClaseProyectiles(UserList(UserIndex). Clase)
DañoArma = RandomNumber(Arma.MinHIT, Arma.MaxHIT)
DañoMaxArma = Arma.MaxHIT
If Arma.Municion = 1 Then
proyectil = ObjData(UserList(UserIndex).Invent.MunicionEqpObjI ndex)
DañoArma = DañoArma + RandomNumber(proyectil.MinHIT, proyectil.MaxHIT)
DañoMaxArma = Arma.MaxHIT
End If
Else
ModifClase = ModicadorDañoClaseArmas(UserList(UserIndex).Clase)
DañoArma = RandomNumber(Arma.MinHIT, Arma.MaxHIT)
DañoMaxArma = Arma.MaxHIT
End If
End If

Else ' Ataca usuario
If Arma.SubTipo = MATADRAGONES Then
ModifClase = ModicadorDañoClaseArmas(UserList(UserIndex).Clase)
DañoArma = 1 ' Si usa la espada matadragones daño es 1
DañoMaxArma = 1
Else
If Arma.proyectil = 1 Then
ModifClase = ModicadorDañoClaseProyectiles(UserList(UserIndex). Clase)
DañoArma = RandomNumber(Arma.MinHIT, Arma.MaxHIT)
DañoMaxArma = Arma.MaxHIT
If Arma.Municion = 1 Then
proyectil = ObjData(UserList(UserIndex).Invent.MunicionEqpObjI ndex)
DañoArma = DañoArma + RandomNumber(proyectil.MinHIT, proyectil.MaxHIT)
DañoMaxArma = Arma.MaxHIT
End If
Else
ModifClase = ModicadorDañoClaseArmas(UserList(UserIndex).Clase)
DañoArma = RandomNumber(Arma.MinHIT, Arma.MaxHIT)
DañoMaxArma = Arma.MaxHIT
End If
End If
End If
Else
CalcularDaño = CInt(UserList(UserIndex).Stats.MaxHIT / 5)
Exit Function
End If


DañoUsuario = RandomNumber(UserList(UserIndex).Stats.MinHIT, UserList(UserIndex).Stats.MaxHIT)


''sacar esto si no queremos q la matadracos mate el dragon si o si
If matodragon Then
CalcularDaño = Npclist(NpcIndex).Stats.MinHP + Npclist(NpcIndex).Stats.Def
Else
CalcularDaño = (((3 * DañoArma) + ((DañoMaxArma / 5) * Maximo(0, (UserList(UserIndex).Stats.UserAtributos(Fuerza) - 15))) + DañoUsuario) * ModifClase)
End If

End Function


Bueno, la primera parte:






Esto es cuando se le pega a un user con la matadracos.








Es decir, con el guerre drogado en 38 de fuerza sacaría 8 de daño.


La función Maximo elige el valor más alto entre los dos que se dieron.
Por ejemplo Maximo(A,B) donde A = 5, B = 7.



Function Maximo(ByVal A As Single, ByVal B As Single) As Single
If A > B Then 'Si A (5) es mayor a B (7)...
Maximo = A
Else: Maximo = B 'Si A no es mayor a B, entonces B es mayor a A, por lo tanto Maximo es B.
End If
End Function
Entonces en nuestro ejemplo Maximo va a dar B, es decir 7.


Espero que halla sido de ayuda,
Nacho