Files
felwell-core/chantiers/rivage_brise
SylvaniaCore deploy c8f1d570e1 Rivage brise : placements des cartes 1460 et 1666, generateur unifie
NON APPLIQUES au serveur. Verses pour relecture.

DECOUVERTE QUI RECADRE LE CHANTIER
Il y a DEUX Rivages brises, et je preparais le second en premier :
  carte 1460 -- le lancement de Legion (Voljin, Varian, la defaite),
               c est le contenu de la video fournie ;
  carte 1666 -- l assaut de la 7.2 (Kalgorath, Arganoth, Mephistroth).

Pour la 1460, NOTRE SCRIPT EXISTE DEJA : scenario_broken_shore_intro.cpp,
464 lignes, correctement rattache -- instance_template reclame
scenario_broken_shore_intro et c est exactement le nom sous lequel il
s enregistre (RegisterInstanceScript, map 1460). Son scenario est aussi
deja declare (786). Il ne lui manquait QUE les placements. Aucun portage
C++ n est necessaire pour cette carte.

VERIFICATION CROISEE faite avant de generer : sur les 17 entrees que le
script attend, 10 sont placees dans la reference (Voljin, Sylvanas,
Baine, Thrall, Varian, Jaina, Mekkatorque, Genn, Krosus, Arganoth) et
les 7 autres sont INVOQUEES par le script lui-meme (Khadgar l.335,
ancres l.370-371, Tirion l.380, Guldan l.398, troupes via TroopEntry,
credit de fin l.431). La repartition est donc coherente.

CONTENU
  carte 1460 : 757 creatures, 101 objets, 84 chemins (526 points)
  carte 1666 : 593 creatures, 59 objets, 180 chemins (1495 points)
  Toutes les creatures mobiles ont leur chemin, aucune orpheline.

BUG RATTRAPE A LA VALIDATION
Une premiere version de l outil, obtenue en substituant mecaniquement le
numero de carte, produisait pour la 1460 un fichier dont les DELETE
visaient encore la 1666 : il aurait vide la mauvaise carte et laisse
l autre intacte. Le generateur est reecrit, le numero de carte ne vit
plus qu a un seul endroit, et la difficulte est desormais DEDUITE du
spawnMask (verifiee puissance de 2, uniforme) au lieu d etre codee.

VALIDATION en base jetable pour les deux fichiers : import reussi,
comptages exacts, zero creature hors carte, zero mauvaise difficulte,
zero mobile sans chemin, zero collision de GUID avec la base reelle.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-27 23:50:14 +02:00
..

Chantier — Assaut du Rivage brisé (carte 1666)

État au 27/08/2026. Rien n'est appliqué au serveur à ce stade.

Le blocage d'origine

instance_template réclame pour la carte 1666 un script nommé scenario_7.2_broken_shore_intro qui n'existe nulle part dans notre code — script fantôme. La table scenarios n'a par ailleurs aucune ligne pour cette carte. Conséquence : les quêtes 45102 Begin the Assault et 46734 Assault on Broken Shore sont infranchissables.

Ce qui a été rassemblé

Source : dufernst/LegionCore-7.3.5 (même lignée uwow que notre fork).

Élément Volume Emplacement
Script du scénario 500 lignes reference/AssaultBrokenShore.cpp
Script d'instance 308 lignes reference/instance_AssaultBrokenShore.cpp
Placements de créatures 593 spawns, 67 entrées à extraire du dump
Placements d'objets 59 spawns, 52 entrées à extraire du dump

Le dump complet (LegionCore_world_2020_04_25.zip, 39 Mo compressés / 232 Mo) n'est pas versionné : il se retélécharge depuis le dépôt de référence, chemin sql/base/.

Ce que notre base possède déjà

  • Les 67 modèles de créatures : présents, aucun manquant.
  • Les 52 modèles d'objets : présents, aucun manquant.
  • Les répliques françaises de Vol'jin (90708) et Sylvanas (90709), y compris la blessure empoisonnée qui déclenche la retraite. Ces deux-là n'ont cependant aucun spawn ni script.

Décisions de transposition, établies sur données

Les deux schémas divergent. Correspondances retenues :

Référence Nous Décision
spawnMask = 4096 spawnDifficulties '12' — 4096 = 2¹², et la difficulté 12 est « Normal Scenario » (type instance 5) d'après Difficulty.db2 du build 7.3.5.26972
phaseMask = 1 phaseUseFlags, PhaseGroup valeurs neutres : aucun phasage réel à transposer
PhaseId PhaseId direct — vaut '' sauf 3 créatures à 7043
guid guid renumérotés au-dessus de nos maxima (créature 290000114, objet 210120986)
— terrainSwapMap -1, valeur employée par nos autres instances
npcflag2, AiID, MovementID, MeleeID, isActive, skipClone, personal_size, isTeemingSpawn — abandonnées, ces colonnes n'existent pas chez nous

Dépendances découvertes, à ne pas oublier

  1. 180 créatures sur 593 ont MovementType = 2 : elles suivent des chemins. Sans extraction de waypoint_data pour leurs GUID, elles apparaîtront figées.
  2. 12 créatures portent AiID = 7424, une table d'IA propre au cœur de référence que nous n'avons pas. Ce comportement sera perdu et devra être refait autrement — probablement en SmartAI.
  3. Le dump contient scenario_data, scenario_poi, scenario_poi_points et scenario_step_spells : la déclaration du scénario s'y trouve aussi.
  4. Le script s'enregistre sous instance_AssaultBrokenShore alors que notre instance_template réclame scenario_7.2_broken_shore_intro. À raccorder.

Piège rencontré, à retenir

Le premier extracteur écrit pour ce travail renvoyait zéro ligne pour la carte 1666, ce qui aurait fait conclure à tort que la référence ne contenait rien. Cause : dans ce dump, une instruction insert into s'étale sur plusieurs lignes, et l'analyse ligne à ligne ne voyait que la première.

C'est un contrôle de cohérence — vérifier que le parseur trouvait bien des lignes sur des cartes connues — qui a révélé le bug. Toujours valider un extracteur sur un cas positif connu avant de croire un résultat négatif.

Reste à faire

  1. Extraire et transposer les 593 + 59 placements.
  2. Extraire les chemins des 180 créatures mobiles.
  3. Transposer la déclaration du scénario.
  4. Porter les 808 lignes de C++ et les adapter à notre API, qui a divergé (MoveJump, SetFacingTo, GetEffect diffèrent déjà — constaté ailleurs).
  5. Raccorder le nom de script.
  6. Refaire autrement le comportement des 12 créatures à AiID.