AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
arena_commandscript Class Reference
Inheritance diagram for arena_commandscript:
CommandScript ScriptObject

Public Member Functions

 arena_commandscript ()
 
ChatCommandTable GetCommands () const override
 
- Public Member Functions inherited from ScriptObject
virtual bool IsDatabaseBound () const
 
virtual bool isAfterLoadScript () const
 
virtual void checkValidity ()
 
const std::string & GetName () const
 
uint16 GetTotalAvailableHooks ()
 

Static Public Member Functions

static bool HandleArenaCreateCommand (ChatHandler *handler, Optional< PlayerIdentifier > captain, QuotedString name, ArenaTeamTypes type)
 
static bool HandleArenaDisbandCommand (ChatHandler *handler, uint32 teamId)
 
static bool HandleArenaRenameCommand (ChatHandler *handler, QuotedString oldName, QuotedString newName)
 
static bool HandleArenaCaptainCommand (ChatHandler *handler, uint32 teamId, Optional< PlayerIdentifier > target)
 
static bool HandleArenaInfoCommand (ChatHandler *handler, uint32 teamId)
 
static bool HandleArenaLookupCommand (ChatHandler *handler, Tail needle)
 
static bool HandleArenaSeasonRewardCommand (ChatHandler *handler, std::string teamsFilterStr)
 
static bool HandleArenaSeasonDeleteTeamsCommand (ChatHandler *handler)
 
static bool HandleArenaSeasonStartCommand (ChatHandler *handler, uint8 seasonId)
 
static bool HandleArenaSeasonSetStateCommand (ChatHandler *handler, uint8 state)
 

Additional Inherited Members

- Protected Member Functions inherited from CommandScript
 CommandScript (const char *name)
 
- Protected Member Functions inherited from ScriptObject
 ScriptObject (const char *name, uint16 totalAvailableHooks=0)
 
virtual ~ScriptObject ()=default
 

Detailed Description

Constructor & Destructor Documentation

◆ arena_commandscript()

arena_commandscript::arena_commandscript ( )
inline
31: CommandScript("arena_commandscript") { }
Definition CommandScript.h:25

Member Function Documentation

◆ GetCommands()

ChatCommandTable arena_commandscript::GetCommands ( ) const
inlineoverridevirtual

Implements CommandScript.

34 {
35 static ChatCommandTable arenaSeasonSetCommandTable =
36 {
38 };
39
40 static ChatCommandTable arenaSeasonCommandTable =
41 {
45 { "set", arenaSeasonSetCommandTable }
46 };
47
48 static ChatCommandTable arenaCommandTable =
49 {
56 { "season", arenaSeasonCommandTable }
57 };
58
59 static ChatCommandTable commandTable =
60 {
61 { "arena", arenaCommandTable }
62 };
63
64 return commandTable;
65 }
static bool HandleArenaDisbandCommand(ChatHandler *handler, uint32 teamId)
Definition cs_arena.cpp:102
static bool HandleArenaCreateCommand(ChatHandler *handler, Optional< PlayerIdentifier > captain, QuotedString name, ArenaTeamTypes type)
Definition cs_arena.cpp:67
static bool HandleArenaRenameCommand(ChatHandler *handler, QuotedString oldName, QuotedString newName)
Definition cs_arena.cpp:127
static bool HandleArenaSeasonStartCommand(ChatHandler *handler, uint8 seasonId)
Definition cs_arena.cpp:275
static bool HandleArenaLookupCommand(ChatHandler *handler, Tail needle)
Definition cs_arena.cpp:218
static bool HandleArenaCaptainCommand(ChatHandler *handler, uint32 teamId, Optional< PlayerIdentifier > target)
Definition cs_arena.cpp:159
static bool HandleArenaSeasonRewardCommand(ChatHandler *handler, std::string teamsFilterStr)
Definition cs_arena.cpp:243
static bool HandleArenaSeasonSetStateCommand(ChatHandler *handler, uint8 state)
Definition cs_arena.cpp:296
static bool HandleArenaInfoCommand(ChatHandler *handler, uint32 teamId)
Definition cs_arena.cpp:201
static bool HandleArenaSeasonDeleteTeamsCommand(ChatHandler *handler)
Definition cs_arena.cpp:267
std::vector< ChatCommandBuilder > ChatCommandTable
Definition ChatCommand.h:46
@ RBAC_PERM_COMMAND_ARENA_LOOKUP
Definition RBAC.h:140
@ RBAC_PERM_COMMAND_ARENA_RENAME
Definition RBAC.h:141
@ RBAC_PERM_COMMAND_ARENA_INFO
Definition RBAC.h:139
@ RBAC_PERM_COMMAND_ARENA_SEASON_REWARD
Definition RBAC.h:670
@ RBAC_PERM_COMMAND_ARENA_SEASON
Definition RBAC.h:669
@ RBAC_PERM_COMMAND_ARENA_SEASON_DELETETEAMS
Definition RBAC.h:671
@ RBAC_PERM_COMMAND_ARENA_DISBAND
Definition RBAC.h:138
@ RBAC_PERM_COMMAND_ARENA_CAPTAIN
Definition RBAC.h:136
@ RBAC_PERM_COMMAND_ARENA_CREATE
Definition RBAC.h:137
@ RBAC_PERM_COMMAND_ARENA_SEASON_START
Definition RBAC.h:672

