diff options
author | Tartalo <none@none> | 2010-06-05 16:31:55 +0200 |
---|---|---|
committer | Tartalo <none@none> | 2010-06-05 16:31:55 +0200 |
commit | 23cb007106166ebee260d4f5d6ca043352cf535d (patch) | |
tree | 5223ee7d2d68bbf361a0081bb29b187e2554b0b9 /src | |
parent | a4f8fb3364e0e4a5acb83d3bd2c0727b2386147f (diff) |
Implement .instance open/close commands
Example: .instance open 631 10heroic to open ICC on 10man heroic mode
Ty Lockness for the testing
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/game/Chat.cpp | 2 | ||||
-rw-r--r-- | src/game/Chat.h | 3 | ||||
-rw-r--r-- | src/game/Level3.cpp | 55 |
3 files changed, 60 insertions, 0 deletions
diff --git a/src/game/Chat.cpp b/src/game/Chat.cpp index d3d6e63a232..6e1adffa625 100644 --- a/src/game/Chat.cpp +++ b/src/game/Chat.cpp @@ -276,6 +276,8 @@ ChatCommand * ChatHandler::getCommandTable() { "unbind", SEC_ADMINISTRATOR, false, &ChatHandler::HandleInstanceUnbindCommand, "", NULL }, { "stats", SEC_ADMINISTRATOR, true, &ChatHandler::HandleInstanceStatsCommand, "", NULL }, { "savedata", SEC_ADMINISTRATOR, false, &ChatHandler::HandleInstanceSaveDataCommand, "", NULL }, + { "open", SEC_ADMINISTRATOR, true, &ChatHandler::HandleInstanceOpenCommand, "", NULL }, + { "close", SEC_ADMINISTRATOR, true, &ChatHandler::HandleInstanceCloseCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; diff --git a/src/game/Chat.h b/src/game/Chat.h index e05c5b23190..58e6f6214c8 100644 --- a/src/game/Chat.h +++ b/src/game/Chat.h @@ -234,6 +234,9 @@ class ChatHandler bool HandleInstanceUnbindCommand(const char* args); bool HandleInstanceStatsCommand(const char* args); bool HandleInstanceSaveDataCommand(const char * args); + bool HandleInstanceOpenCommand(const char * args); + bool HandleInstanceCloseCommand(const char * args); + bool HandleInstanceOpenCloseCommand(const char * args, bool open); bool HandleLearnCommand(const char* args); bool HandleLearnAllCommand(const char* args); diff --git a/src/game/Level3.cpp b/src/game/Level3.cpp index 49efbe7fde7..f7ced44922b 100644 --- a/src/game/Level3.cpp +++ b/src/game/Level3.cpp @@ -7031,6 +7031,61 @@ bool ChatHandler::HandleInstanceSaveDataCommand(const char * /*args*/) return true; } +bool ChatHandler::HandleInstanceOpenCommand(const char *args) +{ + return HandleInstanceOpenCloseCommand(args,true); +} + +bool ChatHandler::HandleInstanceCloseCommand(const char *args) +{ + return HandleInstanceOpenCloseCommand(args,false); +} + +bool ChatHandler::HandleInstanceOpenCloseCommand(const char *args,bool open) +{ + char *mapIdStr; + char *instanceModeStr; + extractOptFirstArg((char*)args,&mapIdStr,&instanceModeStr); + if (!mapIdStr || !instanceModeStr) + return false; + + uint32 mapid = atoi(mapIdStr); + + InstanceTemplate const* instance = objmgr.GetInstanceTemplate(mapid); + if (!instance) + { + PSendSysMessage("Invalid map id"); + SetSentErrorMessage(true); + return false; + } + + 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; + else + { + PSendSysMessage("Unrecognized difficulty string"); + SetSentErrorMessage(true); + return false; + } + if (open) + status |= flag; + else + status &= ~flag; + + WorldDatabase.PExecute("UPDATE access_requirement SET status = '%u' WHERE id = '%u'", status, instance->access_id); + PSendSysMessage("Instance status changed. Don't forget to reload access_requirement table"); + return true; +} + /// Display the list of GMs bool ChatHandler::HandleGMListFullCommand(const char* /*args*/) { |