Trombe et Vitesse d'attaque

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
 
M

Myrdinn

Invité
2) Application du "tableau" Trombe

Tableau
Désolé pour le titre je vais vous expliqué le comment :D

On utilise le BaseFrame calculé en 1 pour le convertir en nombre de frame sous trombe (nAttackLength) c'est ce que fait le tableau ci dessous

Code:
BaseFrame(1)	NAttackLength
<12		4
12-14		6
15-17		8
18-19		10
20-22		12
23-25		14
>25		16

C'est ce que vous appelé communément les paliers :D

Exemple
Bon le tout en exemple
Une colossus Blade quel est le dernier palier?

Si l'on prend le tableau il faut que que la base soit inférieur à 12 (bref 11)

Colossus Blade
WSM=+5
BaseFrame (COF) =16

La formule est 256*16/(100-5+IAS)*256/100
Bon le but n'est pas de vous donner un cours de math sur une équation du premier degré. Pour que ce résultat soit inférieur à douze il suffit que IAS=39 et non 40 ou 41% comme vous pouvez le lire habituellement

dans ce cas on à
256*16 =4096
Divisé par 134*256/100=343 (arrondies à l'inférieur)
4096/343=11.94... arrondi à 11
A 38 en IAS on dépasse 11

Dans ces conditions on réalise une attaque toutes les 4 Frames..


P.S. Si on trombe à mains nues le nombre de frame par attaque est de 10 est les 2 parties que je viens d'expliquer sont ignorées


3) Particularité de trombe

Fréquence et durée des trombes
Maintenant il est temps de voir ce qui se passe concretement avec trombe.
On ne fait pas une trombe mais x trombes de 4 frames

Quelques soient les résultats précedents la première serie d'attaques à lieu à la frame 4. (La frame 0 étant le moment ou on clique sur la position finale)

Ensuite toutes les 4 frames on regarde si une série d'attaque à lieu ou non puis on enchaine sur une nouvelle trombe de 4 frames.


Serie d'attaques
Je dis série car on fait plusieurs attaques dans la même frame, ce nombre dépend du nombre d'arme et du nombre de cibles potentielles (a 5 "Cases" du trombeur).
La règle est la suivante :
1 arme ou mains nues --> 1 attaque/serie s'il existe une cible évidemment.
2 armes --> 2 attaques s'il y a 2 cibles / 1 attaque s'il n'y a qu'une cible et 0 attaque sans cible :)
Attention si la portée de l'arme n'est pas suffisante, même si le jeu a choisi une cible (dans les 5 "Cases"), l'attaque n'a pas lieu.

N.B. Les monstres ont un numéro d'apparition dans le jeu qui augmente de 1 en 1 a partir de 0 (le premier à le numéro 0, le seond le numéro 1 ... trivial non)

A noter qu'à partir de la première cible à portée, en cas de choix entre plusieurs cible c'est la cible dont le numéro d'apparition à l'écran est le suivant dans la liste d'apparition. Si vous commencez votre trombe dans un groupe dont le boss est à portée pour le premier coup c'est toujours lui qui prendra le premier coup car il est toujours le premier spawné dans la phase.

Exemples
Le mieux 2 exemples.

exemples
Dernier pallier = Série d'attaques toutes les 4 frames
C'est trivial on fait une série d'attaque toutes les 4 frames.
Bref à partir du moment ou l'on clique sur trombe on fait une attaque aux frames
(4) (8) (12) (16) (20) (24) Soit 6 fois la première seconde
et en moyenne 6,25 séries d'attaque /seconde.

Avant Dernier pallier = Série d'attaques toutes les 6 frames
On commence toujours la première attaque à 4 puis 8 frames (ca evite de passer à travers la première cible :D)
Ensuite on devrait taper aux frames (14) (20) (26) (32)
En réalité les frames dispo sont 4,8,12,16,20,24,28
Bref on tapera aux frames 4,8,16,20,28,32,40,44
Soit 4 fois la première seconde et 5 la deuxième ...

Exemple Général
Voyons ce qui se passe
TROMBE 0= Frame Zero
Déplacement mais pas d'attaque

TROMBE 1 = 4eme frame
On fait une attaque avec l'arme principal uniquement
On switche d'arme

