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
37: CommandScript("arena_commandscript") { }
Definition CommandScript.h:25

Member Function Documentation

◆ GetCommands()

ChatCommandTable arena_commandscript::GetCommands ( ) const
inlineoverridevirtual

Implements CommandScript.

40 {
41 static ChatCommandTable arenaSeasonSetCommandTable =
42 {
43 { "state", HandleArenaSeasonSetStateCommand, SEC_ADMINISTRATOR, Console::Yes }
44 };
45
46 static ChatCommandTable arenaSeasonCommandTable =
47 {
48 { "reward", HandleArenaSeasonRewardCommand, SEC_ADMINISTRATOR, Console::Yes },
49 { "deleteteams", HandleArenaSeasonDeleteTeamsCommand, SEC_ADMINISTRATOR, Console::Yes },
50 { "start", HandleArenaSeasonStartCommand, SEC_ADMINISTRATOR, Console::Yes },
51 { "set", arenaSeasonSetCommandTable }
52 };
53
54 static ChatCommandTable arenaCommandTable =
55 {
56 { "create", HandleArenaCreateCommand, SEC_ADMINISTRATOR, Console::Yes },
57 { "disband", HandleArenaDisbandCommand, SEC_ADMINISTRATOR, Console::Yes },
58 { "rename", HandleArenaRenameCommand, SEC_ADMINISTRATOR, Console::Yes },
59 { "captain", HandleArenaCaptainCommand, SEC_ADMINISTRATOR, Console::No },
60 { "info", HandleArenaInfoCommand, SEC_GAMEMASTER, Console::Yes },
61 { "lookup", HandleArenaLookupCommand, SEC_GAMEMASTER, Console::No },
62 { "season", arenaSeasonCommandTable }
63 };
64
65 static ChatCommandTable commandTable =
66 {
67 { "arena", arenaCommandTable }
68 };
69
70 return commandTable;
71 }
@ SEC_ADMINISTRATOR
Definition Common.h:60
@ SEC_GAMEMASTER
Definition Common.h:59
static bool HandleArenaDisbandCommand(ChatHandler *handler, uint32 teamId)
Definition cs_arena.cpp:108
static bool HandleArenaCreateCommand(ChatHandler *handler, Optional< PlayerIdentifier > captain, QuotedString name, ArenaTeamTypes type)
Definition cs_arena.cpp:73
static bool HandleArenaRenameCommand(ChatHandler *handler, QuotedString oldName, QuotedString newName)
Definition cs_arena.cpp:133
static bool HandleArenaSeasonStartCommand(ChatHandler *handler, uint8 seasonId)
Definition cs_arena.cpp:281
static bool HandleArenaLookupCommand(ChatHandler *handler, Tail needle)
Definition cs_arena.cpp:224
static bool HandleArenaCaptainCommand(ChatHandler *handler, uint32 teamId, Optional< PlayerIdentifier > target)
Definition cs_arena.cpp:165
static bool HandleArenaSeasonRewardCommand(ChatHandler *handler, std::string teamsFilterStr)
Definition cs_arena.cpp:249
static bool HandleArenaSeasonSetStateCommand(ChatHandler *handler, uint8 state)
Definition cs_arena.cpp:302
static bool HandleArenaInfoCommand(ChatHandler *handler, uint32 teamId)
Definition cs_arena.cpp:207
static bool HandleArenaSeasonDeleteTeamsCommand(ChatHandler *handler)
Definition cs_arena.cpp:273
std::vector< ChatCommandBuilder > ChatCommandTable
Definition ChatCommand.h:46

References HandleArenaCaptainCommand(), HandleArenaCreateCommand(), HandleArenaDisbandCommand(), HandleArenaInfoCommand(), HandleArenaLookupCommand(), HandleArenaRenameCommand(), HandleArenaSeasonDeleteTeamsCommand(), HandleArenaSeasonRewardCommand(), HandleArenaSeasonSetStateCommand(), HandleArenaSeasonStartCommand(), SEC_ADMINISTRATOR, and SEC_GAMEMASTER.

◆ HandleArenaCaptainCommand()

