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

Public Member Functions

 deserter_commandscript ()
 
ChatCommandTable GetCommands () const override
 Returns the command structure for the system.
 
- 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 HandleDeserterAdd (ChatHandler *handler, Optional< std::string > playerName, Optional< std::string > time, bool isInstance)
 Applies the Deserter Debuff to a player.
 
static bool HandleDeserterRemove (ChatHandler *handler, Optional< PlayerIdentifier > player, bool isInstance)
 Removes the Deserter Debuff from a player.
 
static bool HandleDeserterRemoveAll (ChatHandler *handler, bool isInstance, Optional< std::string > maxTime)
 Removes the Deserter Debuff from all players.
 
static bool HandleDeserterInstanceAdd (ChatHandler *handler, Optional< std::string > playerName, Optional< std::string > time)
 
static bool HandleDeserterBGAdd (ChatHandler *handler, Optional< std::string > playerName, Optional< std::string > time)
 
static bool HandleDeserterInstanceRemove (ChatHandler *handler, Optional< PlayerIdentifier > player)
 
static bool HandleDeserterBGRemove (ChatHandler *handler, Optional< PlayerIdentifier > player)
 
static bool HandleDeserterInstanceRemoveAll (ChatHandler *handler, Optional< std::string > maxTime)
 
static bool HandleDeserterBGRemoveAll (ChatHandler *handler, Optional< std::string > maxTime)
 

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

◆ deserter_commandscript()

deserter_commandscript::deserter_commandscript ( )
inline
43: CommandScript("deserter_commandscript") { }
Definition CommandScript.h:25

Member Function Documentation

◆ GetCommands()

ChatCommandTable deserter_commandscript::GetCommands ( ) const
inlineoverridevirtual

Returns the command structure for the system.

Implements CommandScript.

50 {
51 static ChatCommandTable deserterInstanceCommandTable =
52 {
53 { "add", HandleDeserterInstanceAdd, SEC_ADMINISTRATOR, Console::Yes },
54 { "remove all", HandleDeserterInstanceRemoveAll, SEC_ADMINISTRATOR, Console::Yes },
55 { "remove", HandleDeserterInstanceRemove, SEC_ADMINISTRATOR, Console::Yes }
56 };
57 static ChatCommandTable deserterBGCommandTable =
58 {
59 { "add", HandleDeserterBGAdd, SEC_ADMINISTRATOR, Console::Yes },
60 { "remove all", HandleDeserterBGRemoveAll, SEC_ADMINISTRATOR, Console::Yes },
61 { "remove", HandleDeserterBGRemove, SEC_ADMINISTRATOR, Console::Yes }
62 };
63
64 static ChatCommandTable deserterCommandTable =
65 {
66 { "instance", deserterInstanceCommandTable },
67 { "bg", deserterBGCommandTable }
68 };
69 static ChatCommandTable commandTable =
70 {
71 { "deserter", deserterCommandTable }
72 };
73 return commandTable;
74 }
@ SEC_ADMINISTRATOR
Definition Common.h:60
static bool HandleDeserterBGAdd(ChatHandler *handler, Optional< std::string > playerName, Optional< std::string > time)
Definition cs_deserter.cpp:415
static bool HandleDeserterInstanceRemove(ChatHandler *handler, Optional< PlayerIdentifier > player)
Definition cs_deserter.cpp:421
static bool HandleDeserterBGRemoveAll(ChatHandler *handler, Optional< std::string > maxTime)
Definition cs_deserter.cpp:437
static bool HandleDeserterBGRemove(ChatHandler *handler, Optional< PlayerIdentifier > player)
Definition cs_deserter.cpp:427
static bool HandleDeserterInstanceAdd(ChatHandler *handler, Optional< std::string > playerName, Optional< std::string > time)
Definition cs_deserter.cpp:409
static bool HandleDeserterInstanceRemoveAll(ChatHandler *handler, Optional< std::string > maxTime)
Definition cs_deserter.cpp:432
std::vector< ChatCommandBuilder > ChatCommandTable
Definition ChatCommand.h:46

References HandleDeserterBGAdd(), HandleDeserterBGRemove(), HandleDeserterBGRemoveAll(), HandleDeserterInstanceAdd(), HandleDeserterInstanceRemove(), HandleDeserterInstanceRemoveAll(), and SEC_ADMINISTRATOR.

