5c8b82338e
Signale en jeu avec une reproduction exacte : « si on attend la phase
deux sans le frapper, le serveur plante ». Deux vidages memoire l'ont
confirmee, pile en main :
#0 spell_seismic_shard::HandleScript(SpellEffIndex)
#1 Spell::HandleEffects
#2 Spell::DoSpellHitOnUnit
...
#13 InstanceMap::Update
GetDynObject renvoie un pointeur NUL quand l'objet de visee n'existe pas
-- pas encore cree, ou deja expire. La ligne suivante le dereferencait
sans le moindre test :
DynamicObject* dynamicObject = GetCaster()->GetDynObject(...);
target->CastSpell(dynamicObject->GetPositionX(), ...);
Le plantage a lieu dans le fil de mise a jour de la carte, donc il
emporte le processus entier, pas seulement la session fautive.
GetCaster() et GetHitUnit() sont verifies au passage : rien ne garantit
leur presence au moment ou l'effet est traite, un lanceur mort entre le
lancement et l'impact suffit. Meme prudence sur le ExitVehicle du script
de changement de siege, juste au-dessus.
RESTE OUVERT, signale par le meme joueur et non traite ici : le deuxieme
boss du donjon se reinitialise des qu'on le deplace, et le bouclier du
dernier boss serait purement visuel, sans absorption.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
35 lines
1.6 KiB
SQL
35 lines
1.6 KiB
SQL
-- =====================================================================
|
||
-- Rivage brisé (carte 1460) — objets affichés comme déjà utilisés
|
||
--
|
||
-- SIGNALÉ EN JEU : « le gameobject de la flèche n'est physiquement pas
|
||
-- visible ni cliquable, à la place il y a un minuscule skin de chien ».
|
||
--
|
||
-- Les six Flèches de malheur (240194) étaient enregistrées en
|
||
-- `state = 2`, soit GO_STATE_ACTIVE_ALTERNATIVE. Le commentaire de notre
|
||
-- propre énumération le décrit sans ambiguïté :
|
||
-- « show in world as used in alt way and not reset »
|
||
-- L'objet est donc affiché dans sa forme CONSOMMÉE dès l'apparition,
|
||
-- avec le modèle de remplacement correspondant — et il n'est plus
|
||
-- utilisable, puisqu'il se présente comme déjà employé.
|
||
--
|
||
-- Ce n'était ni le modèle ni l'orientation : `displayId` 37460 existe
|
||
-- bien dans GameObjectDisplayInfo du build 7.3.5.26972, avec une boîte
|
||
-- englobante de 44 × 44 × 71 unités, et la rotation (0,0,0,1) est
|
||
-- l'identité, la même que celle des Cages de la Légion qui s'affichent
|
||
-- correctement.
|
||
--
|
||
-- État attendu : GO_STATE_READY (1), celui de 79 des 101 objets de la
|
||
-- carte, dont toutes les cages, les fleurs et les navires.
|
||
--
|
||
-- PORTÉE : les six flèches uniquement. Les Canons de siège (240214) et
|
||
-- deux Portails de la Légion partagent le même défaut apparent, mais
|
||
-- rien ne prouve encore que leur état soit fautif — un canon peut
|
||
-- légitimement s'afficher chargé. À vérifier en jeu avant d'y toucher.
|
||
-- =====================================================================
|
||
|
||
UPDATE `gameobject`
|
||
SET `state` = 1
|
||
WHERE `id` = 240194
|
||
AND `map` = 1460
|
||
AND `state` = 2;
|