static bool arena_commandscript::HandleArenaCaptainCommand ( ChatHandler handler,
uint32  teamId,
Optional< PlayerIdentifier target 
)
inlinestatic
166 {
167 ArenaTeam* arena = sArenaTeamMgr->GetArenaTeamById(teamId);
168 if (!arena)
169 {
171 return false;
172 }
173
174 if (arena->IsFighting())
175 {
177 return false;
178 }
179
180 if (!target)
181 target = PlayerIdentifier::FromTargetOrSelf(handler);
182
183 if (!target)
184 return false;
185
186 if (!arena->IsMember(target->GetGUID()))
187 {
188 handler->SendErrorMessage(LANG_ARENA_ERROR_NOT_MEMBER, target->GetName(), arena->GetName());
189 return false;
190 }
191
192 if (arena->GetCaptain() == target->GetGUID())
193 {
194 handler->SendErrorMessage(LANG_ARENA_ERROR_CAPTAIN, target->GetName(), arena->GetName());
195 return false;
196 }
197
198 std::string oldCaptainName;
199 sCharacterCache->GetCharacterNameByGuid(arena->GetCaptain(), oldCaptainName);
200 arena->SetCaptain(target->GetGUID());
201
202 handler->PSendSysMessage(LANG_ARENA_CAPTAIN, arena->GetName(), arena->GetId(), oldCaptainName, target->GetName());
203
204 return true;
205 }
#define sArenaTeamMgr
Definition ArenaTeamMgr.h:69
#define sCharacterCache
Definition CharacterCache.h:83
@ LANG_ARENA_CAPTAIN
Definition Language.h:825
@ LANG_ARENA_ERROR_CAPTAIN
Definition Language.h:821
@ LANG_ARENA_ERROR_NOT_MEMBER
Definition Language.h:820
@ LANG_ARENA_ERROR_NOT_FOUND
Definition Language.h:815
@ LANG_ARENA_ERROR_COMBAT
Definition Language.h:818
Definition ArenaTeam.h:137
ObjectGuid GetCaptain() const
Definition ArenaTeam.h:153
bool IsMember(ObjectGuid guid) const
Definition ArenaTeam.cpp:644
void SetCaptain(ObjectGuid guid)
Definition ArenaTeam.cpp:296
bool IsFighting() const
Definition ArenaTeam.cpp:998
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:211
void SendErrorMessage(uint32 entry)
Definition Chat.cpp:216
static Optional< PlayerIdentifier > FromTargetOrSelf(ChatHandler *handler)
Definition ChatCommandTags.h:184

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
74 {
75 if (sArenaTeamMgr->GetArenaTeamByName(name))
76 {
78 return false;
79 }
80
81 if (!captain)
82 captain = PlayerIdentifier::FromTargetOrSelf(handler);
83
84 if (!captain)
85 return false;
86
87 if (Player::GetArenaTeamIdFromDB(captain->GetGUID(), type) != 0)
88 {
89 handler->SendErrorMessage(LANG_ARENA_ERROR_SIZE, captain->GetName());
90 return false;
91 }
92
93 ArenaTeam* arena = new ArenaTeam();
94
95 if (!arena->Create(captain->GetGUID(), type, name, 4293102085, 101, 4293253939, 4, 4284049911))
96 {
97 delete arena;
99 return false;
100 }
101
102 sArenaTeamMgr->AddArenaTeam(arena);
103 handler->PSendSysMessage(LANG_ARENA_CREATE, arena->GetName(), arena->GetId(), arena->GetType(), arena->GetCaptain().ToString());
104
105 return true;
106 }
@ LANG_ARENA_ERROR_NAME_EXISTS
Definition Language.h:816
@ LANG_ARENA_CREATE
Definition Language.h:822
@ LANG_ARENA_ERROR_SIZE
Definition Language.h:817
@ LANG_BAD_VALUE
Definition Language.h:148
bool Create(ObjectGuid captainGuid, uint8 type, std::string const &teamName, uint32 backgroundColor, uint8 emblemStyle, uint32 emblemColor, uint8 borderStyle, uint32 borderColor)
Definition ArenaTeam.cpp:48
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:6344

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
109 {
110 ArenaTeam* arena = sArenaTeamMgr->GetArenaTeamById(teamId);
111
112 if (!arena)
113 {
115 return false;
116 }
117
118 if (arena->IsFighting())
119 {
121 return false;
122 }
123
124 std::string name = arena->GetName();
125 arena->Disband();
126
127 delete(arena);
128
129 handler->PSendSysMessage(LANG_ARENA_DISBAND, name, teamId);
130 return true;
131 }
@ LANG_ARENA_DISBAND
Definition Language.h:823
void Disband(WorldSession *session)
Definition ArenaTeam.cpp:384

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
208 {
209 ArenaTeam* arena = sArenaTeamMgr->GetArenaTeamById(teamId);
210 if (!arena)
211 {
213 return false;
214 }
215
216 handler->PSendSysMessage(LANG_ARENA_INFO_HEADER, arena->GetName(), arena->GetId(), arena->GetRating(), arena->GetType(), arena->GetType());
217
218 for (auto const& itr : arena->GetMembers())
219 handler->PSendSysMessage(LANG_ARENA_INFO_MEMBERS, itr.Name, itr.Guid.ToString(), itr.PersonalRating, (arena->GetCaptain() == itr.Guid ? "- Captain" : ""));
220
221 return true;
222 }
@ LANG_ARENA_INFO_HEADER
Definition Language.h:826
@ LANG_ARENA_INFO_MEMBERS
Definition Language.h:827
uint32 GetRating() const
Definition ArenaTeam.h:158
std::string ToString(Type &&val, Params &&... params)
Definition StringConvert.h:250

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
225 {
226 if (needle.empty())
227 return false;
228
229 bool found = false;
230 for (auto [teamId, team] : sArenaTeamMgr->GetArenaTeams())
231 {
232 if (StringContainsStringI(team->GetName(), needle))
233 {
234 if (handler->GetSession())
235 {
236 handler->PSendSysMessage(LANG_ARENA_LOOKUP, team->GetName(), team->GetId(), team->GetType(), team->GetType());
237 found = true;
238 continue;
239 }
240 }
241 }
242
243 if (!found)
244 handler->PSendSysMessage(LANG_ARENA_ERROR_NAME_NOT_FOUND, std::string(needle));
245
246 return true;
247 }
@ LANG_ARENA_ERROR_NAME_NOT_FOUND
Definition Language.h:819
@ LANG_ARENA_LOOKUP
Definition Language.h:828
bool StringContainsStringI(std::string_view haystack, std::string_view needle)
Definition Util.cpp:597
WorldSession * GetSession()
Definition Chat.h:242

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

