Limite coup mortel

J

Joe Jinis

Invité
Elle est fixée a combien la limite de % de coup mortel, car il est tres facile de dépasser les 100% et quand cela depasse les 100% cela veut dire qu'on a une chance de faire le triple de degats????Je pense a l'arme matraqueuse qui depasse largement les 100% en fonction du nivo.

Meme question pour le voup cinglant......
 
J

Joe Jinis

Invité
Alors pkoi augmenter au dessus de 100 alors que 100 est la limite virtuelle?
 
T

tiissa

Invité
C'est juste que tu n'es pas censé la porter à gros niveau et que sinon à petit nivo la chance est beaucoup trop faible.
 

Invité
Pour mon ama 95 , vu que j'ai des boots merdique .. si je met les boots 25 ù coup cinglant 25 % mortel je croit que c'est les stats ... Enfin c'est pour savoir si 25 c'est asxer ou 25 et 00 c'est la meme chose et ya pa de difference ?
 
M

Myrdinn

Invité
Pas sur d'voir tout compris
Mais 100=tout les coups
25 1 coup sur 4 en moyenne :)
 
J

Joe Jinis

Invité
100=sa mlarche tout le temps
200= sa marche que tout le temps aussi.....?
 
J

Joe Jinis

Invité
Ben le truc logique serait de faire 300% de degats avec coups mortel!Avec 200% bien sur de coup mortel.
 
K

Killerhurrycane

Invité
surtout que le raisonement de joe n a rien de logique...
mais c est po grave...
 
K

KaLiS

Invité
La difference de niveau avec la bete n'affecte pas les chances de coup mortel?
 
M

Myrdinn

Invité
Pas a ma connaissance.
J'ai extrait la sequence d'un coup recu. Je la desassemble en ce moment(Bientot un post :rolleyes: ), par la suite j'essayerais coup donné (ca part dans tous les sens j'y arrive pas pour l'instant) je verrais bien alors pour toutes ces attaques spéciales :)
 
J

Joe Jinis

Invité
nan je veux dire que en dessous de 100% de coup mortel on a un% age de chance de faire le double de degats.Ok?
Ben si on a +de 100 mais inferieur ou egal a 200 on a deja un coup mortel assuré mais encore un %age de chance de faire encore un coup mortel, vous me suivez?
donc 100 de degats de base sa donnerait 200 ou 300.
 
M

Myrdinn

Invité
Fallait pas me cherche

D'abord un grand merci à Jarulf sans qui rien de ceci ne serait connu

La routine du crushing blow commence à l'offset 6FCE44F0.

:6FCE44F0 51 push ecx
:6FCE44F1 53 push ebx
:6FCE44F2 55 push ebp
:6FCE44F3 56 push esi
:6FCE44F4 8BF2 mov esi, edx
:6FCE44F6 85F6 test esi, esi
:6FCE44F8 57 push edi
:6FCE44F9 C744241000000000 mov , 00000000
:6FCE4501 750B jne 6FCE450E
:6FCE4503 5F pop edi
:6FCE4504 5E pop esi
:6FCE4505 5D pop ebp
:6FCE4506 6633C0 xor ax, ax
:6FCE4509 5B pop ebx
:6FCE450A 59 pop ecx
:6FCE450B C21400 ret 0014
*reference par un Jump at Address:
|:6FCE4501(C)
|
:6FCE450E 8B7C2418 mov edi, dword ptr
:6FCE4512 85FF test edi, edi
:6FCE4514 750B jne 6FCE4521
:6FCE4516 5F pop edi
:6FCE4517 5E pop esi
:6FCE4518 5D pop ebp
:6FCE4519 6633C0 xor ax, ax
:6FCE451C 5B pop ebx
:6FCE451D 59 pop ecx
:6FCE451E C21400 ret 0014
Juste un check pour voir s'il existe un attaquant et une cible

*reference par un Jump at Address::
|:6FCE4514(C)
|
:6FCE4521 6888000000 push 00000088
:6FCE4526 56 push esi
Set up pour fixer la chance de l'attaquant de faire un CB

:6FCE4527 BD04000000 mov ebp, 00000004
C'est la valeur par defaut à retirer de la vie. La vie de la cible est divisé par ce nombre.Ce nombre est susceptible d'etre remplacé ou modifier par la suite. Vous aurez compris de base CB enleve 25% des PV restant. Pour faire un MOD il siffit de changer cette valeur avec un editeur hexa :)

* Reference To: D2Common.Ordinal:2918, Ord:2918h
|
:6FCE452C E8C1070100 Call 6FCF4CF2
:6FCE4531 8BD8 mov ebx, eax
:6FCE4533 85DB test ebx, ebx
:6FCE4535 7F0B jg 6FCE4542
Calcul la chance d'avoir un CB et exit de la routine si chance n'est pas supérieure à 0