TROMBE 2 = 8eme frame
Calcul du nombre d'attaque(= nombre d'arme)
Calcul de la prochaine attaque (paramètre de l'arme en cours)
Attaque cible X
Switch d'arme

TROMBE 3= (Frame 12)
On compare avec prochaine attaque
Si Pallier=6 -->(14) inférieur donc pas d'attaque. c'est pas encore l'heure.Idem si pallier>6 pas d'attaque on sort de la routine
Autrement on a (uniquement si pallier=4 si vous avez suivi)

Calcul du nombre d'attaque(= nombre d'arme)
Calcul de la prochaine attaque (paramètre de l'arme en cours)
Attaque Cible X+2
Switch d'arme
Attaque Cible n° X+3
Swith d'arme (Deuxième attaque uniquement si 2 armes et 2 cibles)

Trombe 4 = 16eme frame
On compare Temps actuel avec prochaine attaque Si temps<Prochaine attaque --> Pas d'attaque
Autrement (Vrai pour pallier 4,6 et 8)

Calcul du nombre d'attaque(= nombre d'arme)
Calcul de la prochaine attaque (paramètre de l'arme en cours)
Attaque Cible X+4
Switch d'arme
Attaque Cible n° X+5
Swith d'arme (Deuxième attaque uniquement si 2 armes et 2 cibles)

TROMBE 5 = 20eme frame
On compare Temps actuel avec prochaine attaque Si temps<Prochaine attaque --> Pas d'attaque
Autrement (Vrai pour pallier 4 et 6)

Calcul du nombre d'attaque(= nombre d'arme)
Calcul de la prochaine attaque (paramètre de l'arme en cours)
Attaque Cible X+6
Switch d'arme
Attaque Cible n° X+7
Swith d'arme (Deuxième attaque uniquement si 2 armes et 2 cibles)

TROMBE 6 = 24eme Frame
On compare Temps actuel avec prochaine attaque Si temps<Prochaine attaque --> Pas d'attaque
Autrement (Vrai pour pallier 4,6,8 et 12)

Calcul du nombre d'attaque(= nombre d'arme)
Calcul de la prochaine attaque (paramètre de l'arme en cours)
Attaque Cible X+8
Switch d'arme
Attaque Cible n° X+9
Swith d'arme (Deuxième attaque uniquement si 2 armes et 2 cibles)

N.B. Les X+1 X+2 ... ne sont valables que pour le pallier à 4 avec 2 armes. Sinon on augmente de 1 uniquement lorsque l'on fait une attaque.

...
TROMBE=Finale -> Atteint la position finale
Arret de trombe pas d'attaque. On n'attaque pas à l'endroit ou on a cliqué.

N.B. Cas de 2 armes
Si on utilise 2 armes on alterne entre les 2 (on tape autant de fois avec la première arme que la deuxième).
Exemple si on a une arme à 4 frames et l'autre à 6 frames.
On tappera théoriquement aux frames
[0](4)(8)(14)(18)(24) (28) ...
En pratique c'est plus compliqué. L'arme dont la vitesse est prise en compte et celle qui tapera la prochaine fois. Si vous avez 2 cibles à portée à chaque coup c'est toujours la même arme qui est prise en compte, dans le cas contraire c'est suivant le nombre de cible à portée l'une ou l'autre arme qui est pris en compte pour déterminé la prochaine "heure" d'attaque.
Bref avec 2 armes c'est impossible à prévoir, mieux vaut avoir 2 armes rapide.

Bon voila pour trombe et l'IAS
Je suis prêt pour les éventuelles questions.
Je suis quasi sur de ce que j'avance mais tout résultat contradictoire est le bienvenu au cas ou.

Si quelqu'un se sent la force de créer une formule englobant les 3 points je lui souhaite bon courage :lol:

Bonne trombe a tous, amis barbares
 
G

Gariounette_LGT

Invité
re :D

jai pas encore tout lut mais pour reopndre a ton dernier reply sur lautre topik : jai tester trombe a 2 main et avec la meme epee en main droite (gauche de linventaire) un gf shael

en testant dans lautre main soit : ali baba serti mf et mouette certi shael : je peut afirmer ke le nombre de coup / trombe va du simple au double
et ke je retape bcp moin vite si mouette casse ...

l ias ne peut donk pas etre QUE celui de la main droite a ma connaissance ...
 
G

Gariounette_LGT

Invité
Provient du message de Myrdinn
J'ai posté sur le forum barbare concernant le fonctionnement de trombe.
Je pourrais le confirmer facilement mais pour l'instant je dirais.
Seul l'arme dans la main droite (A Gauche dans l'inventaire) est prise en compte pour l'IAS.

