Files
felwell-core/sql/sylvania/quetes_jumelles_specialisation.sql
T
SylvaniaCore deploy 82eb6e808e Nouveau type de condition : specialisation du joueur (53)
« Arretez Guldan ! » etait proposee en double par Maiev. Les quetes 38723
et 40253 partagent titre, prerequis, tri, et sont ouvertes a toutes les
races : rien ne les departageait. Ce ne sont pas des variantes
Horde/Alliance malgre le nom des constantes QUEST_STOP_GULDAN_H/_A — le
meme fichier les nomme correctement plus bas DMG_SPEC et TANK_SPEC. Ce
sont des jumelles de specialisation.

Le gestionnaire de conditions navait aucun moyen de tester la
specialisation. Le contournement par un sort caracteristique netait pas
tenable : les sorts de specialisation ne sont quasiment pas enseignes
sur ce serveur, les trois Chasseurs de demons existants ne connaissent
que Morsure de demon et celui de niveau 98 na pas sa Metamorphose. Une
condition batie dessus aurait masque les DEUX quetes.

CONDITION_SPECIALIZATION lit Player::GetPrimarySpecialization() et
valide la valeur contre ChrSpecialization.db2 au chargement.

Formulation retenue en base : la quete Vengeance exige la spe Vengeance,
la quete Devastation exige de NE PAS etre Vengeance. Il y a ainsi
toujours exactement une quete proposee, meme si la specialisation vaut
zero — un doublon agace, zero quete bloque.

Reutilisable : le serveur compte 1488 paires de quetes homonymes
partageant prerequis et races.
2026-08-22 14:47:59 +02:00

49 lines
2.8 KiB
SQL

-- =====================================================================
-- « Arrêtez Gul'dan ! » proposée en double — quêtes jumelles de spé
--
-- Signalé en jeu, à répétition : Maiev propose DEUX fois la même quête.
--
-- 38723 et 40253 portent le même titre, le même prérequis (38690), le
-- même tri (-407) et sont ouvertes à TOUTES les races
-- (AllowableRaces = 0xFFFFFFFFFFFFFFFF). Rien, absolument rien dans les
-- données ne les départageait : les deux étaient donc offertes ensemble.
--
-- Ce ne sont PAS des variantes Horde / Alliance, malgré le nom trompeur
-- des constantes du core (QUEST_STOP_GULDAN_H / _A). Le même fichier les
-- nomme correctement plus bas :
-- QUEST_STOP_GULDAN_DMG_SPEC = 38723, -> Dévastation
-- QUEST_STOP_GULDAN_TANK_SPEC = 40253, -> Vengeance
-- Ce sont des jumelles de SPÉCIALISATION.
--
-- Pourquoi une modification du moteur a été nécessaire
-- Le gestionnaire de conditions n'avait aucun moyen de tester la
-- spécialisation d'un joueur. Le contournement évident — tester un sort
-- caractéristique de chaque spé — ne tient pas debout ici : les sorts de
-- spécialisation ne sont quasiment pas enseignés sur ce serveur (les
-- trois Chasseurs de démons existants ne connaissent que Morsure de
-- démon ; celui de niveau 98 n'a même pas sa Métamorphose). Une
-- condition bâtie là-dessus aurait masqué les DEUX quêtes.
-- CONDITION_SPECIALIZATION (53) a donc été ajoutée au core, et elle lit
-- directement `Player::GetPrimarySpecialization()`.
--
-- Choix de formulation : la quête Vengeance exige la spé Vengeance ; la
-- quête Dévastation exige de NE PAS être Vengeance, au lieu d'exiger
-- Dévastation. Ainsi il y a TOUJOURS exactement une quête proposée, même
-- pour un personnage dont la spécialisation serait à zéro ou inattendue.
-- Un doublon est agaçant ; zéro quête serait bloquant.
--
-- Ce n'est pas un cas isolé : le serveur compte 1488 paires de quêtes
-- homonymes partageant prérequis et races. La nouvelle condition servira
-- ailleurs.
--
-- Rechargeable à chaud : reload conditions (après redémarrage du binaire)
-- =====================================================================
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=19 AND `SourceEntry` IN (38723,40253);
INSERT INTO `conditions`
(`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,
`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,
`NegativeCondition`,`ErrorType`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
(19,0,40253,0,0, 53,0,581,0,0, 0,0,0,'', 'Arretez Guldan ! version Vengeance - uniquement si spe Vengeance (581)'),
(19,0,38723,0,0, 53,0,581,0,0, 1,0,0,'', 'Arretez Guldan ! version Devastation - uniquement si spe PAS Vengeance');