References HandleArenaCaptainCommand(), HandleArenaCreateCommand(), HandleArenaDisbandCommand(), HandleArenaInfoCommand(), HandleArenaLookupCommand(), HandleArenaRenameCommand(), HandleArenaSeasonDeleteTeamsCommand(), HandleArenaSeasonRewardCommand(), HandleArenaSeasonSetStateCommand(), HandleArenaSeasonStartCommand(), rbac::RBAC_PERM_COMMAND_ARENA_CAPTAIN, rbac::RBAC_PERM_COMMAND_ARENA_CREATE, rbac::RBAC_PERM_COMMAND_ARENA_DISBAND, rbac::RBAC_PERM_COMMAND_ARENA_INFO, rbac::RBAC_PERM_COMMAND_ARENA_LOOKUP, rbac::RBAC_PERM_COMMAND_ARENA_RENAME, rbac::RBAC_PERM_COMMAND_ARENA_SEASON, rbac::RBAC_PERM_COMMAND_ARENA_SEASON_DELETETEAMS, rbac::RBAC_PERM_COMMAND_ARENA_SEASON_REWARD, and rbac::RBAC_PERM_COMMAND_ARENA_SEASON_START.

◆ HandleArenaCaptainCommand()

static bool arena_commandscript::HandleArenaCaptainCommand ( ChatHandler handler,
uint32  teamId,
Optional< PlayerIdentifier target 
)
inlinestatic
160 {
161 ArenaTeam* arena = sArenaTeamMgr->GetArenaTeamById(teamId);
162 if (!arena)
163 {
165 return false;
166 }
167
168 if (arena->IsFighting())
169 {
171 return false;
172 }
173
174 if (!target)
175 target = PlayerIdentifier::FromTargetOrSelf(handler);
176
177 if (!target)
178 return false;
179
180 if (!arena->IsMember(target->GetGUID()))
181 {
182 handler->SendErrorMessage(LANG_ARENA_ERROR_NOT_MEMBER, target->GetName(), arena->GetName());
183 return false;
184 }
185
186 if (arena->GetCaptain() == target->GetGUID())
187 {
188 handler->SendErrorMessage(LANG_ARENA_ERROR_CAPTAIN, target->GetName(), arena->GetName());
189 return false;
190 }
191
192 std::string oldCaptainName;
193 sCharacterCache->GetCharacterNameByGuid(arena->GetCaptain(), oldCaptainName);
194 arena->SetCaptain(target->GetGUID());
195
196 handler->PSendSysMessage(LANG_ARENA_CAPTAIN, arena->GetName(), arena->GetId(), oldCaptainName, target->GetName());
197
198 return true;
199 }
#define sArenaTeamMgr
Definition ArenaTeamMgr.h:69
#define sCharacterCache
Definition CharacterCache.h:83
@ LANG_ARENA_CAPTAIN
Definition Language.h:836
@ LANG_ARENA_ERROR_CAPTAIN
Definition Language.h:832
@ LANG_ARENA_ERROR_NOT_MEMBER
Definition Language.h:831
@ LANG_ARENA_ERROR_NOT_FOUND
Definition Language.h:826
@ LANG_ARENA_ERROR_COMBAT
Definition Language.h:829
Definition ArenaTeam.h:137
ObjectGuid GetCaptain() const
Definition ArenaTeam.h:153
bool IsMember(ObjectGuid guid) const
Definition ArenaTeam.cpp:649
void SetCaptain(ObjectGuid guid)
Definition ArenaTeam.cpp:301
bool IsFighting() const
Definition ArenaTeam.cpp:1006
std::string const & GetName() const
Definition ArenaTeam.h:154
uint32 GetId() const
Definition ArenaTeam.h:148
void PSendSysMessage(std::string_view str, bool escapeCharacters=false)
Definition Chat.cpp:219
void SendErrorMessage(uint32 entry)
Definition Chat.cpp:224
static Optional< PlayerIdentifier > FromTargetOrSelf(ChatHandler *handler)
Definition ChatCommandTags.h:189

