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:
@@ -592,10 +592,65 @@ public:
|
|||||||
QUEST_DOWN_TO_AZSUNA = 41220,
|
QUEST_DOWN_TO_AZSUNA = 41220,
|
||||||
SPELL_TAXI_DALARAN_AZSUNA_ALLIANCE = 205098,
|
SPELL_TAXI_DALARAN_AZSUNA_ALLIANCE = 205098,
|
||||||
SPELL_TAXI_DALARAN_AZSUNA_HORDE = 205203,
|
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)
|
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
|
player->CastSpell(player, player->IsInAlliance() ? SPELL_TAXI_DALARAN_AZSUNA_ALLIANCE : SPELL_TAXI_DALARAN_AZSUNA_HORDE, true); // KillCredit & SendTaxi
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user