Comme toute les synergies la réponse est dans Skills.txt
Regardons la ligne concernant Enregy Shield
Colonne GH Calc2 description = ratio
Colonne GG Calc2 = par5-skill('Telekinesis'.blvl) Paramètres 5 - BaseLevel de Telekinesis (Base => sans les + Skill)
Ok maintenant allons voir le param5
Colonne GV Param5 Description = Mana Damage mult in sixteenths (Multiplicateur de dommage au mana exprimé en 1/16eme)
Colonne Gu Param5 =32 Bref on vient de voir 32/16 eme --> 2
Conclusion le ratio est de 32-SLVL
Le tout exprimé en 1/16eme (Voila votre arrondis)
Je reparle de l'arrondi juste après
SLVL=0 --> Ratio=32(Param5
)exprimé en 16eme=2 --> 200 des dégats
SLVL=8 --> Ratio=24 --> 1,5 --> 150% des dégats
SLVL=16 --> Ratio=16 --> 1 --> 100% des dégats
...
Maintenant parler de 6,25% reste valable c'est effectivement 1/32eme des 200% initiaux
Revenons à l'arrondi
Le jeu utilise des entiers. comment faire pour gérer les nombres à virgule.
Comme d'Habitude L'extra-pracision
Reprenons nos 32 en assembelur --> 0x20
Comme toutes les variable de D2 c'est un DWORD Bref la valeur en hexa vaut
00 00 00 20.
C'est la qu'intervient l'extraprécision.
En réalité la valeur est 00 00 20 00
La partie en rouge est l'extraprécision.
Le client de diablo2 n'affiche que la partie verte, la partie rouge est toujours ignorée par l'affichage.
Ok ici on utilise des 16 donc seulement la moitié de l'extraprécision, mais peut importe. Tout les calculs se font donc sur des nombres entiers. Ceci implique que tout ce qui sort de l'extra-précision est tronquée (Arrondi vers le bas)
Le client ne fait aucun modification et affiche la partie verte telle qu'elle est (Ce qui correspond également à un arrondi vers le bas)
L'extra-précision (En 256 eme) explique pourquoi nous avons très souvent 256 dans les formules (Speed, Regeneration mana ...)
Voilà