diff options
author | Vincent-Michael <Vincent_Michael@gmx.de> | 2014-07-14 21:01:55 +0200 |
---|---|---|
committer | Vincent-Michael <Vincent_Michael@gmx.de> | 2014-07-14 21:01:55 +0200 |
commit | 13ff07f1213b7214797363171bfd95fd1b8515e2 (patch) | |
tree | 74b70f4e95c94a4b5ad5316c57c6f17d0a42d0ce /src/server/game/Instances/InstanceScript.cpp | |
parent | c88c1c6848eb8ee08756e9dafbb3e01ee7ec2ed1 (diff) | |
parent | 14bbe3e2e97fef01ada597557e804c1868a8c77c (diff) |
Merge branch 'master' of github.com:TrinityCore/TrinityCore into 4.3.4
Conflicts:
src/server/game/Achievements/AchievementMgr.cpp
src/server/game/Battlegrounds/ArenaScore.h
src/server/game/Battlegrounds/Battleground.cpp
src/server/game/Battlegrounds/Battleground.h
src/server/game/Entities/Object/Object.cpp
src/server/game/Entities/Pet/Pet.cpp
src/server/scripts/Commands/cs_wp.cpp
Diffstat (limited to 'src/server/game/Instances/InstanceScript.cpp')
-rw-r--r-- | src/server/game/Instances/InstanceScript.cpp | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/server/game/Instances/InstanceScript.cpp b/src/server/game/Instances/InstanceScript.cpp index c8d495baab2..46e1352df3f 100644 --- a/src/server/game/Instances/InstanceScript.cpp +++ b/src/server/game/Instances/InstanceScript.cpp @@ -148,7 +148,7 @@ void InstanceScript::AddDoor(GameObject* door, bool add) if (add) { - data.bossInfo->door[data.type].insert(door); + data.bossInfo->door[data.type].insert(door->GetGUID()); switch (data.boundary) { default: @@ -173,7 +173,7 @@ void InstanceScript::AddDoor(GameObject* door, bool add) } } else - data.bossInfo->door[data.type].erase(door); + data.bossInfo->door[data.type].erase(door->GetGUID()); } if (add) @@ -187,9 +187,9 @@ void InstanceScript::AddMinion(Creature* minion, bool add) return; if (add) - itr->second.bossInfo->minion.insert(minion); + itr->second.bossInfo->minion.insert(minion->GetGUID()); else - itr->second.bossInfo->minion.erase(minion); + itr->second.bossInfo->minion.erase(minion->GetGUID()); } bool InstanceScript::SetBossState(uint32 id, EncounterState state) @@ -210,8 +210,9 @@ bool InstanceScript::SetBossState(uint32 id, EncounterState state) if (state == DONE) for (MinionSet::iterator i = bossInfo->minion.begin(); i != bossInfo->minion.end(); ++i) - if ((*i)->isWorldBoss() && (*i)->IsAlive()) - return false; + if (Creature* minion = instance->GetCreature(*i)) + if (minion->isWorldBoss() && minion->IsAlive()) + return false; bossInfo->state = state; SaveToDB(); @@ -219,10 +220,12 @@ bool InstanceScript::SetBossState(uint32 id, EncounterState state) for (uint32 type = 0; type < MAX_DOOR_TYPES; ++type) for (DoorSet::iterator i = bossInfo->door[type].begin(); i != bossInfo->door[type].end(); ++i) - UpdateDoorState(*i); + if (GameObject* door = instance->GetGameObject(*i)) + UpdateDoorState(door); for (MinionSet::iterator i = bossInfo->minion.begin(); i != bossInfo->minion.end(); ++i) - UpdateMinionState(*i, state); + if (Creature* minion = instance->GetCreature(*i)) + UpdateMinionState(minion, state); return true; } |