◆ HandleDeserterAdd()

static bool deserter_commandscript::HandleDeserterAdd ( ChatHandler handler,
Optional< std::string >  playerName,
Optional< std::string >  time,
bool  isInstance 
)
inlinestatic

Applies the Deserter Debuff to a player.

This function applies a Deserter Debuff of the given type (Instance or BG) to the selected player, with the provided duration in seconds.

Parameters
handlerThe ChatHandler, passed by the system.
playerNamePlayer by name. Optional, defaults to selected or self.
timeThe provided duration as TimeString. Optional, defaults to bg/instance default time.
isInstanceprovided by the relaying functions, so we don't have to write that much code :)
Returns
true if everything was correct, false if an error occured.

Example Usage:

.deserter instance add 1h30m (using player target or self)
-or-
.deserter bg add 1h30m (using player target or self)
-or-
.deserter bg add Tester 1h30m (using player of name 'Tester')
100 {
101 Player* target = handler->getSelectedPlayerOrSelf();
102 ObjectGuid guid;
103
104 if (playerName)
105 {
106 if (!normalizePlayerName(*playerName))
107 {
109 return false;
110 }
111
112 guid = sCharacterCache->GetCharacterGuidByName(*playerName);
113 if (guid)
114 {
115 target = ObjectAccessor::FindPlayerByName(*playerName);
116 }
117 else
118 {
119 if (time)
120 {
122 return false;
123 }
124
125 time = playerName;
126 playerName = "";
127 }
128 }
129
130 if (!playerName || playerName->empty())
131 {
132 if (!handler->GetSession())
133 {
134 return false;
135 }
136
137 playerName = target->GetName();
138 guid = target->GetGUID();
139 }
140
141 if (!time)
142 {
143 time = isInstance ? "30m" : "15m";
144 }
145
146 int32 duration = TimeStringToSecs(*time);
147
148 if (duration == 0)
149 {
150 duration = Acore::StringTo<int32>(*time).value_or(0);
151 }
152
153 if (duration == 0)
154 {
156 return false;
157 }
158
159 uint32 deserterSpell = isInstance ? LFG_SPELL_DUNGEON_DESERTER : BG_SPELL_DESERTER;
160
161 if (target)
162 {
163 Aura* aura = target->GetAura(deserterSpell);
164 if (aura && aura->GetDuration() >= duration * IN_MILLISECONDS)
165 {
166 handler->PSendSysMessage("Player {} already has a longer {} Deserter active.", handler->playerLink(*playerName), isInstance ? "Instance" : "Battleground");
167 return true;
168 }
169
170 aura = target->AddAura(deserterSpell, target);
171 if (!aura)
172 {
174 return false;
175 }
176 aura->SetDuration(duration * IN_MILLISECONDS);
177 }
178 else
179 {
180 int32 remainTime = 0;
181 if (QueryResult result = CharacterDatabase.Query("SELECT remainTime FROM character_aura WHERE guid = {} AND spell = {}", guid.GetCounter(), deserterSpell))
182 {
183 Field* fields = result->Fetch();
184 remainTime = fields[0].Get<int32>();
185
186 if (remainTime < 0 || remainTime >= duration * IN_MILLISECONDS)
187 {
188 handler->PSendSysMessage("Player {} already has a longer {} Deserter active.", handler->playerLink(*playerName), isInstance ? "Instance" : "Battleground");
189 return true;
190 }
191 CharacterDatabase.Query("DELETE FROM character_aura WHERE guid = {} AND spell = {}", guid.GetCounter(), deserterSpell);
192 }
193
194 uint8 index = 0;
196 stmt->SetData(index++, guid.GetCounter());
197 stmt->SetData(index++, guid.GetCounter());
198 stmt->SetData(index++, 0);
199 stmt->SetData(index++, deserterSpell);
200 stmt->SetData(index++, 1);
201 stmt->SetData(index++, 1);
202 stmt->SetData(index++, 1);
203 stmt->SetData(index++, 0);
204 stmt->SetData(index++, 0);
205 stmt->SetData(index++, 0);
206 stmt->SetData(index++, 0);
207 stmt->SetData(index++, 0);
208 stmt->SetData(index++, 0);
209 stmt->SetData(index++, isInstance ? 1800000 : 900000);
210 stmt->SetData(index++, duration * IN_MILLISECONDS);
211 stmt->SetData(index, 0);
212 CharacterDatabase.Execute(stmt);
213 }
214
215 if (isInstance)
216 {
217 if (ObjectGuid groupId = sCharacterCache->GetCharacterGroupGuidByGuid(guid))
218 if (Group* group = sGroupMgr->GetGroupByGUID(groupId.GetCounter()))
219 if (group->isLFGGroup())
220 Player::RemoveFromGroup(group, guid);
221 }
222 else if (target && target->GetMap()->IsBattleground())
223 target->LeaveBattleground();
224
225 handler->PSendSysMessage("{} of {} Deserter has been added to player {}.", secsToTimeString(duration), isInstance ? "Instance" : "Battleground", handler->playerLink(*playerName));
226 return true;
227 }
#define sCharacterCache
Definition CharacterCache.h:83
@ CHAR_INS_AURA
Definition CharacterDatabase.h:196
constexpr auto IN_MILLISECONDS
Definition Common.h:53
std::shared_ptr< ResultSet > QueryResult
Definition DatabaseEnvFwd.h:27
DatabaseWorkerPool< CharacterDatabaseConnection > CharacterDatabase
Accessor to the character database.
Definition DatabaseEnv.cpp:21
std::int32_t int32
Definition Define.h:103
std::uint8_t uint8
Definition Define.h:109
std::uint32_t uint32
Definition Define.h:107
#define sGroupMgr
Definition GroupMgr.h:51
@ LANG_PLAYER_NOT_FOUND
Definition Language.h:545
@ LANG_BAD_VALUE
Definition Language.h:148
bool normalizePlayerName(std::string &name)
Definition ObjectMgr.cpp:208
std::string secsToTimeString(uint64 timeInSecs, bool shortText)
Definition Util.cpp:73
uint32 TimeStringToSecs(const std::string &timestring)
Definition Util.cpp:163
Definition SpellAuras.h:87
int32 GetDuration() const
Definition SpellAuras.h:133
void SetDuration(int32 duration, bool withMods=false)
Definition SpellAuras.cpp:810
std::string playerLink(std::string const &name) const
Definition Chat.h:231
void PSendSysMessage(std::string_view str, bool escapeCharacters=false)
Definition Chat.cpp:211
WorldSession * GetSession()
Definition Chat.h:242
void SendErrorMessage(uint32 entry)
Definition Chat.cpp:216
Player * getSelectedPlayerOrSelf() const
Definition Chat.cpp:418
Class used to access individual fields of database query result.
Definition Field.h:98
std::enable_if_t< std::is_arithmetic_v< T >, T > Get() const
Definition Field.h:112
Definition Group.h:169
bool IsBattleground() const
Definition Map.h:301
Definition ObjectGuid.h:118
LowType GetCounter() const
Definition ObjectGuid.h:145
static ObjectGuid GetGUID(Object const *o)
Definition Object.h:113
Definition Player.h:1066
static void RemoveFromGroup(Group *group, ObjectGuid guid, RemoveMethod method=GROUP_REMOVEMETHOD_DEFAULT, ObjectGuid kicker=ObjectGuid::Empty, const char *reason=nullptr)
Definition Player.cpp:2330
void LeaveBattleground(Battleground *bg=nullptr)
Definition Player.cpp:11287
Acore::Types::is_default< T > SetData(const uint8 index, T value)
Definition PreparedStatement.h:77
Definition PreparedStatement.h:157
Aura * GetAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint8 reqEffMask=0) const
Definition Unit.cpp:5711
Aura * AddAura(uint32 spellId, Unit *target)
Definition Unit.cpp:19125
Map * GetMap() const
Definition Object.h:620
std::string const & GetName() const
Definition Object.h:524
@ LFG_SPELL_DUNGEON_DESERTER
Definition cs_deserter.cpp:36
@ BG_SPELL_DESERTER
Definition cs_deserter.cpp:37
Player * FindPlayerByName(std::string const &name, bool checkInWorld=true)
Definition ObjectAccessor.cpp:271

