Question sur les boucliers....

C

collargol

Invité
Voilà je me monte actuellement un (meme plusieurs) paladins...

Et je voudrais savoir ce que vous entendez par "atteindre les 75%" de parade, comment les calculer?

J'ai beau chercher je ne trouve pas de formule concernat cela...

Pourriez vous m'expliquer copmment cela fonctionne? :p

Merci d'avance.
 
K

krugenta

Invité
Hello Padawan;)
pour les pala comme pour les autres dailleurs ,ton % de block depend en partie de ta dext ,d 'ou lexpression ,je monte jusqu'a 75% de block puis je ne met plus de pts en dext
c reservé aux furieux qui veulent avoir un build parfait :biglaugh:
en tant ke pala debutant , je te conseille tres vivement BS(bouclier sacre )
 
M

Myrdinn

Invité
Voici comment le jeu calcule le block en assembleur,
J'ai le trace que j'ai effectué sur moi ca donne

Je passe le début de la fonction qui concerne les monstres et les Errorcheck habituel

Code:
-----------------------------------------------------------------------
A) Blocker = Player
-----------------------------------------------------------------------

04B00C7B   8B46 60          MOV EAX,DWORD PTR DS:[ESI+60]
EAX=BlockerPtr+60
Pour mon joueur = 036C2740 = Inventory Ptr

04B00C7E   6A 00            PUSH 0
04B00C80   50               PUSH EAX
04B00C81   E8 0AFAFCFF      CALL D2Common.#10273
10273(0,InventoryPtr) ?
EAX=1 => Bouclier ?

04B00C86   85C0             TEST EAX,EAX
04B00C88   74 79            JE SHORT D2Common.04B00D03
Si EAX=0 Alors Exit BLOCK FAILED (Pas de bouclier)

04B00C8A   6A 00            PUSH 0
04B00C8C   6A 14            PUSH 14
04B00C8E   56               PUSH ESI
04B00C8F   E8 9C6FFFFF      CALL D2Common.#10519
STAT ToBlock(ItemStatCost.txt)--> Stat du bouclier + différents bonus (Holyshield + equipement)

04B00C94   8BE8             MOV EBP,EAX
EBP=ToBlock Stat

04B00C96   8B46 04          MOV EAX,DWORD PTR DS:[ESI+4]
EAX=BlockerClassID

04B00C99   85C0             TEST EAX,EAX
04B00C9B   7C 21            JL SHORT D2Common.04B00CBE
Si aucune Classe alors Jump A1

04B00C9D   8B0D 206AB104    MOV ECX,DWORD PTR DS:[sgptDataTables]    ; D2Common.04B29608
ECX=D2Common.04B29608

04B00CA3   3B81 C80B0000    CMP EAX,DWORD PTR DS:[ECX+BC8]
Compare Class ID Avec 7 (ECX+BC8)
04B00CA9   7D 13            JGE SHORT D2Common.04B00CBE
Si classe > 7 (inconnu pour joueur) alors Jump A1

=> Joueur avec classe identifié et 1 bouclier
04B00CAB   8D1440           LEA EDX,DWORD PTR DS:[EAX+EAX*2]
EDX=CLASS*3

04B00CAE   C1E2 04          SHL EDX,4
EDX=CLASS*3*16

04B00CB1   03D0             ADD EDX,EAX
EDX=Class*3*16+ClassID=49*ClassID

04B00CB3   8B81 C40B0000    MOV EAX,DWORD PTR DS:[ECX+BC4]
EAX=Unicode(Amazone)=Début d'une table=CharStat.txt
EDX=Déplacement dans le fichier pour trouver le Block Factor correspondant à la classe de personnage

04B00CB9   8D0490           LEA EAX,DWORD PTR DS:[EAX+EDX*4]
EAX=Début de la ligne correspondant à la classe

04B00CBC   EB 02            JMP SHORT D2Common.04B00CC0

-----------------------------------------------------------------------
A1)Classe non identifiée
-----------------------------------------------------------------------
04B00CBE   33C0             XOR EAX,EAX
Pas de classe identifié alors BlockFactor=0

LA suite du calcul
Code:
-----------------------------------------------------------------------
E) Chance To Block
-----------------------------------------------------------------------

04B00CC0   33C9             XOR ECX,ECX
ECX=0

04B00CC2   8A48 49          MOV CL,BYTE PTR DS:[EAX+49]
ECX= Colonne AF Block Factor
Valeurs de BlockFactor Extraites de CharStats.txt
Ama=19 (25)
sor=14 (20)
Nec=14
Pal=1E (30)
BAR=19
Dru=14
Ass=19

04B00CC5   8B4424 14        MOV EAX,DWORD PTR SS:[ESP+14]
EAX=GAme Version LOD=1 D2c=0

04B00CC9   03E9             ADD EBP,ECX
EBP=ToBlock + Block Factor (+Blocking Bonus inclus dans Toblock)

04B00CCB   85C0             TEST EAX,EAX
04B00CCD   74 2F            JE SHORT D2Common.04B00CFE
D2C --> Jump E1

ICI LOD
04B00CCF   6A 00            PUSH 0
04B00CD1   6A 02            PUSH 2
04B00CD3   56               PUSH ESI
04B00CD4   E8 576FFFFF      CALL D2Common.#10519
04B00CD9   6A 00            PUSH 0
04B00CDB   6A 0C            PUSH 0C
04B00CDD   56               PUSH ESI
04B00CDE   8BF8             MOV EDI,EAX
04B00CE0   E8 4B6FFFFF      CALL D2Common.#10519
04B00CE5   8BC8             MOV ECX,EAX
EDI=Dextérité
ECX=CLEVEL

04B00CE7   83F9 01          CMP ECX,1
04B00CEA   7F 05            JG SHORT D2Common.04B00CF1
Compare CLVL avec 1

04B00CEC   B9 01000000      MOV ECX,1
Si CLVL<1 alors CLVL=1

04B00CF1   8D47 F1          LEA EAX,DWORD PTR DS:[EDI-F]
EAX=Dextérité-F(15 en décimal)

04B00CF4   03C9             ADD ECX,ECX
ECX=CLVL+CLVL=2*CLVL

04B00CF6   0FAFC5           IMUL EAX,EBP
EAX= (ToBlock+BlockFactor+blocking Bonus)*(Dextérité-15)

04B00CF9   99               CDQ
04B00CFA   F7F9             IDIV ECX
04B00CFC   8BE8             MOV EBP,EAX
EBP=Chance ToBlock
LOD EBP=((ToBlock+BlockFactor+Blocking bonus)*(Dextérité-15))/(2*CLVL)

-----------------------------------------------------------------------
E1)CAP 0 75% pour les joueurs
-----------------------------------------------------------------------
Arrivé de D2C avec EBP=(ToBlock+BlockFactor+blocking Bonus)
04B00CFE   83FD 4B          CMP EBP,4B
04B00D01   7D 08            JGE SHORT D2Common.04B00D0B
CAP à 75%

-----------------------------------------------------------------------
B) End of Fn
-----------------------------------------------------------------------

04B00D03   5F               POP EDI
04B00D04   8BC5             MOV EAX,EBP
04B00D06   5E               POP ESI
04B00D07   5D               POP EBP
04B00D08   C2 0800          RETN 8
BREF pour répondre à ta question

EAX=BlocChance

=0 si ni monster / Ni player

-----------------------------------------------------
Pour les joueurs
-----------------------------------------------------

LOD=((ToBlock+BlockFactor+Blocking Bonus)*(Dextérité-15))/(2*CLVL)

D2C=(ToBlock+BlockFactor+BlockBonus)

Cappé à 75% pour les joueurs
-----------------------------------------------------
Pour les Monstres
-----------------------------------------------------
Monster=Toblock(Monstats.txt suivant difficulté) si Monstat le permet (Suivant NoShieldBlock et eBoss dans monstats.txt)

Pas de Cap pour les monstres !eek!

Sinon je te conseille Ce post pour les détail du toucher :D
 
C

collargol

Invité
Que représente le 2*CLVL ?

le level de mon perso? si oui, plus je monte en niveau moins je bloque... est ce normal?
 
A

Aerin

Invité
Merci pour la formule Myrdinn, si j'ai bien compris faut tout lire avant de l'appliquer ?

:eek:
 
M

Myrdinn

Invité
La formule est restée la même depuis la sortie de LOD.
Je donne juste le trace en assembleur pour montrer que c'est toujours la même et ca peut toujours en interresser certain.

Sinon tu peux appliquer la conclusion et ne pas t'occuper de ma démonstration ;)
 
N

Nadolff

Invité
Bon a savoir : il existe une calculette qui fait tout et qui traine dans la faq de pvp :).
(on donne le bloc a atteindre, le bloc du bouclier et sur l equipement et pouf la dexterité/ ou inversement il donne le bloc en fonction du reste :))
 
N

niko

Invité
Euh....dite le % de block n'est t'il pas indiquer dans les stats (quand on passe ca souris sur les points de defense il indique qql chose comme "probabilite d'etre toucher xx%)
si c'est pas ca je me goure depuis le debut :)
 
N

Nadolff

Invité
Ben c'est pas ce que tu annonces mais c'est juste en dessous ;).
Le %age de se faire toucher depend de ta defense et de ton niveau et du niveau de lennemie.
Ensuite si tu est censé te faire touché le bloc intervient avec xx% de bloqué.

Le tout ce trouve dans la meme case de stats quand tu met ton curseur sur ta defense
 
Haut