From 6d98d5cbbd5e3e1b24d63d9e1c4436d88baf51a6 Mon Sep 17 00:00:00 2001 From: BlaMacfly Date: Wed, 2 Sep 2026 23:17:16 +0200 Subject: [PATCH] Rivage brise : l entree du scenario d assaut n existait nulle part La carte 1666 etait peuplee et scriptee depuis hier, mais aucun chemin n y menait : le joueur restait plante devant Khadgar. Les quetes 45102 et 46734 restaient donc infranchissables malgre le portage. Le deroulement officiel, decrit par les joueurs : on prend la quete a l Anneau de Krasus, on choisit une option de dialogue, et l on est emporte par la voie des airs. Cette option n existe ni dans notre base ni dans le dump de reference -- donnee de capture jamais importee. Elle est donc recreee sur Khadgar 86563, qui est bien celui de l Anneau de Krasus : pose en (-841, 4258, 746), l altitude de Dalaran, et deja donneur d Assault on Broken Shore. Rien d invente sur la destination : le sort 240603 porte deja les coordonnees officielles dans spell_target_position. OnGossipHello reconstruit le menu complet avant d ajouter l option, sans quoi Khadgar perdrait les seize quetes qu il propose : le coeur saute PrepareGossipMenu des qu un script repond au dialogue. Verifie en jeu : le joueur arrive bien sur la carte 1666 aux coordonnees attendues. Co-Authored-By: Claude Opus 5 --- .../Zones/zone_legion_dalaran_legion.cpp | 57 ++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/src/server/scripts/BrokenIsles/Zones/zone_legion_dalaran_legion.cpp b/src/server/scripts/BrokenIsles/Zones/zone_legion_dalaran_legion.cpp index 73be79b..d57f683 100644 --- a/src/server/scripts/BrokenIsles/Zones/zone_legion_dalaran_legion.cpp +++ b/src/server/scripts/BrokenIsles/Zones/zone_legion_dalaran_legion.cpp @@ -592,10 +592,65 @@ public: QUEST_DOWN_TO_AZSUNA = 41220, SPELL_TAXI_DALARAN_AZSUNA_ALLIANCE = 205098, SPELL_TAXI_DALARAN_AZSUNA_HORDE = 205203, + + // ============================================================= + // SylvaniaCore : l'entree du scenario d'assaut du Rivage brise. + // + // La carte 1666 etait peuplee et scriptee, mais AUCUN chemin + // n'y menait : le joueur restait plante devant Khadgar. + // + // Le deroulement officiel, tel que le decrivent les joueurs : + // on prend la quete aupres de l'archimage a l'Anneau de Krasus, + // puis on choisit « I am ready to launch the assault », une + // cinematique se joue et l'on est EMPORTE PAR LA VOIE DES AIRS + // jusqu'au scenario. C'est notre corbeau arcanique. + // + // Cette option de dialogue n'existe ni dans notre base ni dans + // le dump de reference : c'est de la donnee de capture jamais + // importee. Elle est donc recreee ici, faute de source. + // + // Le sort 240603 porte la destination officielle dans + // spell_target_position : carte 1666, (-1111.6, 2969.71, 186). + // C'est celui-la qu'on lance, pas une teleportation inventee. + // + // 86563 est bien le Khadgar de l'Anneau de Krasus : il est pose + // en (-841, 4258, 746), l'altitude de Dalaran, et il donne deja + // « Assault on Broken Shore ». + // ============================================================= + QUEST_ASSAUT_RIVAGE = 46734, + QUEST_LANCER_ASSAUT = 45102, + SPELL_ENTREE_ASSAUT = 240603, + ACTION_LANCER_ASSAUT = GOSSIP_ACTION_INFO_DEF + 90, }; - bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*sender*/, uint32 /*action*/) override + bool OnGossipHello(Player* player, Creature* creature) override { + // On reconstruit d'abord le menu normal -- quetes comprises. + // Sans cela Khadgar perdrait les seize quetes qu'il propose : + // le coeur saute PrepareGossipMenu des qu'un script repond au + // dialogue. + player->PrepareGossipMenu(creature, creature->GetCreatureTemplate()->GossipMenuId, true); + + bool const assautEnCours = + player->GetQuestStatus(QUEST_ASSAUT_RIVAGE) == QUEST_STATUS_INCOMPLETE || + player->GetQuestStatus(QUEST_LANCER_ASSAUT) == QUEST_STATUS_INCOMPLETE; + + if (assautEnCours) + AddGossipItemFor(player, GOSSIP_ICON_CHAT, "Je suis pret a lancer l'assaut.", GOSSIP_SENDER_MAIN, ACTION_LANCER_ASSAUT); + + player->SendPreparedGossip(creature); + return true; + } + + bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*sender*/, uint32 action) override + { + if (action == ACTION_LANCER_ASSAUT) + { + CloseGossipMenuFor(player); + player->CastSpell(player, SPELL_ENTREE_ASSAUT, true); + return true; + } + if (player->HasQuest(QUEST_DOWN_TO_AZSUNA) || player->GetQuestStatus(QUEST_DOWN_TO_AZSUNA) == QUEST_STATUS_INCOMPLETE) player->CastSpell(player, player->IsInAlliance() ? SPELL_TAXI_DALARAN_AZSUNA_ALLIANCE : SPELL_TAXI_DALARAN_AZSUNA_HORDE, true); // KillCredit & SendTaxi