diff options
-rwxr-xr-x | src/server/game/Instances/InstanceScript.cpp | 25 | ||||
-rwxr-xr-x | src/server/game/Instances/InstanceScript.h | 5 |
2 files changed, 14 insertions, 16 deletions
diff --git a/src/server/game/Instances/InstanceScript.cpp b/src/server/game/Instances/InstanceScript.cpp index e468e29c70c..2281caf4e74 100755 --- a/src/server/game/Instances/InstanceScript.cpp +++ b/src/server/game/Instances/InstanceScript.cpp @@ -111,28 +111,25 @@ void InstanceScript::UpdateDoorState(GameObject *door) return; bool open = true; - for (DoorInfoMap::iterator itr = lower; itr != upper; ++itr) + for (DoorInfoMap::iterator itr = lower; itr != upper && open; ++itr) { - if (itr->second.type == DOOR_TYPE_ROOM) + switch (itr->second.type) { - if (itr->second.bossInfo->state == IN_PROGRESS) - { - open = false; + case DOOR_TYPE_ROOM: + open = (itr->second.bossInfo->state != IN_PROGRESS); break; - } - } - else if (itr->second.type == DOOR_TYPE_PASSAGE) - { - if (itr->second.bossInfo->state != DONE) - { - open = false; + case DOOR_TYPE_PASSAGE: + open = (itr->second.bossInfo->state == DONE); + break; + case DOOR_TYPE_SPAWN_HOLE: + open = (itr->second.bossInfo->state == IN_PROGRESS); + break; + default: break; - } } } door->SetGoState(open ? GO_STATE_ACTIVE : GO_STATE_READY); - //sLog->outError("Door %u is %s.", door->GetEntry(), open ? "opened" : "closed"); } void InstanceScript::AddDoor(GameObject *door, bool add) diff --git a/src/server/game/Instances/InstanceScript.h b/src/server/game/Instances/InstanceScript.h index 3c90364bbfd..b3dcb9525c5 100755 --- a/src/server/game/Instances/InstanceScript.h +++ b/src/server/game/Instances/InstanceScript.h @@ -58,8 +58,9 @@ enum EncounterState enum DoorType { - DOOR_TYPE_ROOM = 0, - DOOR_TYPE_PASSAGE, + DOOR_TYPE_ROOM = 0, // Door can open if encounter is not in progress + DOOR_TYPE_PASSAGE = 1, // Door can open if encounter is done + DOOR_TYPE_SPAWN_HOLE = 2, // Door can open if encounter is in progress, typically used for spawning places MAX_DOOR_TYPES, }; |