c contradictoire avec se que tu affirme ici alors :razz:

je vais me pencher un peut plus sur le gros topik kan jaurai un moment pour efectuer quelques tests ;)
 
K

kaizel

Invité
huhu myrdinn a encore frappé dur merci monsieur :)
edit : pour l'ias de l'arme je crois savoir pourquoi seulement la main droite est prise en compte :)
il s'avere que quand je me bat a main nu (oui oui sa m'arrive :D) il ne prend que la main droite en compte comme si il n'avais qu'un bras pour lui il n'y qu'une arme a main nu c'est le bras droit :) donc pas de frenesie a main nues :/ :D
donc je suppose que sa viens de la programation du barbare :)
 
M

Myrdinn

Invité
Provient du message de Garion_LGT
c contradictoire avec se que tu affirme ici alors :razz:

je vais me pencher un peut plus sur le gros topik kan jaurai un moment pour efectuer quelques tests ;)
Bien vu et merci Garion.
C'est 1 des 3 points qu'il me restait à confirmer. La réponse est
quand on a 2 armes On alterne les 2 armes.
Merci à toi je cours EDITER

D'autre Questions/remarques confirmation/contradication


EDIT
LEs 2 points restants sont
Incidence de Frenzy et (chill,freeze,slow). Je sais théoriquement qu'il n'ont pas d'influence sur la vitesse d'attaque mais je dois le confirmer
 
K

kaizel

Invité
pour le faite d'etre gelé ou sous frenzy je peux te dire mon impression de suite, apriori sa change rien sur le nombre de coup :) sa joue juste sur la vitesse de deplacement :) enfin bon c'est que mon impression y a peut etre quelle que chose qui change mais je l'ai jamais vu alors :)
 
M

Myrdinn

Invité
Provient du message de kaizel
pour le faite d'etre gelé ou sous frenzy je peux te dire mon impression de suite, apriori sa change rien sur le nombre de coup :) sa joue juste sur la vitesse de deplacement :) enfin bon c'est que mon impression y a peut etre quelle que chose qui change mais je l'ai jamais vu alors :)
C'est ce que j'ai cru comprendre.
Mais bon je preferes le tester pour en être sur :)
 
C

chatmalo

Invité
Donc énorme coups de tonnerre dans le monde des trombeurs...
C'est 39%ias (et 44% pour la clossal sword) et pas 40% ou 41% comme certains l'ont cru...

Par contre je pense savoir d'ou viens ce sois disant 7eme coups une fois sur quatre...

From notre décodeur de code préféré

Dernier pallier = Série d'attaques toutes les 4 frames
C'est trivial on fait une série d'attaque toutes les 4 frames.
Bref à partir du moment ou l'on clique sur trombe on fait une attaque aux frames
(4) (8) (12) (16) (20) (24) Soit 6 fois la première seconde
et en moyenne 6,25 séries d'attaque /seconde.
LE 0,25 est bien un 7eme coups toutes les 4 attaques :)
Comme quoi en cherchant bien ou trouve l'origine des légendes...

Bon pour ce qui est de l'ias a deux épées puisqu'on alterne ca équivaut en gros (vu de nottre fauteil quand on est en train de tromber) a une moyenne d'ias entre les deux armes en fait... et une moyenne des dégats aussi...
Donc la légende disant qu'on peut tromber avec un lévrier dans une main et un cerbère dans l'autre et ainsi avoir la vitesse du lévrier et les dégats du cerbère est aussi totalement fausse...

Encore une fois merci pour ce décodage de code... :)
 
C

chatmalo

Invité
Pour ce qui est de l'ias sous freeze ou frenzy je n'ai testé que le freeze (ou slow) et en effet d'apres mon expérience de joueur le fait d'etre ralenti change la vitesse d'attaque sous toutes les attaques que j'ai teste (normale, a deux mains et berserk) mais ne change rien a la vitesse de trombe et au nombres de coups portés.
 
M

Myrdinn

Invité
Et merci à toi pour la traduction des "Legendes Battlenetique" :D

En tout cas les résultats empiriques sont vraiment de bonnes approximations, ca n'avait rien dévident, mes corrections sont mineures sur les faits.
Bref ce n'est pas une bombe mais par contre vraisemblablement une exclusivité mondiale :rolleyes:
 
H

Hade$

Invité
:gratz: pour le post (et les modfications a venir :D )

qq trucs .. ta formule est valable pour tous les types d'armes ?