Referenced by GetCommands().

◆ HandleArenaRenameCommand()

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

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
274 {
275 handler->PSendSysMessage("Deleting arena teams...");
276 sArenaSeasonMgr->DeleteArenaTeams();
277 handler->PSendSysMessage("Arena teams deleted.");
278 return true;
279 }
#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
250 {
251 std::unique_ptr<ArenaTeamFilter> uniqueFilter = ArenaTeamFilterFactoryByUserInput().CreateFilterByUserInput(teamsFilterStr);
252 if (!uniqueFilter)
253 {
254 handler->PSendSysMessage("Invalid filter. Please check your input.");
255 return false;
256 }
257
258 std::shared_ptr<ArenaTeamFilter> sharedFilter = std::move(uniqueFilter);
259
260 if (!sArenaSeasonMgr->CanDeleteArenaTeams())
261 {
262 handler->PSendSysMessage("Cannot proceed. Make sure there are no active arenas and that rewards exist for the current season.");
263 handler->PSendSysMessage("Hint: You can disable the arena queue using the following command: .arena season set state 0");
264 return false;
265 }
266
267 handler->PSendSysMessage("Distributing rewards for arena teams (types: "+teamsFilterStr+")...");
268 sArenaSeasonMgr->RewardTeamsForTheSeason(sharedFilter);
269 handler->PSendSysMessage("Rewards distributed.");
270 return true;
271 }
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
303 {
304 ArenaSeasonState seasonState;
305 switch (state) {
307 seasonState = ARENA_SEASON_STATE_DISABLED;
308 break;
310 seasonState = ARENA_SEASON_STATE_IN_PROGRESS;
311 break;
312 default:
313 handler->PSendSysMessage("Invalid state.");
314 return false;
315 }
316
317 sArenaSeasonMgr->SetSeasonState(seasonState);
318 handler->PSendSysMessage("Arena season updated.");
319 return true;
320 }
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
282 {
283 if (seasonId == sArenaSeasonMgr->GetCurrentSeason())
284 {
286 handler->PSendSysMessage("Arena season updated.");
287 return true;
288 }
289
290 const uint8 maxSeasonId = 8;
291 if (seasonId > maxSeasonId)
292 {
293 handler->PSendSysMessage("Invalid season id.");
294 return false;
295 }
296
297 sArenaSeasonMgr->ChangeCurrentSeason(seasonId);
298 handler->PSendSysMessage("Arena season changed to season {}.", seasonId);
299 return true;
300 }
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: