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 <noreply@anthropic.com>
This commit is contained in:
BlaMacfly
2026-09-02 23:17:16 +02:00
parent b047cb7a02
commit 6d98d5cbbd
@@ -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