et est-ce que tu pourrais faire un tableau avec les différents base frames pour les armes ?? (ou que qqn qui s'y connaisse le fasse)

comme ca apres hop tout ca ca passe en post fixe :) avec eventuellement un petit programme pour les calculs (pas par moi j'y connais rien :p)

un volontaire ?

pas d'autres questions votre honneur ...
 
M

Myrdinn

Invité
Provient du message de Chatmalo
Pour ce qui est de l'ias sous freeze ou frenzy je n'ai testé que le freeze (ou slow) et en effet d'apres mon expérience de joueur le fait d'etre ralenti change la vitesse d'attaque sous toutes les attaques que j'ai teste (normale, a deux mains et berserk) mais ne change rien a la vitesse de trombe et au nombres de coups portés.
Merci pour la deuxième confirmation.
Cependant j'ai l'impression que Chill (bleu par le froid) ralenti la vitesse de déplacement, en conséquence on fait moins de déplacement pendant les 4 frames sans coup et les monstres restent plus longtemps à porté de coup, la trombe devrait être plus efficace quand on est ralenti :confused:

Sinon pas de diminishing Return / Pas d'IAS de compétence ... Ca sent la vieille formule reprise pour Trombe :lol:

Rajout d'un EDIT
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.
 
E

enslaver

Invité
mouette etant +rapide, tu tape +vite si tu met mouette que si tu n'en mets pas ... l'IAS des 2 mains comptent mais il y a aussi une alternance de dmgs entre les 2.

Pour le 7ieme hit, evidemment qu'il depend du 6.25, donc .25 x 4 = 1 coup donc 1 coup supplementaire... donc avec le palier 7hits, en 4 secondes on fais 24 +1 hits, c bien ca? je n'avais jamais pensé vraiment a ca, que trombe tapait aussi vite :)
 
M

Myrdinn

Invité
Provient du message de Hade$
:gratz: pour le post (et les modfications a venir :D )

Merci à toi

qq trucs .. ta formule est valable pour tous les types d'armes ?
Oui c'est le cas (au moins pour les armes de mélées :D )

et est-ce que tu pourrais faire un tableau avec les différents base frames pour les armes ?? (ou que qqn qui s'y connaisse le fasse)
Ca doit être l'équivalent du tableau de Cestbienmoi pour sa calculatrice à IAS à 1 Prêt, je vérifierais rapidement.
De toute façon il n'y a pas enormément de "ClassWeapon", une dizaine je dirais ca va assez vite. Je le rajouterais au post dès que j'en ai le temps.

comme ca apres hop tout ca ca passe en post fixe :) avec eventuellement un petit programme pour les calculs (pas par moi j'y connais rien :p)
C'est déjà dans la FAQ de Kalis à qui j'ai donné l'exclu :lol:
Comme vous voulez, je commence à avoir trop de post dans ma signature de toute façon.

un volontaire ?

pas d'autres questions votre honneur ...
J'avais l'habitude des ridicules dieu et maitre; on me l'avais pas encore faite celle la :mad:
Sinon je suis un piètre programmateur, vaut mieux laissé la calculatrice à quelqu'un d'autre. Ca peut être un plug-in dans la page de Cestbienmoi par exemple.
 
E

enslaver

Invité
c valable pour tous les types d'armes sauf bien sur avec les arcs (t'a deja vu qqun tromber avec un arc? :D) ou bien les orbs (sorc only) et les claws... mais même pour le staff ca marche, j'ai deja essayé...

@mydrinn compte toi chanceux d'arriver a decortiquer un mpq sans trop de misere, moi décortiquer un mpq.... :D
 
M

Myrdinn

Invité
Provient du message de Enslaver
mouette etant +rapide, tu tape +vite si tu met mouette que si tu n'en mets pas ... l'IAS des 2 mains comptent mais il y a aussi une alternance de dmgs entre les 2.
Oui c'est l'une après l'autre, également pour les dégats

Je profite de ta question pour rajouter une note à propos de mon edit.

J'ai parlé d'une série d'attaque, je vais vite y travailler.

Car si on tape 2 fois dans la série c'est probablement avec la première arme puis la deuxième, dans ce cas on aura 2 fois de suite le pallier de la première, la deuxième ayant déjà tapé en dernier. Je ne sais pas si j'ai été clair.

Bref mefiez vous si vous utilisez 2 armes aux vitesses différentes, il se peut qu'il y ait des résultats difficilement prévisibles.
A suivre pour ce point particulier
 
Haut