fix(Core/Scripts): apply safety improvements (#24635)

This commit is contained in:
Francesco Borzì
2026-02-07 21:22:58 +01:00
committed by GitHub
parent 4bda3ca1a9
commit 3b8ac391d9
6 changed files with 17 additions and 9 deletions

View File

@@ -568,7 +568,7 @@ void Map::AddObjectToPendingUpdateList(WorldObject* obj)
return;
UpdatableMapObject* mapUpdatableObject = dynamic_cast<UpdatableMapObject*>(obj);
if (mapUpdatableObject->GetUpdateState() != UpdatableMapObject::UpdateState::NotUpdating)
if (!mapUpdatableObject || mapUpdatableObject->GetUpdateState() != UpdatableMapObject::UpdateState::NotUpdating)
return;
_pendingAddUpdatableObjectList.insert(obj);

View File

@@ -169,10 +169,14 @@ public:
{
if (why == EVADE_REASON_BOUNDARY)
{
instance->GetCreature(DATA_BARON_RIVENDARE_BOSS)->AI()->EnterEvadeMode(EVADE_REASON_OTHER);
instance->GetCreature(DATA_LADY_BLAUMEUX_BOSS)->AI()->EnterEvadeMode(EVADE_REASON_OTHER);
instance->GetCreature(DATA_SIR_ZELIEK_BOSS)->AI()->EnterEvadeMode(EVADE_REASON_OTHER);
instance->GetCreature(DATA_THANE_KORTHAZZ_BOSS)->AI()->EnterEvadeMode(EVADE_REASON_OTHER);
if (Creature* cr = instance->GetCreature(DATA_BARON_RIVENDARE_BOSS))
cr->AI()->EnterEvadeMode(EVADE_REASON_OTHER);
if (Creature* cr = instance->GetCreature(DATA_LADY_BLAUMEUX_BOSS))
cr->AI()->EnterEvadeMode(EVADE_REASON_OTHER);
if (Creature* cr = instance->GetCreature(DATA_SIR_ZELIEK_BOSS))
cr->AI()->EnterEvadeMode(EVADE_REASON_OTHER);
if (Creature* cr = instance->GetCreature(DATA_THANE_KORTHAZZ_BOSS))
cr->AI()->EnterEvadeMode(EVADE_REASON_OTHER);
}
BossAI::EnterEvadeMode();
}

View File

@@ -391,7 +391,8 @@ public:
me->SetControlled(false, UNIT_STATE_STUNNED);
if (why == EVADE_REASON_BOUNDARY)
instance->GetCreature(DATA_THADDIUS_BOSS)->AI()->EnterEvadeMode(EVADE_REASON_BOUNDARY);
if (Creature* thaddius = instance->GetCreature(DATA_THADDIUS_BOSS))
thaddius->AI()->EnterEvadeMode(EVADE_REASON_BOUNDARY);
ScriptedAI::EnterEvadeMode(why);
}

View File

@@ -142,7 +142,8 @@ void OutdoorPvPTF::ResetZoneToTeamControlled(TeamId team)
for (auto& [guid, tower] : _capturePoints)
{
dynamic_cast<OPvPCapturePointTF*>(tower)->ResetToTeamControlled(team);
if (auto* capturePoint = dynamic_cast<OPvPCapturePointTF*>(tower))
capturePoint->ResetToTeamControlled(team);
}
SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_TOWER_COUNT_H, m_HordeTowersControlled);

View File

@@ -1000,7 +1000,8 @@ struct npc_akama_illidan : public ScriptedAI
void JustReachedHome() override
{
// Minions Event
if (instance->GetBossState(DATA_ILLIDAN_STORMRAGE) == IN_PROGRESS && !instance->GetCreature(DATA_ILLIDAN_STORMRAGE)->HasAura(SPELL_DEATH))
Creature* illidan = instance->GetCreature(DATA_ILLIDAN_STORMRAGE);
if (illidan && instance->GetBossState(DATA_ILLIDAN_STORMRAGE) == IN_PROGRESS && !illidan->HasAura(SPELL_DEATH))
{
me->SetReactState(REACT_PASSIVE);
me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);

View File

@@ -238,7 +238,8 @@ struct npc_necropolis_health : public ScriptedAI
if (spellInfo->Id == SPELL_DESPAWNER_OTHER && target->GetEntry() == NPC_NECROPOLIS)
{
DespawnNecropolis();
dynamic_cast<Creature*>(target)->DespawnOrUnsummon();
if (Creature* creature = target->ToCreature())
creature->DespawnOrUnsummon();
me->DespawnOrUnsummon();
}
}