M
Myrdinn
Invité
Comme vous l'aurez compris ce post permet de calculer le nombre de frame entre chaque attaque et surtout les différents paliers IAS.
0 ) Préambule
Ce post est la conclusion de la discussion entamée ici.
Les données que je présente ici viennent de séance intense de lecture du code source, de modding pour en vérifier le contenu et de tests.
Je ne parle ici que de formule dont je suis certain, quand j'ai un doute sur une partie je le ferais en remarque. Ce post evoluera sans doute, vous êtes les bienvenues si vous souhaitez y participer.
J'utilise la formulation du jeu, si vous souhaitez utiliser d'autres unité ou mode de calcul, demander moi, je le ferais si c'est possible.
Note importante
Sous D2C. Aucun IAS n'est pris en compte. On tape toujours à 4 frames. Par contre il n'y a pas de gestion des 2 mains.
Bref la suite ne s'applique qu'à LOD
Bref il est temps de commencer à parler de la méthode
Je prendrais pour exemple une Colossus Blade
1) Calcul de base= BaseFrame
Pour le calcul de L'IAS les armes sont prises en compte chacune leur tour, il n'y a aucune interaction entre elle. On commence toujours par la main droite (A gauche dans l'inventaire) .
EDIT Il me reste une chose à confirmer à ce sujet. Je vous en dirais plus un peu plus tard.
Pour la suite on considère que l'on a une arme. Si on en possède 2 alors on alterne
BaseFrame
Le jeu détermine la durée en frame de l'attaque de base.
Pour cela il lit le nombre d'animation (2eme Byte) dans un fichier .COF.
Ce fichier dépend de la classe de personnage (ici toujours barbare=BA), du mode (Ici toujours Attack1=A1) et de la "Classe d'arme" (Seul élément variable ici=xxx). Vous trouverez ce type dans le fichier Weapons.txt colonne WClass (AN sous excel) pour Colossus Blade c'est 1HS par exemple
Même si vous utilisez l'arme avec vos 2 mains (Colonne AO sous excel) c'est la colonne Wclass qui est lue.
Bref le fichier peut être extrait du D2Chars.MPQ il a le nom BAA1xxx.COF (BAA11HS.COF)
Pour plus de renseignement voir avec Paul Siramy qui connait très bien les graphismes de D2
En résumé pour vous éviter l'extraction de MPQ voici les 2 valeurs différentes gérées par trombe.
BaseFrame=16 pour toutes les Epées,maces,Haches à 1 main,dagues,couteaux et javelins
BaseFrame=19 pour tous les Epieux,Batons,Armes d'Hast(polearm), Haches à 2 main et Mauls
Ce nombre d'attaque sera multiplié par 256 dans la formule final on verra pourquoi plus loin bref 256*BaseFrame
Facteur IAS
On ajoute toutes les IAS de l'arme.
Pour la précision du post il en existe 3 type (Fast Attack, Faster Attack et Fastest Attack)
On soustrait le WSM (Weapon SpeedModifier) Colonne Speed toujours dans Weapons.txt (colonne w sous excel)
La formule finale est 100-WSM+SommeIASArme
N.B. il n'y a pas de Diminishing return pour Trombe
Animation Speed
Les vitesses d'animation sont donnés dans un autre fichier AnimData.D2.
Ce fichier contient toutes les vitesses d'animation du jeu, la plupart du temps c'est 256 (d'ou le 256 dans les formules d'IAS).
Cette vitesse de base peut être modifié par plusieurs facteur (Chill,slow,Fanatisme ...) L'unité personnage contient cette valeur modifié comme propriété.
Ici ce n'est pas le cas, il lit directement le resultat dans AnimData.d2 donc pas de modification prise en compte (N.B. JE dois quand même faire encore un ou 2 tests pour m'en convaincre compéltement)
Bref ici on à toujours 256
LE jeu calcule animationSpeed(256)*FacteurIAS/100 le résultat est arrondi à l'inférieur
Formule Finale
La formule est la suivante
[256*(BaseFrame)/[Animation Speed * (100+Somme des IAS de l'arme -WSM)/100]]
Les crochets [] signifiant Arrondis à l'inférieur
0 ) Préambule
Ce post est la conclusion de la discussion entamée ici.
Les données que je présente ici viennent de séance intense de lecture du code source, de modding pour en vérifier le contenu et de tests.
Je ne parle ici que de formule dont je suis certain, quand j'ai un doute sur une partie je le ferais en remarque. Ce post evoluera sans doute, vous êtes les bienvenues si vous souhaitez y participer.
J'utilise la formulation du jeu, si vous souhaitez utiliser d'autres unité ou mode de calcul, demander moi, je le ferais si c'est possible.
Note importante
Sous D2C. Aucun IAS n'est pris en compte. On tape toujours à 4 frames. Par contre il n'y a pas de gestion des 2 mains.
Bref la suite ne s'applique qu'à LOD
Bref il est temps de commencer à parler de la méthode
Je prendrais pour exemple une Colossus Blade
1) Calcul de base= BaseFrame
Pour le calcul de L'IAS les armes sont prises en compte chacune leur tour, il n'y a aucune interaction entre elle. On commence toujours par la main droite (A gauche dans l'inventaire) .
EDIT Il me reste une chose à confirmer à ce sujet. Je vous en dirais plus un peu plus tard.
Pour la suite on considère que l'on a une arme. Si on en possède 2 alors on alterne
BaseFrame
Le jeu détermine la durée en frame de l'attaque de base.
Pour cela il lit le nombre d'animation (2eme Byte) dans un fichier .COF.
Ce fichier dépend de la classe de personnage (ici toujours barbare=BA), du mode (Ici toujours Attack1=A1) et de la "Classe d'arme" (Seul élément variable ici=xxx). Vous trouverez ce type dans le fichier Weapons.txt colonne WClass (AN sous excel) pour Colossus Blade c'est 1HS par exemple
Même si vous utilisez l'arme avec vos 2 mains (Colonne AO sous excel) c'est la colonne Wclass qui est lue.
Bref le fichier peut être extrait du D2Chars.MPQ il a le nom BAA1xxx.COF (BAA11HS.COF)
Pour plus de renseignement voir avec Paul Siramy qui connait très bien les graphismes de D2
En résumé pour vous éviter l'extraction de MPQ voici les 2 valeurs différentes gérées par trombe.
BaseFrame=16 pour toutes les Epées,maces,Haches à 1 main,dagues,couteaux et javelins
BaseFrame=19 pour tous les Epieux,Batons,Armes d'Hast(polearm), Haches à 2 main et Mauls
Ce nombre d'attaque sera multiplié par 256 dans la formule final on verra pourquoi plus loin bref 256*BaseFrame
Facteur IAS
On ajoute toutes les IAS de l'arme.
Pour la précision du post il en existe 3 type (Fast Attack, Faster Attack et Fastest Attack)
On soustrait le WSM (Weapon SpeedModifier) Colonne Speed toujours dans Weapons.txt (colonne w sous excel)
La formule finale est 100-WSM+SommeIASArme
N.B. il n'y a pas de Diminishing return pour Trombe
Animation Speed
Les vitesses d'animation sont donnés dans un autre fichier AnimData.D2.
Ce fichier contient toutes les vitesses d'animation du jeu, la plupart du temps c'est 256 (d'ou le 256 dans les formules d'IAS).
Cette vitesse de base peut être modifié par plusieurs facteur (Chill,slow,Fanatisme ...) L'unité personnage contient cette valeur modifié comme propriété.
Ici ce n'est pas le cas, il lit directement le resultat dans AnimData.d2 donc pas de modification prise en compte (N.B. JE dois quand même faire encore un ou 2 tests pour m'en convaincre compéltement)
Bref ici on à toujours 256
LE jeu calcule animationSpeed(256)*FacteurIAS/100 le résultat est arrondi à l'inférieur
Formule Finale
La formule est la suivante
[256*(BaseFrame)/[Animation Speed * (100+Somme des IAS de l'arme -WSM)/100]]
Les crochets [] signifiant Arrondis à l'inférieur