Ce que le module de combat sait d'un combat, comment il calcule les tours qu'il peut jouer, comment il les note et pèse le danger, et les limites qui font toujours avancer un combat, pour lire son journal des tours et régler un profil.
Le module de combat ne suit pas une suite de coups écrite pour chaque classe. Avant chaque action, il regarde le combat tel qu'il est, calcule ce que le personnage peut vraiment faire, joue des tours entiers sur une copie du combat, et choisit celui que son profil note le mieux. Cette page explique comment, pour que vous puissiez lire le journal des tours et savoir quel réglage du profil change quoi.
Ce qu'il sait
Le module lit le combat à deux sources.
Les messages du jeu, les mêmes que lit le client Dofus : l'équipe, la case, la vie, le bouclier, les PA, les PM, les caractéristiques, les résistances, les états et les effets actifs de chaque combattant, qui est invisible, le temps de relance de chaque sort et combien de fois il a été lancé, les glyphes et les pièges au sol, le tour de jeu et qui joue. Les sorts du personnage, à leurs niveaux, arrivent avec le début du combat.
Les données du jeu de la version du jeu du bot : ce que coûte chaque sort, sa portée, sa zone et ses effets, qui il touche, les sorts des monstres à chaque grade, l'arme que tient le personnage, et les cases et les lignes de vue de la carte du combat.
Quand il manque une information, il estime avec moins plutôt que de s'arrêter. Un ennemi dont les données du jeu n'ont pas les sorts est compté comme frappant à mains nues, et une carte de combat qu'il n'arrive pas à lire est jouée comme si chaque case était libre. Une décision finit toujours par sortir.
Il ne sait pas non plus ce qu'il ne peut pas voir : un combattant invisible n'est jamais visé tant que le jeu ne le montre pas de nouveau.
Ce que le personnage peut faire
Pour chaque case où le personnage peut aller, le module calcule le coût du trajet : les PM du chemin, et les PA et PM que les ennemis à côté de lui lui prendraient quand il les quitte (le tacle), avec la formule du jeu. Une case où il serait arrêté est hors d'atteinte.
Depuis chacune de ces cases, il vérifie chaque sort et l'arme comme le fait le jeu : PA, portée avec le bonus de portée du personnage, les effets qui changent la portée d'un sort et les bonus de sort de son équipement, ligne de vue, lancer en ligne ou en diagonale, temps de relance, lancers par tour et par cible, les états qu'un sort exige ou interdit, la case libre qu'un sort demande, et la limite d'invocations.
Pour chaque sort qu'il peut lancer, il calcule ce qui arrive à chaque combattant de la zone du sort : les dégâts avec leurs jets et les bonus du sort, les caractéristiques du lanceur et les résistances de la cible, les coups critiques selon leur probabilité, l'érosion et les boucliers, les soins, les poussées et les dégâts d'un choc contre un obstacle, les PA et PM retirés, les états, les invocations, et les sorts qu'un effet lance à son tour. Ce sont les règles que le client Dofus utilise pour prévisualiser un sort : le module et votre client sont donc d'accord sur ce que fait un sort.
Le danger
Avant de choisir, le module calcule à quel point chaque case serait dangereuse à la fin du tour : combien les ennemis pourraient y infliger au personnage pendant leur prochain tour. Il prend le pire cas. Chaque ennemi est compté depuis chaque case où il peut aller, avec chaque sort qui sera sorti de son temps de relance d'ici là, autant de lancers que ses PA le permettent, les plus gros dégâts par PA d'abord.
Les glyphes de la carte comptent aussi, comme le jeu les joue : un glyphe agit sur un combattant dont le tour finit dedans, et sur un combattant dont le tour commence dedans, avant qu'il puisse bouger. Une case dans un glyphe qui blesserait le personnage est donc aussi dangereuse que ce que le glyphe lui infligerait.
Le Risque du profil en fait une limite :
| Risque | Où le module évite de finir un tour |
|---|---|
| 0 à 99 | Là où les ennemis pourraient tuer le personnage, et là où ils pourraient lui infliger plus que ce pourcentage de sa vie. À 50, la valeur par défaut : plus de la moitié de sa vie. |
| 100 | Nulle part : le personnage combat comme si le danger n'existait pas. |
Le danger au-delà de cette limite compte contre un tour, comme sécurité. Tuer un ennemi retire sa part du danger : un tour qui tue une menace avant de passer devant elle vaut donc plus qu'un tour qui ne le fait pas.
Préparer un tour
Le module joue des tours sur des copies du combat : se déplacer, lancer un sort, en lancer un autre, se déplacer, finir le tour. Chaque action est jouée avec son résultat attendu : une poussée déplace vraiment la cible, une élimination retire vraiment l'ennemi, et le sort suivant en tient compte.
Les pièges se jouent comme dans le jeu : un combattant qui marche ou est poussé dedans le déclenche, son sort se joue, et son déplacement ou sa poussée s'arrête là. Le module ne marche donc jamais dans un piège qui blesserait le personnage, et il compte le fait de pousser un ennemi dans un piège de son camp.
Il n'essaie pas tous les tours possibles, il y en a bien trop. À chaque étape, il garde les 6 meilleurs tours commencés, prolonge chacun avec les meilleures actions suivantes, et va jusqu'à 5 actions de profondeur, dans la limite de 2000 actions par décision. Puis il ne joue que la première action du meilleur tour, attend la réponse du serveur, et décide de nouveau à partir du combat tel qu'il est devenu. La suite du tour qu'il avait choisi fait toujours partie de ce qu'il pèse alors : décider de nouveau peut trouver un meilleur tour, jamais en perdre un bon. Un sort au jet faible, une esquive ou une poussée qui s'est passée autrement ne fait pas dérailler la suite du tour.
Le travail est borné par ces nombres, jamais par le temps. Le même combat et le même profil donnent la même décision sur un PC lent et sur un PC rapide, et une décision prend de quelques millisecondes à une seconde, jusqu'à quelques secondes pour un invocateur de haut niveau qui pèse ce que ferait chacune de ses invocations, selon les sorts du personnage. Le module réfléchit pendant qu'il attend avant de jouer : cela ralentit rarement le combat.
Comment un tour est noté
Le score d'un tour additionne ce qu'il fait, chaque partie pondérée par le profil :
| Critère | Ce qui compte |
|---|---|
| Dégâts | Les dégâts infligés, en moyenne : les coups critiques comptés selon leur probabilité, plafonnés à ce qui reste à la cible en vie et en bouclier. |
| Élimination | Un ennemi tué : la moitié de sa vie maximale, plus le danger qu'il ne représente plus. |
| Soin | La vie soignée, jusqu'à ce qui manque. |
| Contrôle | Les ennemis gênés : PA et PM retirés, caractéristiques réduites, poussés, mis dans un état. |
| Bonus | L'aide durable à son camp : un bonus ou un bouclier sur un allié, ou sur le personnage quand il dure au-delà de son tour. Un bonus qui ne dure que le tour du personnage compte pour ce qu'il lui permet de faire dans ce tour : il est donc lancé quand il rend quelque chose possible. |
| Invocation | Une créature invoquée : ce que peut faire son propre prochain tour, qui vient juste après celui du personnage. C'est son meilleur sort depuis là où elle arrive ou une case où elle peut aller, avec ses propres sorts, compté à moitié. Seul ce tour compte, puisque les ennemis peuvent la tuer ensuite : une invocation qui ne peut pas faire grand-chose au tour suivant vaut peu, et frapper l'ennemi l'emporte. |
| Sécurité | Moins le danger restant au-delà de ce que le risque accepte. |
| Placement | À quel point la case où finit le tour convient au profil : sa distance aux ennemis, hors de leur vue pour se cacher. |
| PA inutilisés | Moins les PA restants, ou dépensés dans des sorts qui n'ont rien fait. |
| Tort aux alliés | Moins les dégâts et la gêne infligés à son propre camp. |
| Pièges et glyphes | Ce que les pièges et glyphes posés pendant le tour feront aux ennemis : l'effet d'un glyphe sur les ennemis qui s'y trouvent, quand leur tour commence, ou la moitié pour un glyphe qui agit quand leur tour finit, car ils peuvent en sortir avant ; l'effet d'un piège sur l'ennemi qui peut y marcher en venant vers le personnage, compté à moitié, car c'est le monstre qui choisit. |
Une invocation compte pour la moitié d'un combattant de son espèce, dans chaque critère : elle meurt avec son invocateur, si bien que tuer l'invocateur vaut souvent plus.
Le rôle fixe les poids, et un profil peut changer chacun d'eux avec Poids :
| Rôle | Dégâts et élimination | Soin | Contrôle | Bonus | Invocation | Sécurité, placement, PA inutilisés, pièges et glyphes | Tort aux alliés |
|---|---|---|---|---|---|---|---|
| Dégâts | 1 | 0,5 | 1 | 1 | 1 | 1 | 5 |
| Tank | 1 | 0,5 | 1,5 | 1 | 1 | 1 | 5 |
| Soutien | 0,7 | 1 | 2 | 2 | 1 | 1 | 5 |
| Soigneur | 0,5 | 2 | 1 | 1,5 | 1 | 1 | 5 |
Le profil déplace ensuite des sorts et des cibles précis :
| Réglage | Effet sur le score |
|---|---|
| L'Utilisation d'un sort | Privilégier ×1,5, Éviter ×0,5, Jamais : jamais lancé. L'Arme fait de même pour les coups d'arme. |
| Éléments | Un sort d'un élément favorisé ×1,2. |
| Cible prioritaire, la Priorité d'un monstre, une règle de ciblage | Frapper l'ennemi ciblé ×2. Un monstre réglé sur En dernier ×0,5, sur Ignorer ×0 : le frapper ne compte pour rien. Plusieurs priorités sur un même ennemi se multiplient. |
Où finit le tour
Une fois qu'il ne reste rien qui vaille la peine d'être lancé, le tour finit là où le profil veut voir le personnage :
- Portée règle la distance à laquelle il combat. Mêlée, c'est au contact, Distance, la portée de son sort de dégâts le plus long, Mi-distance, la moitié. Automatique, la valeur par défaut, lit les sorts de dégâts du personnage : quand la plupart portent à 2 cases ou moins, il joue en mêlée, à partir de 6 cases à distance, et à mi-distance entre les deux.
- Positionnement règle comment il y va : garder cette distance, charger, tenir, harceler ou se cacher. Réglages du profil décrit chacun.
- Rester à distance pour un monstre et les règles de déplacement (Se replier, Approcher, Garder la distance) ajoutent leur propre objectif.
Dans tous les cas, la limite de danger tient : le module ne va pas là où le personnage peut être tué quand une autre case fait presque aussi bien.
Placement
Avant le combat, avec le Placement sur Automatique et les sorts du personnage connus, le module note chaque case de départ de son équipe comme il note un tour : il prévoit le premier tour depuis cette case, et retire le danger qui dépasse le risque, au cas où les monstres joueraient en premier. Avec Proche, il choisit la case la plus proche des ennemis, et avec Loin la plus éloignée. Tant qu'il ne connaît pas les sorts du personnage, Automatique se règle sur la portée : proche en mêlée, loin à distance, à 4 cases de l'ennemi le plus proche sinon. Les sorts du personnage sont connus depuis son combat précédent : seul le premier combat après le démarrage d'Asterobot est placé de cette façon.
Les limites qui font avancer un combat
- Une action à la fois. Le module envoie une action, puis attend la réponse du serveur avant de décider la suivante. Il n'envoie jamais deux fois la même action.
- 3 secondes sans réponse veulent dire que le serveur n'a pas pris l'action. Le module écarte ce sort, ou les déplacements depuis cette case, pour le reste du tour, et décide de nouveau sans. Le journal des tours la marque Sans réponse.
- 30 actions par tour au plus, après quoi le tour finit.
- 2 secondes de marge. Sa dernière décision part au moins 2 secondes avant la fin du temps du tour, si bien que le délai d'une règle ne coûte jamais le tour.
- Toujours une action. Quand rien ne vaut la peine, il finit le tour.
Ce qu'il ne pèse pas encore
- Les murs, les portails, les runes, et les glyphes-auras qui suivent leur lanceur : ils ne comptent pour rien. Le danger ne compte pas non plus les pièges et glyphes que les ennemis pourraient poser à leur prochain tour.
- Les sorts des invocations d'un ennemi : le module ne sait pas encore quel monstre est une invocation, il les compte donc comme frappant à mains nues.
- Les challenges. Voir Bientôt.