From 48dff69fc18ac918a31b8cd34b760b38fee6f8f8 Mon Sep 17 00:00:00 2001 From: Sylvania Date: Tue, 23 Jun 2026 22:43:08 +0000 Subject: [PATCH] Lilatha (q9212): gossip relance escorte si quete deja acceptee Quete Escape from the Catacombs : si l escorte est interrompue (deco / redemarrage serveur / sortie de portee), npc_escortAI ne fait FailQuest qu a la mort -> la quete reste INCOMPLETE et l escorte, ne demarrant qu a OnQuestAccept, ne pouvait plus repartir (blocage definitif). Ajout OnGossipHello + StartEscortIfNeeded : reparler a Lilatha avec la quete en cours relance l escorte. Co-Authored-By: Claude Opus 4.8 --- .../zone_eastern_kingdoms_ghostlands.cpp | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/server/scripts/EasternKingdoms/Zones/zone_eastern_kingdoms_ghostlands.cpp b/src/server/scripts/EasternKingdoms/Zones/zone_eastern_kingdoms_ghostlands.cpp index 9354091..88aaaa0 100644 --- a/src/server/scripts/EasternKingdoms/Zones/zone_eastern_kingdoms_ghostlands.cpp +++ b/src/server/scripts/EasternKingdoms/Zones/zone_eastern_kingdoms_ghostlands.cpp @@ -128,8 +128,31 @@ public: if (GameObject* Cage = me->FindNearestGameObject(GO_CAGE, 20)) Cage->SetGoState(GO_STATE_READY); } + + // Relance l escorte si le joueur a deja la quete mais qu elle a ete interrompue + // (deconnexion / redemarrage serveur / sortie de portee) -> evite un blocage definitif + void StartEscortIfNeeded(Player* player) + { + if (HasEscortState(STATE_ESCORT_ESCORTING)) + return; + + me->setFaction(FACTION_QUEST_ESCAPE); + Start(true, false, player->GetGUID()); + } }; + bool OnGossipHello(Player* player, Creature* creature) override + { + // Si le joueur a la quete en cours, (re)lancer l escorte au lieu d un dialogue vide + if (player->GetQuestStatus(QUEST_ESCAPE_FROM_THE_CATACOMBS) == QUEST_STATUS_INCOMPLETE) + { + if (npc_ranger_lilathaAI* escortAI = CAST_AI(npc_ranger_lilatha::npc_ranger_lilathaAI, creature->AI())) + escortAI->StartEscortIfNeeded(player); + return true; + } + return false; + } + bool OnQuestAccept(Player* player, Creature* creature, Quest const* quest) override { if (quest->GetQuestId() == QUEST_ESCAPE_FROM_THE_CATACOMBS)