Commit Graph

78 Commits

Author SHA1 Message Date
SylvaniaCore deploy df107cb232 ToS : fix crash SIGSEGV a la creation d instance (recursion infinie GetSaveData)
Le harnais bot a intercepte 3 crashs avant tout joueur : mon renommage de la passe 4
(GetBossSaveData -> GetSaveData, la suggestion du compilateur) avait transforme
l override GetSaveData en appel recursif infini -> stack overflow des qu une instance
1676 se cree. Fix racine : suppression des overrides GetSaveData/Load du module,
la persistance generique d InstanceScript (SetBossState) fait foi dans les deux sens.

LECON : ne jamais accepter aveuglement le did-you-mean du compilateur quand la
fonction suggeree est celle qu on est en train de definir.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-02 02:59:12 +00:00
SylvaniaCore deploy 69dbb2e657 Tombe de Sargeras : module complet 9/9 boss porte depuis DestinyCoreNew (mudyx)
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>
2026-08-01 22:21:27 +00:00
SylvaniaCore deploy b4b14b591c Survol des cores 7.3.5 GitHub actifs : 2 fixes pathing transcrits (LegionCore-Reforged)
Inspection des cores 7.3.5 actifs en 2026 hors ArgusCore : Legion-Studios (releases
ecrasees, inexploitable), levrules (locales russes), Psychostout (dump sans historique),
mudyx/DestinyCoreNew (meme famille que nous ; ses fixes ciblent sa propre dette, notre
Nythendra est deja correcte ; NOTE : il possede des scripts Antorus/Tombe de Sargeras
qu on n a pas -> gisement de contenu futur), Titans/LegionCore-Reforged (2 fixes retenus).

Portes depuis LegionCore-Reforged 814091a (verifies buggues chez nous) :
- PathGenerator::BuildPolyPath : dans la branche farFromPoly on ne recalait QUE le point
  d arrivee ; le point de DEPART restait aberrant quand l unite est au-dessus du navmesh
  (debout sur un GO : quai, caisse, plateforme) -> chemins aberrants des poursuivants.
  Recalage du startPoint sur son poly ajoute.
- MMapManager : budget de noeuds Detour de la navmesh query 1024 -> 2048 : les tres longs
  chemins echouaient faute de budget.

Ecartes apres verification (pieges evites) : displayId 39 -> 32290 aurait CREE un bug
(nos 1216 GO display 39 spawnes = points d assise volontairement invisibles, 0 coffre) ;
locales frFR (nos 104640 noms FR >> leurs 9880, schema different) ; criteria appearance
(deja gere, 4 sites CriteriaHandler).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 17:10:07 +00:00
SylvaniaCore deploy 3b8478ddd6 Transcription ArgusCore lot 5 : degats du Bond heroique + timer capitaine Alterac
Inspection des 111 nouveaux commits ArgusCore (26/07 -> 01/08). Seuls 2 bugs sur 5
candidats existaient reellement chez nous (les autres deja corrects, voir ci-dessous) :

- Bond heroique (6544) : la constante SPELL_WARRIOR_HEROIC_LEAP_DAMAGE (52174) etait
  declaree mais JAMAIS castee -> le bond ne faisait aucun degat a l atterrissage.
  Le champ TriggerSpell de l effet JUMP_DEST n est pas peuple dans ce client, donc on
  caste explicitement. Compromis assume : part au lancement, pas a l impact exact. (32dfd577)
- Vallee d Alterac : m_CaptainBuffTimer initialise avec urand(0,4)*60 au lieu de *60000
  -> buff des capitaines quasi immediat au lieu de 2-6 min. Une seule des deux occurrences
  etait buguee (l initialisation), l autre etait deja correcte. (a4f5083d)

