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>