References Acore::ChatCommands::PlayerIdentifier::FromTargetOrSelf(), ArenaTeam::GetCaptain(), ArenaTeam::GetId(), ArenaTeam::GetName(), ArenaTeam::IsFighting(), ArenaTeam::IsMember(), LANG_ARENA_CAPTAIN, LANG_ARENA_ERROR_CAPTAIN, LANG_ARENA_ERROR_COMBAT, LANG_ARENA_ERROR_NOT_FOUND, LANG_ARENA_ERROR_NOT_MEMBER, ChatHandler::PSendSysMessage(), sArenaTeamMgr, sCharacterCache, ChatHandler::SendErrorMessage(), and ArenaTeam::SetCaptain().

Referenced by GetCommands().

◆ HandleArenaCreateCommand()

static bool arena_commandscript::HandleArenaCreateCommand ( ChatHandler handler,
Optional< PlayerIdentifier captain,
QuotedString  name,
ArenaTeamTypes  type 
)
inlinestatic
68 {
69 if (sArenaTeamMgr->GetArenaTeamByName(name))
70 {
72 return false;
73 }
74
75 if (!captain)
76 captain = PlayerIdentifier::FromTargetOrSelf(handler);
77
78 if (!captain)
79 return false;
80
81 if (Player::GetArenaTeamIdFromDB(captain->GetGUID(), type) != 0)
82 {
83 handler->SendErrorMessage(LANG_ARENA_ERROR_SIZE, captain->GetName());
84 return false;
85 }
86
87 ArenaTeam* arena = new ArenaTeam();
88
89 if (!arena->Create(captain->GetGUID(), type, name, 4293102085, 101, 4293253939, 4, 4284049911))
90 {
91 delete arena;
93 return false;
94 }
95
96 sArenaTeamMgr->AddArenaTeam(arena);
97 handler->PSendSysMessage(LANG_ARENA_CREATE, arena->GetName(), arena->GetId(), arena->GetType(), arena->GetCaptain().ToString());
98
99 return true;
100 }
@ LANG_ARENA_ERROR_NAME_EXISTS
Definition Language.h:827
@ LANG_ARENA_CREATE
Definition Language.h:833
@ LANG_ARENA_ERROR_SIZE
Definition Language.h:828
@ LANG_BAD_VALUE
Definition Language.h:151
bool Create(ObjectGuid captainGuid, uint8 type, std::string const &teamName, uint32 backgroundColor, uint8 emblemStyle, uint32 emblemColor, uint8 borderStyle, uint32 borderColor)
Definition ArenaTeam.cpp:50
uint32 GetType() const
Definition ArenaTeam.h:149
std::string ToString() const
Definition ObjectGuid.cpp:47
static uint32 GetArenaTeamIdFromDB(ObjectGuid guid, uint8 slot)
Definition Player.cpp:6319

References ArenaTeam::Create(), Acore::ChatCommands::PlayerIdentifier::FromTargetOrSelf(), Player::GetArenaTeamIdFromDB(), ArenaTeam::GetCaptain(), ArenaTeam::GetId(), ArenaTeam::GetName(), ArenaTeam::GetType(), LANG_ARENA_CREATE, LANG_ARENA_ERROR_NAME_EXISTS, LANG_ARENA_ERROR_SIZE, LANG_BAD_VALUE, ChatHandler::PSendSysMessage(), sArenaTeamMgr, ChatHandler::SendErrorMessage(), and ObjectGuid::ToString().

Referenced by GetCommands().

◆ HandleArenaDisbandCommand()

static bool arena_commandscript::HandleArenaDisbandCommand ( ChatHandler handler,
uint32  teamId 
)
inlinestatic
103 {
104 ArenaTeam* arena = sArenaTeamMgr->GetArenaTeamById(teamId);
105
106 if (!arena)
107 {
109 return false;
110 }
111
112 if (arena->IsFighting())
113 {
115 return false;
116 }
117
118 std::string name = arena->GetName();
119 arena->Disband();
120
121 delete(arena);
122
123 handler->PSendSysMessage(LANG_ARENA_DISBAND, name, teamId);
124 return true;
125 }
@ LANG_ARENA_DISBAND
Definition Language.h:834
void Disband(WorldSession *session)
Definition ArenaTeam.cpp:389