DEJA CORRECTS chez nous (verifies, rien a porter) : opcode SMSG_ACCOUNT_HEIRLOOM_UPDATE
0x25C5 (ArgusCore cite DestinyCore comme reference), constantes AV/IoC 600/300,
areatrigger_teleport a ID negatifs (notre conteneur est deja int64), map IDs des BG
(architecture differente, pas de battleground_scripts chez nous).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-01 15:24:17 +00:00
SylvaniaCore deploy f4cc719d02 FIX BLOQUANT (signalement #16) : les 2 scenarios narratifs recoivent le triple fix du runner
Cause racine : une invocation faite par la MAP (instance->SummonCreature) n herite
d AUCUNE phase, contrairement a un summon fait par une creature. Les joueurs etant mis
en phase 169 par OnPlayerEnter, toutes les vagues et PNJ de ces 2 scenarios etaient
invisibles/intangibles => etape 1 infranchissable (joueur Argus bloque sur la map 1460).
Ce defaut avait ete trouve par le harnais bot le 26/07 et corrige dans le runner
d artefacts UNIQUEMENT ; les 2 scenarios narratifs, ecrits avant, ne l avaient jamais recu.

- Rive Brisee : helpers Summon/SummonAt centralises -> phase 169 + Z cale au sol ;
  aggro forcee sur les vagues de demons (compteur d etape) ; allies non touches
- Moine Serenity s End : helper SummonPhased (phase + Z), 22 appels map rediriges

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 05:36:11 +00:00
SylvaniaCore deploy 7e9f692d83 Sauvegarde des 52 patchs SQL data (dc_world) dans le depot
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>
2026-07-28 07:32:43 +00:00
SylvaniaCore deploy a5466c4d00 Moine : Ring of Peace (116844) implemente - areatrigger d ejection
Dernier manque moine de l audit 10/07. AreaTrigger id 718 (trouve via SpellEffect.db2
effet 179 CREATE_AREATRIGGER misc[0]=718). Struct at_monk_ring_of_peace : OnUnitEnter
ejecte tout ennemi valide hors de l anneau (KnockbackFrom depuis le centre), mecanique
Legion 7.3.5 confirmee (wowhead/wowpedia : anneau 8s, ennemis entrants ejectes).
Binding : areatrigger_scripts(718) -> ~/dc-patches/ring_of_peace.sql.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-26 21:32:04 +00:00
SylvaniaCore deploy 210a5473f4 Transcription ArgusCore lot 4 : anti-exploit LFG + calendrier
- LFG: quitter la file en solo n autorise que SON propre ticket, pas celui d un autre (28b8d962)
- Calendrier: modifier un evenement ou y ajouter une invitation reserve au proprietaire
  ou a un invite moderateur (helper CalendarEventEditableBy sur UpdateEvent + Invite) (0c2fed59)

Non portes (deja OK/absents chez nous) : arene join utilise deja la vraie note (pas le
bug hardcode a 1) ; Chant de Chi-Ji areatrigger DEJA implemente (at_monk_song_of_chiji).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-26 18:36:07 +00:00
SylvaniaCore deploy 846517c655 Transcription ArgusCore : anti-clip des clotures (d21a91eb)
PathGenerator::ValidatePathAgainstCollision() appelee en fin de BuildPointPath :
valide chaque segment du chemin MMAP contre la collision vmap (isInLineOfSight,
ModelIgnoreFlags::Nothing). Le MMAP ne modelise pas les objets fins (clotures,
barrieres) -> un chemin nav-mesh valide peut les traverser. Si un segment est bloque,
on tronque le chemin (PATHFIND_INCOMPLETE) pour que l unite s arrete devant l obstacle.
Adapte a nos APIs : _sourceUnit, isInLineOfSight 8-params, log printf, halfHeight fixe.
Skippe les chemins non-MMAP (vol/nage/raccourcis).

ARBITRAGE reversible : plus realiste mais risque de sur-troncature (PNJ qui s arretent
devant une porte/rampe M2 vue comme obstacle). A surveiller : PNJ bloques en mouvement.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-26 17:22:16 +00:00
SylvaniaCore deploy 13e246f744 Transcription ArgusCore : ligne de vue M2 pour les sorts (a4b90a5f)
Les 9 verifications de LoS de sorts dans Spell.cpp passent de ModelIgnoreFlags::M2
(ignore les doodads M2) a ::Nothing (les prend en compte). Effet : on ne peut plus
lancer de sort a travers piliers/arbres/portes qui sont des modeles M2. Nos vmaps
contiennent bien la geometrie M2 (13545 modeles .m2.vmo) donc le changement est effectif.
Couvre : cibles de chaine, CheckCast (cible+destination), CheckEffectTarget, ecorchage/cadavre.

ARBITRAGE reversible : plus Blizzlike mais risque de faux blocages sur doodads a
collision imprecise. Verifie en scenario (combat OK, 0 erreur LoS anormale). Revert =
Nothing -> M2 sur ces 9 sites si les joueurs signalent des sorts bloques a tort.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-26 16:52:14 +00:00
SylvaniaCore deploy 6ab4abafef Transcription ArgusCore lot 1 : 8 fixes anti-crash + anti-exploit
Anti-crash (adaptes a nos APIs) :
- Spell: assert dur sur cible destination -> log+skip (a00b85b2)
- SpellAuraEffects: DoT weapon-percent, caster nul -> tick a 0 (b456b7f7)
- Battleground: PlayerScores.find sans garde -> continue si absent (e875f9f4)
- VehicleHandler: 4x siege nul deref -> return (392466b1)
- LootHandler: division par zero si liste vide -> return (e8196eed)
Anti-exploit :
- PetHandler: index action bar hors bornes (OOB write) + abandon reserve au proprietaire (fec060ab)
- Guild: onglet de banque reserve au chef (2288f107) ; attribution de rang ne peut viser/donner un rang >= au sien (f94d82dc)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-26 16:21:27 +00:00
SylvaniaCore deploy 1f1daf20cd Fix boot ABORT : custom_loot_packs n enregistre que loot_item_generic_pack (les autres existaient deja dans item_scripts.cpp)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-26 14:13:22 +00:00
SylvaniaCore deploy e942d36f50 Reconstruction des customs detruits par git clean : loot packs (8 ScriptName item) + raciaux worgen (quetes 14222/14375)
Ces fichiers n avaient jamais ete commites. Regle : tout custom est desormais tracke.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-26 13:57:29 +00:00
SylvaniaCore deploy 2dc7993b41 fix(core/movement): don't trust fallTime reset while actually falling [porte d ArgusCore 814282b0] 2026-07-26 12:52:44 +00:00
SylvaniaCore deploy a5c511d04a fix(core/blackmarket): enforce auction minimum starting bid [porte d ArgusCore 888e3f24] 2026-07-26 12:52:43 +00:00
Andrei C d89d733051 fix(core/player): clamp vendor purchase quantity before validation 2026-07-26 12:51:23 +00:00
SylvaniaCore deploy 5af9d71a8f Harnais QA bot complet + 3 fixes gameplay majeurs des scenarios d artefact
- PlayerBotSession : simulation de l ack de teleport PROCHE (CMSG_MOVE_TELEPORT_ACK),
  debloque les .tele enchaines sur un bot (le 1er passait, les suivants restaient coinces)
- Runner artefacts, fixes issus de la passe bot in-game (7 scenarios certifies ACTIFS) :
  * vagues engagees explicitement (SetReactState AGGRESSIVE + SetInCombatWithZone) :
    les TempSummon de Map n aggro pas seuls -> mobs inertes sur TOUS les scenarios
  * phase 169 appliquee aux invocations (alignement avec OnPlayerEnter)
  * tolerance GetHeight 25->60m (Skywall : plateformes etagees, le garde-fou lachait
    les vagues dans le vide) + sonde QA-PROBE etiquetee par map (visibilite/combat/pos)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 22:51:09 +00:00
SylvaniaCore deploy f783cfd073 Harnais QA PlayerBot : 4 fixes du module bot + Z-fix et logs du runner artefacts
- PlayerBotSession : simulation de l ack MSG_MOVE_WORLDPORT pour un bot en jeu
  (IsBeingTeleportedFar) ; sans ca tout .tele name sur un bot restait bloque
- BotFieldAI : eviction hors instance gatee par la config pbotqa (harnais scenarios)
- Diagnostics QA-BOTLOG/QA-RUNLOG (login bot, holder async, cycle du runner)
- Runner artefacts : Z des spawns cale au sol via GetHeight avec repli sur l ancre,
  offsets resserres (plateformes type Skywall)
- Cause racine login bots : noms generes invalides (chiffres) rejetes par
  CheckPlayerName -> persos QA renommes en DB (Botqa/Botqb, compte 32)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 12:57:14 +00:00
SylvaniaCore deploy d3c0436ad5 Passe QA scenarios artefact : cris d apparition des boss (TextExist + Talk) ; fix modele invisible Blazing Infernal 102398 (data)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 14:58:15 +00:00
SylvaniaCore deploy 900331fd3d Runner artefacts lot 10 FINAL : 6 dernieres maps (Gloaming Reef 1108/1553, Maelstrom 1580, Chaman intro 1572, Netherlight 1512, Shadowgore 1502, Hall du Gardien 1513)
Toutes les maps de scenario d artefact sont couvertes. Config ~/dc-patches/artifact_batch10.sql, options 54-59.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 12:06:10 +00:00
SylvaniaCore deploy b8280bc376 Runner artefacts lot 9 : Guerrier Fureur - Warswords Helheim (1511, Gardien Helarjar 115753) + Chaman Amelioration - Doomhammer (1503)
Config data ~/dc-patches/artifact_batch9.sql, options 52/53 du Gardien.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 11:39:24 +00:00
SylvaniaCore deploy f0b5436e03 Runner artefacts lot 8 : Druide - Revechemin corrompu (1540, Nightmarish Horror 120487) + Mage Givre - Ebonchill (1616, 2 zones)
Config data ~/dc-patches/artifact_batch8.sql, options 50/51 du Gardien.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 10:55:43 +00:00
SylvaniaCore deploy 1e2abb722c Runner artefacts lot 7 : Chasseur BM Ulduar - Thunder of the Titans (1068/1579) + DK Rescue Koltira (1134/1617)
Config data ~/dc-patches/artifact_batch7.sql, options 48/49 du Gardien.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 08:49:55 +00:00
SylvaniaCore deploy e3b77cc300 Runner artefacts lot 6 : Niskara (1604, Lord Perdition) + Terres de Feu (1605, Infernal ardent 102398)
Config data ~/dc-patches/artifact_batch6.sql, options 46/47 du Gardien.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 21:32:50 +00:00
SylvaniaCore deploy 30cd5435de Runner artefacts lot 5 : Voleur Assassinat - Kingslayers (1620 Ravenholdt) + Arcway (1632 Suramar, Adjudicateur 115594)
Config data ~/dc-patches/artifact_batch5.sql, options 44/45 du Gardien.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 20:52:40 +00:00
SylvaniaCore deploy 7cb205fdbd Runner artefacts lot 4 : Chaman Ele - Poing de Ra-den (1602 pic du Vortex, Sentinel 116763) + Chasseur BM - Frappe-titan (1609 temple des Orages, Obliterator 114362)
Config data ~/dc-patches/artifact_batch4.sql, options 42/43 du Gardien.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-18 19:34:40 +00:00
SylvaniaCore deploy 4429c60a9b Runner artefacts lot 3 : Voleur Finesse - Crocs du Devoreur (1078/1607, Akaari 105450) + Demoniste Destru - Sceptre de Sargeras (1630 Tol Barad, Lord Perdition 90663)
Config data ~/dc-patches/artifact_batch3.sql, options 40/41 du Gardien.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-18 17:49:50 +00:00
SylvaniaCore deploy 92463867d7 Runner artefacts lot 2 : DK Impie - Apocalypse (monastere Ecarlate, map 1618, boss Whitemane 109374)
Config data ~/dc-patches/artifact_batch2.sql, option 39 du Gardien des Artefacts.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-18 17:34:13 +00:00
SylvaniaCore deploy 494e0e342e Runner artefacts lot 1 : DK Givre (Lames du prince dechu, 901/1480) + Paladin Sacre (Main d argent, 1092/1611)
Configs data (~/dc-patches/artifact_batch1.sql) : etapes multi-zones ICC via teleports,
boss Aberration horrifiante 106669, ames 99664/116287, options 37/38 du Gardien des Artefacts.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-18 16:49:33 +00:00
SylvaniaCore deploy 474a63f44b Framework scenarios d artefact : runner generique pilote par tables world
- scenario_artifact_runner.cpp : InstanceScript generique lisant scenario_artifact_config
  et scenario_artifact_stage (entree, etapes/vagues/boss, teleports inter-zones, niveaux
  forces, credit et sortie configurables). Kills comptes via OnUnitDeath.
- Ajouter un scenario = 1 ligne config + N lignes stage + macro REGISTER_ARTIFACT_RUNNER(map)
- 1re config livree : The Thundering Heavens (WW moine, Skywall 1528, boss Typhinius 100760,
  ancres officielles WorldSafeLocs) — SQL : ~/dc-patches/artifact_runner.sql

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 18:50:42 +00:00
SylvaniaCore deploy 4bf9a5f43f Artefacts : choix universel pour les 13 classes (PlayerChoice)
- class_hall_artifact_choices.cpp : handler generique responseId -> quete Chosen 40xxx
  pour guerrier/paladin/chasseur/pretre/DK/DH/chaman/demoniste (druide, mage, voleur,
  moine gardent leurs handlers dedies)
- Ritssyn Flamescowl (104795) declenche le choix demoniste via SendPlayerChoice(245)
  (aucun declencheur n existait pour cette classe)
- Data : ~/dc-patches/artifact_choices.sql (textes FR des choix, UI d etapes pour
  6 scenarios d artefact deja scriptes : Ursoc/Dark Riders/Windrunners/Truthguard/
  Nexus Vault/Mother Tree)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 17:49:57 +00:00
SylvaniaCore deploy 70d0763042 Intro Iles Brisees : scenario The Battle for Broken Shore (786/map 1460) pour les 2 factions
- scenario_broken_shore_intro.cpp : 9 etapes officielles, cast faction (Varian/Jaina/Genn vs
  Voljin/Sylvanas/Baine/Thrall), boss Arganoth/Krosus, finale Guldan, sorties Dalaran/Orgrimmar
- Angelica (Hurlevent) embarque desormais reellement vers le scenario (fin du contournement)
- Entree Horde : Holgar Stormaxe donne 44543 + teleport SmartAI ; rendeur Eitrigg spawne a Orgrimmar
- Data : ~/dc-patches/broken_shore_intro.sql (scenarios, graveyard_zone map 1460, gabarits, textes FR)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 16:36:07 +00:00
SylvaniaCore deploy 80c5aec13a Campagne moine : scenario Serenity's End (943/map 1014) + reactivation quete 12103 + choix artefact PlayerChoice 242
- Nouveau scenario_monk_serenitys_end.cpp : InstanceScript map 1014, 7 etapes officielles,
  escorte Chen, boss Jorvinax, pierre gangrenee 98353, teleport final ile Vagabonde (1514)
- spell_monk.cpp : pelerinage zen devie vers map 1014 pendant la quete 12103
- class_hall_monk.cpp : PlayerScript choix artefact (choice 242 -> quetes 40638/39/40)
- Data associee : ~/dc-patches/monk_campaign_intro.sql (appliquee)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 15:27:06 +00:00
SylvaniaCore deploy ed8e61d937 fix(monk): activer la maitrise WW Combo Strikes (115636)
Les 3 classes spell_monk_mastery_combo_strikes(_periodic_auras/_periodic_triggers)
existaient mais n etaient jamais enregistrees dans AddSC_monk_spell_scripts
(boot log: no core script found). Enregistrement des 3 classes.

La classe principale (deja bindee sur Tiger Palm/Blackout Kick/Flying Serpent
Kick/Rising Sun Kick) applique desormais le bonus de maitrise sur les
enchainements non repetes + pilote le talent Hit Combo. Les variantes periodiques
(Fists of Fury/Spinning Crane Kick/Whirling Dragon Punch) necessitent leurs
bindings spell_script_names.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 13:08:36 +00:00
SylvaniaCore deploy 16cc4e92c8 fix(monk): Ironskin Brew, Keg Smash brew-CDR, Combo Breaker (audit BM/WW)
Suite a l'audit de la classe moine (3 mecaniques cassees vs Wowhead 7.3.5) :

1. Ironskin Brew (115308) ne faisait RIEN : effet unique DUMMY, buff 215479
   (+35% Stagger) orphelin (reference nulle part). Nouveau script
   spell_monk_ironskin_brew : applique/prolonge 215479 (cumul de duree, cap 3x).
   Le calcul du Stagger (stance_of_the_sturdy_ox) lit desormais 215479 et l'ajoute
   au pourcentage. -> le Brewmaster recupere sa mitigation active.
   (binding via spell_script_names 115308 -> spell_monk_ironskin_brew)

2. Keg Smash (121253) executait des sorts MoP disparus (Weakened Blows,
   Dizzying Haze, energize Chi 127796 absent). Remplace par la mecanique Legion :
   -4 s sur la recharge des 4 breuvages. Ironskin/Purifying partagent une categorie
   de charges (dedup) -> nouvel API core SpellHistory::ModifyChargeRecoveryTime ;
   Black Ox/Fortifying via ModifyCooldown.

3. Combo Breaker : le proc tentait 118864 (Tiger Palm MoP, absent du client 7.3.5)
   1 fois sur 2 -> proc perdu. Proc desormais toujours Blackout Kick! (116768).

Diagnostic produit lors de l'audit moine, verifie contre les donnees DB2 et
les references 7.3.5, puis deploye manuellement.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 12:49:39 +00:00
SylvaniaCore deploy 7582be8b0a fix(player): ne pas desequiper le stuff sous le niveau de specialisation (10)
Bug (signalement #8, perso draenei): sous le niveau 10, chaque montee de
niveau vidait tout l'equipement vers les sacs, obligeant a tout rehabiller.

Cause racine: InitTalentForLevel() appelle ResetTalentSpecialization() a
chaque montee de niveau tant que level < MIN_SPECIALIZATION_LEVEL (10), ce
qui declenche RemoveEquipedSpecializationItems(). Cette derniere desequipe
tout objet dont les bits de specialisation ne matchent pas la spe (ou qui
echoue CanUseItem). Or sous 10 un perso n'a pas de vraie spe -> desequipement
indu, non-blizzlike.

Fix durable a la racine: early-return dans RemoveEquipedSpecializationItems()
si getLevel() < MIN_SPECIALIZATION_LEVEL. Couvre les 2 appelants sans
regression: la voie level-up sous 10 (ResetTalentSpecialization) est
neutralisee; la voie ActivateTalentGroup (changement de spe) est de toute
facon impossible sous 10. MIN_SPECIALIZATION_LEVEL deja en scope (Player.cpp).

Diagnostic produit en autonomie par le pipeline de triage de bugs, verifie
puis deploye manuellement.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 22:07:09 +00:00
SylvaniaCore deploy 86f07c3366 fix(solocraft): purge _unitDifficulty au logout (stats divisees par 5)
Bug: un moine niveau 1 se retrouvait a ~20% de ses stats (28 PV au lieu
de ~150), rendant un mob niveau 1 "trop fort". La map statique
_unitDifficulty survivait a la deconnexion alors que les modificateurs
TOTAL_PCT de stats sont remis a 1.0 a chaque login. Apres un passage en
donjon puis relog, ClearBuffs retrouvait l'entree fantome et RETIRAIT un
buff jamais reapplique, divisant les stats par 5. Persos touches:
Selena guid 59 et Hakirosa guid 22.

Fix: hook OnLogout qui fait _unitDifficulty.erase(guid), resynchronisant
la map avec les modificateurs runtime. Le restart vide aussi la map
statique, les persos abimes se soignent au prochain login sans retouche
DB.

Integre aussi le travail Solocraft non commite anterieur present dans
l'arbre: exclusion Mythique et Mythique+, lecture de la config a chaque
changement de carte tunable par 'reload config' sans restart, et les
logs SoloDBG ayant servi au diagnostic.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 20:32:42 +00:00
SylvaniaCore deploy 7b178bb198 Fix Dire Beast (120679): summoned beasts now attack the hunter target
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>
2026-07-05 21:18:48 +00:00
SylvaniaCore deploy 89168bc275 fix(dk-acherus): stop forcing sanctuary on map 609 (blocked all hostile spellcasts)
AreaTableEntry::IsSanctuary() hardcoded ContinentID==609 -> true, a legacy
WotLK-era workaround. On this Legion 7.3.5 client AreaTable.db2 none of the
Acherus/Ebon Hold areas (4298,4342,4356) carry AREA_FLAG_SANCTUARY, so the
hardcode made the entire DK starting zone a sanctuary. Spell::CheckCast then
returned SPELL_FAILED_NOTHING_TO_DISPEL on every hostile cast (in-sanctuary
non-friendly guard), so new death knights could only auto-attack the intro
mobs. Now purely reads the real AREA_FLAG_SANCTUARY bit from DB2.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 10:14:57 +00:00
Sylvania 70375d9bd7 Fix: vehicules pilotes figes par un changement de vitesse (Foncer/Hot Rod)
SetSpeedRate envoyait SMSG_MOVE_SPLINE_SET_RUN_SPEED pour toute creature car
GetPlayerBeingMoved() ne resout que les unites Player. Un vehicule pilote par un
joueur recevait donc un override spline -> le client croit que le serveur reprend
le controle et fige le vehicule (ex: Punch It / Foncer +50% vitesse, quete 14071
Rolling with my Homies, Hot Rod 34840). Prouve par capture opcode en jeu.

Fix: fallback sur GetPlayerMovingMe() (m_playerMovingMe, renseigne pour le
controle client direct: vehicules/possession) -> le paquet part en
SMSG_MOVE_SET_*_SPEED vers le pilote. Aucune incidence sur les PNJ IA.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 07:06:55 +00:00
SylvaniaCore 870dad61f5 Couche 3 du harnais debug quetes : commande console .qtest
.qtest <nomJoueur> <questId> [complete] (allowConsole=true => SOAP sans selection)
Dump objectif-par-objectif l'etat live d'une quete pour un joueur en ligne
(statut, ObjectID, cur/req, OK/--). Option complete = AddQuest+ForceCompleteQuest.
Valide en jeu : qtest Testy 14109 -> 3 objectifs items listes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 07:02:01 +00:00
Sylvania 48dff69fc1 Lilatha (q9212): gossip relance escorte si quete deja acceptee
Quete Escape from the Catacombs : si l escorte est interrompue
(deco / redemarrage serveur / sortie de portee), npc_escortAI ne
fait FailQuest qu a la mort -> la quete reste INCOMPLETE et l escorte,
ne demarrant qu a OnQuestAccept, ne pouvait plus repartir (blocage
definitif). Ajout OnGossipHello + StartEscortIfNeeded : reparler a
Lilatha avec la quete en cours relance l escorte.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 22:43:08 +00:00
SylvaniaCore b96242db3b Harnais validateur quetes (Couche 1) + fixes donjon/raid du 23/06
- quest_validator.sql : 11 regles statiques (lecture seule), perimetre INST/WORLD,
  filtre LIVE "donneur jouable", calibre (R9 questitem-aware, R7 annotee).
- FIX_quest_validator_20260623.sql : Thal'ena 102431 AIName=SmartAI ;
  Rocknot 9503 + Alurmi 57864 NOT_SELECTABLE retire ; goober 232625 Data1=0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 11:29:19 +00:00
SylvaniaCore deploy 72d1222d75 fix(loot+firelands): stop cyclic loot-ref stack overflow & make heroic Ragnaros killable
LootMgr: LootTemplate::Process gains a thread_local recursion-depth guard (RAII, cap 50). A self-referencing reference_loot_template row (ref 104 -> 104) recursed until the worldserver stack overflowed and crashed on ICC boss/trash loot; this core does not reject such cycles at load. DB row already removed live; this hardens against any future cycle.

boss_ragnaros_firelands: heroic phase 4 had no completion path (every SetData(DONE)/EVENT_DIE lived in the !IsHeroic branch), leaving Ragnaros unkillable in heroic. Add a heroic death branch gated on new flag heroicPhaseFour (set after the phase-4 heal) so the encounter completes and grants credit/loot. Normal mode unchanged.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 21:24:18 +00:00
Sylvania Ops 0fd690e7c4 Fix(net): SO_REUSEADDR sur l acceptor (durcissement anti bind-fail TIME_WAIT)
AsyncAcceptor::Bind() pose desormais SO_REUSEADDR entre open() et bind()
(aligne upstream TC) : permet le rebind immediat d un port encore en
TIME_WAIT apres un kill/crash brutal avec connexions actives, evitant le
"Could not bind ... Address already in use" au redemarrage. Complete le fix
StopNetwork (17845330) qui supprime deja le crash a l extinction.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-21 13:42:02 +00:00
Sylvania Ops 178453309a Fix(net): eviter le SIGSEGV a l extinction (SocketMgr::StopNetwork null acceptor)
Main.cpp appelle sToolSocketMgr.StopNetwork() inconditionnellement a l arret,
mais ToolSocketMgr::StartNetwork() n est jamais appele -> _acceptor reste
nullptr -> _acceptor->Close() deref null -> SIGSEGV a CHAQUE extinction
(coredumps recurrents, port libere lentement => bind-fail au relaunch).

Fix : garder _acceptor->Close() derriere un test de nullite dans
SocketMgr::StopNetwork() (aligne upstream TC). Verifie par comptage de
coredumps : arret de l ancien binaire = +1 crash, arret du nouveau = 0 crash,
et port libere en ~1s au lieu de ~51s.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-21 13:31:04 +00:00
Sylvania Ops faa2f64de5 Fix LFG WotLK: 9 donjons normaux (access_requirement niv 73-75 -> 70) que la recherche proposait sous le niveau requis => teleport refuse reason 6. Hot-reload. 2026-06-21 13:21:35 +00:00
Sylvania Ops d8b2aa5567 Fix(spells): Bond heroique - booster aussi le saut DASH (6544)
Diag runtime (log spells+misc) : un Bond heroique declenche DEUX MoveJump -
94954/JUMP_DEST (phase LAUNCH) PUIS 6544 SPELL_EFFECT_DASH eff254 (phase HIT)
qui ecrase le premier. Le mouvement effectif est donc le DASH du sort 6544,
qui passe aussi par CalculateJumpSpeeds mais avec m_spellInfo->Id=6544 -> la
branche scopee 94954 ne s appliquait jamais (reglages sans effet ressenti).
Fix : condition `== 94954 || == 6544`. Les cles config HeroicLeap.* agissent
desormais sur le saut reel.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-21 12:54:13 +00:00
Sylvania 2b5de8f5ff AccountTypes: ajout SEC_TESTER=1 (palier sous Moderateur), decalage mod/gm/admin/console 2026-06-20 18:42:37 +00:00
Sylvania Ops b56eb35e1d Fix Azjol-Nerub quete oeufs (GO 193051): goober.questID 13182->0 (gatait l usage a la quete WotLK morte; joueurs sur 29808 cliquaient dans le vide). Credit via quest_objectives 2026-06-20 18:18:28 +00:00