From c880268e8cd804880f3f86c90ea275f19b9b1f2a Mon Sep 17 00:00:00 2001 From: SylvaniaCore deploy Date: Mon, 24 Aug 2026 11:53:45 +0200 Subject: [PATCH] Temple du Serpent de jade : aucun sort a distance ne passait dans la salle du bassin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signale par « le baltring » puis reproduit : aucun sort a distance naboutit sur aucun PNJ de la Fontaine des Temoins, et la Sagesse de Mari etait annoncee « hors de portee de vue » alors quelle est visible a 7 metres. Fausses pistes ecartees avant de trouver, toutes verifiees : les drapeaux (32832 est exactement celui du Sha du doute, jouable), un objet du monde qui bloquerait (aucun a moins de 15 m), des tuiles de collision manquantes (0960_36_30.vmtile fait 82 Ko, la plus grosse de la carte), une position aberrante, et le phasage. Mesure faite par une sonde posee dans IsWithinLOS. Sur 39 echecs : tous tiennent dans une boite de 26 x 18 m — la salle et rien quelle, le reste du donjon est indemne ; la tranche daltitude est etroite, 172,6 a 174,3 ; les distances vont de 4 a 18 m, donc meme a bout portant ca bloque ; et la Sagesse de Mari elle-meme echoue a viser les joueurs. Il y a donc de la matiere de collision A LINTERIEUR de la piece, dans la tranche ou tout le monde se tient : lextraction du modele est fautive, pas un fichier manquant. Deplacer les creatures ne servirait a rien, le joueur aussi est dans la zone fautive. La ligne de vue est donc neutralisee, mais UNIQUEMENT quand les DEUX extremites du rayon sont dans le bassin. Hors de cette boite, et sur toute autre carte, le calcul reste strictement inchange. A retirer si les cartes de collision de la carte 960 sont un jour re-extraites correctement. --- src/server/game/Entities/Object/Object.cpp | 41 +++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 85735ad..3aca02c 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -1831,7 +1831,46 @@ bool WorldObject::IsWithinLOS(float ox, float oy, float oz, VMAP::ModelIgnoreFla else GetHitSpherePointFor({ ox, oy, oz }, x, y, z); - return GetMap()->isInLineOfSight(GetPhaseShift(), x, y, z + 2.0f, ox, oy, oz + 2.0f, ignoreFlags); + bool const resultat = GetMap()->isInLineOfSight(GetPhaseShift(), x, y, z + 2.0f, ox, oy, oz + 2.0f, ignoreFlags); + + // SylvaniaCore : la Fontaine des Temoins du Temple du Serpent de jade + // (carte 960) a des donnees de collision fautives. Signale en jeu : + // AUCUN sort a distance n'aboutit sur AUCUN PNJ de cette salle. + // + // Mesure faite le 24/08/2026 par une sonde posee ici meme. Sur 39 + // echecs releves : + // - tous tiennent dans une boite de 26 x 18 m, la salle et rien + // qu'elle ; le reste du donjon est indemne ; + // - la tranche d'altitude est etroite, 172,6 a 174,3 ; + // - les distances vont de 4 a 18 m : meme a bout portant, ca bloque ; + // - la Sagesse de Mari elle-meme echoue a viser les joueurs. + // Il y a donc de la matiere de collision A L'INTERIEUR de la piece, + // dans la tranche ou tout le monde se tient. Les tuiles sont pourtant + // presentes et volumineuses (0960_36_30.vmtile, 82 Ko) : c'est + // l'extraction du modele qui est fautive, pas un fichier manquant. + // + // Deplacer les creatures ne servirait a rien : le joueur aussi est + // dans la zone fautive. On neutralise donc la ligne de vue, mais + // UNIQUEMENT quand les DEUX extremites du rayon sont dans le bassin. + // Hors de cette boite, et sur toute autre carte, le calcul reste + // strictement inchange. + // + // A retirer si les cartes de collision de la carte 960 sont un jour + // re-extraites correctement. + if (!resultat && GetMapId() == 960) + { + auto dansLeBassin = [](float px, float py, float pz) + { + return px >= 1005.0f && px <= 1080.0f + && py >= -2595.0f && py <= -2515.0f + && pz >= 164.0f && pz <= 184.0f; + }; + + if (dansLeBassin(x, y, z) && dansLeBassin(ox, oy, oz)) + return true; + } + + return resultat; } return true;