From 966a866e7cdcd7004cd5a18adbbdab598c96f630 Mon Sep 17 00:00:00 2001 From: SylvaniaCore deploy Date: Fri, 28 Aug 2026 15:36:45 +0200 Subject: [PATCH] Mardum : le point de foyer etait fixe a l origine au lieu de la destination MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signale en jeu : « j ai utilise ma pierre de foyer qui ne m a pas teleporte, je devais atterrir en foret d Elwynn et il est ecrit vous renvoie a Fleur-de-l hiver alors que je n ai pas change le lieu ». La pierre fonctionnait parfaitement : elle renvoyait a Mardum, ou le joueur se trouvait deja -- d ou l impression qu elle ne faisait rien. CAUSE, dans spell_mardum_back_to_black_temple : player->TeleportTo(1468, 4325.46f, -620.53f, -281.40f, 1.517563f); player->SetHomebind(player->GetWorldLocation(), 7873); TeleportTo est ASYNCHRONE : le joueur n est pas deplace a la ligne suivante, si bien que GetWorldLocation() renvoyait encore la position de MARDUM. Le point de foyer se retrouvait donc fixe la ou le joueur venait de partir, au lieu du Caveau des Gardiennes (carte 1468) visé. Constate en base : character_homebind du personnage pointait sur mapId 1481 (Mardum), zone 6383. On lie desormais explicitement a la DESTINATION, via une WorldLocation construite une fois et passee aux deux appels. Le point de foyer du personnage affecte a ete remis en foret d Elwynn, avec des coordonnees reprises d un homebind Alliance deja valide dans notre base plutot qu inventees. Co-Authored-By: Claude Opus 5 --- .../DemonHunterZones/zone_mardum.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/server/scripts/BrokenIsles/DemonHunterZones/zone_mardum.cpp b/src/server/scripts/BrokenIsles/DemonHunterZones/zone_mardum.cpp index a9cc4dc..ed48453 100644 --- a/src/server/scripts/BrokenIsles/DemonHunterZones/zone_mardum.cpp +++ b/src/server/scripts/BrokenIsles/DemonHunterZones/zone_mardum.cpp @@ -1709,8 +1709,22 @@ class spell_mardum_back_to_black_temple : public SpellScript { player->EquipNewItem(15, 132243, true); player->EquipNewItem(16, 128956, true); - player->TeleportTo(1468, 4325.46f, -620.53f, -281.40f, 1.517563f); - player->SetHomebind(player->GetWorldLocation(), 7873); + // SylvaniaCore : l'ordre etait fautif. TeleportTo est + // ASYNCHRONE -- le joueur n'est pas deplace a la ligne + // suivante, si bien que GetWorldLocation() renvoyait encore + // la position de MARDUM. Le point de foyer se retrouvait + // donc fixe la ou le joueur venait de partir, au lieu du + // Caveau des Gardiennes. + // + // Signale en jeu : « j'ai utilise ma pierre de foyer qui ne + // m'a pas teleporte, je devais atterrir en foret d'Elwynn ». + // La pierre fonctionnait : elle renvoyait a Mardum, ou le + // joueur se trouvait deja. + // + // On lie desormais explicitement a la DESTINATION. + WorldLocation const caveau(1468, 4325.46f, -620.53f, -281.40f, 1.517563f); + player->TeleportTo(caveau); + player->SetHomebind(caveau, 7873); }); player->GetScheduler().Schedule(Seconds(2), [](TaskContext context)