References ArenaTeam::Disband(), ArenaTeam::GetName(), ArenaTeam::IsFighting(), LANG_ARENA_DISBAND, LANG_ARENA_ERROR_COMBAT, LANG_ARENA_ERROR_NOT_FOUND, ChatHandler::PSendSysMessage(), sArenaTeamMgr, and ChatHandler::SendErrorMessage().

Referenced by GetCommands().

◆ HandleArenaInfoCommand()

static bool arena_commandscript::HandleArenaInfoCommand ( ChatHandler handler,
uint32  teamId 
)
inlinestatic
202 {
203 ArenaTeam* arena = sArenaTeamMgr->GetArenaTeamById(teamId);
204 if (!arena)
205 {
207 return false;
208 }
209
210 handler->PSendSysMessage(LANG_ARENA_INFO_HEADER, arena->GetName(), arena->GetId(), arena->GetRating(), arena->GetType(), arena->GetType());
211
212 for (auto const& itr : arena->GetMembers())
213 handler->PSendSysMessage(LANG_ARENA_INFO_MEMBERS, itr.Name, itr.Guid.GetCounter(), itr.PersonalRating, (arena->GetCaptain() == itr.Guid ? "Captain" : ""));
214
215 return true;
216 }
@ LANG_ARENA_INFO_HEADER
Definition Language.h:837
@ LANG_ARENA_INFO_MEMBERS
Definition Language.h:838
uint32 GetRating() const
Definition ArenaTeam.h:158

References ArenaTeam::GetCaptain(), ArenaTeam::GetId(), ArenaTeam::GetMembers(), ArenaTeam::GetName(), ArenaTeam::GetRating(), ArenaTeam::GetType(), LANG_ARENA_ERROR_NOT_FOUND, LANG_ARENA_INFO_HEADER, LANG_ARENA_INFO_MEMBERS, ChatHandler::PSendSysMessage(), sArenaTeamMgr, and ChatHandler::SendErrorMessage().

Referenced by GetCommands().

◆ HandleArenaLookupCommand()

static bool arena_commandscript::HandleArenaLookupCommand ( ChatHandler handler,
Tail  needle 
)
inlinestatic
219 {
220 if (needle.empty())
221 return false;
222
223 bool found = false;
224 for (auto [teamId, team] : sArenaTeamMgr->GetArenaTeams())
225 {
226 if (StringContainsStringI(team->GetName(), needle))
227 {
228 handler->PSendSysMessage(LANG_ARENA_LOOKUP, team->GetName(), team->GetId(), team->GetType(), team->GetType());
229 found = true;
230 continue;
231 }
232 }
233
234 if (!found)
235 {
236 handler->SendErrorMessage(LANG_ARENA_ERROR_NAME_NOT_FOUND, std::string(needle));
237 return false;
238 }
239
240 return true;
241 }
@ LANG_ARENA_ERROR_NAME_NOT_FOUND
Definition Language.h:830
@ LANG_ARENA_LOOKUP
Definition Language.h:839
bool StringContainsStringI(std::string_view haystack, std::string_view needle)
Definition Util.cpp:597

References LANG_ARENA_ERROR_NAME_NOT_FOUND, LANG_ARENA_LOOKUP, ChatHandler::PSendSysMessage(), sArenaTeamMgr, ChatHandler::SendErrorMessage(), and StringContainsStringI().

Referenced by GetCommands().

◆ HandleArenaRenameCommand()

static bool arena_commandscript::HandleArenaRenameCommand ( ChatHandler handler,
QuotedString  oldName,
QuotedString  newName 
)
inlinestatic
128 {
129 ArenaTeam* arena = sArenaTeamMgr->GetArenaTeamByName(oldName);
130 if (!arena)
131 {
133 return false;
134 }
135
136 if (sArenaTeamMgr->GetArenaTeamByName(newName))
137 {
139 return false;
140 }
141
142 if (arena->IsFighting())
143 {
145 return false;
146 }
147
148 if (!arena->SetName(newName))
149 {
151 return false;
152 }
153
154 handler->PSendSysMessage(LANG_ARENA_RENAME, arena->GetId(), oldName, newName);
155
156 return true;
157 }
@ LANG_ARENA_RENAME
Definition Language.h:835
bool SetName(std::string const &name)
Definition ArenaTeam.cpp:288

References ArenaTeam::GetId(), ArenaTeam::IsFighting(), LANG_ARENA_ERROR_COMBAT, LANG_ARENA_ERROR_NAME_EXISTS, LANG_ARENA_ERROR_NAME_NOT_FOUND, LANG_ARENA_RENAME, LANG_BAD_VALUE, ChatHandler::PSendSysMessage(), sArenaTeamMgr, ChatHandler::SendErrorMessage(), and ArenaTeam::SetName().

