diff options
Diffstat (limited to 'src/game/InstanceData.cpp')
-rw-r--r-- | src/game/InstanceData.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/game/InstanceData.cpp b/src/game/InstanceData.cpp index fcc708e274c..bb4bfe5e8fc 100644 --- a/src/game/InstanceData.cpp +++ b/src/game/InstanceData.cpp @@ -188,17 +188,26 @@ void InstanceData::AddMinion(Creature *minion, bool add) itr->second.bossInfo->minion.erase(minion); } -void InstanceData::SetBossState(uint32 id, EncounterState state) +bool InstanceData::SetBossState(uint32 id, EncounterState state) { if(id < bosses.size()) { BossInfo *bossInfo = &bosses[id]; if(bossInfo->state == TO_BE_DECIDED) // loading + { bossInfo->state = state; + return false; + } else { if(bossInfo->state == state) - return; + return false; + + if(state == DONE) + for(MinionSet::iterator i = bossInfo->minion.begin(); i != bossInfo->minion.end(); ++i) + if((*i)->isWorldBoss() && (*i)->isAlive()) + return false; + bossInfo->state = state; SaveToDB(); } @@ -209,7 +218,10 @@ void InstanceData::SetBossState(uint32 id, EncounterState state) for(MinionSet::iterator i = bossInfo->minion.begin(); i != bossInfo->minion.end(); ++i) UpdateMinionState(*i, state); + + return true; } + return false; } std::string InstanceData::LoadBossState(const char * data) |