Murloc Cult

Retour aux archives

Longs trajets : marcher par étapes au lieu d'abandonner

Le vrai coupable des « chemins impossibles » : le lissage de chemin du core s'arrête à 74 points de 4 m. Au-delà d'environ 300 m de marche, le chemin était déclaré impossible. Crashtroller avance désormais par étapes d'environ 200 m le long du couloir du maillage.

Commit
457f8de
Build
Build réussi (1 min) · Cible worldserver

Analyse

Dans PathGenerator::BuildPointPath, FindSmoothPath échoue dès que le chemin lissé dépasse MAX_POINT_PATH_LENGTH (74 points espacés de SMOOTH_PATH_STEP_SIZE = 4 m). Le core construit alors un raccourci et marque le chemin PATHFIND_NOPATH. Rendre une quête au camp depuis le territoire des familiers devenait « impossible ».

Correctif

  1. Si le chemin lissé échoue, calcul du chemin en coins (SetUseStraightPath(true) → findStraightPath) : même couloir de polygones, mais seulement les points d'inflexion.
  2. Choix du coin le plus éloigné à moins de 200 m de marche cumulée.
  3. Chemin lissé jusqu'à ce coin, qui épouse le relief (pas de flottement au-dessus d'une colline), puis nouveau calcul à l'arrivée.

Le repli vers un point accessible voisin (PNJ dans un bâtiment) reste en dernier recours.