Cime du Vortex : crash serveur a la mort dAltairus

Signale par un joueur, reproduit 2 fois (SIGSEGV 17/08 22:09 et 22:15).
JustDied() invoque le Slipstream 45457 pour ouvrir la voie vers la 2e
plateforme, puis pose son drapeau de dialogue sans verifier le retour.
Lentree 45457 nexiste dans aucune base (ni la notre, ni TDB 7.3.5) :
SummonCreature renvoie nullptr et le dereferencement tue le worldserver
dans Unit::Kill a chaque mort du boss.

- SQL : creation de lentree 45457 par clonage de 45455, avec le script
  npc_slipstream_two deja present et enregistre dans le core.
- C++ : controle du nullptr sur les deux occurrences du motif (Altairus
  et Grand Vizir Ertan) pour quune donnee manquante ne puisse plus
  faire tomber le serveur.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
SylvaniaCore deploy
2026-08-17 22:49:08 +02:00
parent 2e7a255918
commit fc00afa703
3 changed files with 56 additions and 4 deletions
@@ -164,8 +164,10 @@ public:
summons.DespawnAll();
me->SetHover(false);
Creature * Slipstream = me->SummonCreature(NPC_SLIPSTREAM_TWO, -1198.95f, 106.13f, 743.16f, 1.2f, TEMPSUMMON_CORPSE_DESPAWN, 0);
Slipstream->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
// Le template peut manquer en base : sans ce controle, un summon rate
// faisait tomber le serveur a chaque mort du boss (SIGSEGV dans Unit::Kill).
if (Creature* slipstream = me->SummonCreature(NPC_SLIPSTREAM_TWO, -1198.95f, 106.13f, 743.16f, 1.2f, TEMPSUMMON_CORPSE_DESPAWN, 0))
slipstream->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
}
void UpdateAI(uint32 diff) override
@@ -149,8 +149,8 @@ public:
me->DespawnCreaturesInArea(NPC_LURKING_TEMPEST, 120.0f);
me->DespawnCreaturesInArea(NPC_CYCLONE_SHIELD, 120.0f);
Creature * Slipstream = me->SummonCreature(45455, -765.79f, -44.01f, 641.91f, 4.0f, TEMPSUMMON_CORPSE_DESPAWN, 0);
Slipstream->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
if (Creature* slipstream = me->SummonCreature(45455, -765.79f, -44.01f, 641.91f, 4.0f, TEMPSUMMON_CORPSE_DESPAWN, 0))
slipstream->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
}
void UpdateAI(uint32 diff) override