References Unit::AddAura(), BG_SPELL_DESERTER, CHAR_INS_AURA, CharacterDatabase, ObjectAccessor::FindPlayerByName(), Field::Get(), Unit::GetAura(), ObjectGuid::GetCounter(), Aura::GetDuration(), Object::GetGUID(), WorldObject::GetMap(), WorldObject::GetName(), ChatHandler::getSelectedPlayerOrSelf(), ChatHandler::GetSession(), IN_MILLISECONDS, Map::IsBattleground(), LANG_BAD_VALUE, LANG_PLAYER_NOT_FOUND, Player::LeaveBattleground(), LFG_SPELL_DUNGEON_DESERTER, normalizePlayerName(), ChatHandler::playerLink(), ChatHandler::PSendSysMessage(), Player::RemoveFromGroup(), sCharacterCache, secsToTimeString(), ChatHandler::SendErrorMessage(), PreparedStatementBase::SetData(), Aura::SetDuration(), sGroupMgr, and TimeStringToSecs().

Referenced by HandleDeserterBGAdd(), and HandleDeserterInstanceAdd().

◆ HandleDeserterBGAdd()

static bool deserter_commandscript::HandleDeserterBGAdd ( ChatHandler handler,
Optional< std::string >  playerName,
Optional< std::string >  time 
)
inlinestatic
See also
HandleDeserterAdd()
416 {
417 return HandleDeserterAdd(handler, playerName, time, false);
418 }
static bool HandleDeserterAdd(ChatHandler *handler, Optional< std::string > playerName, Optional< std::string > time, bool isInstance)
Applies the Deserter Debuff to a player.
Definition cs_deserter.cpp:99

