/* * This file is part of the AzerothCore Project. See AUTHORS file for Copyright information * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Affero General Public License as published by the * Free Software Foundation; either version 3 of the License, or (at your * option) any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for * more details. * * You should have received a copy of the GNU General Public License along * with this program. If not, see . */ #include "BattlefieldMgr.h" #include "Chat.h" #include "CommandScript.h" using namespace Acore::ChatCommands; class bf_commandscript : public CommandScript { public: bf_commandscript() : CommandScript("bf_commandscript") { } ChatCommandTable GetCommands() const override { static ChatCommandTable battlefieldcommandTable = { { "start", HandleBattlefieldStart, SEC_ADMINISTRATOR, Console::No }, { "stop", HandleBattlefieldEnd, SEC_ADMINISTRATOR, Console::No }, { "switch", HandleBattlefieldSwitch, SEC_ADMINISTRATOR, Console::No }, { "timer", HandleBattlefieldTimer, SEC_ADMINISTRATOR, Console::No }, { "enable", HandleBattlefieldEnable, SEC_ADMINISTRATOR, Console::No } }; static ChatCommandTable commandTable = { { "bf", battlefieldcommandTable } }; return commandTable; } static bool HandleBattlefieldStart(ChatHandler* handler, uint32 battleId) { Battlefield* bf = sBattlefieldMgr->GetBattlefieldByBattleId(battleId); if (!bf) return false; bf->StartBattle(); if (battleId == 1) handler->SendGlobalGMSysMessage("Wintergrasp (Command start used)"); return true; } static bool HandleBattlefieldEnd(ChatHandler* handler, uint32 battleId) { Battlefield* bf = sBattlefieldMgr->GetBattlefieldByBattleId(battleId); if (!bf) return false; bf->EndBattle(true); if (battleId == 1) handler->SendGlobalGMSysMessage("Wintergrasp (Command stop used)"); return true; } static bool HandleBattlefieldEnable(ChatHandler* handler, uint32 battleId) { Battlefield* bf = sBattlefieldMgr->GetBattlefieldByBattleId(battleId); if (!bf) return false; if (bf->IsEnabled()) { bf->ToggleBattlefield(false); if (battleId == 1) handler->SendGlobalGMSysMessage("Wintergrasp is disabled"); } else { bf->ToggleBattlefield(true); if (battleId == 1) handler->SendGlobalGMSysMessage("Wintergrasp is enabled"); } return true; } static bool HandleBattlefieldSwitch(ChatHandler* handler, uint32 battleId) { Battlefield* bf = sBattlefieldMgr->GetBattlefieldByBattleId(battleId); if (!bf) return false; bf->EndBattle(false); if (battleId == 1) handler->SendGlobalGMSysMessage("Wintergrasp (Command switch used)"); return true; } static bool HandleBattlefieldTimer(ChatHandler* handler, uint32 battleId, std::string timeStr) { if (timeStr.empty()) { return false; } if (Acore::StringTo(timeStr).value_or(0) < 0) { handler->SendErrorMessage(LANG_BAD_VALUE); return false; } int32 time = TimeStringToSecs(timeStr); if (time <= 0) { time = Acore::StringTo(timeStr).value_or(0); } if (time <= 0) { handler->SendErrorMessage(LANG_BAD_VALUE); return false; } Battlefield* bf = sBattlefieldMgr->GetBattlefieldByBattleId(battleId); if (!bf) return false; bf->SetTimer(time * IN_MILLISECONDS); bf->SendInitWorldStatesToAll(); if (battleId == 1) handler->SendGlobalGMSysMessage("Wintergrasp (Command timer used)"); return true; } }; void AddSC_bf_commandscript() { new bf_commandscript(); }