aboutsummaryrefslogtreecommitdiff
path: root/src/game/InstanceData.cpp
diff options
context:
space:
mode:
authormegamage <none@none>2009-05-20 11:44:38 -0500
committermegamage <none@none>2009-05-20 11:44:38 -0500
commit6473e943581439f57918abfa91a4d5a29e2f343c (patch)
tree01b7419dcc1ac0444375d11b22cd55d72897854a /src/game/InstanceData.cpp
parentd1d194b4c78aec34d65a15ea68acff5c3a48687c (diff)
*Update Naxx scripts. Now only Kelthuzad is incompleted
--HG-- branch : trunk
Diffstat (limited to 'src/game/InstanceData.cpp')
-rw-r--r--src/game/InstanceData.cpp16
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)