mirror of
https://github.com/liyunfan1223/azerothcore-wotlk.git
synced 2026-08-08 15:58:04 +00:00
fix(Core/Scripts): apply safety improvements (#24635)
This commit is contained in:
@@ -568,7 +568,7 @@ void Map::AddObjectToPendingUpdateList(WorldObject* obj)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
UpdatableMapObject* mapUpdatableObject = dynamic_cast<UpdatableMapObject*>(obj);
|
UpdatableMapObject* mapUpdatableObject = dynamic_cast<UpdatableMapObject*>(obj);
|
||||||
if (mapUpdatableObject->GetUpdateState() != UpdatableMapObject::UpdateState::NotUpdating)
|
if (!mapUpdatableObject || mapUpdatableObject->GetUpdateState() != UpdatableMapObject::UpdateState::NotUpdating)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
_pendingAddUpdatableObjectList.insert(obj);
|
_pendingAddUpdatableObjectList.insert(obj);
|
||||||
|
|||||||
@@ -169,10 +169,14 @@ public:
|
|||||||
{
|
{
|
||||||
if (why == EVADE_REASON_BOUNDARY)
|
if (why == EVADE_REASON_BOUNDARY)
|
||||||
{
|
{
|
||||||
instance->GetCreature(DATA_BARON_RIVENDARE_BOSS)->AI()->EnterEvadeMode(EVADE_REASON_OTHER);
|
if (Creature* cr = instance->GetCreature(DATA_BARON_RIVENDARE_BOSS))
|
||||||
instance->GetCreature(DATA_LADY_BLAUMEUX_BOSS)->AI()->EnterEvadeMode(EVADE_REASON_OTHER);
|
cr->AI()->EnterEvadeMode(EVADE_REASON_OTHER);
|
||||||
instance->GetCreature(DATA_SIR_ZELIEK_BOSS)->AI()->EnterEvadeMode(EVADE_REASON_OTHER);
|
if (Creature* cr = instance->GetCreature(DATA_LADY_BLAUMEUX_BOSS))
|
||||||
instance->GetCreature(DATA_THANE_KORTHAZZ_BOSS)->AI()->EnterEvadeMode(EVADE_REASON_OTHER);
|
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();
|
BossAI::EnterEvadeMode();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -391,7 +391,8 @@ public:
|
|||||||
me->SetControlled(false, UNIT_STATE_STUNNED);
|
me->SetControlled(false, UNIT_STATE_STUNNED);
|
||||||
|
|
||||||
if (why == EVADE_REASON_BOUNDARY)
|
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);
|
ScriptedAI::EnterEvadeMode(why);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -142,7 +142,8 @@ void OutdoorPvPTF::ResetZoneToTeamControlled(TeamId team)
|
|||||||
|
|
||||||
for (auto& [guid, tower] : _capturePoints)
|
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);
|
SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_TOWER_COUNT_H, m_HordeTowersControlled);
|
||||||
|
|||||||
@@ -1000,7 +1000,8 @@ struct npc_akama_illidan : public ScriptedAI
|
|||||||
void JustReachedHome() override
|
void JustReachedHome() override
|
||||||
{
|
{
|
||||||
// Minions Event
|
// 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->SetReactState(REACT_PASSIVE);
|
||||||
me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
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)
|
if (spellInfo->Id == SPELL_DESPAWNER_OTHER && target->GetEntry() == NPC_NECROPOLIS)
|
||||||
{
|
{
|
||||||
DespawnNecropolis();
|
DespawnNecropolis();
|
||||||
dynamic_cast<Creature*>(target)->DespawnOrUnsummon();
|
if (Creature* creature = target->ToCreature())
|
||||||
|
creature->DespawnOrUnsummon();
|
||||||
me->DespawnOrUnsummon();
|
me->DespawnOrUnsummon();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user