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

Member Function Documentation

◆ GetCommands()

ChatCommandTable arena_commandscript::GetCommands ( ) const
inlineoverridevirtual

Implements CommandScript.

33 {
34 static ChatCommandTable arenaSeasonSetCommandTable =
35 {
36 { "state", HandleArenaSeasonSetStateCommand, SEC_ADMINISTRATOR, Console::Yes }
37 };
38
39 static ChatCommandTable arenaSeasonCommandTable =
40 {
41 { "reward", HandleArenaSeasonRewardCommand, SEC_ADMINISTRATOR, Console::Yes },
42 { "deleteteams", HandleArenaSeasonDeleteTeamsCommand, SEC_ADMINISTRATOR, Console::Yes },
43 { "start", HandleArenaSeasonStartCommand, SEC_ADMINISTRATOR, Console::Yes },
44 { "set", arenaSeasonSetCommandTable }
45 };
46
47 static ChatCommandTable arenaCommandTable =
48 {
49 { "create", HandleArenaCreateCommand, SEC_ADMINISTRATOR, Console::Yes },
50 { "disband", HandleArenaDisbandCommand, SEC_ADMINISTRATOR, Console::Yes },
51 { "rename", HandleArenaRenameCommand, SEC_ADMINISTRATOR, Console::Yes },
52 { "captain", HandleArenaCaptainCommand, SEC_ADMINISTRATOR, Console::No },
53 { "info", HandleArenaInfoCommand, SEC_GAMEMASTER, Console::Yes },
54 { "lookup", HandleArenaLookupCommand, SEC_GAMEMASTER, Console::No },
55 { "season", arenaSeasonCommandTable }
56 };
57
58 static ChatCommandTable commandTable =
59 {
60 { "arena", arenaCommandTable }
61 };
62
63 return commandTable;
64 }
@ SEC_ADMINISTRATOR
Definition Common.h:60
@ SEC_GAMEMASTER
Definition Common.h:59
static bool HandleArenaDisbandCommand(ChatHandler *handler, uint32 teamId)
Definition cs_arena.cpp:101
static bool HandleArenaCreateCommand(ChatHandler *handler, Optional< PlayerIdentifier > captain, QuotedString name, ArenaTeamTypes type)
Definition cs_arena.cpp:66
static bool HandleArenaRenameCommand(ChatHandler *handler, QuotedString oldName, QuotedString newName)
Definition cs_arena.cpp:126
static bool HandleArenaSeasonStartCommand(ChatHandler *handler, uint8 seasonId)
Definition cs_arena.cpp:274
static bool HandleArenaLookupCommand(ChatHandler *handler, Tail needle)
Definition cs_arena.cpp:217
static bool HandleArenaCaptainCommand(ChatHandler *handler, uint32 teamId, Optional< PlayerIdentifier > target)
Definition cs_arena.cpp:158
static bool HandleArenaSeasonRewardCommand(ChatHandler *handler, std::string teamsFilterStr)
Definition cs_arena.cpp:242
static bool HandleArenaSeasonSetStateCommand(ChatHandler *handler, uint8 state)
Definition cs_arena.cpp:295
static bool HandleArenaInfoCommand(ChatHandler *handler, uint32 teamId)
Definition cs_arena.cpp:200
static bool HandleArenaSeasonDeleteTeamsCommand(ChatHandler *handler)
Definition cs_arena.cpp:266
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
159 {
160 ArenaTeam* arena = sArenaTeamMgr->GetArenaTeamById(teamId);
161 if (!arena)
162 {
164 return false;
165 }
166
167 if (arena->IsFighting())
168 {
170 return false;
171 }
172
173 if (!target)
174 target = PlayerIdentifier::FromTargetOrSelf(handler);
175
176 if (!target)
177 return false;
178
179 if (!arena->IsMember(target->GetGUID()))
180 {
181 handler->SendErrorMessage(LANG_ARENA_ERROR_NOT_MEMBER, target->GetName(), arena->GetName());
182 return false;
183 }
184
185 if (arena->GetCaptain() == target->GetGUID())
186 {
187 handler->SendErrorMessage(LANG_ARENA_ERROR_CAPTAIN, target->GetName(), arena->GetName());
188 return false;
189 }
190
191 std::string oldCaptainName;
192 sCharacterCache->GetCharacterNameByGuid(arena->GetCaptain(), oldCaptainName);
193 arena->SetCaptain(target->GetGUID());
194
195 handler->PSendSysMessage(LANG_ARENA_CAPTAIN, arena->GetName(), arena->GetId(), oldCaptainName, target->GetName());
196
197 return true;
198 }
#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
67 {
68 if (sArenaTeamMgr->GetArenaTeamByName(name))
69 {
71 return false;
72 }
73
74 if (!captain)
75 captain = PlayerIdentifier::FromTargetOrSelf(handler);
76
77 if (!captain)
78 return false;
79
80 if (Player::GetArenaTeamIdFromDB(captain->GetGUID(), type) != 0)
81 {
82 handler->SendErrorMessage(LANG_ARENA_ERROR_SIZE, captain->GetName());
83 return false;
84 }
85
86 ArenaTeam* arena = new ArenaTeam();
87
88 if (!arena->Create(captain->GetGUID(), type, name, 4293102085, 101, 4293253939, 4, 4284049911))
89 {
90 delete arena;
92 return false;
93 }
94
95 sArenaTeamMgr->AddArenaTeam(arena);
96 handler->PSendSysMessage(LANG_ARENA_CREATE, arena->GetName(), arena->GetId(), arena->GetType(), arena->GetCaptain().ToString());
97
98 return true;
99 }
@ 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:6323

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
102 {
103 ArenaTeam* arena = sArenaTeamMgr->GetArenaTeamById(teamId);
104
105 if (!arena)
106 {
108 return false;
109 }
110
111 if (arena->IsFighting())
112 {
114 return false;
115 }
116
117 std::string name = arena->GetName();
118 arena->Disband();
119
120 delete(arena);
121
122 handler->PSendSysMessage(LANG_ARENA_DISBAND, name, teamId);
123 return true;
124 }
@ 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
201 {
202 ArenaTeam* arena = sArenaTeamMgr->GetArenaTeamById(teamId);
203 if (!arena)
204 {
206 return false;
207 }
208
209 handler->PSendSysMessage(LANG_ARENA_INFO_HEADER, arena->GetName(), arena->GetId(), arena->GetRating(), arena->GetType(), arena->GetType());
210
211 for (auto const& itr : arena->GetMembers())
212 handler->PSendSysMessage(LANG_ARENA_INFO_MEMBERS, itr.Name, itr.Guid.ToString(), itr.PersonalRating, (arena->GetCaptain() == itr.Guid ? "- Captain" : ""));
213
214 return true;
215 }
@ 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
218 {
219 if (needle.empty())
220 return false;
221
222 bool found = false;
223 for (auto [teamId, team] : sArenaTeamMgr->GetArenaTeams())
224 {
225 if (StringContainsStringI(team->GetName(), needle))
226 {
227 if (handler->GetSession())
228 {
229 handler->PSendSysMessage(LANG_ARENA_LOOKUP, team->GetName(), team->GetId(), team->GetType(), team->GetType());
230 found = true;
231 continue;
232 }
233 }
234 }
235
236 if (!found)
237 handler->PSendSysMessage(LANG_ARENA_ERROR_NAME_NOT_FOUND, std::string(needle));
238
239 return true;
240 }
@ 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
127 {
128 ArenaTeam* arena = sArenaTeamMgr->GetArenaTeamByName(oldName);
129 if (!arena)
130 {
132 return false;
133 }
134
135 if (sArenaTeamMgr->GetArenaTeamByName(newName))
136 {
138 return false;
139 }
140
141 if (arena->IsFighting())
142 {
144 return false;
145 }
146
147 if (!arena->SetName(newName))
148 {
150 return false;
151 }
152
153 handler->PSendSysMessage(LANG_ARENA_RENAME, arena->GetId(), oldName, newName);
154
155 return true;
156 }
@ 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
267 {
268 handler->PSendSysMessage("Deleting arena teams...");
269 sArenaSeasonMgr->DeleteArenaTeams();
270 handler->PSendSysMessage("Arena teams deleted.");
271 return true;
272 }
#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
243 {
244 std::unique_ptr<ArenaTeamFilter> uniqueFilter = ArenaTeamFilterFactoryByUserInput().CreateFilterByUserInput(teamsFilterStr);
245 if (!uniqueFilter)
246 {
247 handler->PSendSysMessage("Invalid filter. Please check your input.");
248 return false;
249 }
250
251 std::shared_ptr<ArenaTeamFilter> sharedFilter = std::move(uniqueFilter);
252
253 if (!sArenaSeasonMgr->CanDeleteArenaTeams())
254 {
255 handler->PSendSysMessage("Cannot proceed. Make sure there are no active arenas and that rewards exist for the current season.");
256 handler->PSendSysMessage("Hint: You can disable the arena queue using the following command: .arena season set state 0");
257 return false;
258 }
259
260 handler->PSendSysMessage("Distributing rewards for arena teams (types: "+teamsFilterStr+")...");
261 sArenaSeasonMgr->RewardTeamsForTheSeason(sharedFilter);
262 handler->PSendSysMessage("Rewards distributed.");
263 return true;
264 }
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
296 {
297 ArenaSeasonState seasonState;
298 switch (state) {
300 seasonState = ARENA_SEASON_STATE_DISABLED;
301 break;
303 seasonState = ARENA_SEASON_STATE_IN_PROGRESS;
304 break;
305 default:
306 handler->PSendSysMessage("Invalid state.");
307 return false;
308 }
309
310 sArenaSeasonMgr->SetSeasonState(seasonState);
311 handler->PSendSysMessage("Arena season updated.");
312 return true;
313 }
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
275 {
276 if (seasonId == sArenaSeasonMgr->GetCurrentSeason())
277 {
279 handler->PSendSysMessage("Arena season updated.");
280 return true;
281 }
282
283 const uint8 maxSeasonId = 8;
284 if (seasonId > maxSeasonId)
285 {
286 handler->PSendSysMessage("Invalid season id.");
287 return false;
288 }
289
290 sArenaSeasonMgr->ChangeCurrentSeason(seasonId);
291 handler->PSendSysMessage("Arena season changed to season {}.", seasonId);
292 return true;
293 }
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: