mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-02-27 22:16:11 +00:00
fix(Core/Scripts): apply safety improvements (#24635)
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user