References HandleDeserterAdd().

Referenced by GetCommands().

◆ HandleDeserterBGRemove()

static bool deserter_commandscript::HandleDeserterBGRemove ( ChatHandler handler,
Optional< PlayerIdentifier player 
)
inlinestatic
See also
HandleDeserterRemove()
428 {
429 return HandleDeserterRemove(handler, player, false);
430 }
static bool HandleDeserterRemove(ChatHandler *handler, Optional< PlayerIdentifier > player, bool isInstance)
Removes the Deserter Debuff from a player.
Definition cs_deserter.cpp:251

References HandleDeserterRemove().

Referenced by GetCommands().

◆ HandleDeserterBGRemoveAll()

static bool deserter_commandscript::HandleDeserterBGRemoveAll ( ChatHandler handler,
Optional< std::string >  maxTime 
)
inlinestatic
438 {
439 return HandleDeserterRemoveAll(handler, false, maxTime);
440 }
static bool HandleDeserterRemoveAll(ChatHandler *handler, bool isInstance, Optional< std::string > maxTime)
Removes the Deserter Debuff from all players.
Definition cs_deserter.cpp:326

References HandleDeserterRemoveAll().

Referenced by GetCommands().

◆ HandleDeserterInstanceAdd()

static bool deserter_commandscript::HandleDeserterInstanceAdd ( ChatHandler handler,
Optional< std::string >  playerName,
Optional< std::string >  time 
)
inlinestatic
See also
HandleDeserterAdd()
410 {
411 return HandleDeserterAdd(handler, playerName, time, true);
412 }

References HandleDeserterAdd().

Referenced by GetCommands().

◆ HandleDeserterInstanceRemove()

static bool deserter_commandscript::HandleDeserterInstanceRemove ( ChatHandler handler,
Optional< PlayerIdentifier player 
)
inlinestatic
See also
HandleDeserterRemove()
422 {
423 return HandleDeserterRemove(handler, player, true);
424 }

References HandleDeserterRemove().

Referenced by GetCommands().

◆ HandleDeserterInstanceRemoveAll()

static bool deserter_commandscript::HandleDeserterInstanceRemoveAll ( ChatHandler handler,
Optional< std::string >  maxTime 
)
inlinestatic
433 {
434 return HandleDeserterRemoveAll(handler, true, maxTime);
435 }

References HandleDeserterRemoveAll().

Referenced by GetCommands().

◆ HandleDeserterRemove()

