Le vol souffre dune desynchronisation reelle : cote serveur la montgolfiere
(55649, VehicleId 1820) suit parfaitement ses 21 points de passage (sonde
journalisant la position chaque seconde, passager colle a 3m), mais le client
affiche un trajet totalement different (est au lieu du nord-ouest), confirme
par extraction des coordonnees TomTom image par image dune video.
Eliminees par la mesure : CAN_CONTROL (aucun siege du vehicule ne le porte,
joueur en siege 0 UNCONTROLLED), conflit de sieges, course a lembarquement
(WP_START retarde a 8s), etat de vol (anim tier correct), repli socket realm.
Angle mort restant : le contenu reel du paquet de spline envoye au client.
Contournement : a lacceptation chez Aysa (56662), les 2 objectifs sont
credites et le joueur teleporte au point datterrissage officiel (745,3665,194,
releve sur video du serveur officiel), pres dElder Shaopai qui recoit la quete.
Les 21 points authentiques restent intacts : reactiver WP_START suffira quand
la desync sera corrigee.
Note technique : actions independantes (chacune sur son evenement 19) et non
chainees par link - ce core ne propage pas les liens au-dela dun niveau.
Valide en jeu.
La route ne vient plus de coordonnees deduites de la base mais du trajet
reellement marche par un joueur, de la route d Elwynn au trone d Anduin. La
trace brute de 69 releves a ete traitee : elagage des aller-retours, puis un
point tous les ~45 yards plus tout changement d etage de plus de 6 yards et
tout virage de plus de 50 degres. Resultat, 30 waypoints au lieu de 24.
L apport decisif est la montee dans le donjon, desormais en paliers reguliers
(105, 115, 125, 132, 136, 145, 152, 157) la ou la version deduite sautait d un
etage a l autre. Les bots s y coincaient dans les batiments et la console etait
inondee de messages de pathfinding en echec.
Point de rassemblement recale sur le depart du trajet.
Mesures apres application, assaut a 50 bots : la horde atteint le waypoint
29 sur 30 avec une trentaine de survivants, contre un plafond a 21 sur 24
auparavant.
Reste ouvert : le bot le plus proche, mort ou vif, s arrete a 94 yards du
trone. Anduin n a donc jamais ete engage, et l hypothese d une protection par
la faction est ecartee par la mesure : un essai avec sa faction forcee a 12,
attaquable puisque les bots tuent les civils de cette faction, n a rien change.
Le verrou est la garde royale de l etage, pas le dirigeant.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Vingt-quatre waypoints de la Vallee des Heros au trone d Anduin Wrynn, dans
la plage d entrees reservee 1000-1099 (2000-2099 pour Orgrimmar).
Aucune coordonnee inventee : chaque point vient soit d un trajet de patrouille
reel (waypoint_data des patrouilleurs de Hurlevent), soit de la position d un
PNJ effectivement spawne. Les points sont donc marchables par construction,
ce qui evite de valider la route a la main en jeu. Detour calcule le chemin
entre deux points consecutifs, la route n a pas besoin d etre dense.
Trace : pont de la Vallee des Heros, porte, place du Commerce, route du canal,
allee du Donjon, cour et perron, grand hall, salle du trone, escalier, galerie
des emissaires, antichambre, trone.
Le point de rassemblement passe de la valeur game_tele (-8833, 622) au
waypoint 1000 (-8904, 692) : l ancienne tombait deja sur le pont, a l interieur
du perimetre garde.
Verifie en conditions reelles apres deploiement : tirage quotidien d une heure
aleatoire, alternance de faction, declenchement et arret manuels, ouverture et
fermeture de la ligne d historique, verrou anti-rejeu du creneau quotidien.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Nouveau module d evenement quotidien : une horde de playerbots assaille la
capitale adverse et tente d abattre son dirigeant. Cette premiere tranche
livre le squelette, la persistance et l ordonnancement ; le spawner, l IA
d assaut et l eveil du dirigeant suivent (E4-E8).
Le serveur tourne sur DestinyCore, sans systeme de modules : le module prend
donc la forme d un script module TrinityCore (decouverte CMake automatique
via AddCapitalSiegeScripts()), avec le gestionnaire dans la bibliotheque game
comme PlayerBotMgr, puisque l IA d assaut devra y acceder depuis BotBGAI.
game/CapitalSiege/CapitalSiegeMgr : tirage quotidien d une heure aleatoire
dans une plage configurable, alternance stricte de la faction attaquante,
machine a etats et arret d urgence si le diff monde depasse le seuil.
Le jour est consomme au declenchement et non a la fin, donc un redemarrage
du worldserver en plein evenement ne peut pas le rejouer.
scripts/CapitalSiege : branchement par WorldScript (aucune modification de
World.cpp), et commandes GM .siege status/start/stop/history sous la
permission RBAC_PERM_COMMAND_EVENT existante.
Persistance dans dc_characters et non dc_world : il s agit d etat mutable
ecrit par le serveur, qu une reimportation de la base de contenu ne doit pas
effacer. Six requetes preparees ajoutees a CharacterDatabase. Toute ligne
d historique restee ouverte est refermee au demarrage du core.
MMaps verifies pour les deux capitales : carte 0 (592 tuiles) et carte 1
(715 tuiles), tuiles de Hurlevent et d Orgrimmar presentes. La navigation
des bots passe par PathGenerator/MotionMaster, donc Detour, pas les VMaps.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Issue TrinityCore #22243 (fermee sans solution) : Shang Xi disparait a
lacceptation, aucun dialogue, quete interminable. Trois causes cumulees,
identifiees par sondes temporaires et .debug phase :
1. PHASE : le PNJ de scene (56686) heritait de la phase du donneur (1527),
que le joueur PERD justement en acceptant la quete (il ne garde que
1327). Cree mais invisible. Mesure : summon=OK cibleVoitSummon=NON.
2. DIALOGUES : repliques et sons ciblaient invocateur (7) / proprietaire
(23) - non resolus dans les listes daction differees (source_type 9).
3. CREDIT : le sort 106625 (credit du PNJ 56688 = lobjectif) ciblait 23 et
sexecutait au meme instant que la disparition du PNJ.
Correctifs : retrait de phase avant invocation + le joueur invoque ;
le PNJ force sa phase sur 1327 ; textes/sons cibles sur soi ; credit
attribue directement (KilledMonster) au joueur le plus proche ; despawn
repousse de 3s. Patch SQL rejouable, valide en jeu de bout en bout.
Note : seul le patch SQL est commite - dautres fichiers du working tree
appartiennent a une session parallele (module bots/BG).
Village peuple en 2 passes (guids 20540xxx + 21000xxx) se chevauchant a
l entree -> jusqu a 4 singes empiles sur le meme point. Retrait des 4
doublons < 2m, village conserve peuple (~30 Hozen, blizz adaptatif).
Le client 7.3.5 embarque 88k traductions frFR officielles mais TC lit
creature_text_locale (11 lignes) et gossip_menu_option_locale (18 lignes).
Pont via BroadcastTextId : +12 288 dialogues de creatures et +5 605 options
de gossip en francais, serveur entier. Recharge a chaud, aucun restart.
Decouvert en testant l Ile Vagabonde (dialogues d ambiance en anglais).
Degats des sorts de creatures verifies authentiques (sonde DMGDBG : melee
14-16, Back Kick 69 = ratio MoP retail) -> intacts. La deviation etait la
densite custom : 70 spawns la ou le retail en met ~30. Echantillonnage a
dispersion maximale, espacement final 28m > rayon d aggro (~17m) : le
multi-pull redevient un choix du joueur.
Philosophie actee avec l admin : blizz adaptatif = preserver les valeurs
Blizzard, corriger les deviations custom.
- Pretre Esprit gardien (47788) : SCHOOL_ABSORB sur EFFECT_2, pas EFFECT_1
— la sauvegarde anti-mort ne fonctionnait JAMAIS (2 hooks rebindes)
- Chasseur Filet du traqueur (200108) : MOD_ROOT_2 (reel) au lieu de
MOD_ROOT — le burst de vitesse post-racine ne partait jamais
- Guerrier Mort soudaine (52437) : ABILITY_IGNORE_AURASTATE (reel) au lieu
de DUMMY — le reset de Colossus Smash ne partait jamais
- Druide Instinct de tueur (108299) : DUMMY (reel) au lieu de
MOD_SHAPESHIFT (2 hooks)
- Dernier recours guerrier (12975) + familier (53478) : scripts debranches,
l effet natif APPLY_AURA/MOD_INCREASE_HEALTH fait deja tout (patch SQL)
Analyses sans action (pas de fix verifie transposable) : mage Flame On
(redesign charge-recovery), druide Omen of Clarity resto, pretre Vampiric
Touch proc, warrior Ravager (FIXME assume chez Argus aussi), voleur
nerve_strike/nightstalker, warlock life_tap/demonic_empowerment/darkglare
(designs differents, notes dans le suivi de chantier).
Demoniste : couverture complete cote features, 9 hooks morts restants notes.
- Lames demoniaques (203555) : hook proc sur PROC_TRIGGER_SPELL (reel) au
lieu de DUMMY — le talent Havoc ne proccait jamais [aa54261d]
- Annihilation (201428/227518) : EFFECT_1 rebinde WEAPON_PERCENT_DAMAGE
- Metamorphose (201453) : immunite du saut — hook rebinde EFFECT_0 +
APPLY_AURA (une valeur d aura 39 etait passee comme type d effet)
- Barrage gangrene : bindings SQL des deux scripts INVERSES (aura sur le
sort de degats et inversement) — echange [82dbceb4]
- Aura d immolation : ajout du binding Vengeance 219830 (seul Havoc
178740 etait couvert) [aa54261d]
Notes sans action : Glide (approche differente a evaluer en jeu), Marque
de feu 204022 (FIXME assume aussi chez Argus), fury refiller 203650
(pipeline de donnees, comme Soul Reaper DK).
- Elixir de soins (122280) : hook proc sur DUMMY (reel) au lieu de
PROC_TRIGGER_SPELL — le passif ne proccait jamais [603df7a1]
- Eclair de jade (117952) : script supprime, proc de chi 25%/tick = reliquat
MoP, le canal Legion ne genere rien [8ffc9d55]
- Effuse (116694) : relais de soin MoP mort retire, redirection Soothing
Mist conservee
- Stagger (124273/4/5) : hook remove rebinde EFFECT_1/DUMMY
- The de mana (197908) : debranche, effet natif Legion (patch SQL)
Preuve locale : erreurs did-not-match au boot pour chaque hook corrige.
Deux bugs a la Mare des Reflets (Ile Vagabonde) empechaient de finir
la quete jouer 5x avec l Esprit de l eau :
- Shu jouable (65493) portait l aura d invisibilite 89304 (reservee au
Water Spout Bunny 60488) -> spawne mais invisible.
- spell_water_spout_quest_credit (invoque l Esprit de l eau au terme de
la quete) present dans le core mais lie a aucun sort -> PNJ final absent.
Patch SQL data : sql/sylvania/shu_water_spirit_fix.sql
Signale et valide en jeu par le joueur.
AVANT : 4 boss etaient des coquilles vides de 28-33 lignes (Hote affige, Jeune fille
de vigilance, Sassz ine, KIL JAEDEN le boss final) et AUCUN boss n etait binde en DB
(ScriptName vides sauf Goroth) -> le raid entier etait decoratif malgre 978 spawns.
APRES : module lignee uwow complet (12 161 lignes, 12 fichiers) transcrit vers nos
APIs en 7 passes de compatibilite (~880 erreurs de compilation resorbees) :
instance script complet (portes, frames, graveyards), 9 encounters scriptes,
trash/evenements, 74 bindings de sorts, ~60 ScriptName de creatures, ATs.
Ajouts CORE reutilisables (compat DestinyCoreNew, prepareront le futur port Antorus) :
- UnitAI : DoCastTopAggro, GetObjectData, hooks no-op (SpellFinishCast,
OnApplyOrRemoveAura, OnRemoveAuraTarget, OnAreaTriggerDespawn/Cast, OnInterruptCast,
IsDisableGenerateLoot, GetModifyedData)
- CreatureAI : Talk(guid), Talk(liste aleatoire), ZoneTalk
- ScriptedAI : CheckHomeDistToEvade + alias IsHeroicRaid/IsMythicRaid/IsLfrRaid/
IsNormalRaid/IsHeroicPlusRaid ; SummonList::GetCreature
- Unit : GetAnyOwner, CastSpellDelay x2 ; Creature : SetReactState(delay), StopAttack
- Map : ApplyOnEveryPlayer, IsHeroicPlusRaid ; GameObject : AddDelayedEvent (m_Events)
- Position : SimplePosXYRelocationByAngle, GenerateNonDuplicatePoints, IsLinesCross
(reecrit sans G3D::LineSegment2D, absent de notre g3dlite)
- MotionMaster : MoveSmoothFlyPath x2 ; AreaTrigger : GetRadius/SetSphereScale(no-op)/
isMoving/Despawn/GetProgressCompat ; AreaTriggerAI : IsValidTarget/CalculateSpline
Degradations douces assumees (documentees en commentaire dans le code) :
filtrage de cibles des ATs (IsValidTarget jamais appele par notre moteur), scale
dynamique des zones de Kil jaeden, conversations cinematiques, distribution de loot
personnelle, hooks d interruption/notification d aura, quelques approximations de
roles (SoloQ->ROLE_TANK) et de type de degats.
SQL : sql/sylvania/tomb_of_sargeras_bindings.sql (applique en DB).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
dc_world n est pas couverte par le backup auto (auth+characters seulement, dump
compresse ~78 Mo). Ces patchs sont la trace versionnee hors-VPS des changements
data : framework scenarios d artefact, campagne moine, intro Rive Brisee, bindings
Ring of Peace/Chi-Ji, trainers, quetes, fixes divers.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The spell script spell_hun_dire_beast summoned the zone "Beast" guardian but
never ordered it to attack, and the ~108 summon templates had no AIName/ScriptName,
so the beasts idled next to the owner instead of engaging the target.
Add a dedicated ScriptedAI npc_pet_hun_dire_beast (mirroring npc_pet_hunter_snake_trap,
minus the snake-specific level-40 health formula and poison) that, on spawn, attacks
the summoner target (owner GetVictim / getAttackerForHelper), and bind it to the 108
inert level-1 friendly "Beast" summon templates via sql/sylvania/dire_beast_ai_20260705.sql.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Le trainer moderne generique First Aid (TrainerId 160) n'avait pas le
sort 3273 (apprenti = apprendre la profession), et 6 menus de Secourisme
routaient vers lui ou vers le trainer VIDE 877 => fenetre d'entrainement
vide pour un debutant (Shaina Fuller/Hurlevent, Arnok/Orgrimmar, Doc
Zapnozzle, Nus, Amelia Atherton, Anchorite Yazmina, Jandros Terres,
Aresella, Joseph Wilson).
Fix:
- +3273 sur trainer_spell TrainerId 160
- gossip_menu_option_trainer: menus 657,4761,5855,8802,22169,10826 -> 160
(tous 100% Secourisme, verifie)
Active a chaud sans restart: .reload trainer + .reload gossip_menu_option
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
27 maîtres de métier spawnés (forge, alchimie, enchantement, couture,
travail du cuir, cuisine, joaillerie, premiers soins, archéologie, hub
profession Pandarie) portaient le flag GOSSIP sans option type-5 sur
leur menu -> menu vide, impossible de s'entraîner. La donnée d'entraînement
existe (npc_trainer legacy chargée en mémoire) mais n'était pas atteignable.
Ajout d'une option de gossip type 5 (OptionNpcFlag=16, TrainerId=0 ->
fallback SendTrainerListLegacy) sur les 23 menus distincts concernés.
Appliqué sur dc_world LIVE + .reload gossip_menu_option. Rollback fourni.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Fix: die in dungeon -> ghost sent across the world + corpse locked in instance -> cannot resurrect. Links 18 Cata/WoD/Legion dungeon interior zones to existing entrance-zone WorldSafeLocs. Applied live + reload graveyard_zone (1569 to 1587).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>