From 7987f07d487cb923ce54a3ceee6d4b1359479283 Mon Sep 17 00:00:00 2001 From: SylvaniaCore deploy Date: Tue, 18 Aug 2026 09:41:53 +0200 Subject: [PATCH] Tyranna : fiabilise le credit trouvez le chemin vers le bas (quete 38728) Complement de c25c1305. Le credit 101760 netait accorde que dans DamageTaken, au coup fatal, aux seuls joueurs figurant a cet instant dans la liste de menace de Tyranna. Dans un combat ou quatre PNJ compagnons frappent aux cotes du joueur, cette conjonction rate - constate en jeu : le joueur tuait bien Tyranna, ramassait la Cle de voute (qui ne tombe que sur son cadavre), et restait bloque sur ce seul objectif. La cause exacte de lechec na pas pu etre determinee apres coup : trois conditions doivent etre reunies simultanement (instance de degats letale, liste de menace non vide, quete en cours) et rien dans les donnees ne dit laquelle a manque. Do le choix de supprimer la dependance plutot que de la diagnostiquer. Le credit est desormais aussi accorde dans JustDied, par proximite (100 m) et sans condition de menace, sur le modele du script de lInquisiteur Baleful. Lancienne voie est conservee : les deux sont idempotentes. Co-Authored-By: Claude Opus 4.8 --- .../BrokenIsles/DemonHunterZones/zone_mardum.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/server/scripts/BrokenIsles/DemonHunterZones/zone_mardum.cpp b/src/server/scripts/BrokenIsles/DemonHunterZones/zone_mardum.cpp index 9419d5f..2549151 100644 --- a/src/server/scripts/BrokenIsles/DemonHunterZones/zone_mardum.cpp +++ b/src/server/scripts/BrokenIsles/DemonHunterZones/zone_mardum.cpp @@ -1516,6 +1516,19 @@ public: void JustDied(Unit* /*killer*/) override { + // Objectif « Find the way downstairs » de la quete 38728. + // Il etait accorde uniquement dans DamageTaken, au coup fatal, et + // seulement aux joueurs figurant alors dans la liste de menace. + // Dans un combat ou quatre PNJ compagnons frappent avec le joueur, + // cette conjonction rate : constate en jeu, le joueur tuait bien + // Tyranna, ramassait la cle, et restait bloque sur cet objectif. + // On le redonne ici par proximite, sans condition de menace. + std::list nearbyPlayers; + me->GetPlayerListInGrid(nearbyPlayers, 100.0f); + for (Player* player : nearbyPlayers) + if (player->GetQuestStatus(QUEST_THE_KEYSTONE) == QUEST_STATUS_INCOMPLETE) + player->KilledMonsterCredit(NPC_KEYSTONE_DOWNSTAIRS_CREDIT); + std::list summonedSwarm; me->GetCreatureListWithEntryInGrid(summonedSwarm, NPC_TYRANNA_SPAWN, me->GetVisibilityRange()); for (std::list::const_iterator itr = summonedSwarm.begin(); itr != summonedSwarm.end(); ++itr)