Referenced by GetCommands().

◆ HandleArenaSeasonDeleteTeamsCommand()

static bool arena_commandscript::HandleArenaSeasonDeleteTeamsCommand ( ChatHandler handler)
inlinestatic
268 {
269 handler->PSendSysMessage("Deleting arena teams...");
270 sArenaSeasonMgr->DeleteArenaTeams();
271 handler->PSendSysMessage("Arena teams deleted.");
272 return true;
273 }
#define sArenaSeasonMgr
Definition ArenaSeasonMgr.h:124

References ChatHandler::PSendSysMessage(), and sArenaSeasonMgr.

Referenced by GetCommands().

◆ HandleArenaSeasonRewardCommand()

static bool arena_commandscript::HandleArenaSeasonRewardCommand ( ChatHandler handler,
std::string  teamsFilterStr 
)
inlinestatic
244 {
245 std::unique_ptr<ArenaTeamFilter> uniqueFilter = ArenaTeamFilterFactoryByUserInput().CreateFilterByUserInput(teamsFilterStr);
246 if (!uniqueFilter)
247 {
248 handler->PSendSysMessage("Invalid filter. Please check your input.");
249 return false;
250 }
251
252 std::shared_ptr<ArenaTeamFilter> sharedFilter = std::move(uniqueFilter);
253
254 if (!sArenaSeasonMgr->CanDeleteArenaTeams())
255 {
256 handler->PSendSysMessage("Cannot proceed. Make sure there are no active arenas and that rewards exist for the current season.");
257 handler->PSendSysMessage("Hint: You can disable the arena queue using the following command: .arena season set state 0");
258 return false;
259 }
260
261 handler->PSendSysMessage("Distributing rewards for arena teams (types: "+teamsFilterStr+")...");
262 sArenaSeasonMgr->RewardTeamsForTheSeason(sharedFilter);
263 handler->PSendSysMessage("Rewards distributed.");
264 return true;
265 }
Definition ArenaTeamFilter.h:80
std::unique_ptr< ArenaTeamFilter > CreateFilterByUserInput(std::string userInput)
Definition ArenaTeamFilter.h:82

References ArenaTeamFilterFactoryByUserInput::CreateFilterByUserInput(), ChatHandler::PSendSysMessage(), and sArenaSeasonMgr.

Referenced by GetCommands().

◆ HandleArenaSeasonSetStateCommand()

static bool arena_commandscript::HandleArenaSeasonSetStateCommand ( ChatHandler handler,
uint8  state 
)
inlinestatic
297 {
298 ArenaSeasonState seasonState;
299 switch (state) {
301 seasonState = ARENA_SEASON_STATE_DISABLED;
302 break;
304 seasonState = ARENA_SEASON_STATE_IN_PROGRESS;
305 break;
306 default:
307 handler->PSendSysMessage("Invalid state.");
308 return false;
309 }
310
311 sArenaSeasonMgr->SetSeasonState(seasonState);
312 handler->PSendSysMessage("Arena season updated.");
313 return true;
314 }
ArenaSeasonState
Definition ArenaSeasonMgr.h:27
@ ARENA_SEASON_STATE_IN_PROGRESS
Definition ArenaSeasonMgr.h:29
@ ARENA_SEASON_STATE_DISABLED
Definition ArenaSeasonMgr.h:28

References ARENA_SEASON_STATE_DISABLED, ARENA_SEASON_STATE_IN_PROGRESS, ChatHandler::PSendSysMessage(), and sArenaSeasonMgr.

Referenced by GetCommands().

◆ HandleArenaSeasonStartCommand()

static bool arena_commandscript::HandleArenaSeasonStartCommand ( ChatHandler handler,
uint8  seasonId 
)
inlinestatic
276 {
277 if (seasonId == sArenaSeasonMgr->GetCurrentSeason())
278 {
280 handler->PSendSysMessage("Arena season updated.");
281 return true;
282 }
283
284 const uint8 maxSeasonId = 8;
285 if (seasonId > maxSeasonId)
286 {
287 handler->PSendSysMessage("Invalid season id.");
288 return false;
289 }
290
291 sArenaSeasonMgr->ChangeCurrentSeason(seasonId);
292 handler->PSendSysMessage("Arena season changed to season {}.", seasonId);
293 return true;
294 }
std::uint8_t uint8
Definition Define.h:109

References ARENA_SEASON_STATE_IN_PROGRESS, ChatHandler::PSendSysMessage(), and sArenaSeasonMgr.

Referenced by GetCommands().


The documentation for this class was generated from the following file: