diff options
Diffstat (limited to 'src/game/InstanceData.cpp')
-rw-r--r-- | src/game/InstanceData.cpp | 57 |
1 files changed, 28 insertions, 29 deletions
diff --git a/src/game/InstanceData.cpp b/src/game/InstanceData.cpp index e79a91dc345..4fcdc0e4195 100644 --- a/src/game/InstanceData.cpp +++ b/src/game/InstanceData.cpp @@ -49,47 +49,47 @@ bool InstanceData::IsEncounterInProgress() const return false; } -void InstanceData::AddBossRoomDoor(uint32 id, GameObject *door) +//This will be removed in the future, just compitiable with Mangos +void InstanceData::OnCreatureCreate(Creature *creature, bool add) { - if(id < bosses.size()) - { - BossInfo *bossInfo = &bosses[id]; - bossInfo->roomDoor.insert(door); - // Room door is only closed when encounter is in progress - if(bossInfo->state == IN_PROGRESS) - door->SetGoState(GO_STATE_READY); - else - door->SetGoState(GO_STATE_ACTIVE); - } + OnCreatureCreate(creature, creature->GetEntry(), add); } -void InstanceData::AddBossPassageDoor(uint32 id, GameObject *door) +void InstanceData::SetBossRoomDoor(uint32 id, GameObject *door, bool add) { if(id < bosses.size()) { - BossInfo *bossInfo = &bosses[id]; - bossInfo->passageDoor.insert(door); - // Passage door is only opened when boss is defeated - if(bossInfo->state == DONE) - door->SetGoState(GO_STATE_ACTIVE); + if(add) + { + BossInfo *bossInfo = &bosses[id]; + bossInfo->roomDoor.insert(door); + // Room door is only closed when encounter is in progress + if(bossInfo->state == IN_PROGRESS) + door->SetGoState(GO_STATE_READY); + else + door->SetGoState(GO_STATE_ACTIVE); + } else - door->SetGoState(GO_STATE_READY); - } -} - -void InstanceData::RemoveBossRoomDoor(uint32 id, GameObject *door) -{ - if(id < bosses.size()) - { - bosses[id].roomDoor.erase(door); + bosses[id].roomDoor.erase(door); } } -void InstanceData::RemoveBossPassageDoor(uint32 id, GameObject *door) +void InstanceData::SetBossPassageDoor(uint32 id, GameObject *door, bool add) { if(id < bosses.size()) { - bosses[id].passageDoor.erase(door); + if(add) + { + BossInfo *bossInfo = &bosses[id]; + bossInfo->passageDoor.insert(door); + // Passage door is only opened when boss is defeated + if(bossInfo->state == DONE) + door->SetGoState(GO_STATE_ACTIVE); + else + door->SetGoState(GO_STATE_READY); + } + else + bosses[id].passageDoor.erase(door); } } @@ -98,7 +98,6 @@ void InstanceData::SetBossState(uint32 id, EncounterState state) if(id < bosses.size()) { BossInfo *bossInfo = &bosses[id]; - bossInfo->state = state; switch(state) { |