diff --git a/sql/sylvania/rivage_phase_1460.sql b/sql/sylvania/rivage_phase_1460.sql new file mode 100644 index 0000000..40a44b8 --- /dev/null +++ b/sql/sylvania/rivage_phase_1460.sql @@ -0,0 +1,47 @@ +-- ===================================================================== +-- Rivage brisé (carte 1460) — alignement des phases +-- +-- Signalé en jeu : « les ennemis sont bien affichés en rouge mais mon +-- curseur ne m'indique pas qu'ils sont attaquables ; en revanche eux +-- peuvent m'attaquer ». +-- +-- LA CAUSE +-- `scenario_broken_shore_intro::OnPlayerEnter` place chaque joueur en +-- phase 169 : +-- +-- PhasingHandler::AddPhase(player, PHASE_NORMAL, true); +-- +-- Le script porte d'ailleurs son propre avertissement, écrit par qui l'a +-- rédigé : « Toute invocation doit partager la phase des joueurs +-- (OnPlayerEnter les met en 169), sinon elle est invisible/intangible : +-- cible de quête introuvable, vague intuable. » C'est pourquoi +-- `FinalizeSummon` ajoute la phase 169 à tout ce qu'il invoque. +-- +-- Or les 757 placements importés sont en phase 0. Le script n'en +-- attendait aucun : il invoquait la totalité de ses acteurs. En +-- important le décor statique, on a introduit des créatures qui ne +-- partagent pas la phase du joueur. +-- +-- Vérifié : la référence donne bien `PhaseId` vide pour les 757 lignes, +-- la conversion en 0 était donc fidèle. Le décalage vient de notre +-- script, pas de la transposition. +-- +-- LE CHOIX +-- On aligne les placements sur la convention du script plutôt que de +-- retirer le phasage. Retirer la phase 169 du joueur obligerait aussi à +-- la retirer de toutes les invocations, soit bien plus de code touché +-- pour le même résultat. +-- +-- Les objets sont inclus : les Flèches de la Détresse doivent être +-- actionnables, sans quoi le critère des 3 flèches reste bloqué. +-- +-- ⚠️ Nécessite un redémarrage : les placements sont lus au démarrage. +-- ===================================================================== + +UPDATE `creature` + SET `PhaseId` = 169 + WHERE `map` = 1460; + +UPDATE `gameobject` + SET `PhaseId` = 169 + WHERE `map` = 1460;