24/06/2020, 21:37
NPC_AI_Introduction
Ce post fait office de présentation et devrait être suivi de bien d'autres scripts .
Dans mon objectif de changer le gameplay , je me suis lancé dans la réalisation de scripts cores génériques pouvant s'appliquer a tout les mobs .
Rien de plus monotone de combattre les mobs face contre face , nez contre nez , sans âme ... sans vie.
Ces AI ont pour vocation d'apporter un peut d'intelligence , un peut de mouvement aux mobs classique sans être trop dur puisque souvent en groupe .
- Ces AI sont constitués de plusieurs spécialités qui seront choisi aléatoirement a l'agro . Un Druide pourra être Equilibre , Felin , Ours ou Tréant
- Pour chaque spécialité il peut exister plusieurs combinaisons de sort afin qu'un druide équilibre soit différent d'un autre druide équilibre .
- Lorsque sa classe le demande il bougera en fonction de ses besoins , un cast restera dans une plage de sa cible et ce déplacera si vous vous approchez ou vous éloignez. Un Felin ou voleur pendant le combat bougera aléatoirement au tour de vous.
- UPDATE `creature_template` SET `pickpocketloot ` = 1 WHERE (entry = 15100001); forcera la branche 1 a chaque agro c'est a dire Equilibre
- UPDATE `creature_template` SET `pickpocketloot ` = 2 WHERE (entry = 15100001); forcera la branche 2 a chaque agro c'est a dire Ours
- etc . J'ai choisi cette méthode plutôt que de rajouter une table ou un entrée db afin de garder une compatibilité maximale avec tout les cores.
ces AI comportent de plusieurs phases :
1) L'agro :
- le mobs choisi une spécialisation aléatoire
- le bob ce buff ou adoptera un changeform ou autres réglages propres en fonction de sa spécialisation
- suivant sa spécialisation il aura plus ou moins de chance de lancer un sort spécifique d'agro
- Suivant la classe une spécialisation poura avoir plus de chance de sortir.
2) Le combat : il est composé de 3 phases d'attaques
- le 1er sort sur la cible chaque 3 ou 4s environ , c'est le sort principal qu'il lancera en boucle
- le 2eme sort sur la cible ce déclenchera environ chaque 4 a 6s , il est en général plus puissant mais plus long a recharger
- le 3eme sort sur la cible est destiné a des sorts qui infligent des dégâts dans le temps (DOT) et il est donc lancé chaque 10s environ
3) Le heal en combat
- Celui ci sera prioritaire au combat mais pas avec excès
- Suivant le role du mob , celui ci ce déclenchera a des % différent suivant s'il est heal principal (spécialité) ou un simple caster qui peut occasionnellement soigner
- Le mob peux soigner des allié mais sa propre vie aura la priorité
- Un caster cherchera a rester a une certaine distance 20-30m , ni trop pres , ni trop loin .
- Si vous venez au contact il s’éloignera aléatoirement de 15m
- Il ne peut ce dėplacer qu'entre 2 casts
- Si le mob n'est pas un caster il essayera de vous tourner au tour aléatoirement plus ou moins vite suivant sa classe . Un fufu ou un felin feront plus de mouvements qu'un guerrier qui aura tendance a rester face a face ... mais pas toujours .
Exemple : Le Druide