diff options
author | XTZGZoReX <none@none> | 2010-06-06 22:58:12 +0200 |
---|---|---|
committer | XTZGZoReX <none@none> | 2010-06-06 22:58:12 +0200 |
commit | 58c15e71a60bd4d7bea5f5467b35f0d3c2220980 (patch) | |
tree | 0e7ea4d48efeb5b713a8e7ce0002fab6b85cf032 /src | |
parent | 62200e8d022479ff057b6898380e1dd8374d2ec2 (diff) | |
parent | fe3976b347642dfb04f5c22d0921b16944e4d52b (diff) |
* Merge.
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Chat/Commands/Level3.cpp | 60 |
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 |