:6FCE4537 5F pop edi
:6FCE4538 5E pop esi
:6FCE4539 5D pop ebp
:6FCE453A 6633C0 xor ax, ax
:6FCE453D 5B pop ebx
:6FCE453E 59 pop ecx
:6FCE453F C21400 ret 0014
*reference par un Jump at Address::
|:6FCE4535(C)
|
:6FCE4542 BA64000000 mov edx, 00000064
:6FCE4547 8D4E2C lea ecx, dword ptr
* Reference To: D2Common.Ordinal:2AA6, Ord:2AA6h
|
:6FCE454A E871090100 Call 6FCF4EC0
:6FCE454F 3BC3 cmp eax, ebx
:6FCE4551 7C0B jl 6FCE455E
Recupere un nombre aleatoire entre 0 et 99 (Avec le seed de l'attaquant) et le compare à la chance d'avoir un CB. Exit en cas d'echec. Tu vois Joe on s'en fou de tes 200%

:6FCE4553 5F pop edi
:6FCE4554 5E pop esi
:6FCE4555 5D pop ebp
:6FCE4556 6633C0 xor ax, ax
:6FCE4559 5B pop ebx
:6FCE455A 59 pop ecx
:6FCE455B C21400 ret 0014

A partir de la commence le vrai crushing blow et l'application des dégats
*reference par un Jump at Address::
|:6FCE4551(C)
|
:6FCE455E 6A06 push 00000006
:6FCE4560 57 push edi
* Reference To: D2Common.Ordinal:2917, Ord:2917h
|
:6FCE4561 E8E6040100 Call 6FCF4A4C
:6FCE4566 8BD8 mov ebx, eax
recupere la valeur de la vie actuelle de la cible

:6FCE4568 8B07 mov eax, dword ptr
:6FCE456A 85C0 test eax, eax
:6FCE456C 7505 jne 6FCE4573
Regarde si la cible est un joueur

:6FCE456E BD0A000000 mov ebp, 0000000A

*reference par un Jump at Address::
|:6FCE456C(C)
|
:6FCE4573 83F801 cmp eax, 00000001
:6FCE4576 752F jne 6FCE45A7
Si la cible est un monstre jump a la prochaine section

:6FCE4578 57 push edi
* Reference To: D2Common.Ordinal:2B3B, Ord:2B3Bh
|
:6FCE4579 E87E060100 Call 6FCF4BFC
:6FCE457E 85C0 test eax, eax
:6FCE4580 7520 jne 6FCE45A2
Regarde si la cible est un mercenaire et fixe la valeur à 10 dans ce cas la

:6FCE4582 8B4770 mov eax, dword ptr
Comme il s'agit d'un monstre le pointer recupere les stats relative aux monstres

:6FCE4585 8B7008 mov esi, dword ptr
A partir de ce point, le pointeur pointe sur une structure appelé "Boss stats" par Jarulf.
il est nul (0) si le monstre n'est ni un boss ni un champion

:6FCE4588 85F6 test esi, esi
:6FCE458A 741B je 6FCE45A7
Saut pour les monstres "normaux"

:6FCE458C 8BCE mov ecx, esi
:6FCE458E E83DD2F7FF call 6FC617D0
:6FCE4593 85C0 test eax, eax
:6FCE4595 750B jne 6FCE45A2
Routine pour les boss et champion. Verification et application diverse que je n'aborderais pas ici

:6FCE4597 8BCE mov ecx, esi
:6FCE4599 E872D2F7FF call 6FC61810
:6FCE459E 85C0 test eax, eax
:6FCE45A0 7405 je 6FCE45A7

Par encore etudie

*reference par un Jump at Address::
|:6FCE4580(C), :6FCE4595(C)
|
:6FCE45A2 BD0A000000 mov ebp, 0000000A
On arrive ici pour un mercenaire, boss ou champion. Dans ce cas CB retire 1/10 des PV de la cible

*reference par un Jump at Address::
|:6FCE4576(C), :6FCE458A(C), :6FCE45A0(C)
|
:6FCE45A7 8B442428 mov eax, dword ptr
:6FCE45AB 85C0 test eax, eax
:6FCE45AD 7502 jne 6FCE45B1
:6FCE45AF 03ED add ebp, ebp
Ce test valide que s'il s'agit d'un missile in double la valeur (donc on divise par 8 au lieu de 4 ou encore par 20 au lieu de 10 suivant les cas) Les missiles sont 2 fois moins efficace

*reference par un Jump at Address::|:6FCE45AD(C)
|
:6FCE45B1 8BC3 mov eax, ebx
:6FCE45B3 6A24 push 00000024
:6FCE45B5 99 cdq
:6FCE45B6 F7FD idiv ebp
:6FCE45B8 57 push edi
:6FCE45B9 8BF0 mov esi, eax
Deux choses s'appliquent ici. 1) on divise la vie de la cible par la valeur et 2) on recupere la resitance physique de la cible

* Reference To: D2Common.Ordinal:2917, Ord:2917h
|
:6FCE45BB E88C040100 Call 6FCF4A4C
:6FCE45C0 83F864 cmp eax, 00000064
:6FCE45C3 7E07 jle 6FCE45CC
:6FCE45C5 B864000000 mov eax, 00000064
:6FCE45CA EB04 jmp 6FCE45D0
Limite la resistance physique à 100%. oui on peut etre immunisé si les objets existait :)

