aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Chat/Commands/Level3.cpp60
1 files changed, 51 insertions, 9 deletions
diff --git a/src/server/game/Chat/Commands/Level3.cpp b/src/server/game/Chat/Commands/Level3.cpp
index f7ced44922b..8ac26cc5e8f 100644
--- a/src/server/game/Chat/Commands/Level3.cpp
+++ b/src/server/game/Chat/Commands/Level3.cpp
@@ -7062,20 +7062,62 @@ bool ChatHandler::HandleInstanceOpenCloseCommand(const char *args,bool open)
uint8 status = objmgr.GetAccessRequirement(instance->access_id)->status;
uint8 flag = 0;
- if (strcmp(instanceModeStr,"normal") || strcmp(instanceModeStr,"10normal"))
- flag = DUNGEON_STATUSFLAG_NORMAL;
- else if (strcmp(instanceModeStr,"heroic") || strcmp(instanceModeStr,"25normal"))
- flag = DUNGEON_STATUSFLAG_HEROIC;
- else if (strcmp(instanceModeStr,"10heroic"))
- flag = RAID_STATUSFLAG_10MAN_HEROIC;
- else if (strcmp(instanceModeStr,"25heroic"))
- flag = RAID_STATUSFLAG_25MAN_HEROIC;
+ const MapEntry *entry = sMapStore.LookupEntry(mapid);
+ if (!entry)
+ return false;
+
+ if (entry->IsDungeon())
+ {
+ if (strcmp(instanceModeStr,"normal"))
+ flag = DUNGEON_STATUSFLAG_NORMAL;
+ else if (strcmp(instanceModeStr,"heroic"))
+ flag = DUNGEON_STATUSFLAG_HEROIC;
+ else if (strcmp(instanceModeStr,"all"))
+ flag = DUNGEON_STATUSFLAG_NORMAL & DUNGEON_STATUSFLAG_HEROIC;
+ else
+ {
+ PSendSysMessage("Unrecognized difficulty string");
+ SetSentErrorMessage(true);
+ return false;
+ }
+ }
+
+ else if (entry->IsRaid())
+ {
+ if (strcmp(instanceModeStr,"normal"))
+ flag = RAID_STATUSFLAG_10MAN_NORMAL & RAID_STATUSFLAG_25MAN_NORMAL;
+ else if (strcmp(instanceModeStr,"heroic"))
+ flag = RAID_STATUSFLAG_10MAN_HEROIC & RAID_STATUSFLAG_25MAN_HEROIC;
+ else if (strcmp(instanceModeStr,"10man"))
+ flag = RAID_STATUSFLAG_10MAN_NORMAL & RAID_STATUSFLAG_10MAN_HEROIC;
+ else if (strcmp(instanceModeStr,"25man"))
+ flag = RAID_STATUSFLAG_25MAN_NORMAL & RAID_STATUSFLAG_25MAN_HEROIC;
+ else if (strcmp(instanceModeStr,"heroic"))
+ flag = RAID_STATUSFLAG_10MAN_HEROIC & RAID_STATUSFLAG_25MAN_HEROIC;
+ else if (strcmp(instanceModeStr,"10normal"))
+ flag = DUNGEON_STATUSFLAG_NORMAL;
+ else if (strcmp(instanceModeStr,"25normal"))
+ flag = DUNGEON_STATUSFLAG_HEROIC;
+ else if (strcmp(instanceModeStr,"10heroic"))
+ flag = RAID_STATUSFLAG_10MAN_HEROIC;
+ else if (strcmp(instanceModeStr,"25heroic"))
+ flag = RAID_STATUSFLAG_25MAN_HEROIC;
+ else if (strcmp(instanceModeStr,"all"))
+ flag = RAID_STATUSFLAG_10MAN_NORMAL & RAID_STATUSFLAG_10MAN_HEROIC & RAID_STATUSFLAG_25MAN_NORMAL & RAID_STATUSFLAG_25MAN_HEROIC;
+ else
+ {
+ PSendSysMessage("Unrecognized difficulty string");
+ SetSentErrorMessage(true);
+ return false;
+ }
+ }
else
{
- PSendSysMessage("Unrecognized difficulty string");
+ PSendSysMessage("Map is not a dungeon/raid");
SetSentErrorMessage(true);
return false;
}
+
if (open)
status |= flag;
else