Files
mod-playerbots/src/strategy/actions/FlagAction.cpp
2022-03-12 22:27:09 +01:00

62 lines
1.8 KiB
C++

/*
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, 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<std::string> 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;
}