EverWrath/src/server/scripts/Commands/cs_honor.cpp
Winfidonarleyan eb1ecc38a5
feat(Core/Scripting): move all script objects to separated files (#17860)
* feat(Core/Scripts): move all script objects to separated files

* Apply 5bfeabde81

* try gcc build

* again
2023-12-02 21:13:20 +01:00

115 lines
3.3 KiB
C++

/*
* 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 <http://www.gnu.org/licenses/>.
*/
/* ScriptData
Name: honor_commandscript
%Complete: 100
Comment: All honor related commands
Category: commandscripts
EndScriptData */
#include "Chat.h"
#include "CommandScript.h"
#include "Language.h"
#include "Player.h"
#include "WorldSession.h"
using namespace Acore::ChatCommands;
class honor_commandscript : public CommandScript
{
public:
honor_commandscript() : CommandScript("honor_commandscript") { }
ChatCommandTable GetCommands() const override
{
static ChatCommandTable honorAddCommandTable =
{
{ "kill", HandleHonorAddKillCommand, SEC_GAMEMASTER, Console::No },
{ "", HandleHonorAddCommand, SEC_GAMEMASTER, Console::No }
};
static ChatCommandTable honorCommandTable =
{
{ "add", honorAddCommandTable },
{ "update", HandleHonorUpdateCommand, SEC_GAMEMASTER, Console::No }
};
static ChatCommandTable commandTable =
{
{ "honor", honorCommandTable }
};
return commandTable;
}
static bool HandleHonorAddCommand(ChatHandler* handler, uint32 amount)
{
Player* target = handler->getSelectedPlayer();
if (!target)
{
handler->SendErrorMessage(LANG_PLAYER_NOT_FOUND);
return false;
}
// check online security
if (handler->HasLowerSecurity(target, ObjectGuid::Empty))
return false;
target->RewardHonor(nullptr, 1, amount);
return true;
}
static bool HandleHonorAddKillCommand(ChatHandler* handler)
{
Unit* target = handler->getSelectedUnit();
if (!target)
{
handler->SendErrorMessage(LANG_PLAYER_NOT_FOUND);
return false;
}
// check online security
if (Player* player = target->ToPlayer())
if (handler->HasLowerSecurity(player, ObjectGuid::Empty))
return false;
handler->GetSession()->GetPlayer()->RewardHonor(target, 1);
return true;
}
static bool HandleHonorUpdateCommand(ChatHandler* handler)
{
Player* target = handler->getSelectedPlayer();
if (!target)
{
handler->SendErrorMessage(LANG_PLAYER_NOT_FOUND);
return false;
}
// check online security
if (handler->HasLowerSecurity(target, ObjectGuid::Empty))
return false;
target->UpdateHonorFields();
return true;
}
};
void AddSC_honor_commandscript()
{
new honor_commandscript();
}