Files
mod-playerbots/src/strategy/actions/GuildManagementActions.h
2024-08-04 10:23:36 +08:00

115 lines
2.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.
*/
#ifndef _PLAYERBOT_GUILDMAMANEGEMENTACTION_H
#define _PLAYERBOT_GUILDMAMANEGEMENTACTION_H
#include "Action.h"
#include "Opcodes.h"
class Player;
class PlayerbotAI;
class WorldPacket;
class GuidManageAction : public Action
{
public:
GuidManageAction(PlayerbotAI* botAI, std::string const name = "guild manage", uint16 opcode = CMSG_GUILD_INVITE)
: Action(botAI, name), opcode(opcode)
{
}
bool Execute(Event event) override;
bool isUseful() override { return false; }
protected:
virtual void SendPacket(WorldPacket data){};
virtual Player* GetPlayer(Event event);
virtual bool PlayerIsValid(Player* member);
virtual uint8 GetRankId(Player* member);
uint16 opcode;
};
class GuildInviteAction : public GuidManageAction
{
public:
GuildInviteAction(PlayerbotAI* botAI, std::string const name = "guild invite", uint16 opcode = CMSG_GUILD_INVITE)
: GuidManageAction(botAI, name, opcode)
{
}
bool isUseful() override;
protected:
void SendPacket(WorldPacket data) override;
bool PlayerIsValid(Player* member) override;
};
class GuildPromoteAction : public GuidManageAction
{
public:
GuildPromoteAction(PlayerbotAI* botAI, std::string const name = "guild promote", uint16 opcode = CMSG_GUILD_PROMOTE)
: GuidManageAction(botAI, name, opcode)
{
}
bool isUseful() override;
protected:
void SendPacket(WorldPacket data) override;
bool PlayerIsValid(Player* member) override;
};
class GuildDemoteAction : public GuidManageAction
{
public:
GuildDemoteAction(PlayerbotAI* botAI, std::string const name = "guild demote", uint16 opcode = CMSG_GUILD_DEMOTE)
: GuidManageAction(botAI, name, opcode)
{
}
bool isUseful() override;
protected:
void SendPacket(WorldPacket data) override;
bool PlayerIsValid(Player* member) override;
};
class GuildRemoveAction : public GuidManageAction
{
public:
GuildRemoveAction(PlayerbotAI* botAI, std::string const name = "guild remove", uint16 opcode = CMSG_GUILD_REMOVE)
: GuidManageAction(botAI, name, opcode)
{
}
bool isUseful() override;
protected:
void SendPacket(WorldPacket data) override;
bool PlayerIsValid(Player* member) override;
};
class GuildManageNearbyAction : public Action
{
public:
GuildManageNearbyAction(PlayerbotAI* botAI) : Action(botAI, "guild manage nearby") {}
bool Execute(Event event) override;
bool isUseful() override;
};
class GuildLeaveAction : public Action
{
public:
GuildLeaveAction(PlayerbotAI* botAI) : Action(botAI, "guild leave") {}
bool Execute(Event event) override;
bool isUseful() override;
};
#endif