static bool deserter_commandscript::HandleDeserterRemove ( ChatHandler handler,
Optional< PlayerIdentifier player,
bool  isInstance 
)
inlinestatic

Removes the Deserter Debuff from a player.

This function removes a Deserter Debuff of the given type (Instance or BG) from the selected player.

Parameters
handlerThe ChatHandler, passed by the system.
playerThe target player, either by name, the target or self
isInstanceprovided by the relaying functions, so we don't have to write that much code :)
Returns
true if everything was correct, false if an error occured.

Example Usage:

.deserter instance remove (using player target or self)
-or-
.deserter bg remove (using player target or self)
-or-
.deserter bg remove Tester (using player of name 'Tester')
252 {
253 if (!player)
254 {
255 player = PlayerIdentifier::FromTargetOrSelf(handler);
256 }
257
258 if (!player)
259 {
261 return false;
262 }
263
264 Player* target = player->GetConnectedPlayer();
265 uint32 deserterSpell = isInstance ? LFG_SPELL_DUNGEON_DESERTER : BG_SPELL_DESERTER;
266 int32 duration = 0;
267
268 if (target)
269 {
270 if (Aura* aura = target->GetAura(deserterSpell))
271 {
272 duration = aura->GetDuration();
273 target->RemoveAura(deserterSpell);
274 }
275 }
276 else
277 {
278 if (QueryResult result = CharacterDatabase.Query("SELECT remainTime FROM character_aura WHERE guid = {} AND spell = {}", player->GetGUID().GetCounter(), deserterSpell))
279 {
280 Field* fields = result->Fetch();
281 duration = fields[0].Get<int32>();
282 CharacterDatabase.Execute("DELETE FROM character_aura WHERE guid = {} AND spell = {}", player->GetGUID().GetCounter(), deserterSpell);
283 }
284 }
285
286 if (duration == 0)
287 {
288 handler->SendErrorMessage("Player {} does not have {} Deserter.", handler->playerLink(player->GetName()), isInstance ? "Instance" : "Battleground");
289 return true;
290 }
291
292 if (duration < 0)
293 {
294 handler->SendErrorMessage("Permanent {} Deserter has been removed from player {} (GUID {}).", isInstance ? "Instance" : "Battleground", handler->playerLink(player->GetName()), player->GetGUID().ToString());
295 return true;
296 }
297
298 handler->PSendSysMessage("{} of {} Deserter has been removed from player {} (GUID {}).", secsToTimeString(duration / IN_MILLISECONDS), isInstance ? "Instance" : "Battleground", handler->playerLink(player->GetName()), player->GetGUID().ToString());
299 return true;
300 }
@ LANG_NO_CHAR_SELECTED
Definition Language.h:149
const std::string & GetName() const
Definition ScriptObject.h:53
void RemoveAura(AuraApplicationMap::iterator &i, AuraRemoveMode mode=AURA_REMOVE_BY_DEFAULT)
Definition Unit.cpp:4899
std::string ToString(Type &&val, Params &&... params)
Definition StringConvert.h:250
static Optional< PlayerIdentifier > FromTargetOrSelf(ChatHandler *handler)
Definition ChatCommandTags.h:184

References BG_SPELL_DESERTER, CharacterDatabase, Acore::ChatCommands::PlayerIdentifier::FromTargetOrSelf(), Field::Get(), Unit::GetAura(), IN_MILLISECONDS, LANG_NO_CHAR_SELECTED, LFG_SPELL_DUNGEON_DESERTER, ChatHandler::playerLink(), ChatHandler::PSendSysMessage(), Unit::RemoveAura(), secsToTimeString(), and ChatHandler::SendErrorMessage().

Referenced by HandleDeserterBGRemove(), and HandleDeserterInstanceRemove().

◆ HandleDeserterRemoveAll()

static bool deserter_commandscript::HandleDeserterRemoveAll ( ChatHandler handler,
bool  isInstance,
Optional< std::string >  maxTime 
)
inlinestatic

Removes the Deserter Debuff from all players.

This function removes a Deserter Debuff of the given type (Instance or BG) from all players, online or offline.

