Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
cs_deserter.cpp
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
12
13#include "Chat.h"
14#include "Language.h"
15#include "Player.h"
16#include "ScriptMgr.h"
17#include "SpellAuras.h"
18
24
26{
27public:
28 deserter_commandscript() : CommandScript("deserter_commandscript") { }
29
33
34 std::vector<ChatCommand> GetCommands() const OVERRIDE
35 {
36 static std::vector<ChatCommand> deserterInstanceCommandTable =
37 {
40 };
41 static std::vector<ChatCommand> deserterBGCommandTable =
42 {
45 };
46
47 static std::vector<ChatCommand> deserterCommandTable =
48 {
49 { "instance", rbac::RBAC_PERM_COMMAND_DESERTER_INSTANCE, false, NULL, "", deserterInstanceCommandTable },
50 { "bg", rbac::RBAC_PERM_COMMAND_DESERTER_BG, false, NULL, "", deserterBGCommandTable },
51 };
52 static std::vector<ChatCommand> commandTable =
53 {
54 { "deserter", rbac::RBAC_PERM_COMMAND_DESERTER, false, NULL, "", deserterCommandTable },
55 };
56 return commandTable;
57 }
58
79 static bool HandleDeserterAdd(ChatHandler* handler, char const* args, bool isInstance)
80 {
81 if (!*args)
82 return false;
83
84 Player* player = handler->getSelectedPlayer();
85 if (!player)
86 {
88 handler->SetSentErrorMessage(true);
89 return false;
90 }
91 char* timeStr = strtok((char*)args, " ");
92 if (!timeStr)
93 {
95 handler->SetSentErrorMessage(true);
96 return false;
97 }
98 uint32 time = atoi(timeStr);
99
100 if (!time)
101 {
103 handler->SetSentErrorMessage(true);
104 return false;
105 }
106
107 Aura* aura = player->AddAura(isInstance ? LFG_SPELL_DUNGEON_DESERTER : BG_SPELL_DESERTER, player);
108
109 if (!aura)
110 {
112 handler->SetSentErrorMessage(true);
113 return false;
114 }
115 aura->SetDuration(time * IN_MILLISECONDS);
116
117 return true;
118 }
119
140 static bool HandleDeserterRemove(ChatHandler* handler, char const* /*args*/, bool isInstance)
141 {
142 Player* player = handler->getSelectedPlayer();
143 if (!player)
144 {
146 handler->SetSentErrorMessage(true);
147 return false;
148 }
149
151
152 return true;
153 }
154
156 static bool HandleDeserterInstanceAdd(ChatHandler* handler, char const* args)
157 {
158 return HandleDeserterAdd(handler, args, true);
159 }
160
162 static bool HandleDeserterBGAdd(ChatHandler* handler, char const* args)
163 {
164 return HandleDeserterAdd(handler, args, false);
165 }
166
168 static bool HandleDeserterInstanceRemove(ChatHandler* handler, char const* args)
169 {
170 return HandleDeserterRemove(handler, args, true);
171 }
172
174 static bool HandleDeserterBGRemove(ChatHandler* handler, char const* args)
175 {
176 return HandleDeserterRemove(handler, args, false);
177 }
178};
179
@ IN_MILLISECONDS
Definition Common.h:125
std::uint32_t uint32
Definition Define.h:77
#define OVERRIDE
Definition Define.h:60
@ LANG_NO_CHAR_SELECTED
Definition Language.h:118
@ LANG_BAD_VALUE
Definition Language.h:117
void SetDuration(int32 duration, bool withMods=false)
Player * getSelectedPlayer()
Definition Chat.cpp:829
void SetSentErrorMessage(bool val)
Definition Chat.h:114
virtual void SendSysMessage(const char *str)
Definition Chat.cpp:153
CommandScript(const char *name)
void RemoveAura(AuraApplicationMap::iterator &i, AuraRemoveMode mode=AURA_REMOVE_BY_DEFAULT)
Aura * AddAura(uint32 spellId, Unit *target)
std::vector< ChatCommand > GetCommands() const OVERRIDE
Returns the command structure for the system.
static bool HandleDeserterBGAdd(ChatHandler *handler, char const *args)
static bool HandleDeserterInstanceRemove(ChatHandler *handler, char const *args)
static bool HandleDeserterRemove(ChatHandler *handler, char const *, bool isInstance)
Removes the Deserter Debuff from a player.
static bool HandleDeserterBGRemove(ChatHandler *handler, char const *args)
static bool HandleDeserterInstanceAdd(ChatHandler *handler, char const *args)
static bool HandleDeserterAdd(ChatHandler *handler, char const *args, bool isInstance)
Applies the Deserter Debuff to a player.
void AddSC_deserter_commandscript()
@ LFG_SPELL_DUNGEON_DESERTER
@ BG_SPELL_DESERTER
@ RBAC_PERM_COMMAND_DESERTER_BG_REMOVE
Definition RBAC.h:232
@ RBAC_PERM_COMMAND_DESERTER_INSTANCE_REMOVE
Definition RBAC.h:235
@ RBAC_PERM_COMMAND_DESERTER_INSTANCE_ADD
Definition RBAC.h:234
@ RBAC_PERM_COMMAND_DESERTER
Definition RBAC.h:229
@ RBAC_PERM_COMMAND_DESERTER_BG
Definition RBAC.h:230
@ RBAC_PERM_COMMAND_DESERTER_BG_ADD
Definition RBAC.h:231
@ RBAC_PERM_COMMAND_DESERTER_INSTANCE
Definition RBAC.h:233