/* * Copyright (C) 2016+ AzerothCore , released under GNU GPL v2 license, you may redistribute it * and/or modify it under version 2 of the License, or (at your option), any later version. */ #include "FlagAction.h" #include "Event.h" #include "Playerbots.h" bool FlagAction::TellUsage() { botAI->TellError("Usage: flag cloak/helm/pvp on/set/off/clear/toggle/?"); return false; } bool FlagAction::Execute(Event event) { std::string const cmd = event.getParam(); std::vector ss = split(cmd, ' '); if (ss.size() != 2) return TellUsage(); bool setFlag = (ss[1] == "set" || ss[1] == "on"); bool clearFlag = (ss[1] == "clear" || ss[1] == "off"); bool toggleFlag = (ss[1] == "toggle"); if (ss[0] == "pvp") { if (setFlag) bot->SetPvP(true); else if (clearFlag) bot->SetPvP(false); else if (toggleFlag) bot->SetPvP(!bot->IsPvP()); std::ostringstream out; out << ss[0] << " flag is " << chat->FormatBoolean(bot->IsPvP()); botAI->TellMaster(out.str()); return true; } uint32 playerFlags; if (ss[0] == "cloak") playerFlags = PLAYER_FLAGS_HIDE_CLOAK; if (ss[0] == "helm") playerFlags = PLAYER_FLAGS_HIDE_HELM; if (clearFlag) bot->SetFlag(PLAYER_FLAGS, playerFlags); else if (setFlag) bot->RemoveFlag(PLAYER_FLAGS, playerFlags); else if (toggleFlag && bot->HasFlag(PLAYER_FLAGS, playerFlags)) bot->RemoveFlag(PLAYER_FLAGS, playerFlags); else if (toggleFlag && !bot->HasFlag(PLAYER_FLAGS, playerFlags)) bot->SetFlag(PLAYER_FLAGS, playerFlags); std::ostringstream out; out << ss[0] << " flag is " << chat->FormatBoolean(!bot->HasFlag(PLAYER_FLAGS, playerFlags)); botAI->TellMaster(out.str()); return true; }