*reference par un Jump at Address::
|:6FCE45C3(C)
|
:6FCE45CC 85C0 test eax, eax
:6FCE45CE 7E18 jle 6FCE45E8
Suite liée à la resistance. Encore besoin d'etude

*reference par un Jump at Address::
|:6FCE45CA(U)
|
:6FCE45D0 0FAFC6 imul eax, esi
:6FCE45D3 8BC8 mov ecx, eax
:6FCE45D5 B8E17A14AE mov eax, AE147AE1
:6FCE45DA F7E9 imul ecx
:6FCE45DC C1FA05 sar edx, 05
:6FCE45DF 8BCA mov ecx, edx
:6FCE45E1 C1E91F shr ecx, 1F
:6FCE45E4 03D1 add edx, ecx
:6FCE45E6 03F2 add esi, edx
Simplement prend le montant de vie à extraire, le multiplie par la resistance. Divise le tout par -100

et ajoute ce nouveau montant negatif a la vie actuelle de la cible:
ammount = ammount + ammount*Res/-100 = ammount - ammount*res/100 = ammount * (1-res/100)

*reference par un Jump at Address::
|:6FCE45CE(C)
|
:6FCE45E8 2BDE sub ebx, esi
Retire le montant des points de vie actuels
:6FCE45EA 53 push ebx
:6FCE45EB 6A06 push 00000006
:6FCE45ED 57 push edi
* Reference To: D2Common.Ordinal:2915, Ord:2915h
|
:6FCE45EE E8F7050100 Call 6FCF4BEA
Fixe la nouvelle valeur pour vie courrante.
:6FCE45F3 85DB test ebx, ebx
:6FCE45F5 7F19 jg 6FCE4610
Regarde si la vie est à zero pour partir sur une routine de mort: Pas sur ????

:6FCE45F7 8B4C2420 mov ecx, dword ptr
:6FCE45FB B802000000 mov eax, 00000002
:6FCE4600 85C9 test ecx, ecx
:6FCE4602 7410 je 6FCE4614
:6FCE4604 66094104 or word ptr , ax
Indique a la routine de combat que la cible a perdu des points de vie et qu'il faut regarder si elle est morte

:6FCE4608 5F pop edi
:6FCE4609 5E pop esi
:6FCE460A 5D pop ebp
:6FCE460B 5B pop ebx
:6FCE460C 59 pop ecx
:6FCE460D C21400 ret 0014
*reference par un Jump at Address::
|:6FCE45F5(C)
|
:6FCE4610 8B442410 mov eax, dword ptr
*reference par un Jump at Address::
|:6FCE4602(C)
|
:6FCE4614 5F pop edi
:6FCE4615 5E pop esi
:6FCE4616 5D pop ebp
:6FCE4617 5B pop ebx
:6FCE4618 59 pop ecx
:6FCE4619 C21400 ret 0014

La fin il faut que je regarde. Bon aspro Joe fallait pas me chercher comme dirait Tiissa
 
C

crystalboy

Invité
Myrdinn le dessassembleur fou :biglaugh:

Mes félicitations pour la prestation, fallait avoir le courage :)
 
M

Myrdinn

Invité
Il ne faut pas oublier que c'est avant tout grace à Jarulf qui a isolé l'entrée du Crushing Blow dans les Dlls
En fait je recherche actuellement Deadly Strike pour repondre sur un autre post :)
 
R

Rhaa

Invité
Ca me rappelle des vieux informaticiens systèmes dans les années 70-80 (dont mon père à l'époque) qui suite à des ABEND de leurs 370 passaient 18 heures non-stop sur les listings de DUMP mémoire ... pour trouver exactement ce qui c'était passé ...

j'étais encore un enfant et je les regardais en me disant que c'était des magiciens qui savaient faire parler les chiffres ... ben j'ai la même impression en te voyant Myrdinn (et Jarulf donc)
:drink1:
 
M

Myrdinn

Invité
J'ai un lourd passé j'ai commence l'assembleur sur les AppleIIc au debut des années 80 ??? Comme obelix j'y ai baigné tout petit :lol:
Merci pour le compliment Rhââ ;)

EDIT Enfin faut pas trop exagerer, en 2 heures de travail je trouve parfois(pas toujours) un morceau auquel m'accrocher, la plupart du temps c'est un echec complet :lol:
 
Haut