Parameters
handlerThe ChatHandler, passed by the system.
isInstanceprovided by the relaying functions, so we don't have to write that much code :)
maxTimeOptional: The maximum remaining time of the Debuff on players to be removed. Any Player with a Deserter Debuff of this time or less will get their Debuff removed. Use -1 for any. Default: 15m for BG, 30m for Instance.
Returns
true if everything was correct, false if an error occured.

Example Usage:

.deserter bg remove all
-or-
.deserter bg remove all 30m
-or-
.deserter bg remove all -1
327 {
328 uint32 deserterSpell = isInstance ? LFG_SPELL_DUNGEON_DESERTER : BG_SPELL_DESERTER;
329 int32 remainTime = isInstance ? 1800 : 1800;
330 uint64 deserterCount = 0;
331 bool countOnline = true;
332
333 if (maxTime)
334 {
335 remainTime = TimeStringToSecs(*maxTime);
336 if (remainTime == 0)
337 {
338 remainTime = Acore::StringTo<int32>(*maxTime).value_or(0);
339 }
340 }
341
342 // Optimization. Do not execute any further functions or Queries if remainTime is 0.
343 if (remainTime == 0)
344 {
346 return false;
347 }
348
349 QueryResult result;
350 if (remainTime > 0)
351 {
352 result = CharacterDatabase.Query("SELECT COUNT(guid) FROM character_aura WHERE spell = {} AND remainTime <= {}", deserterSpell, remainTime * IN_MILLISECONDS);
353 }
354 else
355 {
356 result = CharacterDatabase.Query("SELECT COUNT(guid) FROM character_aura WHERE spell = {}", deserterSpell);
357 }
358
359 if (result)
360 {
361 deserterCount = (*result)[0].Get<uint64>();
362 }
363
364 // Optimization. Only execute these if there even is a result.
365 if (deserterCount > 0)
366 {
367 countOnline = false;
368 if (remainTime > 0)
369 {
370 CharacterDatabase.Execute("DELETE FROM character_aura WHERE spell = {} AND remainTime <= {}", deserterSpell, remainTime * IN_MILLISECONDS);
371 }
372 else
373 {
374 CharacterDatabase.Execute("DELETE FROM character_aura WHERE spell = {}", deserterSpell);
375 }
376 }
377
378 std::shared_lock<std::shared_mutex> lock(*HashMapHolder<Player>::GetLock());
380 for (HashMapHolder<Player>::MapType::const_iterator itr = onlinePlayerList.begin(); itr != onlinePlayerList.end(); ++itr)
381 {
382 Player* player = itr->second;
383 Aura* aura = player->GetAura(deserterSpell);
384 if (aura && (remainTime < 0 || aura->GetDuration() <= remainTime * IN_MILLISECONDS))
385 {
386 if (countOnline)
387 deserterCount++;
388 player->RemoveAura(deserterSpell);
389 }
390 }
391
392 std::string remainTimeStr = secsToTimeString(remainTime);
393 if (remainTime < 0)
394 {
395 remainTimeStr = "infinity";
396 }
397
398 if (deserterCount == 0)
399 {
400 handler->PSendSysMessage("No player on this realm has {} Deserter with a duration of {} or less.", isInstance ? "Instance" : "Battleground", remainTimeStr);
401 return true;
402 }
403
404 handler->PSendSysMessage("{} Deserter has been removed from {} player(s) with a duration of {} or less.", isInstance ? "Instance" : "Battleground", deserterCount, remainTimeStr);
405 return true;
406 }
std::uint64_t uint64
Definition Define.h:106
Definition ObjectAccessor.h:41
std::unordered_map< ObjectGuid, T * > MapType
Definition ObjectAccessor.h:47
HashMapHolder< Player >::MapType const & GetPlayers()
Definition ObjectAccessor.cpp:75

References BG_SPELL_DESERTER, CharacterDatabase, Unit::GetAura(), ObjectAccessor::GetPlayers(), IN_MILLISECONDS, LANG_BAD_VALUE, LFG_SPELL_DUNGEON_DESERTER, ChatHandler::PSendSysMessage(), Unit::RemoveAura(), secsToTimeString(), ChatHandler::SendErrorMessage(), and TimeStringToSecs().

Referenced by HandleDeserterBGRemoveAll(), and HandleDeserterInstanceRemoveAll().


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